From 63a5af116dbac28c402ebf869fda31a7ed30633a Mon Sep 17 00:00:00 2001 From: rafalp <kontakt@rpiton.com> Date: Sun, 15 Jan 2023 15:15:05 +0100 Subject: [PATCH] Fix posts feed markup --- .../src/components/post-feed/post/body.js | 1 - .../src/components/post-feed/post/index.js | 8 +- frontend/src/components/profile/root.js | 5 +- frontend/src/style/misago/post-feed.less | 3 + misago/static/misago/css/misago.css | 2 +- misago/static/misago/css/misago.css.map | 2 +- misago/static/misago/js/misago.js | 2 +- misago/static/misago/js/misago.js.map | 2 +- misago/templates/misago/profile/feed.html | 108 +++++++++--------- 9 files changed, 70 insertions(+), 63 deletions(-) diff --git a/frontend/src/components/post-feed/post/body.js b/frontend/src/components/post-feed/post/body.js index 0224d72043..da1a90308d 100644 --- a/frontend/src/components/post-feed/post/body.js +++ b/frontend/src/components/post-feed/post/body.js @@ -1,6 +1,5 @@ import React from "react" import MisagoMarkup from "misago/components/misago-markup" -import escapeHtml from "misago/utils/escape-html" export default function (props) { if (props.post.content) { diff --git a/frontend/src/components/post-feed/post/index.js b/frontend/src/components/post-feed/post/index.js index ed6800a5f9..1ef6a83739 100644 --- a/frontend/src/components/post-feed/post/index.js +++ b/frontend/src/components/post-feed/post/index.js @@ -15,9 +15,11 @@ export default function ({ post, poster }) { <li className={className} id={"post-" + post.id}> <div className="panel panel-default panel-post"> <div className="panel-body"> - <PostSide post={post} poster={user} /> - <Header post={post} /> - <Body post={post} /> + <div className="panel-content"> + <PostSide post={post} poster={user} /> + <Header post={post} /> + <Body post={post} /> + </div> </div> </div> </li> diff --git a/frontend/src/components/profile/root.js b/frontend/src/components/profile/root.js index 69109ab326..4ca84f03f2 100644 --- a/frontend/src/components/profile/root.js +++ b/frontend/src/components/profile/root.js @@ -74,13 +74,14 @@ const getModeration = (profile, user) => { delete: false, } - if (user.is_anonumous) return moderation + if (user.is_anonymouse) return moderation moderation.rename = profile.acl.can_rename moderation.avatar = profile.acl.can_moderate_avatar moderation.delete = profile.acl.can_delete - moderation.available = + moderation.available = ( moderation.rename || moderation.avatar || moderation.delete + ) return moderation } diff --git a/frontend/src/style/misago/post-feed.less b/frontend/src/style/misago/post-feed.less index 60cdf9e6de..1b799e776f 100644 --- a/frontend/src/style/misago/post-feed.less +++ b/frontend/src/style/misago/post-feed.less @@ -3,6 +3,9 @@ // -------------------------------------------------- .post-feed .post-side { + width: 100%; + padding-right: 0; + .media-heading { margin: 0px; diff --git a/misago/static/misago/css/misago.css b/misago/static/misago/css/misago.css index 8fc1164173..5e09f28f54 100644 --- a/misago/static/misago/css/misago.css +++ b/misago/static/misago/css/misago.css @@ -1,3 +1,3 @@ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;font-family:sans-serif}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:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}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{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{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-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:transparent!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:10px}body{background-color:#fff;color:#172b4d;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0065ff;text-decoration:none}a:focus,a:hover{color:#0747a6;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{background-color:#fff;border:1px solid #ddd;border-radius:4px;display:inline-block;height:auto;line-height:1.42857143;max-width:100%;padding: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{border:0;border-top:1px solid #ebecf0;margin-bottom:20px;margin-top:20px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:inherit;font-weight:500;line-height:1.1}.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{color:#7a869a;font-weight:400;line-height:1}.h1,.h2,.h3,h1,h2,h3{margin-bottom:10px;margin-top:20px}.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-bottom:10px;margin-top: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{font-size:16px;font-weight:300;line-height:1.4;margin-bottom:20px}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.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:#7a869a}.text-primary{color:#0052cc}a.text-primary:focus,a.text-primary:hover{color:#003d99}.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{background-color:#0052cc;color:#fff}a.bg-primary:focus,a.bg-primary:hover{background-color:#003d99}.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{border-bottom:1px solid #ebecf0;margin:40px 0 20px;padding-bottom:9px}ol,ul{margin-bottom:10px;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px;margin-top:0}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:700px){.dl-horizontal dt{clear:left;float:left;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:160px}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{border-left:5px solid #ebecf0;font-size:17.5px;margin:0 0 20px;padding:10px 20px}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{color:#7a869a;display:block;font-size:80%;line-height:1.42857143}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{border-left:0;border-right:5px solid #ebecf0;padding-left:0;padding-right:15px;text-align:right}.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{font-style:normal;line-height:1.42857143;margin-bottom:20px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Courier New,monospace}code{background-color:#f9f2f4;border-radius:4px;color:#c7254e}code,kbd{font-size:90%;padding:2px 4px}kbd{background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);color:#fff}kbd kbd{box-shadow:none;font-size:100%;font-weight:700;padding:0}pre{word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#344563;display:block;font-size:13px;line-height:1.42857143;margin:0 0 10px;padding:9.5px;word-break:break-all}pre code{background-color:transparent;border-radius:0;color:inherit;font-size:inherit;padding:0;white-space:pre-wrap}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.row-no-gutters{margin-left:0;margin-right:0}.row-no-gutters [class*=col-]{padding-left:0;padding-right:0}.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{min-height:1px;padding-left:15px;padding-right:15px;position:relative}.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}table col[class*=col-]{display:table-column;float:none;position:static}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none;position:static}caption{color:#7a869a;padding-bottom:8px;padding-top:8px}caption,th{text-align:left}.table{margin-bottom:20px;max-width:100%;width:100%}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{border-top:1px solid #ddd;line-height:1.42857143;padding:8px;vertical-align:top}.table>thead>tr>th{border-bottom:2px solid #ddd;vertical-align:bottom}.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,.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,.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{-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;margin-bottom:15px;overflow-y:hidden;width:100%}.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{margin:0;min-width:0}fieldset,legend{border:0;padding:0}legend{border-bottom:1px solid #e5e5e5;color:#344563;display:block;font-size:21px;line-height:inherit;margin-bottom:20px;width:100%}label{display:inline-block;font-weight:700;margin-bottom:5px;max-width:100%}input[type=search]{-webkit-appearance:none;appearance:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{line-height:normal;margin:4px 0 0;margin-top:1px\9}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}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{padding-top:7px}.form-control,output{color:#172b4d;display:block;font-size:14px;line-height:1.42857143}.form-control{background-color:#fff;background-image:none;border:1px solid #ced0da;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);height:34px;padding:6px 12px;-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}.form-control:focus{border-color:#66afe9;-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);outline:0}.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:#ebecf0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{display:block;margin-bottom:10px;margin-top:10px;position:relative}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{cursor:pointer;font-weight:400;margin-bottom:0;min-height:20px;padding-left:20px}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-left:-20px;margin-top:4px\9;position:absolute}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{cursor:pointer;display:inline-block;font-weight:400;margin-bottom:0;padding-left:20px;position:relative;vertical-align:middle}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-left:10px;margin-top:0}.form-control-static{margin-bottom:0;min-height:34px;padding-bottom:7px;padding-top:7px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}.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{font-size:12px;height:30px;line-height:1.5;min-height:32px;padding:6px 10px}.input-lg{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}.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{font-size:18px;height:46px;line-height:1.3333333;min-height:38px;padding:11px 16px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{display:block;height:34px;line-height:34px;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:34px;z-index:2}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{height:46px;line-height:46px;width:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{height:30px;line-height:30px;width: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{background-color:#dff0d8;border-color:#3c763d;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{background-color:#fcf8e3;border-color:#8a6d3b;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{background-color:#f2dede;border-color:#a94442;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{color:#3462af;display:block;margin-bottom:10px;margin-top:5px}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;vertical-align:middle;width:auto}.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-bottom:0;margin-top: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]{margin-left:0;position:relative}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-bottom:0;margin-top:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{margin-bottom:0;padding-top:7px;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{font-size:18px;padding-top:11px}.form-horizontal .form-group-sm .control-label{font-size:12px;padding-top:6px}}.btn{background-image:none;border:1px solid transparent;border-radius:4px;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;line-height:1.42857143;margin-bottom:0;padding:6px 12px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.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:#172b4d;text-decoration:none}.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed;filter:alpha(opacity=65);opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{background-color:#ebecf0;border-color:#ccc;color:#172b4d}.btn-default.focus,.btn-default:focus{background-color:#ced0da;border-color:#8c8c8c;color:#172b4d}.btn-default:hover{background-color:#ced0da;border-color:#adadad;color:#172b4d}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-color:#ced0da;background-image:none;border-color:#adadad;color:#172b4d}.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{background-color:#b9bdcb;border-color:#8c8c8c;color:#172b4d}.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:#ebecf0;border-color:#ccc}.btn-default .badge{background-color:#172b4d;color:#ebecf0}.btn-primary{background-color:#6554c0;border-color:#5643b7;color:#fff}.btn-primary.focus,.btn-primary:focus{background-color:#4d3da4;border-color:#2a215a;color:#fff}.btn-primary:hover{background-color:#4d3da4;border-color:#41338a;color:#fff}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-color:#4d3da4;background-image:none;border-color:#41338a;color:#fff}.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{background-color:#41338a;border-color:#2a215a;color:#fff}.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:#6554c0;border-color:#5643b7}.btn-primary .badge{background-color:#fff;color:#6554c0}.btn-success{background-color:#00c853;border-color:#00af48;color:#fff}.btn-success.focus,.btn-success:focus{background-color:#00953e;border-color:#002f14;color:#fff}.btn-success:hover{background-color:#00953e;border-color:#00712f;color:#fff}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-color:#00953e;background-image:none;border-color:#00712f;color:#fff}.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{background-color:#00712f;border-color:#002f14;color:#fff}.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:#00c853;border-color:#00af48}.btn-success .badge{background-color:#fff;color:#00c853}.btn-info{background-color:#3d5afe;border-color:#2444fe;color:#fff}.btn-info.focus,.btn-info:focus{background-color:#0a2ffe;border-color:#0119a1;color:#fff}.btn-info:hover{background-color:#0a2ffe;border-color:#0123e3;color:#fff}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-color:#0a2ffe;background-image:none;border-color:#0123e3;color:#fff}.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{background-color:#0123e3;border-color:#0119a1;color:#fff}.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:#3d5afe;border-color:#2444fe}.btn-info .badge{background-color:#fff;color:#3d5afe}.btn-warning{background-color:#ffab00;border-color:#e69a00;color:#fff}.btn-warning.focus,.btn-warning:focus{background-color:#cc8900;border-color:#640;color:#fff}.btn-warning:hover{background-color:#cc8900;border-color:#a87100;color:#fff}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-color:#cc8900;background-image:none;border-color:#a87100;color:#fff}.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{background-color:#a87100;border-color:#640;color:#fff}.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:#ffab00;border-color:#e69a00}.btn-warning .badge{background-color:#fff;color:#ffab00}.btn-danger{background-color:#ef5350;border-color:#ed3c39;color:#fff}.btn-danger.focus,.btn-danger:focus{background-color:#eb2521;border-color:#98110e;color:#fff}.btn-danger:hover{background-color:#eb2521;border-color:#d51713;color:#fff}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-color:#eb2521;background-image:none;border-color:#d51713;color:#fff}.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{background-color:#d51713;border-color:#98110e;color:#fff}.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:#ef5350;border-color:#ed3c39}.btn-danger .badge{background-color:#fff;color:#ef5350}.btn-link{border-radius:0;color:#0065ff;font-weight:400}.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{background-color:transparent;color:#0747a6;text-decoration:underline}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#7a869a;text-decoration:none}.btn-group-lg>.btn,.btn-lg{border-radius:6px;font-size:18px;line-height:1.3333333;padding:10px 16px}.btn-group-sm>.btn,.btn-sm{border-radius:3px;font-size:12px;line-height:1.5;padding:5px 10px}.btn-group-xs>.btn,.btn-xs{border-radius:3px;font-size:12px;line-height:1.5;padding:1px 5px}.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{height:0;overflow:hidden;position:relative;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px dashed;border-top:4px solid\9;display:inline-block;height:0;margin-left:2px;vertical-align:middle;width:0}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{background-clip:padding-box;background-color:#fff;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);display:none;float:left;font-size:14px;left:0;list-style:none;margin:2px 0 0;min-width:160px;padding:5px 0;position:absolute;text-align:left;top:100%;z-index:1000}.dropdown-menu.pull-right{left:auto;right:0}.dropdown-menu .divider{background-color:#ebecf0;height:1px;margin:9px 0;overflow:hidden}.dropdown-menu>li>a{clear:both;color:#172b4d;display:block;font-weight:400;line-height:1.42857143;padding:3px 20px;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#ebecf0;color:#172b4d;text-decoration:none}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#172b4d;color:#fff;outline:0;text-decoration:none}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#7a869a}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{background-color:transparent;background-image:none;cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);text-decoration:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{color:#7a869a;display:block;font-size:12px;line-height:1.42857143;padding:3px 20px;white-space:nowrap}.dropdown-backdrop{bottom:0;left:0;position:fixed;right:0;top:0;z-index:990}.pull-right>.dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-bottom:4px dashed;border-bottom:4px solid\9;border-top:0;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{bottom:100%;margin-bottom:2px;top:auto}@media (min-width:700px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.nav{list-style:none;margin-bottom:0;padding-left:0}.nav>li,.nav>li>a{display:block;position:relative}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{background-color:#ebecf0;text-decoration:none}.nav>li.disabled>a{color:#7a869a}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{background-color:transparent;color:#7a869a;cursor:not-allowed;text-decoration:none}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#ebecf0;border-color:#0065ff}.nav .nav-divider{background-color:#e5e5e5;height:1px;margin:9px 0;overflow:hidden}.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{border:1px solid transparent;border-radius:4px 4px 0 0;line-height:1.42857143;margin-right:2px}.nav-tabs>li>a:hover{border-color:#ebecf0 #ebecf0 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{background-color:#fff;border:1px solid;border-color:#ddd #ddd transparent;color:#5e6c84;cursor:default}.nav-tabs.nav-justified{border-bottom:0;width:100%}.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{left:auto;top: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{border-radius:4px;margin-right:0}.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{background-color:#0065ff;color:#fff}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-left:0;margin-top:2px}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{left:auto;top: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{border-radius:4px;margin-right:0}.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{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.navbar{border:1px solid transparent;margin-bottom:20px;min-height:54px;position:relative}@media (min-width:700px){.navbar{border-radius:4px}.navbar-header{float:left}}.navbar-collapse{-webkit-overflow-scrolling:touch;border-top:1px solid transparent;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);overflow-x:visible;padding-left:15px;padding-right:15px}.navbar-collapse.in{overflow-y:auto}@media (min-width:700px){.navbar-collapse{border-top:0;box-shadow:none;width:auto}.navbar-collapse.collapse{display:block!important;height:auto!important;overflow:visible!important;padding-bottom:0}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom,.navbar-fixed-top{left:0;position:fixed;right:0;z-index:1030}.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}}@media (min-width:700px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{border-width:0 0 1px;top:0}.navbar-fixed-bottom{border-width:1px 0 0;bottom:0;margin-bottom:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-left:-15px;margin-right:-15px}@media (min-width:700px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-left:0;margin-right:0}}.navbar-static-top{border-width:0 0 1px;z-index:1000}@media (min-width:700px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;font-size:18px;height:54px;line-height:20px;padding:17px 15px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:700px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px;float:right;margin-bottom:10px;margin-right:15px;margin-top:10px;padding:9px 10px;position:relative}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{border-radius:1px;display:block;height:2px;width:22px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:700px){.navbar-toggle{display:none}}.navbar-nav{margin:8.5px -15px}.navbar-nav>li>a{line-height:20px;padding-bottom:10px;padding-top:10px}@media (max-width:699px){.navbar-nav .open .dropdown-menu{background-color:transparent;border:0;box-shadow:none;float:none;margin-top:0;position:static;width:auto}.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:700px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-bottom:17px;padding-top:17px}}.navbar-form{border-bottom:1px solid transparent;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);margin:10px -15px;padding:10px 15px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;vertical-align:middle;width:auto}.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-bottom:0;margin-top: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]{margin-left:0;position:relative}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:699px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:700px){.navbar-form{border:0;-webkit-box-shadow:none;box-shadow:none;margin-left:0;margin-right:0;padding-bottom:0;padding-top:0;width:auto}}.navbar-nav>li>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:0}.navbar-btn{margin-bottom:10px;margin-top:10px}.navbar-btn.btn-sm{margin-bottom:12px;margin-top:12px}.navbar-btn.btn-xs{margin-bottom:16px;margin-top:16px}.navbar-text{margin-bottom:17px;margin-top:17px}@media (min-width:700px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#fff;border-color:#c1c7d0}.navbar-default .navbar-brand{color:#344563}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{background-color:transparent;color:#344563}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#8993a4}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:transparent;color:#505f79}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{background-color:#dfe1e6;color:#6b778c}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{background-color:transparent;color:#c1c7d0}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#dfe1e6;color:#6b778c}@media (max-width:699px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#8993a4}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{background-color:transparent;color:#505f79}.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{background-color:#dfe1e6;color:#6b778c}.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{background-color:transparent;color:#c1c7d0}}.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:#c1c7d0}.navbar-default .navbar-link{color:#8993a4}.navbar-default .navbar-link:hover{color:#505f79}.navbar-default .btn-link{color:#8993a4}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#505f79}.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:#c1c7d0}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#a5aebb}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#a5aebb}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#080808;color:#fff}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{background-color:transparent;color:#444}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:699px){.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:#a5aebb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:transparent;color:#fff}.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{background-color:#080808;color:#fff}.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{background-color:transparent;color:#444}}.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-link{color:#a5aebb}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#a5aebb}.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{background-color:#f5f5f5;border-radius:4px;list-style:none;margin-bottom:20px;padding:8px 15px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{color:#ccc;content:"/\00a0";padding:0 5px}.breadcrumb>.active{color:#7a869a}.alert{border:1px solid transparent;border-radius:4px;margin-bottom:20px;padding:15px}.alert h4{color:inherit;margin-top:0}.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{color:inherit;position:relative;right:-21px;top:-2px}.alert-success{background-color:#00875a;border-color:#00875a;color:#fff}.alert-success hr{border-top-color:#006e49}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#448aff;border-color:#448aff;color:#fff}.alert-info hr{border-top-color:#2a7aff}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff8b00;border-color:#ff8b00;color:#fff}.alert-warning hr{border-top-color:#e67d00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#de350b;border-color:#de350b;color:#fff}.alert-danger hr{border-top-color:#c62f0a}.alert-danger .alert-link{color:#e6e6e6}.label{border-radius:.25em;color:#fff;display:inline;font-size:75%;font-weight:700;line-height:1;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#7a869a}.label-default[href]:focus,.label-default[href]:hover{background-color:#616d80}.label-primary{background-color:#0052cc}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#003d99}.label-success{background-color:#36b37e}.label-success[href]:focus,.label-success[href]:hover{background-color:#2a8c62}.label-info{background-color:#3d5afe}.label-info[href]:focus,.label-info[href]:hover{background-color:#0a2ffe}.label-warning{background-color:#ffab00}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc8900}.label-danger{background-color:#ff5630}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fc2e00}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}.progress{background-color:#ebecf0;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);height:20px;margin-bottom:20px;overflow:hidden}.progress-bar{background-color:#6554c0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);color:#fff;float:left;font-size:12px;height:100%;line-height:20px;text-align:center;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease;width:0}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);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:#36b37e}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-info{background-color:#3d5afe}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-warning{background-color:#ffab00}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-danger{background-color:#ff5630}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.btn-group,.btn-group-vertical{display:inline-block;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{float:left;position:relative}.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-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-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-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right: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}.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;max-width:100%;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-left:0;margin-top:-1px}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:0;border-top-right-radius:0}.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-left-radius:0;border-bottom-right-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{border-collapse:separate;display:table;table-layout:fixed;width:100%}.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]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.input-group{border-collapse:separate;display:table;position:relative}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;margin-bottom:0;position:relative;width:100%;z-index:2}.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{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}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{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}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{vertical-align:middle;white-space:nowrap;width:1%}.input-group-addon{background-color:#ebecf0;border:1px solid #ced0da;border-radius:4px;color:#172b4d;font-size:14px;font-weight:400;line-height:1;padding:6px 12px;text-align:center}.input-group-addon.input-sm{border-radius:3px;font-size:12px;padding:5px 10px}.input-group-addon.input-lg{border-radius:6px;font-size:18px;padding:10px 16px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.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{margin-left:-1px;z-index:2}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.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-bottom:5px;margin-top:0}.media-list{list-style:none;padding-left:0}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{background-color:#fff;border:1px solid #ebecf0;display:block;margin-bottom:-1px;padding:10px 15px;position:relative}.list-group-item:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.list-group-item:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px;margin-bottom:0}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#ebecf0;color:#7a869a;cursor:not-allowed}.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:#7a869a}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{background-color:#fff;border-color:#ebecf0;color:#0065ff;z-index:2}.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:#fff}a.list-group-item,button.list-group-item{color:#7a869a}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{background-color:#fff;color:#172b4d;text-decoration:none}button.list-group-item{text-align:left;width:100%}.list-group-item-success{background-color:#dff0d8;color:#3c763d}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{background-color:#d0e9c6;color:#3c763d}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{background-color:#3c763d;border-color:#3c763d;color:#fff}.list-group-item-info{background-color:#d9edf7;color:#31708f}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{background-color:#c4e3f3;color:#31708f}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{background-color:#31708f;border-color:#31708f;color:#fff}.list-group-item-warning{background-color:#fcf8e3;color:#8a6d3b}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{background-color:#faf2cc;color:#8a6d3b}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{background-color:#8a6d3b;border-color:#8a6d3b;color:#fff}.list-group-item-danger{background-color:#f2dede;color:#a94442}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{background-color:#ebcccc;color:#a94442}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{background-color:#a94442;border-color:#a94442;color:#fff}.list-group-item-heading{margin-bottom:5px;margin-top:0}.list-group-item-text{line-height:1.3;margin-bottom:0}.panel{background-color:#fff;border:1px solid transparent;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);margin-bottom:20px}.panel-body{padding:15px}.panel-heading{border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px;padding:14px 15px}.panel-heading>.dropdown .dropdown-toggle,.panel-title{color:inherit}.panel-title{font-size:16px;margin-bottom:0;margin-top:0}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #ebecf0;padding:14px 15px}.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-radius:0;border-width:1px 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-left-radius:3px;border-bottom-right-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{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-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.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,.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-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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-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>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-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>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,.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-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{border-radius:4px;margin-bottom:0}.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 #ebecf0}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ebecf0}.panel-default{border-color:#ddd}.panel-default>.panel-heading{background-color:#fff;border-color:#ddd;color:#344563}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{background-color:#344563;color:#fff}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#0052cc}.panel-primary>.panel-heading{background-color:#0052cc;border-color:#0052cc;color:#fff}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#0052cc}.panel-primary>.panel-heading .badge{background-color:#fff;color:#0052cc}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#0052cc}.panel-success{border-color:#36b37e}.panel-success>.panel-heading{background-color:#dff0d8;border-color:#36b37e;color:#3c763d}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#36b37e}.panel-success>.panel-heading .badge{background-color:#3c763d;color:#dff0d8}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#36b37e}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{background-color:#31708f;color:#d9edf7}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{background-color:#8a6d3b;color:#fcf8e3}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ff5630}.panel-danger>.panel-heading{background-color:#f2dede;border-color:#ff5630;color:#a94442}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff5630}.panel-danger>.panel-heading .badge{background-color:#a94442;color:#f2dede}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff5630}.pager{list-style:none;margin:20px 0;padding-left:0;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{background-color:#fff;border:1px solid #ddd;border-radius:15px;display:inline-block;padding:5px 14px}.pager li>a:focus,.pager li>a:hover{background-color:#ebecf0;text-decoration:none}.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{background-color:#fff;color:#7a869a;cursor:not-allowed}.pagination{border-radius:4px;display:inline-block;margin:20px 0;padding-left:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{background-color:#fff;border:1px solid #ddd;color:#0065ff;float:left;line-height:1.42857143;margin-left:-1px;padding:6px 12px;position:relative;text-decoration:none}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#ebecf0;border-color:#ddd;color:#0747a6;z-index:2}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:4px;border-top-left-radius:4px;margin-left:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#0052cc;border-color:#0052cc;color:#fff;cursor:default;z-index:3}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{background-color:#fff;border-color:#ddd;color:#7a869a;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{font-size:18px;line-height:1.3333333;padding:10px 16px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{font-size:12px;line-height:1.5;padding:5px 10px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.embed-responsive{display:block;height:0;overflow:hidden;padding:0;position:relative}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{border:0;bottom:0;height:100%;left:0;position:absolute;top:0;width:100%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{background-color:#fff;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);margin-bottom:20px;min-height:20px;padding:19px}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{border-radius:6px;padding:24px}.well-sm{border-radius:3px;padding:9px}.close{color:#000;filter:alpha(opacity=20);float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff}.close:focus,.close:hover{color:#000;cursor:pointer;filter:alpha(opacity=50);opacity:.5;text-decoration:none}button.close{-webkit-appearance:none;appearance:none;background:transparent;border:0;cursor:pointer;padding:0}.badge{background-color:#7a869a;border-radius:10px;color:#fff;display:inline-block;font-size:12px;font-weight:700;line-height:1;min-width:10px;padding:3px 7px;text-align:center;vertical-align:middle;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{padding:1px 5px;top:0}a.badge:focus,a.badge:hover{color:#fff;cursor:pointer;text-decoration:none}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{background-color:#fff;color:#0065ff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.modal,.modal-open{overflow:hidden}.modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;outline:0;position:fixed;right:0;top:0;z-index:1050}.modal.fade .modal-dialog{-webkit-transform:translateY(-25%);-ms-transform:translateY(-25%);-o-transform:translateY(-25%);transform:translateY(-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0);-ms-transform:translate(0);-o-transform:translate(0);transform:translate(0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{margin:10px;position:relative;width:auto}.modal-content{background-clip:padding-box;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0;position:relative}.modal-backdrop{background-color:#091e42;bottom:0;left:0;position:fixed;right:0;top:0;z-index:1040}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{border-bottom:1px solid #ced0da;padding:15px}.modal-header .close{margin-top:-2px}.modal-title{line-height:1.42857143;margin:0}.modal-body{padding:15px;position:relative}.modal-footer{border-top:1px solid #ced0da;padding:15px;text-align:right}.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{height:50px;overflow:scroll;position:absolute;top:-9999px;width:50px}@media (min-width:768px){.modal-dialog{margin:30px auto;width:600px}.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}}.agreement-footer:after,.agreement-footer:before,.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{content:" ";display:table}.agreement-footer:after,.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-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{background-color:transparent;border:0;color:transparent;font:0/0 a;text-shadow:none}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.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}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.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}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.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}.hidden-print{display:none!important}}@media screen and (max-width:991px){body,html{overflow-x:hidden}}@media screen and (min-width:992px){.md-margin-top-no{margin-top:0!important}}@media screen and (min-width:768px) and (max-width:991px){.sm-margin-top{margin-top:20px!important}.sm-margin-top-no{margin-top:0!important}.sm-margin-top-half{margin-top:6.6px!important}.sm-align-row-buttons{margin-top:5px!important}}@media screen and (max-width:767px){.xs-margin-top{margin-top:20px!important}.xs-margin-top-half{margin-top:6.6px!important}}.flex-row{display:block;margin:0 -15px}.flex-row-section{align-items:center;display:flex;flex:1}.flex-row-section+.flex-row-section{margin-top:20px}.flex-row-col{flex:1;padding:0 15px}@media screen and (min-width:768px){.flex-row{align-items:center;display:flex}.flex-row-section+.flex-row-section{margin:0}.flex-row-col,.flex-row-section{align-items:center;flex:0}.flex-row-section.flex-row-section-auto,.flex-row-section.flex-row-section-auto>.flex-row-col{flex:1}}.flex-row-col-shrink{flex:0!important}.auth-message{background-color:#ebecf0;left:0;padding:20px 0;position:fixed;top:-100%;transition:top .3s ease;width:100%;z-index:1070}.auth-message.show{bottom:auto;top:0}.auth-message p{color:#172b4d;padding:5px 0}@media screen and (max-width:991px){.auth-message{text-align:center}.auth-message .btn{font-size:18px;padding:10px 16px}}.alerts-snackbar{font-size:18px;pointer-events:none;position:fixed;text-align:center;top:-100%;transition:top .3s ease;width:100%;z-index:1060}.alerts-snackbar.in{top:0;transition:top .2s ease}.alerts-snackbar p{border-radius:0 0 4px 4px;display:inline-block;margin:0;pointer-events:all}.agreement-overlay{background-color:rgba(9,30,66,.5);height:100%;left:0;overflow-x:scroll;position:fixed;top:0;width:100%;z-index:1060}.agreement-overlay .container{max-width:900px;padding:20px 30px}.agreement-content{background-clip:padding-box;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0;padding:10px 16px}.agreement-header{border-bottom:1px solid #ebecf0;padding:10px 0}.agreement-header h2{margin-top:0}.agreement-header p{margin:0;padding:0}.agreement-body{padding:20px 0}.agreement-body p.lead{margin:0;padding:0}.agreement-footer{border-top:1px solid #ced0da;padding:10px 0;text-align:right}.agreement-footer .btn+.btn{margin-bottom:0;margin-left:5px}.agreement-footer .btn-group .btn+.btn{margin-left:-1px}.agreement-footer .btn-block+.btn-block{margin-left:0}body.agreement-overlay-visible{overflow:hidden}.loader{height:49px;text-align:center;width:100%}.loader.loader-spaced{margin:40px 0}.loader-spinning-wheel{animation:cssload-spin 575ms linear infinite;-o-animation:cssload-spin 575ms linear infinite;-ms-animation:cssload-spin 575ms linear infinite;-webkit-animation:cssload-spin 575ms linear infinite;-moz-animation:cssload-spin 575ms linear infinite;border-color:#7a869a transparent;border-radius:50%;border-style:solid;border-width:3px;height:49px;margin:0 auto;width:49px}@keyframes cssload-spin{to{transform:rotate(1turn)}}@-o-keyframes cssload-spin{to{-o-transform:rotate(1turn);transform:rotate(1turn)}}@-ms-keyframes cssload-spin{to{-ms-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes cssload-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-moz-keyframes cssload-spin{to{-moz-transform:rotate(1turn);transform:rotate(1turn)}}.navbar{margin-bottom:0}.navbar .navbar-full .navbar-brand{font-size:21px;padding-bottom:11px;padding-top:11px}.navbar .navbar-full .navbar-brand>*{display:inline-block;vertical-align:middle}.navbar .navbar-full .navbar-brand img{height:32px;margin-right:6px}.navbar .navbar-full .navbar-nav>li>a{font-size:16.8px}.navbar .navbar-full .navbar-icon{color:#8993a4;display:block;height:54px;padding:13px 15px;position:relative}.navbar .navbar-full .navbar-icon:focus,.navbar .navbar-full .navbar-icon:hover{background-color:transparent;color:#505f79}.navbar .navbar-full .navbar-icon .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.navbar .navbar-full .navbar-icon .badge{background-color:#ff5630;font-size:9px;position:absolute;right:6px;top:6px}.navbar .navbar-full .open .navbar-icon,.navbar .navbar-full .open .navbar-icon:focus,.navbar .navbar-full .open .navbar-icon:hover{background-color:#dfe1e6;color:#6b778c}.navbar .navbar-full .nav-guest,.navbar .navbar-full .nav-user{float:right}.navbar .navbar-full .nav-guest .navbar-btn,.navbar .navbar-full .nav-user .navbar-btn{margin-left:15px}.navbar .navbar-full .nav-user .dropdown-toggle{padding:10px}.navbar .navbar-full .nav-user .dropdown-toggle img{height:34px;width:34px}.navbar ul.navbar-compact-nav{border-collapse:collapse;display:table;margin:0;table-layout:fixed;width:100%}.navbar ul.navbar-compact-nav>li{display:table-cell;width:100%}.navbar ul.navbar-compact-nav>li>a,.navbar ul.navbar-compact-nav>li>button{background:none;border:none;color:#8993a4;display:block;padding-bottom:13px;padding-top:13px;text-align:center;width:100%}.navbar ul.navbar-compact-nav>li>a.active,.navbar ul.navbar-compact-nav>li>a:focus,.navbar ul.navbar-compact-nav>li>a:hover,.navbar ul.navbar-compact-nav>li>button.active,.navbar ul.navbar-compact-nav>li>button:focus,.navbar ul.navbar-compact-nav>li>button:hover{background-color:#dfe1e6;color:#6b778c}.navbar ul.navbar-compact-nav>li>a>img,.navbar ul.navbar-compact-nav>li>button>img{height:24px;width:24px}.navbar ul.navbar-compact-nav>li>button{display:inline-block}.navbar ul.navbar-compact-nav>li>a>.material-icon{font-size:24px;line-height:24px}@media (max-width:700px){.navbar.navbar-misago{min-height:auto}}.navbar-misago .navbar-desktop-nav{display:none}@media (min-width:700px){.navbar-misago ul.navbar-compact-nav{display:none}.navbar-misago .navbar-desktop-nav{display:block}}.nav-side>a>.material-icon{bottom:1px;font-size:24px;height:24px;line-height:24px;margin:-5px 10px -5px -5px;position:relative;width:24px}.nav-side>a .badge{position:relative;top:1px}.nav-pills>li>a{align-items:center;display:flex;padding:5px 10px}.nav-pills>li>a .material-icon{margin-right:3px}.nav-pills>li>a,.nav-pills>li>a:link,.nav-pills>li>a:visited{background-color:#ebecf0;color:#344563}.nav-pills>li>a:active,.nav-pills>li>a:focus,.nav-pills>li>a:hover{background-color:#dcdee5;color:#344563}.nav-pills>li.active>a,.nav-pills>li.active>a:active,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:link,.nav-pills>li.active>a:visited{background-color:#344563;color:#fff}.nav-container .btn-block{margin-bottom:20px}.nav-container .nav{margin-bottom:30px;margin-right:-10px}.nav-container li{margin-bottom:10px;margin-right:10px}.breadcrumbs{display:block;margin-bottom:10px;padding:0}.breadcrumbs-item{display:inline-block;list-style:none;margin-bottom:10px;margin-right:15px;padding:0}.breadcrumbs-item a{align-items:center;display:flex;text-decoration:none}.breadcrumbs-item a,.breadcrumbs-item a:visited{color:#5e6c84}.breadcrumbs-item a:focus,.breadcrumbs-item a:hover{color:#172b4d}.breadcrumbs-item a:focus .breadcrumbs-item-name,.breadcrumbs-item a:hover .breadcrumbs-item-name{text-decoration:underline}.breadcrumbs-item a:active{color:#172b4d}.breadcrumbs-item .material-icon{margin-right:4px}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons-Regular.woff2) format("woff2"),url(../fonts/MaterialIcons-Regular.woff) format("woff"),url(../fonts/MaterialIcons-Regular.ttf) format("truetype")}.material-icon{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:inline-block;font-family:Material Icons;font-style:normal;font-weight:400;height:1em;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;vertical-align:middle;white-space:nowrap;width:1em}.modal-toolbar{background:#ebecf0;border-bottom:1px solid #ced0da;overflow:auto;padding:6px 12px}.modal-toolbar .pull-left{margin-right:8px}.modal-toolbar p{margin-bottom:0;padding:5px 0}@media screen and (max-width:991px){.modal-message{text-align:center}.modal-message .message-icon{margin:30px}.modal-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.modal-message .modal-body{padding-bottom:30px;padding-top:20px}.modal-message .message-icon{float:left;left:7px;position:relative}.modal-message .message-icon .material-icon{font-size:50px}.modal-message .message-body{margin-left:75px;margin-top:10px}.modal-message .message-body p{margin-top:20px}.modal-message .message-body .lead{margin-bottom:0;margin-top:0}}.modal-loader{padding:50px 0}.modal-loader .loader{height:80px;text-align:center;width:100%}.modal-loader .loader-spinning-wheel{height:80px;width:80px}.modal-body .form-group{min-height:34px}.list-item-errors{margin-bottom:20px}.list-errored-items li:last-child .list-item-errors{margin-bottom:0}.modal-post-likers .media-list{margin:0}.modal-post-likers .item-title{display:block}.has-feedback .material-icon.form-control-feedback{font-size:1.42857143;line-height:1.42857143;right:24px;top:6px}.well.well-form.well-done{font-size:18px;text-align:center}.well.well-form.well-done .message-icon{font-size:90px;line-height:90px;margin-bottom:10px}.well.well-form.well-done .message-body{margin-bottom:20px}.well.well-form.well-noscript{font-size:18px;text-align:center}.well.well-form.well-noscript .message-icon{font-size:90px;line-height:90px;margin-bottom:10px}.btn.btn-select,.btn.btn-yes-no{background:transparent;border:1px solid #ced0da}.btn.btn-select .material-icon,.btn.btn-yes-no .material-icon{bottom:1px;font-size:20px;height:20px;line-height:20px;margin:-4px 8px -4px 0;position:relative;width:20px}@media screen and (max-width:767px){.btn.btn-yes-no{overflow:auto;width:100%}.btn.btn-yes-no .material-icon{float:left;margin-top:1px}.btn.btn-yes-no .btn-text{display:block;margin-left:30px;text-align:left;white-space:normal}}input.hidden-file-upload{left:-9999px;position:absolute;top:-9999px}.form-search{position:relative}.form-search .form-control{padding-right:30px}.form-search .material-icon{color:#7a869a;font-size:24px;line-height:24px;pointer-events:none;position:absolute;right:5px;top:5px}.btn.btn-loading,.btn.btn-loading:active,.btn.btn-loading:focus,.btn.btn-loading:hover,.btn.btn-loading:link,.btn.btn-loading:visited{color:transparent}.btn.btn-loading .loader,.btn.btn-loading:active .loader,.btn.btn-loading:focus .loader,.btn.btn-loading:hover .loader,.btn.btn-loading:link .loader,.btn.btn-loading:visited .loader{height:20px;margin-top:-20px}.btn.btn-loading .loader>div,.btn.btn-loading:active .loader>div,.btn.btn-loading:focus .loader>div,.btn.btn-loading:hover .loader>div,.btn.btn-loading:link .loader>div,.btn.btn-loading:visited .loader>div{height:20px;width:20px}.btn.btn-loading.btn-default .loader>div{border-bottom-color:#172b4d;border-top-color:#172b4d}.btn.btn-loading.btn-danger .loader>div,.btn.btn-loading.btn-info .loader>div,.btn.btn-loading.btn-primary .loader>div,.btn.btn-loading.btn-success .loader>div,.btn.btn-loading.btn-warning .loader>div{border-bottom-color:#fff;border-top-color:#fff}.btn .material-icon{bottom:1px;margin-right:3px;position:relative}.btn-icon .material-icon{font-size:20px;height:20px;line-height:20px;margin:-1px -4px;width:20px}.btn-icon .btn-text{margin-left:10px}.btn-icon .btn-text-left{margin-right:10px}.btn-block.btn-icon{padding-left:0;padding-right:0}.dropdown-menu>li>.btn-link,.dropdown-menu>li>a,.modal-menu>li>.btn-link,.modal-menu>li>a{border:none;clear:both;color:#172b4d;display:block;float:none;font-weight:400;line-height:1.42857143;padding:6px 20px;text-align:left;white-space:nowrap;width:100%}.dropdown-menu>li>.btn-link:active,.dropdown-menu>li>.btn-link:focus,.dropdown-menu>li>.btn-link:hover,.dropdown-menu>li>a:active,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.modal-menu>li>.btn-link:active,.modal-menu>li>.btn-link:focus,.modal-menu>li>.btn-link:hover,.modal-menu>li>a:active,.modal-menu>li>a:focus,.modal-menu>li>a:hover{background-color:#ebecf0;color:#172b4d;text-decoration:none}.dropdown-menu>li>.btn-link:disabled,.dropdown-menu>li>a:disabled,.modal-menu>li>.btn-link:disabled,.modal-menu>li>a:disabled{color:rgba(23,43,77,.5)}.dropdown-menu>li>.btn-link .material-icon,.dropdown-menu>li>a .material-icon,.modal-menu>li>.btn-link .material-icon,.modal-menu>li>a .material-icon{bottom:1px;font-size:18px;margin:-2px 7px -2px 0;position:relative}.dropdown-menu>li>.btn-link .badge,.dropdown-menu>li>a .badge,.modal-menu>li>.btn-link .badge,.modal-menu>li>a .badge{float:right;position:relative;top:1px}.modal-menu{margin:20px 0;padding:0}.modal-menu>li{list-style:none;margin:6.66666667px 0;padding:0}.dropdown-menu{min-width:210px}.dropdown-menu .dropdown-footer{padding:6px 20px}.dropdown-menu .dropdown-buttons{padding:2px 20px 7px}.dropdown-menu .dropdown-buttons .btn{margin:4px 0}.mobile-dropdown{position:relative}.compact-nav.open>.dropdown-menu,.mobile-dropdown.open>.dropdown-menu{border:none;border-radius:0;display:block;margin:0;width:100%}.user-dropdown .guest-preview{text-align:center}.user-dropdown .guest-preview .row{margin:0}.navbar .user-dropdown{width:240px}.user-dropdown .dropdown-header{font-size:18px;padding:6px 20px}.user-dropdown .dropdown-header strong{font-weight:400}@media screen and (min-width:992px){.category-picker .dropdown-menu{width:300px}}.category-picker .dropdown-menu>li>.btn-link{word-wrap:break-word;white-space:normal}@media screen and (max-width:767px){.dropdown-menu.stick-to-bottom{border:none;border-radius:0;bottom:0;-webkit-box-shadow:0 0 30px #7a869a;box-shadow:0 0 30px #7a869a;clear:both;margin:0;max-height:300px;overflow-y:auto;padding:0 0 20px;position:fixed;top:auto;width:100%}.dropdown-menu.stick-to-bottom li{clear:both;float:none;margin:0}.dropdown-menu.stick-to-bottom li>.btn,.dropdown-menu.stick-to-bottom li>a{border-bottom:1px solid #ebecf0;padding-bottom:15px;padding-top:15px}}.category-label{border-radius:.25em;padding:.2em .6em .3em}.category-label-color,.category-label-color:active,.category-label-color:focus,.category-label-color:hover,.category-label-color:link,.category-label-color:visited{color:#fff}.category-label-no-color,.category-label-no-color:active,.category-label-no-color:focus,.category-label-no-color:hover,.category-label-no-color:link,.category-label-no-color:visited{background-color:#ebecf0;color:#344563}.thread-flags{margin:0;opacity:.8;padding:0}.thread-flags,.thread-flags li{align-items:center;display:flex}.thread-flags li{border-radius:3px;cursor:default;height:20px;justify-content:center;list-style-type:none;width:20px}.thread-flags li+li{margin-left:7.5px}.thread-flags .material-icon{font-size:16px;line-height:16px}.thread-flag-pinned-globally{background:#dbeafe;color:#2563eb}.thread-flag-pinned-locally{background:#dbeafe;color:#3b82f6}.thread-flag-answered{background:#d9f99d;color:#4d7c0f}.thread-flag-poll{background:#f5d0fe;color:#c026d3}.thread-flag-unapproved{background:#dc2626;color:#fff}.thread-flag-closed{background:#fecaca;color:#dc2626}.thread-flag-hidden{background:#64748b;color:#fff}.threads-replies{align-items:center;color:#5e6c84;display:flex;font-size:16px;font-weight:700}.threads-replies .material-icon{margin-right:7.5px;transform:matrix(-1,0,0,1,0,0)}.thread-user-card{align-items:center;display:flex}.thread-user-card-media{flex:0;margin-right:15px}.thread-user-card-media img{border-radius:3px}.thread-user-card-body{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar-misago .dropdown-menu.dropdown-search-results{left:auto;margin:0;padding-top:0;right:0;width:400px}.dropdown-search-results .form-group{margin:0;padding:12px}li.dropdown-search-message{text-align:center}.dropdown-search-thread{width:100%}.dropdown-search-thread h5{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-search-thread small{display:block;margin:4px 0 0}.page-header{margin:10px 0 0}.page-header-banner-bg-overlay{padding:20px 0}.page-header h1{margin:0;overflow-wrap:break-word}.page-container{padding-top:20px}@media screen and (max-width:991px){.panel-message-body{text-align:center}.panel-message-body .message-icon{margin:30px}.panel-message-body .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.panel-message-body{padding:20px 20px 30px}.panel-message-body .message-icon{float:left}.panel-message-body .message-icon .material-icon{font-size:50px}.panel-message-body .message-body{margin-left:65px;margin-top:10px}.panel-message-body .message-body .lead{margin-bottom:0}.panel-message-body .message-body .help-block{margin-top:13.2px}}.panel-body-loading{padding:0;text-align:center}.misago-footer{margin-bottom:50px;margin-top:30px}.misago-footer .footer-content{padding-top:30px}.misago-footer .noscript-message .material-icon{bottom:1px;font-size:18px;position:relative}.ui-preview{-webkit-animation:ui-preview-animation 1s linear infinite;-o-animation:ui-preview-animation 1s linear infinite;animation:ui-preview-animation 1s linear infinite;color:#ebecf0}@keyframes ui-preview-animation{0%{filter:alpha(opacity=100);opacity:1}50%{filter:alpha(opacity=10);opacity:.1}to{filter:alpha(opacity=100);opacity:1}}.ui-preview-text{background:#ebecf0;border-radius:100px;display:inline-block;height:14px;position:relative;top:3px}.ui-preview-paragraph .ui-preview-text{margin-right:6px}.ui-preview-paragraph .ui-preview-text:last-child{margin-right:0}.ui-preview-img{background:#ebecf0;border-radius:5px}.pager-undercontent{margin-top:-20px}.pager-more{text-align:center}@media screen and (min-width:992px){.pager-more .btn{padding-left:20px;padding-right:20px}}.misago-pagination{display:flex}.misago-pagination .btn{display:block;width:100%}.misago-pagination .btn+.btn{margin-left:30px}@media screen and (max-width:767px){.toolbar-item .misago-pagination{flex:1}}.panel-poll h2{margin-top:0}.poll-select-choice .btn,.poll-select-choice .btn:active,.poll-select-choice .btn:focus,.poll-select-choice .btn:hover{background:transparent;border:transparent;-webkit-box-shadow:none;box-shadow:none;margin:6px 0;outline:none;padding:0 0 0 6px;text-align:left}.poll-select-choice .btn .material-icon{line-heigh:28px;color:#ced0da;font-size:28px;height:28px;margin-right:6px;width:28px}.poll-select-choice .btn.btn-selected .material-icon{color:#0052cc}.poll-help{font-size:12px}.poll-chart-selected .material-icon{line-heigh:14px;bottom:1px;color:#36b37e;font-size:14px;height:14px;margin-right:4px;position:relative;width:14px}.poll-options{margin-bottom:0}@media screen and (max-width:767px){.poll-options{margin-top:-6px}.poll-options .btn{margin:6px 0}}.user-status.user-banned .status-icon{color:#ff5630}.user-status.user-online .status-icon{color:#36b37e}.user-status.user-offline .status-icon{color:#7a869a}@media screen and (min-width:768px){.user-card{text-align:center}}.user-card-small-avatar img{height:auto;width:100%}@media screen and (min-width:768px){.user-card-small-avatar{display:none}}@media screen and (max-width:767px){.user-card-avatar{display:none}}.toolbar{display:block;margin:0 -15px}.toolbar-section{display:flex;flex:1;justify-items:center;margin-bottom:20px}.toolbar-item{flex:1;padding:0 15px}.toolbar-item h3,.toolbar-item p{margin:0}.toolbar-item-shrink{flex:0}.toolbar-spacer{display:none}@media screen and (min-width:768px){.toolbar{display:flex}.toolbar-item,.toolbar-section{align-items:center;flex:0}.toolbar-section.toolbar-section-auto,.toolbar-section.toolbar-section-auto .toolbar-item{flex:1}.toolbar-spacer{display:block;flex:1}.toolbar-item .form-search{width:250px}}@media screen and (max-width:767px){.toolbar-item p{text-align:center}}abbr{border:none!important}.item-title{text-decoration:none}.item-title,a.item-title:active,a.item-title:hover,a.item-title:link,a.item-title:visited{color:#172b4d;font-weight:700}a.item-title:hover{text-decoration:underline}.message-line{text-align:center}.message-line .material-icon{font-size:20px;height:20px;line-height:20px;margin-right:6.66666667px;width:20px}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.misago-markup h1,.misago-markup h2,.misago-markup h3,.misago-markup h4,.misago-markup h5,.misago-markup h6,.misago-markup p{word-wrap:break-word}.misago-markup h1,.misago-markup h2,.misago-markup h3,.misago-markup h4,.misago-markup h5,.misago-markup h6{margin-top:40px}.misago-markup blockquote>*,.misago-markup>*{margin:20px 0}.misago-markup blockquote>:first-child,.misago-markup>:first-child{margin-top:0}.misago-markup blockquote>:last-child,.misago-markup>:last-child{margin-bottom:0}.misago-markup img{max-height:500px;max-width:100%}.misago-markup .quote-block,.misago-markup blockquote{background:#ebecf0;border:none;font-size:14px}.misago-markup .quote-block .quote-heading,.misago-markup blockquote .quote-heading{border-bottom:1px solid #d4d6df;font-size:12px;font-weight:700;padding:10px 20px}.misago-markup>.quote-block,.misago-markup>blockquote{border:1px solid #d4d6df}.misago-markup .quote-body{background:#fff;margin:0;padding:20px}.misago-markup .quote-body>.quote-block,.misago-markup .quote-body>blockquote{border:1px solid #d4d6df}.misago-markup .spoiler-block{background:#ebecf0;font-size:14px}.misago-markup>.spoiler-block{border:1px solid #d4d6df;position:relative}.misago-markup .spoiler-body{background:#fff;margin:0;padding:20px}.misago-markup .spoiler-overlay{background:#fff}.misago-markup .spoiler-block.revealed .spoiler-overlay{display:none}.misago-markup ul,.misago-markup ul li{list-style-type:square}.misago-markup ol,.misago-markup ol li{list-style-type:decimal}.misago-markup pre{background:#eee;border:none;color:#000;overflow:hidden;padding:10px}.misago-markup pre code.hljs{margin:-10px;padding:9.5px}.modal-change-avatar .modal-avatar-index .avatar-preview{border-radius:6px;height:200px;margin:0 auto;overflow:hidden;position:relative;width:200px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{display:none;height:100px;position:absolute;top:50px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{border-color:#fff transparent;border-width:10px;height:100px;width:100px}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img{filter:alpha(opacity=33);opacity:.33}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader{display:block}@media (max-width:699px){.modal-change-avatar .modal-avatar-index .avatar-preview{height:150px;margin-bottom:20px;width:150px}.modal-change-avatar .modal-avatar-index .avatar-preview img{height:150px;width:150px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{height:100px;top:25px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{height:100px;width:100px}}.modal-change-avatar .modal-avatar-index .btn{text-align:left}.modal-change-avatar .modal-avatar-upload{text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file{background:transparent;border:2px solid #ebecf0;border-radius:6px;-webkit-box-shadow:none;box-shadow:none;color:#7a869a;font-size:18px;padding:10px 24px;text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file>.material-icon{display:block;font-size:50px;height:50px;margin:0 auto 13.2px;width:50px}.modal-change-avatar .modal-avatar-upload .btn-pick-file:active,.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover{border-color:#0052cc;color:#0052cc}.modal-change-avatar .modal-avatar-upload .text-muted{margin-top:13.2px}.modal-change-avatar .modal-avatar-upload .upload-progress img{border-radius:4px;margin-bottom:20px;max-height:80px;width:auto}.modal-change-avatar .modal-avatar-upload .upload-progress .progress{margin:0 auto;width:70%}.modal-avatar-crop .crop-form{margin:0 auto}.modal-avatar-crop .crop-form .cropit-image-zoom-input{-webkit-appearance:none;border:1px solid #fff;margin-top:10px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track{background:#ebecf0;border:none;border-radius:3px;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb{-webkit-appearance:none;background:#7a869a;border:none;border-radius:50%;height:20px;margin-top:-6px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus{outline:none}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track{background:#ebecf0}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track{background:#ebecf0;border:none;border-radius:4px;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb{background:#7a869a;border:none;border-radius:50%;height:20px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track{background:transparent;border-color:transparent;border-width:8px 0;color:transparent;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower,.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper{background:#ebecf0;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb{background:#7a869a;border:none;border-radius:50%;height:20px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower,.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper{background:#ebecf0}.modal-change-avatar .modal-avatar-gallery{padding-bottom:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery{margin-bottom:20px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3{margin-top:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row{margin-bottom:10px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn{background:none;border:2px solid #ebecf0;border-radius:6px;padding:2px;position:relative}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover{border-color:#7a869a}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active{border-color:#0065ff}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img{border-radius:4px;height:auto;width:100%}.category-main .read-status .material-icon{color:#ebecf0}.category-main .read-status.item-new .material-icon{color:#0052cc}.category-last-thread .media-heading a{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;width:290px}@media screen and (max-width:991px){.category-last-thread .media-heading a{width:275px}}@media screen and (max-width:767px){.category-last-thread .media-heading a{width:260px}}.category-thread-message .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.category-thread-message p{margin:0}.list-inline.subcategories-list{margin-top:-10px;overflow:auto}.list-inline.subcategories-list li{display:block;float:left}.list-inline.subcategories-list li a,.list-inline.subcategories-list li a:active,.list-inline.subcategories-list li a:focus,.list-inline.subcategories-list li a:hover,.list-inline.subcategories-list li a:link,.list-inline.subcategories-list li a:visited{background-color:#ebecf0;border:1px solid #dcdee5;border-radius:4px;color:#5e6c84;display:inline-block;margin-top:10px;padding:6px 12px}.list-inline.subcategories-list li a:active,.list-inline.subcategories-list li a:hover,.list-inline.subcategories-list li:focus{background-color:#dcdee5;color:#172b4d;text-decoration:none}.row.subcategories-list .btn{margin-top:20px;text-align:left}#posting-placeholder{background-color:#ebecf0;display:none;margin-bottom:-30px;margin-top:30px;padding:20px 0;transition:height .3s}#posting-placeholder.slide-in{display:block}#posting-placeholder .first-row{margin-bottom:20px}#posting-placeholder .first-row .form-control{border:1px solid #bfc2cf}#posting-placeholder .first-row .posting-options .btn{padding-bottom:4px;padding-top:4px}#posting-placeholder .first-row .posting-options .btn .btn-text{margin-left:5px;position:relative;top:1px}#posting-placeholder .first-row .posting-options .material-icon{font-size:14px;height:24px;line-height:14px;margin-right:0;position:relative;text-align:center;top:5px;width:14px}.posting-ui-preview{padding:20px 0;position:relative}.posting-ui-preview .form-control{box-shadow:none;resize:none}.posting-loader{text-align:center}.posting-loader .loader{height:100px}.posting-loader .loader .loader-spinning-wheel{height:100px;width:100px}.posting-message{text-align:center}.posting-message .material-icon{font-size:28px;height:28px;line-height:28px;margin-right:6.66666667px;position:relative;top:-1px;width:28px}.posting-message .message-body p{font-size:18px}.editor-border{background-color:#fff;border:1px solid #bfc2cf;border-radius:4px}.editor-border .form-control{border:none;resize:none}.editor-border .form-control,.editor-border .form-control:active,.editor-border .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.editor-footer{border-top:1px solid #bfc2cf;overflow:auto;padding:6px 12px}.editor-footer .pull-left{margin-right:12px}.editor-footer .pull-right{margin-left:12px}.editor-footer .btn-icon .material-icon{margin-bottom:-2px}@media screen and (max-width:991px){.editor-footer .buttons-list{float:none!important;margin:0 0 10px}.editor-footer .buttons-list .btn{display:inline-block;float:none!important;margin:6.66666667px}.editor-footer .btn-protect .btn-text{margin-left:10px}.editor-footer .btn-protect .material-icon{bottom:2px;font-size:14px;height:14px;line-height:14px;position:relative;width:14px}}@media screen and (min-width:768px) and (max-width:991px){.buttons-list .btn:first-child{margin-left:0}}@media screen and (max-width:767px){.buttons-list{text-align:center}.buttons-list .btn-protect{display:block;float:none!important;margin:10px 0 0;width:100%}}.editor-attachments-list{margin:0;padding:0}.editor-attachments-list li{margin:0}.editor-attachment-complete{border-top:1px solid #bfc2cf;padding:6px 12px 6px 0}.editor-attachment-complete .editor-attachment-image{float:left;width:50px}.editor-attachment-complete .editor-attachment-image a{background-position:50%;background-size:cover;border-radius:3px;display:block;height:36px;margin:0 auto;width:36px}.editor-attachment-complete .editor-attachment-icon{float:left;text-align:center;width:50px}.editor-attachment-complete .editor-attachment-icon .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:2px;width:28px}.editor-attachment-complete .editor-attachment-details{margin-left:50px}.editor-attachment-complete .editor-attachment-details h4,.editor-attachment-complete .editor-attachment-details p{font-size:14px;margin:0;padding:0}.editor-attachment-complete .editor-attachment-details p{color:#7a869a;font-size:12px;margin-top:3px}.editor-attachment-complete .editor-attachment-details abbr{white-space:nowrap}@media screen and (min-width:768px){.editor-attachment-actions{padding-top:3px}}@media screen and (max-width:767px){.editor-attachment-actions{padding-left:12px;padding-right:12px}}.editor-attachment-error{border-top:1px solid #bfc2cf;padding:6px 12px 6px 0}.editor-attachment-error-icon{float:left;text-align:center;width:50px}.editor-attachment-error-icon .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:2px;width:28px}.editor-attachment-error-message{margin-left:50px;padding:6px 0;position:relative}.editor-attachment-error-message h4,.editor-attachment-error-message p{font-size:14px;margin:0;padding:0}.editor-attachment-error-message p{font-size:12px;margin-top:3px}.editor-attachment-error-message .btn{position:absolute;right:12px;top:9px}@media screen and (max-width:767px){.editor-attachment-error-message .btn{display:block;margin-top:10px;position:static}}.editor-attachment-progress-bar{background:#bfc2cf;overflow:auto}.editor-attachment-progress{background:#0052cc;float:left;height:1px}.editor-attachment-upload-message{margin:0;padding:6px 12px}#editor-upload-field{left:-1000px;position:absolute;top:-1000px}.atwho-view ul li img{border-radius:3px;height:20px;margin-right:4.66666667px;width:20px}.participant-card .btn-user,.participant-card .dropdown.open .btn-user{margin-bottom:20px}.participant-card .btn-user,.participant-card .btn-user:focus,.participant-card .btn-user:focus:active,.participant-card .btn-user:hover,.participant-card .dropdown.open .btn-user,.participant-card .dropdown.open .btn-user:focus,.participant-card .dropdown.open .btn-user:focus:active,.participant-card .dropdown.open .btn-user:hover{overflow:hidden;padding:0;text-align:left}.participant-card .btn-user img,.participant-card .dropdown.open .btn-user img{background-color:#fff;height:34px;margin-right:8px;width:34px}.panel-participants p{margin:7px 0 0}.poll-choices-control .list-group-item{padding:0}.poll-choices-control .list-group-item .btn{background:transparent;border:transparent;float:left;height:28px;margin:0 2px -29px;padding:0;position:relative;top:3px;width:28px}.poll-choices-control .list-group-item .btn .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.poll-choices-control input,.poll-choices-control input:active,.poll-choices-control input:focus{background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;margin-left:30px;outline:none;padding:6px 12px;width:100%}.posts-list{clear:both;margin:0;padding:0}.posts-list li{list-style:none;margin:0;padding:0}@media screen and (min-width:992px){.panel-post .panel-body{display:flex}.post-side{flex-shrink:0;padding-right:15px;width:260px}.panel-content{flex:1 0}}.post-side{font-size:12px}.post-side .media{margin:0}.post-side .poster-avatar{height:36px;width:36px}@media screen and (min-width:992px){.post-side .poster-avatar{height:82px;margin-top:4px;width:82px}}.post-side .user-status{margin-right:4px}.post-side .media-heading{display:block;font-size:14px;margin:-1px 0 0}.post-side .media-heading .user-status{margin-left:2px;margin-right:0}.post-side .pull-right{margin-left:16px}@media screen and (min-width:992px){.post-side .media-heading{font-size:18px;margin-top:3px}.post-side .media-heading .user-status{display:none}.post-side .user-title{margin-bottom:5px;margin-top:4px}.post-side .user-postcount,.post-side .user-status{display:block}}.post-heading{height:36px}@media screen and (max-width:991px){.post-heading{margin-top:10px}}.post-heading .pull-right{margin-left:16px}.post-heading .label{font-size:14px;font-weight:400;margin-top:6px}.post-heading .label-unread{background-color:#36b37e;color:#fff}@media screen and (min-width:992px){.post-side .pull-right{display:none}}@media screen and (max-width:991px){.post-heading .pull-right{display:none}}.post-body{padding-bottom:30px;padding-top:20px}.post-status-message{overflow:auto}.post-status-message .material-icon{float:left;font-size:28px;line-height:28px}.post-status-message p{margin:4px 0 0 36px}.post-status-best-answer{background-color:#36b37e;color:#fff}.post-status-hidden{background-color:#ff5630;color:#fff}.post-status-unapproved{background-color:#0052cc;color:#fff}.post-status-protected{background-color:#5e6c84;color:#fff}.post-footer .pull-left{margin-right:16px}.post-footer .pull-right{margin-left:16px}.post-footer p{margin-bottom:0;padding-bottom:6px;padding-top:7px}.post-attachments{border-top:1px solid #ebecf0;padding:6px 16px}.post-attachments abbr{white-space:nowrap}.post-attachments .attachment-name{word-wrap:break-word}.post-attachments .row>div{margin:10px 0}.post-attachments .post-attachment-preview{float:left;height:40px;text-align:center;width:40px}.post-attachments .post-attachment{margin-left:52px}.post-attachments .post-thumbnail{background-position:50%;background-size:cover;border-radius:3px;display:block;height:40px;width:40px}.post-attachments .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:5px;width:28px}.post-attachments .material-icon:active,.post-attachments .material-icon:focus,.post-attachments .material-icon:hover,.post-attachments .material-icon:link,.post-attachments .material-icon:visited{color:#172b4d;text-decoration:none}.post-attachments .post-attachment-description{color:#7a869a;font-size:12px;margin:0;padding:0}.post-feed .post-side .media-heading{font-size:14px;margin:0}.post-feed .post-side .user-title{font-size:12px;margin:0}.post-feed .post-side .btn{display:inline-block}.post-feed .post-side img{height:36px;margin-top:0;width:36px}.post-feed .post-heading{height:auto;margin:10px 0}.post-feed .post-heading .btn{word-wrap:break-word;margin-right:16px;max-width:100%;text-align:left;white-space:normal}.posts-list .event{color:#7a869a;margin-bottom:20px}.posts-list .event .event-body{align-items:flex-start;display:flex}.posts-list .event-label{margin-left:51px}.posts-list .event-label .label-unread{background-color:#36b37e;color:#fff}.posts-list .event .event-icon{padding-right:15px}.posts-list .event .event-icon .event-icon-bg{align-items:center;background:#ebecf0;border-radius:4px;color:#5e6c84;display:flex;height:36px;justify-content:center;width:36px}.posts-list .event .event-icon .material-icon{align-items:center;display:flex;font-size:28px;justify-content:center}.posts-list .event .event-content{flex:1 0}.posts-list .event .event-message{font-size:18px;margin-bottom:5px}.posts-list .event .event-info{font-size:12px;margin:0}.posts-list .event .event-info li{margin-right:12px}.posts-list .event .event-info li:last-child{margin-right:0}.posts-list .event .event-controls .btn-link{border:0;font-size:12px;margin:0 12px 0 0;padding:0}.posts-list .event .event-controls .btn-link:last-child{margin-right:0}@media screen and (max-width:767px){.posts-list .event .event-info{margin-top:5px}.posts-list .event .event-controls{clear:both;margin-top:5px}.posts-list .event .event-controls .btn-link{font-size:14px;margin-right:20px}.posts-list .event .event-controls .btn-link:last-child{margin-right:0}}@media screen and (min-width:992px){.posts-list .event .event-icon{display:flex;flex-shrink:0;justify-content:flex-end;width:275px}.event-content{flex:1 0}.posts-list .event-label{margin-left:275px}}.post-changelog-diff{margin:0;padding:0}.post-changelog-diff .list-unstyled{margin:5px 0;padding:0}.post-changelog-diff .diff-item{padding:5px 10px}.post-changelog-diff .diff-item-sub{color:#ff5630}.post-changelog-diff .diff-item-add{color:#36b37e}.post-changelog-toolbar .row{margin-left:-12px;margin-right:-12px}@media screen and (max-width:767px){.page-error .message-panel,.page-message .message-panel,.post-changelog-toolbar .post-change-label{text-align:center}.page-error .message-icon,.page-message .message-icon{font-size:80px;margin:30px}}@media screen and (min-width:768px){.page-error .message-panel,.page-message .message-panel{margin:60px auto;max-width:779.35px;overflow:auto}.page-error .message-icon,.page-message .message-icon{float:left}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:80px}.page-error .message-body,.page-message .message-body{font-size:18px;margin-left:100px;margin-top:16px}.page-error .message-body p.lead,.page-message .message-body p.lead{font-size:36px}}.threads-list{margin-bottom:20px}.threads-list-item{align-items:center;display:flex}.threads-list-item img{height:32px;width:32px}.threads-list-item-top-row{flex:1}.threads-list-item-bottom-row,.threads-list-item-top-row{align-items:center;display:flex;justify-content:center}.threads-list-item-col-icon{padding-right:15px}.threads-list-icon{align-items:center;border-radius:3px;display:flex;font-size:16px;height:32px;justify-content:center;line-height:16px;width:32px}.threads-list-icon:active,.threads-list-icon:focus,.threads-list-icon:hover,.threads-list-icon:link,.threads-list-icon:visited{background-color:#ebecf0;color:#7a869a;text-decoration:none}.threads-list-icon-new:active,.threads-list-icon-new:focus,.threads-list-icon-new:hover,.threads-list-icon-new:link,.threads-list-icon-new:visited{background-color:#0052cc;color:#fff}.threads-list-item-col-title{flex:1}a.threads-list-item-title:active,a.threads-list-item-title:focus,a.threads-list-item-title:hover,a.threads-list-item-title:link,a.threads-list-item-title:visited{color:#172b4d;font-size:16px;overflow-wrap:break-word}a.threads-list-item-title-sm{font-size:18px}a.threads-list-item-title-sm:active,a.threads-list-item-title-sm:focus,a.threads-list-item-title-sm:hover,a.threads-list-item-title-sm:link,a.threads-list-item-title-sm:visited{color:#5e6c84;overflow-wrap:break-word}a.threads-list-item-title-new:active,a.threads-list-item-title-new:focus,a.threads-list-item-title-new:hover,a.threads-list-item-title-new:link,a.threads-list-item-title-new:visited{color:#172b4d}.threads-list-item-col-flags{padding-left:15px}.threads-list-item .thread-flags{opacity:.8}.threads-list-item:focus .thread-flags,.threads-list-item:hover .thread-flags{opacity:1}.threads-list-item-col-category{padding-left:15px;white-space:nowrap}.threads-list-category-label{border-radius:3px;font-size:12px;font-weight:700;padding:3px 6px}.threads-list-category-label,.threads-list-category-label:active,.threads-list-category-label:focus,.threads-list-category-label:hover,.threads-list-category-label:link,.threads-list-category-label:visited{background:#ebecf0;color:#344563;text-decoration:none}.threads-list-category-label.threads-list-category-label-color,.threads-list-category-label.threads-list-category-label-color:active,.threads-list-category-label.threads-list-category-label-color:focus,.threads-list-category-label.threads-list-category-label-color:hover,.threads-list-category-label.threads-list-category-label-color:link,.threads-list-category-label.threads-list-category-label-color:visited{background:var(--label-color);color:#fff}.threads-list-item-parent-category{border-radius:3px 0 0 3px;margin-right:2px}.threads-list-item-parent-category+.threads-list-category-label{border-radius:0 3px 3px 0}.threads-list-item-col-replies{padding-left:15px;width:80px}.threads-list-item-col-last-poster{padding-left:15px}.threads-list-item-col-last-poster img{border-radius:3px}.threads-list-item-col-last-activity{overflow:hidden;padding-left:15px;text-overflow:ellipsis;white-space:nowrap;width:120px}.threads-list-item-col-last-activity a:active,.threads-list-item-col-last-activity a:focus,.threads-list-item-col-last-activity a:hover,.threads-list-item-col-last-activity a:link,.threads-list-item-col-last-activity a:visited{color:#344563;font-size:16px}.threads-list-item-col-checkbox,.threads-list-item-col-subscription{padding-left:15px}.threads-list-item-col-checkbox-sm,.threads-list-item-title-sm{display:none}@media screen and (max-width:767px){.threads-list{margin-left:-15px;margin-right:-15px}.threads-list .list-group,.threads-list .list-group-item{border-left:0;border-radius:0;border-right:0}.threads-list-item-title{display:none}.threads-list-item-title-sm{display:inline-block}.threads-list-item-col-icon{display:none}}@media screen and (max-width:991px){.threads-list-item{display:block}.threads-list-item img{height:20px;width:20px}.threads-list-item-top-row{align-items:start;margin-bottom:7.5px}.threads-list-item-bottom-row{flex:0;justify-content:end}.threads-list-item-bottom-row>div{padding:0 0 0 15px;width:auto}.threads-list-item-col-checkbox,.threads-list-item-col-subscription{display:none}.threads-list-item-col-checkbox-sm{display:block;padding-left:15px}.threads-list-item-col-checkbox-sm .btn-icon{padding:4px}.threads-list-item-col-checkbox-sm .btn-icon .material-icon{font-size:16px}}.threads-list-item-is-busy .btn-icon{animation:busy .75s linear infinite;opacity:.8}@keyframes busy{50%{opacity:.5}}.threads-list-update-prompt{padding:0}.threads-list-update-prompt-btn{background:#d6e7ff;border:none;border-radius:3px 3px 0 0;color:#003d99;padding:10px 16px}.threads-list-update-prompt-btn:focus,.threads-list-update-prompt-btn:hover{background:#e6f0ff;color:#0052cc}.threads-list-update-prompt-btn:active{background:#b3d1ff;color:#06f}.active-posters li{display:block;overflow:auto}.active-posters .rank-user-avatar{float:left}@media screen and (max-width:991px){.active-posters .rank-user-avatar{height:42px}.active-posters .rank-user-avatar img{height:36px;position:relative;top:3px;width:36px}}.active-posters .rank-user{float:left;margin-top:3px}@media screen and (max-width:991px){.active-posters .rank-user{margin-left:13.2px;width:40%}}@media screen and (max-width:767px){.active-posters .rank-user{float:none;margin-left:50px;width:auto}}@media screen and (min-width:992px){.active-posters .rank-user{margin-left:16px;width:25%}.active-posters .rank-user .user-name{font-size:18px}}.active-posters .user-details{font-family:Sans-Serif;overflow:auto}.active-posters .user-details .rank-name,.active-posters .user-details .user-status,.active-posters .user-details .user-title{display:block;float:left;font-size:12px;margin-right:3px}@media screen and (min-width:992px){.active-posters .user-details .rank-name,.active-posters .user-details .user-status,.active-posters .user-details .user-title{margin-right:8px}}.active-posters .user-details .user-title{margin-right:0}@media screen and (min-width:992px){.active-posters .user-details{overflow:visible}.active-posters .user-details .rank-name,.active-posters .user-details .user-title{height:14px;overflow:hidden;position:relative;top:1px;vertical-align:baseline}}@media screen and (max-width:767px){.active-posters .user-details{margin-top:3px}.active-posters .user-details .rank-name,.active-posters .user-details .user-title{font-weight:400}}.active-posters .user-status{overflow:auto;position:relative;top:1px}.active-posters .user-status span{display:block;float:left}@media screen and (min-width:992px){.active-posters .user-status{height:14px;overflow:hidden}}.active-posters .user-status .status-icon{position:relative}@media screen and (max-width:991px){.active-posters .user-status .status-icon{font-size:12px;height:12px;line-height:12px;top:0;width:12px}}@media screen and (min-width:992px){.active-posters .user-status .status-icon{font-size:13px;height:13px;line-height:13px;margin-right:3px;top:1px;width:13px}}.active-posters .rank-name .ui-preview-text,.active-posters .status-label.ui-preview-text,.active-posters .user-title .ui-preview-text{font-size:11px;height:11px;line-height:11px;position:relative;top:2px}.active-posters .rank-name .ui-preview-text,.active-posters .user-title .ui-preview-text{position:static}.active-posters .rank-position small,.active-posters .rank-position strong,.active-posters .rank-posts-counted small,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total small,.active-posters .rank-posts-total strong{display:block}@media screen and (max-width:991px){.active-posters .rank-position,.active-posters .rank-posts-counted,.active-posters .rank-posts-total{overflow:auto}.active-posters .rank-position small,.active-posters .rank-position strong,.active-posters .rank-posts-counted small,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total small,.active-posters .rank-posts-total strong{float:left;font-size:10.5px}.active-posters .rank-position strong,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total strong{margin-right:3px;min-width:30px;text-align:right}.active-posters .rank-position .ui-preview-text,.active-posters .rank-posts-counted .ui-preview-text,.active-posters .rank-posts-total .ui-preview-text{font-size:8px;height:8px;line-height:8px;position:relative;top:-1px}}@media screen and (min-width:992px){.active-posters .rank-position,.active-posters .rank-posts-counted,.active-posters .rank-posts-total{float:left;font-size:18px;margin-top:3px;text-align:center;width:23%}.active-posters .rank-position small,.active-posters .rank-posts-counted small,.active-posters .rank-posts-total small{font-size:12px;font-weight:400}}.user-compact-stats .rank-position small,.user-compact-stats .rank-position strong,.user-compact-stats .rank-posts-counted small,.user-compact-stats .rank-posts-counted strong{display:inline-block;float:none}.user-compact-stats .rank-position strong,.user-compact-stats .rank-posts-counted strong{min-width:auto}.user-compact-stats .rank-position small,.user-compact-stats .rank-posts-counted small{margin-right:20px}@media screen and (min-width:768px) and (max-width:991px){.active-posters .rank-position{margin-top:6px}.active-posters .rank-posts-total{display:none}}.profile-page-header-avatar{margin:20px 0;text-align:center}.profile-page-header-avatar .user-avatar{border-radius:4px}.profile-data-list{display:block;font-size:12px;margin:0 -12px;padding:0}.profile-data-list li{display:inline-block;list-style:none;padding:5px 12px}.profile-data-list .status-icon{bottom:1px;margin-right:3px;position:relative}.profile-data-list .user-account-disabled{color:#ff5630;font-weight:700}@media screen and (min-width:768px){.profile-page-header{align-items:flex-end;display:flex}.profile-page-header-avatar{margin:0 30px 0 0}}@media screen and (min-width:992px){.profile-page-header-avatar{margin-top:-54px;position:relative;top:54px}.profile-page-header-details{padding-left:158px}.profile-data-list{font-size:14px}.username-history li{display:block;overflow:auto}}.username-history .change-avatar{float:left}.username-history .change-avatar a,.username-history .change-avatar span{margin-right:10px}.username-history .change-avatar a img,.username-history .change-avatar span img{height:42px;width:42px}@media screen and (min-width:992px){.username-history .change-avatar a img,.username-history .change-avatar span img{bottom:1px;height:18px;position:relative;width:18px}.username-history .change-author{float:left;width:30%}}.username-history .change{min-height:20px;overflow:auto}.username-history .change span{display:block;float:left}.username-history .change .material-icon{margin:0 7px;position:relative;top:4px}@media screen and (min-width:992px){.username-history .change{float:left;width:40%}.username-history .change-date{float:left;width:20%}}.search-footer p{color:#5e6c84;font-size:12px;margin-top:20px;text-align:center}@media screen and (min-width:768px){.page-search-form{padding-top:40px}}@media screen and (min-width:992px){.page-search-form{padding-bottom:40px}.page-search-form h1{position:relative;top:5px}.page-search-form .form-group{margin-bottom:0}}.hljs{background:#eee;color:#000;display:block;overflow-x:auto;padding:.5em}.hljs-addition,.hljs-attribute,.hljs-emphasis,.hljs-link{color:#070}.hljs-emphasis{font-style:italic}.hljs-deletion,.hljs-string,.hljs-strong{color:#d14}.hljs-strong{font-weight:700}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-section,.hljs-title{color:#900}.hljs-class .hljs-title,.hljs-type{color:#458}.hljs-template-variable,.hljs-variable{color:#369}.hljs-bullet{color:#970}.hljs-meta{color:#34b}.hljs-code,.hljs-keyword,.hljs-literal,.hljs-number,.hljs-selector-tag{color:#099}.hljs-regexp{background-color:#fff0ff;color:#808}.hljs-symbol{color:#990073}.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-tag{color:#070}.atwho-view{background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.1);color:#000;display:none;left:0;margin-top:18px;min-width:120px;position:absolute;top:0;z-index:11110!important}.atwho-view .atwho-header{border-bottom:1px solid #eaeff1;color:#6f8092;cursor:pointer;font-size:11px;font-weight:700;margin:5px;padding:5px}.atwho-view .atwho-header .small{color:#6f8092;float:right;font-size:12px;font-weight:400;margin-right:-5px;padding-top:2px}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:#36f;color:#fff}.atwho-view .cur small{color:#fff}.atwho-view strong{color:#36f}.atwho-view .cur strong{color:#fff;font:700}.atwho-view ul{list-style:none;margin:auto;max-height:200px;overflow-y:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #ddd;cursor:pointer;display:block;padding:5px 10px}.atwho-view small{color:#777;font-size:smaller;font-weight:400}abbr{outline:none;text-decoration:none}.shadow-2dp{box-shadow:0 2px 2px 0 rgba(0,0,0,.04),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.shadow-3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.04),0 3px 3px -2px rgba(0,0,0,.06),0 1px 8px 0 rgba(0,0,0,.12)}.shadow-4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.04),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-6dp{box-shadow:0 6px 10px 0 rgba(0,0,0,.04),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.06)}.shadow-8dp{box-shadow:0 8px 10px 1px rgba(0,0,0,.04),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.06)}.shadow-16dp{box-shadow:0 16px 24px 2px rgba(0,0,0,.04),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.06)}.shadow-24dp{box-shadow:0 9px 46px 8px rgba(0,0,0,.04),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.06)}.btn-default,.btn-default.disabled,.btn-default.disabled:active,.btn-default.disabled:hover,.btn-default:disabled,.btn-default:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.disabled,.btn-default.disabled:active,.btn-default.disabled:hover,.btn-default:disabled,.btn-default:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-default:focus,.btn-default:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default:active,.btn-default:active:focus,.dropdown.open .dropdown-toggle .btn-default,.dropdown.open .dropdown-toggle .btn-default:active:focus,.dropdown.open .dropdown-toggle .btn-default:focus,.dropdown.open .dropdown-toggle .btn-default:hover{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-loading,.btn-default.btn-loading:active,.btn-default.btn-loading:active:focus,.btn-default.btn-loading:disabled,.btn-default.btn-loading:disabled:hover,.btn-default.btn-loading:focus,.btn-default.btn-loading:hover{color:transparent}.btn-primary,.btn-primary.disabled,.btn-primary.disabled:active,.btn-primary.disabled:hover,.btn-primary:disabled,.btn-primary:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.disabled,.btn-primary.disabled:active,.btn-primary.disabled:hover,.btn-primary:disabled,.btn-primary:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-primary:focus,.btn-primary:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary:active,.btn-primary:active:focus,.dropdown.open .dropdown-toggle .btn-primary,.dropdown.open .dropdown-toggle .btn-primary:active:focus,.dropdown.open .dropdown-toggle .btn-primary:focus,.dropdown.open .dropdown-toggle .btn-primary:hover{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-loading,.btn-primary.btn-loading:active,.btn-primary.btn-loading:active:focus,.btn-primary.btn-loading:disabled,.btn-primary.btn-loading:disabled:hover,.btn-primary.btn-loading:focus,.btn-primary.btn-loading:hover{color:transparent}.btn-success,.btn-success.disabled,.btn-success.disabled:active,.btn-success.disabled:hover,.btn-success:disabled,.btn-success:disabled:hover{background:#00c853;border:1px solid #00c853;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success.disabled,.btn-success.disabled:active,.btn-success.disabled:hover,.btn-success:disabled,.btn-success:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-success:focus,.btn-success:hover{background:#00af48;border:1px solid #00af48;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success:active,.btn-success:active:focus,.dropdown.open .dropdown-toggle .btn-success,.dropdown.open .dropdown-toggle .btn-success:active:focus,.dropdown.open .dropdown-toggle .btn-success:focus,.dropdown.open .dropdown-toggle .btn-success:hover{background:#007c33;border:1px solid #007c33;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success.btn-loading,.btn-success.btn-loading:active,.btn-success.btn-loading:active:focus,.btn-success.btn-loading:disabled,.btn-success.btn-loading:disabled:hover,.btn-success.btn-loading:focus,.btn-success.btn-loading:hover{color:transparent}.btn-danger,.btn-danger.disabled,.btn-danger.disabled:active,.btn-danger.disabled:hover,.btn-danger:disabled,.btn-danger:disabled:hover{background:#ef5350;border:1px solid #ef5350;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger.disabled,.btn-danger.disabled:active,.btn-danger.disabled:hover,.btn-danger:disabled,.btn-danger:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-danger:focus,.btn-danger:hover{background:#ff8a80;border:1px solid #ff8a80;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger:active,.btn-danger:active:focus,.dropdown.open .dropdown-toggle .btn-danger,.dropdown.open .dropdown-toggle .btn-danger:active:focus,.dropdown.open .dropdown-toggle .btn-danger:focus,.dropdown.open .dropdown-toggle .btn-danger:hover{background:#d32f2f;border:1px solid #d32f2f;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger.btn-loading,.btn-danger.btn-loading:active,.btn-danger.btn-loading:active:focus,.btn-danger.btn-loading:disabled,.btn-danger.btn-loading:disabled:hover,.btn-danger.btn-loading:focus,.btn-danger.btn-loading:hover{color:transparent}.btn-default.btn-outline,.btn-default.btn-outline.disabled,.btn-default.btn-outline.disabled:active,.btn-default.btn-outline.disabled:hover,.btn-default.btn-outline:disabled,.btn-default.btn-outline:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline.disabled,.btn-default.btn-outline.disabled:active,.btn-default.btn-outline.disabled:hover,.btn-default.btn-outline:disabled,.btn-default.btn-outline:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-default.btn-outline:focus,.btn-default.btn-outline:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline:active,.btn-default.btn-outline:active:focus,.dropdown.open .btn-default.btn-outline,.dropdown.open .btn-default.btn-outline:active:focus,.dropdown.open .btn-default.btn-outline:focus,.dropdown.open .btn-default.btn-outline:hover{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline.btn-loading,.btn-default.btn-outline.btn-loading:active,.btn-default.btn-outline.btn-loading:active:focus,.btn-default.btn-outline.btn-loading:disabled,.btn-default.btn-outline.btn-loading:disabled:hover,.btn-default.btn-outline.btn-loading:focus,.btn-default.btn-outline.btn-loading:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.btn-primary.btn-outline,.btn-primary.btn-outline.disabled,.btn-primary.btn-outline.disabled:active,.btn-primary.btn-outline.disabled:hover,.btn-primary.btn-outline:disabled,.btn-primary.btn-outline:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline.disabled:active,.btn-primary.btn-outline.disabled:hover,.btn-primary.btn-outline:disabled,.btn-primary.btn-outline:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-primary.btn-outline:focus,.btn-primary.btn-outline:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline:active,.btn-primary.btn-outline:active:focus,.dropdown.open .btn-primary.btn-outline,.dropdown.open .btn-primary.btn-outline:active:focus,.dropdown.open .btn-primary.btn-outline:focus,.dropdown.open .btn-primary.btn-outline:hover{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline.btn-loading,.btn-primary.btn-outline.btn-loading:active,.btn-primary.btn-outline.btn-loading:active:focus,.btn-primary.btn-outline.btn-loading:disabled,.btn-primary.btn-outline.btn-loading:disabled:hover,.btn-primary.btn-outline.btn-loading:focus,.btn-primary.btn-outline.btn-loading:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.navbar-misago .btn-sign-in{border-radius:4px}.navbar-misago .btn-sign-in,.navbar-misago .btn-sign-in.disabled,.navbar-misago .btn-sign-in.disabled:active,.navbar-misago .btn-sign-in.disabled:hover,.navbar-misago .btn-sign-in:disabled,.navbar-misago .btn-sign-in:disabled:hover{background:transparent;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#8993a4}.navbar-misago .btn-sign-in.disabled,.navbar-misago .btn-sign-in.disabled:active,.navbar-misago .btn-sign-in.disabled:hover,.navbar-misago .btn-sign-in:disabled,.navbar-misago .btn-sign-in:disabled:hover{filter:alpha(opacity=25);opacity:.25}.navbar-misago .btn-sign-in:focus,.navbar-misago .btn-sign-in:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.dropdown.open .navbar-misago .btn-sign-in,.dropdown.open .navbar-misago .btn-sign-in:active:focus,.dropdown.open .navbar-misago .btn-sign-in:focus,.dropdown.open .navbar-misago .btn-sign-in:hover,.navbar-misago .btn-sign-in:active,.navbar-misago .btn-sign-in:active:focus{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.navbar-misago .btn-sign-in.btn-loading,.navbar-misago .btn-sign-in.btn-loading:active,.navbar-misago .btn-sign-in.btn-loading:active:focus,.navbar-misago .btn-sign-in.btn-loading:disabled,.navbar-misago .btn-sign-in.btn-loading:disabled:hover,.navbar-misago .btn-sign-in.btn-loading:focus,.navbar-misago .btn-sign-in.btn-loading:hover{background:transparent;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.navbar-misago .btn-register{border-radius:4px}.navbar-misago .btn-register,.navbar-misago .btn-register.disabled,.navbar-misago .btn-register.disabled:active,.navbar-misago .btn-register.disabled:hover,.navbar-misago .btn-register:disabled,.navbar-misago .btn-register:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.navbar-misago .btn-register.disabled,.navbar-misago .btn-register.disabled:active,.navbar-misago .btn-register.disabled:hover,.navbar-misago .btn-register:disabled,.navbar-misago .btn-register:disabled:hover{filter:alpha(opacity=25);opacity:.25}.navbar-misago .btn-register:focus,.navbar-misago .btn-register:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.dropdown.open .navbar-misago .btn-register,.dropdown.open .navbar-misago .btn-register:active:focus,.dropdown.open .navbar-misago .btn-register:focus,.dropdown.open .navbar-misago .btn-register:hover,.navbar-misago .btn-register:active,.navbar-misago .btn-register:active:focus{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.navbar-misago .btn-register.btn-loading,.navbar-misago .btn-register.btn-loading:active,.navbar-misago .btn-register.btn-loading:active:focus,.navbar-misago .btn-register.btn-loading:disabled,.navbar-misago .btn-register.btn-loading:disabled:hover,.navbar-misago .btn-register.btn-loading:focus,.navbar-misago .btn-register.btn-loading:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.btn-social-battlenet,.btn-social-battlenet-oauth2,.btn-social-battlenet-oauth2:disabled,.btn-social-battlenet-oauth2:disabled:hover,.btn-social-battlenet:disabled,.btn-social-battlenet:disabled:hover{color:#0e86ca;font-weight:700}.btn-social-bungie,.btn-social-bungie:disabled,.btn-social-bungie:disabled:hover{color:#0096db;font-weight:700}.btn-social-facebook,.btn-social-facebook-app,.btn-social-facebook-app:disabled,.btn-social-facebook-app:disabled:hover,.btn-social-facebook:disabled,.btn-social-facebook:disabled:hover{color:#3b5998;font-weight:700}.btn-social-github,.btn-social-github-enterprise,.btn-social-github-enterprise-org,.btn-social-github-enterprise-org:disabled,.btn-social-github-enterprise-org:disabled:hover,.btn-social-github-enterprise-team,.btn-social-github-enterprise-team:disabled,.btn-social-github-enterprise-team:disabled:hover,.btn-social-github-enterprise:disabled,.btn-social-github-enterprise:disabled:hover,.btn-social-github-team,.btn-social-github-team:disabled,.btn-social-github-team:disabled:hover,.btn-social-github:disabled,.btn-social-github:disabled:hover{color:#000;font-weight:700}.btn-social-gitlab,.btn-social-gitlab:disabled,.btn-social-gitlab:disabled:hover{color:#fc6d26;font-weight:700}.btn-social-google,.btn-social-google-oauth,.btn-social-google-oauth2,.btn-social-google-oauth2:disabled,.btn-social-google-oauth2:disabled:hover,.btn-social-google-oauth:disabled,.btn-social-google-oauth:disabled:hover,.btn-social-google-openidconnect,.btn-social-google-openidconnect:disabled,.btn-social-google-openidconnect:disabled:hover,.btn-social-google-plus,.btn-social-google-plus:disabled,.btn-social-google-plus:disabled:hover,.btn-social-google:disabled,.btn-social-google:disabled:hover{color:#dd4b39;font-weight:700}.btn-social-linkedin,.btn-social-linkedin:disabled,.btn-social-linkedin:disabled:hover{color:#0077b5;font-weight:700}.btn-social-steam,.btn-social-steam:disabled,.btn-social-steam:disabled:hover{color:#5c7e10;font-weight:700}.btn-social-twitter,.btn-social-twitter:disabled,.btn-social-twitter:disabled:hover{color:#1da1f2;font-weight:700}.form-social-auth .row{margin-bottom:-6px;margin-top:-6px}.form-social-auth .btn{margin:6px 0}input.form-control,textarea.form-control{border-color:#ced0da;box-shadow:inset 0 0 0 1px #ced0da}input.form-control:focus,textarea.form-control:focus{border-color:#66afe9;box-shadow:inset 0 0 0 1px #66afe9}.has-error input.form-control{border-color:#ff5630;box-shadow:inset 0 0 0 1px #ff5630}.has-error input.form-control:focus{border-color:#ffa996;box-shadow:inset 0 0 0 1px #ffa996}.has-success input.form-control{border-color:#36b37e;box-shadow:inset 0 0 0 1px #36b37e}.has-success input.form-control:focus{border-color:#79d6af;box-shadow:inset 0 0 0 1px #79d6af}.password-strength{margin-top:10px}.password-strength .text-small{color:#3462af;font-size:12px;margin-top:4px}.password-strength .progress{margin:0}.auth-message{background:#091e42;box-shadow:0 8px 10px 1px rgba(0,0,0,.04),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.06);padding:80px 0}.auth-message p{color:#fff}.auth-message .btn{background:#f4f5f7;border-color:#f4f5f7;color:#172b4d}.auth-message .btn:focus,.auth-message .btn:hover{background:#dfe1e6;border-color:#dfe1e6;color:#172b4d}.auth-message .btn:active{background:#b3bac5;border-color:#b3bac5;color:#172b4d}.dropdown-menu{border:none;box-shadow:0 4px 5px 0 rgba(0,0,0,.04),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.06)}.user-dropdown .dropdown-header strong{color:#172b4d;display:block;font-weight:700}.user-dropdown .dropdown-header .user-stats{font-size:12px;margin-top:10px}.user-dropdown .dropdown-header .user-stats .material-icon{bottom:1px;font-size:14px;height:14px;margin-right:3px;position:relative;width:14px}.user-dropdown .guest-preview{padding-bottom:10px}.user-dropdown .badge{background-color:#ff5630}.user-dropdown .btn-link:active .badge,.user-dropdown .btn-link:focus .badge,.user-dropdown .btn-link:hover .badge,.user-dropdown a:active .badge,.user-dropdown a:focus .badge,.user-dropdown a:hover .badge{background-color:#fff;color:#ff5630}.mobile-dropdown.open{margin:0}.navbar-misago{border-bottom:none;box-shadow:0 0 3px #c1c7d0}.navbar-misago .user-avatar{background:#fff;border-radius:3px}.navbar-misago .brand-link img{border-radius:3px}.dropdown-search-results{border-radius:0 0 4px 4px}.dropdown-search-message{color:#7a869a}.dropdown-search-loader,.dropdown-search-message{border-top:1px solid #ebecf0;padding:10px 16px}.dropdown-search-header{border-top:1px solid #ebecf0;color:#7a869a;font-weight:700;padding:8px 20px}.dropdown-search-thread small,.dropdown-search-user small{color:#7a869a}.dropdown-search-thread .dropdown-search-post-content{max-height:47px;overflow:hidden;white-space:normal}.dropdown-search-thread .dropdown-search-post-footer{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-search-footer{padding-bottom:5px}.dropdown-search-footer:last-child{padding-bottom:0}.dropdown-menu>li.dropdown-search-footer>a{font-size:small}.misago-footer{margin-top:40px}.misago-footer .footer-content{border-top:1px solid #ebecf0;color:#a5adba;padding-top:20px}@media screen and (max-width:767px){.misago-footer .footer-content{text-align:center}.misago-footer .footer-content .site-footnote{clear:both;margin-bottom:15px}}.misago-footer .footer-content a,.misago-footer .footer-content a:link,.misago-footer .footer-content a:visited{color:#a5adba}.misago-footer .footer-content a:focus,.misago-footer .footer-content a:hover{color:#7a8699}.misago-footer .footer-content .misago-branding,.misago-footer .footer-content .misago-branding:link,.misago-footer .footer-content .misago-branding:visited{color:#a5adba}.misago-footer .footer-content .misago-branding:focus,.misago-footer .footer-content .misago-branding:hover{color:#7a8699}.list-group{border-radius:3px}.list-group .list-group-item{border-left-color:#ebecf0;border-right-color:#ebecf0}.list-group .list-group-item:first-child{border-top-color:#ebecf0}.list-group .list-group-item:last-child{border-bottom-color:#ebecf0}.list-group-item.empty-message{padding-bottom:20px;padding-top:20px;text-align:center}.list-group-item.empty-message p{margin:10px 0}.nav-side{-webkit-box-shadow:none;box-shadow:none}.nav-side>.list-group-item{border-left:none;border-right:none;margin-bottom:1px}.nav-side>.list-group-item:first-child{border-top:none}.nav-side>.list-group-item:last-child{border-bottom:none}.nav-side>.list-group-item,.nav-side>.list-group-item:link,.nav-side>.list-group-item:visited{background:#f4f5f7;border:none;color:#172b4d}.nav-side>.list-group-item:active,.nav-side>.list-group-item:focus,.nav-side>.list-group-item:hover{background:#ebecf0;color:#172b4d}.nav-side>.list-group-item.active,.nav-side>.list-group-item.active:active,.nav-side>.list-group-item.active:focus,.nav-side>.list-group-item.active:hover,.nav-side>.list-group-item.active:link,.nav-side>.list-group-item.active:visited{background:#091e42;color:#fff;font-weight:700}.nav-side>.list-group-item.active .badge,.nav-side>.list-group-item.active:active .badge,.nav-side>.list-group-item.active:focus .badge,.nav-side>.list-group-item.active:hover .badge,.nav-side>.list-group-item.active:link .badge,.nav-side>.list-group-item.active:visited .badge{background:#f4f5f7;color:#172b4d}.username-history .user-avatar{border-radius:4px}.panel{border:none;border-radius:4px}.panel .panel-footer,.panel .panel-heading{background:#fff}.panel .panel-title{color:#5e6c84}.panel .form-group+.form-group{margin-top:20px}.panel .panel-body>.form-group:first-child{margin-top:10px}.panel fieldset{margin-top:20px}.panel fieldset:first-child{margin-top:0}.panel fieldset legend{border:none;color:#5e6c84;font-weight:300}.panel-message-body .message-icon{color:#9575cd}.panel-form{border:1px solid #ebecf0;box-shadow:none}.panel-form .panel-footer,.panel-form .panel-heading{border-color:#ebecf0}.poll-form .panel{margin:0}.help-block,.help-block .text-small{color:#7a869a}.category-main .media-left .read-status{background:#ebecf0;border-radius:4px;padding:5px 8px}.category-main .media-left .material-icon{color:#5e6c84;font-size:14px;height:14px;line-height:14px;width:14px}.category-main .media-left .read-status.item-new{background-color:#0052cc}.category-main .media-left .read-status.item-new .material-icon{color:#fff}@media screen and (min-width:768px){.category-main .media-left{padding:5px 0}}.category-main .media-body{padding-left:12px}@media screen and (max-width:767px){.category-main .media-body{padding-left:3.33333333px}}.list-group-category-no-description .category-main .media-heading{margin-top:10px}@media screen and (max-width:767px){.list-group-category-no-description .category-main .media-heading{margin-top:5px}}.category-main .media-heading a,.category-main .media-heading a:link,.category-main .media-heading a:visited{color:#344563}.category-main .media-heading a:active,.category-main .media-heading a:focus,.category-main .media-heading a:hover{color:#172b4d}.category-stats{color:#5e6c84}.category-main .category-description p{font-size:12px}.category-main .category-description p:last-child{margin-bottom:0}.category-last-thread img{background-color:#fff;border-radius:4px}.category-last-thread .media-heading{margin-bottom:2px}@media screen and (max-width:767px){.category-last-thread .media-heading{margin-top:10px}}.category-last-thread .list-inline{color:#7a869a;font-size:12px}.category-last-thread .list-inline a,.category-last-thread .list-inline a:link,.category-last-thread .list-inline a:visited{color:#7a869a}.category-last-thread .list-inline .item-title,.category-last-thread .list-inline .item-title:link,.category-last-thread .list-inline .item-title:visited,.category-last-thread .list-inline a:active,.category-last-thread .list-inline a:focus,.category-last-thread .list-inline a:hover{color:#344563}.category-last-thread .list-inline .item-title:active,.category-last-thread .list-inline .item-title:focus,.category-last-thread .list-inline .item-title:hover{color:#172b4d}.category-thread-message{color:#7a869a}.category-thread-message .material-icon{margin-right:3px;padding:6px 0}@media screen and (max-width:767px){.category-thread-message{font-size:12px;padding-top:15px}.category-thread-message .material-icon{padding:3px 0}}.panel-participants{border:1px solid #ebecf0}.participant-card .btn-user{border:0!important}.participant-card .dropdown-header-owner{color:#0052cc}.participant-card .dropdown-header-owner .material-icon{font-size:14px;height:14px;line-height:14px;width:14px}.participant-card .dropdown-header-owner .icon-text{margin-left:4px;position:relative;top:2px}.panel-participants p{color:#7a869a}@media screen and (max-width:767px){.panel-participants p{margin-top:10px;text-align:center}}.panel-poll{border:1px solid #ebecf0}.panel-poll .poll-select-choices{margin-top:-10px}.panel-poll .poll-details{color:#7a869a;font-size:12px;margin-bottom:20px}.panel-poll .progress{margin-bottom:5px;margin-top:6.66666667px}.panel-poll .poll-chart{color:#7a869a;font-size:12px}.panel-poll .poll-options{margin-top:20px}#posting-placeholder{background-color:#fafbfc}.posting-message .material-icon{color:#9575cd}.posting-message .btn{margin-top:20px}.panel-post{background:#fff;border:1px solid #ddd}.post-side{color:#7a869a}.post-side .poster-avatar{border-radius:4px}.post-side .user-title,.post-side .user-title a,.post-side .user-title a:active,.post-side .user-title a:focus,.post-side .user-title a:hover,.post-side .user-title a:link,.post-side .user-title a:visited{color:#5e6c84}.post-heading .label-unread{background-color:#a0f;margin-right:16px}.post-heading .label-protected{background-color:transparent;color:#bdbdbd;margin-left:24px;position:relative;top:1px}.post-heading .label-protected .material-icon{font-size:16px;line-height:16px;margin-right:2px;position:relative;top:-1px}.post-heading>.btn-link{padding-left:0;padding-right:0}.post-heading>.btn-link,.post-heading>.btn-link:link,.post-heading>.btn-link:visited{color:#7a869a}.post-heading>.btn-link:active,.post-heading>.btn-link:focus,.post-heading>.btn-link:focus:active,.post-heading>.btn-link:hover{color:#172b4d;text-decoration:none}.post-heading .btn-see-edits{margin-left:24px}.post-status-message{border-radius:4px;margin-top:10px;padding:6px 12px}@media screen and (max-width:767px){.post-status-message{font-size:12px}.post-status-message .material-icon{margin-top:3px}.post-status-message p{margin-top:0}}.post-body:last-child{padding-bottom:10px}.post-attachments{background-color:#ebecf0;border:none;border-radius:4px;margin-bottom:30px}.post-attachments:last-child{margin-bottom:10px}@media screen and (max-width:767px){.post-attachments{border-radius:0;margin:0 -15px 20px}}.post-footer>.btn-link{padding-left:0;padding-right:0}.post-footer>.btn-link,.post-footer>.btn-link:link,.post-footer>.btn-link:visited{color:#7a869a}.post-footer>.btn-link:active,.post-footer>.btn-link:focus,.post-footer>.btn-link:focus:active,.post-footer>.btn-link:hover{color:#172b4d;text-decoration:none}.post-footer p{color:#7a869a;font-size:12px}.post-body-hidden,.post-body-invalid{padding-bottom:10px;padding-top:10px}.post-body-hidden .lead,.post-body-invalid .lead{margin-bottom:10px}.post-body-hidden .text-muted,.post-body-invalid .text-muted{font-size:12px;margin-bottom:0}.post-hidden{filter:alpha(opacity=75);opacity:.75}.post-feed .panel-body{padding-bottom:0}.post-feed .post-body{max-height:300px;overflow-y:hidden;padding-bottom:20px;padding-top:0;position:relative}.post-feed .post-body:after{bottom:0;box-shadow:0 0 16px 16px #fff;color:transparent;content:"-";display:block;height:0;position:absolute;width:100%}.posts-list .event .event-label{margin-bottom:5px}.posts-list .event .label-unread{background-color:#a0f;color:#fff}.posts-list .event-info .btn-link,.posts-list .event-info a,.posts-list .event-info a:link,.posts-list .event-info a:visited{color:#5e6c84}.posts-list .event-info .btn-link:active,.posts-list .event-info .btn-link:focus,.posts-list .event-info .btn-link:focus:active,.posts-list .event-info a:active,.posts-list .event-info a:focus,.posts-list .event-info a:focus:active{color:#172b4d}.posts-list .event-hidden{filter:alpha(opacity=33);opacity:.33}.user-card{background:#f4f5f7}.user-card-avatar img,.user-card-small-avatar img{border-radius:4px}.user-card-avatar{margin:20px 0}.user-card-avatar img{height:150px;width:150px}.user-card-username a,.user-card-username a:active,.user-card-username a:focus,.user-card-username a:hover,.user-card-username a:link,.user-card-username a:visited{color:#172b4d;font-size:18px;font-weight:700}.user-card-title a,.user-card-title a:link,.user-card-title a:visited,.user-card-title span{color:#5e6c84}.user-card-title a:active,.user-card-title a:focus,.user-card-title a:hover{color:#172b4d}@media screen and (min-width:768px){.user-card-stats{margin-top:20px}}.user-card-stats ul{margin:0}.user-card-stats li{color:#7a869a;display:inline-block;font-size:12px;margin-right:12px}@media screen and (min-width:768px){.user-card-stats li{margin:0 6px}}.user-card-stats li.user-stat-empty{display:none}@media screen and (min-width:768px){li.user-stat-divider{display:block;margin:0}}@media screen and (max-width:767px){li.user-stat-divider{display:none}}@media screen and (min-width:768px){.user-card-stats{min-height:60px}}@media screen and (max-width:767px){.user-card-left{padding-right:0}}.progress,.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none;height:8px}.misago-markup img{border-radius:4px}.misago-markup .quote-block,.misago-markup blockquote{background-color:#ffecb3;border-color:#b3e5fc;color:#3e2723;overflow:hidden}.misago-markup .quote-block .quote-heading,.misago-markup blockquote .quote-heading{background-color:#ffe082;border:none;color:#795548}.misago-markup .quote-block .quote-heading a,.misago-markup .quote-block .quote-heading a:link,.misago-markup .quote-block .quote-heading a:visited,.misago-markup blockquote .quote-heading a,.misago-markup blockquote .quote-heading a:link,.misago-markup blockquote .quote-heading a:visited{color:#5d4037}.misago-markup .quote-block .quote-heading a:active,.misago-markup .quote-block .quote-heading a:focus,.misago-markup .quote-block .quote-heading a:hover,.misago-markup blockquote .quote-heading a:active,.misago-markup blockquote .quote-heading a:focus,.misago-markup blockquote .quote-heading a:hover{color:#3e2723}.misago-markup .quote-block hr,.misago-markup blockquote hr{border-color:#ffca28}.misago-markup>.quote-block,.misago-markup>blockquote{background:#ffecb3;border:none;border-radius:4px}.misago-markup .quote-body,.misago-markup>.quote-block .quote-block,.misago-markup>blockquote .quote-block{background:#ffecb3}.misago-markup .quote-body>.quote-block,.misago-markup .quote-body>blockquote{border-color:#ffe082;border-radius:4px}.misago-markup .spoiler-block{background:repeating-linear-gradient(45deg,rgba(235,236,240,.5),rgba(235,236,240,.5) 10px,#fff 0,#fff 20px);border:none}.misago-markup .spoiler-body{background:transparent;color:#172b4d;-webkit-filter:blur(5px);-moz-filter:blur(5px);-o-filter:blur(5px);-ms-filter:blur(5px);filter:blur(5px)}.misago-markup .spoiler-block.revealed .spoiler-body{-webkit-filter:none;-moz-filter:none;-o-filter:none;-ms-filter:none;filter:none}.misago-markup .spoiler-overlay{align-items:center;background:hsla(0,0%,100%,.1);display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.misago-markup .spoiler-reveal{background-color:#ebecf0;border-color:#ccc;color:#172b4d}.misago-markup .spoiler-reveal.focus,.misago-markup .spoiler-reveal:focus{background-color:#ced0da;border-color:#8c8c8c;color:#172b4d}.misago-markup .spoiler-reveal:hover{background-color:#ced0da;border-color:#adadad;color:#172b4d}.misago-markup .spoiler-reveal.active,.misago-markup .spoiler-reveal:active,.open>.dropdown-toggle.misago-markup .spoiler-reveal{background-color:#ced0da;background-image:none;border-color:#adadad;color:#172b4d}.misago-markup .spoiler-reveal.active.focus,.misago-markup .spoiler-reveal.active:focus,.misago-markup .spoiler-reveal.active:hover,.misago-markup .spoiler-reveal:active.focus,.misago-markup .spoiler-reveal:active:focus,.misago-markup .spoiler-reveal:active:hover,.open>.dropdown-toggle.misago-markup .spoiler-reveal.focus,.open>.dropdown-toggle.misago-markup .spoiler-reveal:focus,.open>.dropdown-toggle.misago-markup .spoiler-reveal:hover{background-color:#b9bdcb;border-color:#8c8c8c;color:#172b4d}.misago-markup .spoiler-reveal.disabled.focus,.misago-markup .spoiler-reveal.disabled:focus,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal[disabled].focus,.misago-markup .spoiler-reveal[disabled]:focus,.misago-markup .spoiler-reveal[disabled]:hover,fieldset[disabled] .misago-markup .spoiler-reveal.focus,fieldset[disabled] .misago-markup .spoiler-reveal:focus,fieldset[disabled] .misago-markup .spoiler-reveal:hover{background-color:#ebecf0;border-color:#ccc}.misago-markup .spoiler-reveal .badge{background-color:#172b4d;color:#ebecf0}.misago-markup .spoiler-reveal,.misago-markup .spoiler-reveal.disabled,.misago-markup .spoiler-reveal.disabled:active,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal:disabled,.misago-markup .spoiler-reveal:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.misago-markup .spoiler-reveal.disabled,.misago-markup .spoiler-reveal.disabled:active,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal:disabled,.misago-markup .spoiler-reveal:disabled:hover{filter:alpha(opacity=25);opacity:.25}.misago-markup .spoiler-reveal:focus,.misago-markup .spoiler-reveal:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:active:focus,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:focus,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:hover,.misago-markup .spoiler-reveal:active,.misago-markup .spoiler-reveal:active:focus{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.misago-markup .spoiler-reveal.btn-loading,.misago-markup .spoiler-reveal.btn-loading:active,.misago-markup .spoiler-reveal.btn-loading:active:focus,.misago-markup .spoiler-reveal.btn-loading:disabled,.misago-markup .spoiler-reveal.btn-loading:disabled:hover,.misago-markup .spoiler-reveal.btn-loading:focus,.misago-markup .spoiler-reveal.btn-loading:hover{color:transparent}.misago-markup .spoiler-reveal,.misago-markup .spoiler-reveal:active,.misago-markup .spoiler-reveal:hover{border-radius:4px;box-shadow:0 0 0 4px #fff;padding:6px 12px}.modal-header{background:#fff;border-bottom-color:#ced0da;border-radius:6px 6px 0 0;color:#172b4d}.modal-header .close{color:#172b4d;font-size:24px;line-height:24px;padding:0 6px;text-shadow:none}.modal-message .message-icon{color:#9575cd}.modal-body>.form-group{margin:20px 0}.modal-body>.form-group:first-child{margin-top:0}.modal-body>.form-group:last-child{margin-bottom:0}.modal-sign-in .modal-body{padding-bottom:0;padding-top:0}.modal-sign-in .modal-body>.form-group{margin:20px 0}.legal-footnote label{font-weight:700}.legal-footnote .help-block{color:#ff5630;margin-left:20px}.modal-avatar-index .avatar-preview{background:#fff;border-radius:6px}.modal-avatar-crop .cropit-preview{background:#fff;margin:20px 0}.modal-avatar-crop .cropit-image-zoom-input{margin-bottom:20px;margin-top:40px}.modal-post-likers .media{border-bottom:1px solid #ebecf0;padding-bottom:15px}.modal-post-likers .media img{border-radius:4px;height:40px;width:40px}.modal-post-likers .media:last-child{border:none;padding-bottom:0}.well{border:1px solid #ddd}.active-posters .rank-user-avatar img{border-radius:4px}.active-posters .user-details{color:#7a869a}.active-posters .user-details a.rank-name,.active-posters .user-details a.rank-name:link,.active-posters .user-details a.rank-name:visited{color:#5e6c84;font-weight:400}.active-posters .user-details a.rank-name:active,.active-posters .user-details a.rank-name:focus,.active-posters .user-details a.rank-name:hover{color:#172b4d}.active-posters .user-details span.rank-name{color:#5e6c84;font-weight:400}.active-posters small{color:#7a869a}.page-error .message-icon{color:#ef5350}.page-message .message-icon,.page-message-info .message-icon{color:#9575cd}.page-message-success .message-icon{color:#81c784}.page-options .message-line,.page-options .message-line a,.page-options .message-line a:link,.page-options .message-line a:visited{color:#7a869a}.page-options .message-line a:active,.page-options .message-line a:focus,.page-options .message-line a:focus:active,.page-options .message-line a:hover{color:#172b4d}.panel-profile-details-group.panel{border:1px solid #ebecf0}.panel-profile-details-group.panel .form-group{margin:0}.panel-profile-details-group .form-control-static p:last-child{margin-bottom:0}.post-primary .panel-post{border-color:#b388ff}.post-primary .user-title,.post-primary .user-title a,.post-primary .user-title a:active,.post-primary .user-title a:focus,.post-primary .user-title a:hover,.post-primary .user-title a:link,.post-primary .user-title a:visited{color:#6200ea}.post-success .panel-post{border-color:#00c853}.post-success .user-title,.post-success .user-title a,.post-success .user-title a:active,.post-success .user-title a:focus,.post-success .user-title a:hover,.post-success .user-title a:link,.post-success .user-title a:visited{color:#388e3c}.post-warning .panel-post{border-color:#ffab40}.post-warning .user-title,.post-warning .user-title a,.post-warning .user-title a:active,.post-warning .user-title a:focus,.post-warning .user-title a:hover,.post-warning .user-title a:link,.post-warning .user-title a:visited{color:#ff6d00}.post-danger .panel-post{border-color:#ff8a80}.post-danger .user-title,.post-danger .user-title a,.post-danger .user-title a:active,.post-danger .user-title a:focus,.post-danger .user-title a:hover,.post-danger .user-title a:link,.post-danger .user-title a:visited{color:#d50000}.user-card-primary .panel-body{background:#fff;border:2px solid #b388ff;border-radius:4px;padding:13px}.user-card-primary .user-card-title,.user-card-primary .user-card-title a.user-title,.user-card-primary .user-card-title a.user-title:active,.user-card-primary .user-card-title a.user-title:focus,.user-card-primary .user-card-title a.user-title:hover,.user-card-primary .user-card-title a.user-title:link,.user-card-primary .user-card-title a.user-title:visited{color:#6200ea}.user-card-primary .user-card-stats li{color:#9575cd}.user-card-success .panel-body{background:#fff;border:2px solid #00c853;border-radius:4px;padding:13px}.user-card-success .user-card-title,.user-card-success .user-card-title a.user-title,.user-card-success .user-card-title a.user-title:active,.user-card-success .user-card-title a.user-title:focus,.user-card-success .user-card-title a.user-title:hover,.user-card-success .user-card-title a.user-title:link,.user-card-success .user-card-title a.user-title:visited{color:#388e3c}.user-card-success .user-card-stats li{color:#66bb6a}.user-card-warning .panel-body{background:#fff;border:2px solid #ffab40;border-radius:4px;padding:13px}.user-card-warning .user-card-title,.user-card-warning .user-card-title a.user-title,.user-card-warning .user-card-title a.user-title:active,.user-card-warning .user-card-title a.user-title:focus,.user-card-warning .user-card-title a.user-title:hover,.user-card-warning .user-card-title a.user-title:link,.user-card-warning .user-card-title a.user-title:visited{color:#ff6d00}.user-card-warning .user-card-stats li{color:#ff6e40}.user-card-danger .panel-body{background:#fff;border:2px solid #ff8a80;border-radius:4px;padding:13px}.user-card-danger .user-card-title,.user-card-danger .user-card-title a.user-title,.user-card-danger .user-card-title a.user-title:active,.user-card-danger .user-card-title a.user-title:focus,.user-card-danger .user-card-title a.user-title:hover,.user-card-danger .user-card-title a.user-title:link,.user-card-danger .user-card-title a.user-title:visited{color:#d50000}.user-card-danger .user-card-stats li{color:#e57373}.list-group .list-group-rank-primary{border-left:4px solid #7e57c2;padding-left:11px}.list-group .list-group-rank-primary a.rank-name,.list-group .list-group-rank-primary a.rank-name:active,.list-group .list-group-rank-primary a.rank-name:focus,.list-group .list-group-rank-primary a.rank-name:hover,.list-group .list-group-rank-primary a.rank-name:link,.list-group .list-group-rank-primary a.rank-name:visited,.list-group .list-group-rank-primary span.rank-name{color:#6200ea}.list-group .list-group-rank-success{border-left:4px solid #9ccc65;padding-left:11px}.list-group .list-group-rank-success a.rank-name,.list-group .list-group-rank-success a.rank-name:active,.list-group .list-group-rank-success a.rank-name:focus,.list-group .list-group-rank-success a.rank-name:hover,.list-group .list-group-rank-success a.rank-name:link,.list-group .list-group-rank-success a.rank-name:visited,.list-group .list-group-rank-success span.rank-name{color:#388e3c}.list-group .list-group-rank-warning{border-left:4px solid #ff7043;padding-left:11px}.list-group .list-group-rank-warning a.rank-name,.list-group .list-group-rank-warning a.rank-name:active,.list-group .list-group-rank-warning a.rank-name:focus,.list-group .list-group-rank-warning a.rank-name:hover,.list-group .list-group-rank-warning a.rank-name:link,.list-group .list-group-rank-warning a.rank-name:visited,.list-group .list-group-rank-warning span.rank-name{color:#ff6d00}.list-group .list-group-rank-danger{border-left:4px solid #f44336;padding-left:11px}.list-group .list-group-rank-danger a.rank-name,.list-group .list-group-rank-danger a.rank-name:active,.list-group .list-group-rank-danger a.rank-name:focus,.list-group .list-group-rank-danger a.rank-name:hover,.list-group .list-group-rank-danger a.rank-name:link,.list-group .list-group-rank-danger a.rank-name:visited,.list-group .list-group-rank-danger span.rank-name{color:#d50000}.page-header-rank-primary .user-rank,.page-header-rank-primary .user-rank a,.page-header-rank-primary .user-rank a:active,.page-header-rank-primary .user-rank a:focus,.page-header-rank-primary .user-rank a:hover,.page-header-rank-primary .user-rank a:link,.page-header-rank-primary .user-rank a:visited{color:#6200ea}.page-header-rank-success .user-rank,.page-header-rank-success .user-rank a,.page-header-rank-success .user-rank a:active,.page-header-rank-success .user-rank a:focus,.page-header-rank-success .user-rank a:hover,.page-header-rank-success .user-rank a:link,.page-header-rank-success .user-rank a:visited{color:#388e3c}.page-header-rank-warning .user-rank,.page-header-rank-warning .user-rank a,.page-header-rank-warning .user-rank a:active,.page-header-rank-warning .user-rank a:focus,.page-header-rank-warning .user-rank a:hover,.page-header-rank-warning .user-rank a:link,.page-header-rank-warning .user-rank a:visited{color:#ff6d00}.page-header-rank-danger .user-rank,.page-header-rank-danger .user-rank a,.page-header-rank-danger .user-rank a:active,.page-header-rank-danger .user-rank a:focus,.page-header-rank-danger .user-rank a:hover,.page-header-rank-danger .user-rank a:link,.page-header-rank-danger .user-rank a:visited{color:#d50000} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{background:transparent!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]: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}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:10px}body{background-color:#fff;color:#172b4d;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0065ff;text-decoration:none}a:focus,a:hover{color:#0747a6;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{background-color:#fff;border:1px solid #ddd;border-radius:4px;display:inline-block;height:auto;line-height:1.42857143;max-width:100%;padding: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{border:0;border-top:1px solid #ebecf0;margin-bottom:20px;margin-top:20px}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:inherit;font-family:inherit;font-weight:500;line-height:1.1}.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{color:#7a869a;font-weight:400;line-height:1}.h1,.h2,.h3,h1,h2,h3{margin-bottom:10px;margin-top:20px}.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-bottom:10px;margin-top: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{font-size:16px;font-weight:300;line-height:1.4;margin-bottom:20px}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.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:#7a869a}.text-primary{color:#0052cc}a.text-primary:focus,a.text-primary:hover{color:#003d99}.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{background-color:#0052cc;color:#fff}a.bg-primary:focus,a.bg-primary:hover{background-color:#003d99}.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{border-bottom:1px solid #ebecf0;margin:40px 0 20px;padding-bottom:9px}ol,ul{margin-bottom:10px;margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{list-style:none;padding-left:0}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px;margin-top:0}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:700px){.dl-horizontal dt{clear:left;float:left;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:160px}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{border-left:5px solid #ebecf0;font-size:17.5px;margin:0 0 20px;padding:10px 20px}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{color:#7a869a;display:block;font-size:80%;line-height:1.42857143}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{border-left:0;border-right:5px solid #ebecf0;padding-left:0;padding-right:15px;text-align:right}.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{font-style:normal;line-height:1.42857143;margin-bottom:20px}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Courier New,monospace}code{background-color:#f9f2f4;border-radius:4px;color:#c7254e}code,kbd{font-size:90%;padding:2px 4px}kbd{background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);color:#fff}kbd kbd{box-shadow:none;font-size:100%;font-weight:700;padding:0}pre{word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#344563;display:block;font-size:13px;line-height:1.42857143;margin:0 0 10px;padding:9.5px;word-break:break-all}pre code{background-color:transparent;border-radius:0;color:inherit;font-size:inherit;padding:0;white-space:pre-wrap}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.row-no-gutters{margin-left:0;margin-right:0}.row-no-gutters [class*=col-]{padding-left:0;padding-right:0}.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{min-height:1px;padding-left:15px;padding-right:15px;position:relative}.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}table col[class*=col-]{display:table-column;float:none;position:static}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none;position:static}caption{color:#7a869a;padding-bottom:8px;padding-top:8px}caption,th{text-align:left}.table{margin-bottom:20px;max-width:100%;width:100%}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{border-top:1px solid #ddd;line-height:1.42857143;padding:8px;vertical-align:top}.table>thead>tr>th{border-bottom:2px solid #ddd;vertical-align:bottom}.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,.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,.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{-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;margin-bottom:15px;overflow-y:hidden;width:100%}.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{margin:0;min-width:0}fieldset,legend{border:0;padding:0}legend{border-bottom:1px solid #e5e5e5;color:#344563;display:block;font-size:21px;line-height:inherit;margin-bottom:20px;width:100%}label{display:inline-block;font-weight:700;margin-bottom:5px;max-width:100%}input[type=search]{-webkit-appearance:none;appearance:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{line-height:normal;margin:4px 0 0;margin-top:1px\9}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}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{padding-top:7px}.form-control,output{color:#172b4d;display:block;font-size:14px;line-height:1.42857143}.form-control{background-color:#fff;background-image:none;border:1px solid #ced0da;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);height:34px;padding:6px 12px;-webkit-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;width:100%}.form-control:focus{border-color:#66afe9;-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);outline:0}.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:#ebecf0;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{display:block;margin-bottom:10px;margin-top:10px;position:relative}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{cursor:pointer;font-weight:400;margin-bottom:0;min-height:20px;padding-left:20px}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-left:-20px;margin-top:4px\9;position:absolute}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{cursor:pointer;display:inline-block;font-weight:400;margin-bottom:0;padding-left:20px;position:relative;vertical-align:middle}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-left:10px;margin-top:0}.form-control-static{margin-bottom:0;min-height:34px;padding-bottom:7px;padding-top:7px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}.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{font-size:12px;height:30px;line-height:1.5;min-height:32px;padding:6px 10px}.input-lg{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}.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{font-size:18px;height:46px;line-height:1.3333333;min-height:38px;padding:11px 16px}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{display:block;height:34px;line-height:34px;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:34px;z-index:2}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{height:46px;line-height:46px;width:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{height:30px;line-height:30px;width: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{background-color:#dff0d8;border-color:#3c763d;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{background-color:#fcf8e3;border-color:#8a6d3b;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{background-color:#f2dede;border-color:#a94442;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{color:#3462af;display:block;margin-bottom:10px;margin-top:5px}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;vertical-align:middle;width:auto}.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-bottom:0;margin-top: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]{margin-left:0;position:relative}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-bottom:0;margin-top:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{margin-bottom:0;padding-top:7px;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{font-size:18px;padding-top:11px}.form-horizontal .form-group-sm .control-label{font-size:12px;padding-top:6px}}.btn{background-image:none;border:1px solid transparent;border-radius:4px;cursor:pointer;display:inline-block;font-size:14px;font-weight:400;line-height:1.42857143;margin-bottom:0;padding:6px 12px;text-align:center;touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.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:#172b4d;text-decoration:none}.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125);outline:0}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{-webkit-box-shadow:none;box-shadow:none;cursor:not-allowed;filter:alpha(opacity=65);opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{background-color:#ebecf0;border-color:#ccc;color:#172b4d}.btn-default.focus,.btn-default:focus{background-color:#ced0da;border-color:#8c8c8c;color:#172b4d}.btn-default:hover{background-color:#ced0da;border-color:#adadad;color:#172b4d}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-color:#ced0da;background-image:none;border-color:#adadad;color:#172b4d}.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{background-color:#b9bdcb;border-color:#8c8c8c;color:#172b4d}.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:#ebecf0;border-color:#ccc}.btn-default .badge{background-color:#172b4d;color:#ebecf0}.btn-primary{background-color:#6554c0;border-color:#5643b7;color:#fff}.btn-primary.focus,.btn-primary:focus{background-color:#4d3da4;border-color:#2a215a;color:#fff}.btn-primary:hover{background-color:#4d3da4;border-color:#41338a;color:#fff}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-color:#4d3da4;background-image:none;border-color:#41338a;color:#fff}.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{background-color:#41338a;border-color:#2a215a;color:#fff}.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:#6554c0;border-color:#5643b7}.btn-primary .badge{background-color:#fff;color:#6554c0}.btn-success{background-color:#00c853;border-color:#00af48;color:#fff}.btn-success.focus,.btn-success:focus{background-color:#00953e;border-color:#002f14;color:#fff}.btn-success:hover{background-color:#00953e;border-color:#00712f;color:#fff}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-color:#00953e;background-image:none;border-color:#00712f;color:#fff}.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{background-color:#00712f;border-color:#002f14;color:#fff}.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:#00c853;border-color:#00af48}.btn-success .badge{background-color:#fff;color:#00c853}.btn-info{background-color:#3d5afe;border-color:#2444fe;color:#fff}.btn-info.focus,.btn-info:focus{background-color:#0a2ffe;border-color:#0119a1;color:#fff}.btn-info:hover{background-color:#0a2ffe;border-color:#0123e3;color:#fff}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-color:#0a2ffe;background-image:none;border-color:#0123e3;color:#fff}.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{background-color:#0123e3;border-color:#0119a1;color:#fff}.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:#3d5afe;border-color:#2444fe}.btn-info .badge{background-color:#fff;color:#3d5afe}.btn-warning{background-color:#ffab00;border-color:#e69a00;color:#fff}.btn-warning.focus,.btn-warning:focus{background-color:#cc8900;border-color:#640;color:#fff}.btn-warning:hover{background-color:#cc8900;border-color:#a87100;color:#fff}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-color:#cc8900;background-image:none;border-color:#a87100;color:#fff}.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{background-color:#a87100;border-color:#640;color:#fff}.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:#ffab00;border-color:#e69a00}.btn-warning .badge{background-color:#fff;color:#ffab00}.btn-danger{background-color:#ef5350;border-color:#ed3c39;color:#fff}.btn-danger.focus,.btn-danger:focus{background-color:#eb2521;border-color:#98110e;color:#fff}.btn-danger:hover{background-color:#eb2521;border-color:#d51713;color:#fff}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-color:#eb2521;background-image:none;border-color:#d51713;color:#fff}.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{background-color:#d51713;border-color:#98110e;color:#fff}.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:#ef5350;border-color:#ed3c39}.btn-danger .badge{background-color:#fff;color:#ef5350}.btn-link{border-radius:0;color:#0065ff;font-weight:400}.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{background-color:transparent;color:#0747a6;text-decoration:underline}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#7a869a;text-decoration:none}.btn-group-lg>.btn,.btn-lg{border-radius:6px;font-size:18px;line-height:1.3333333;padding:10px 16px}.btn-group-sm>.btn,.btn-sm{border-radius:3px;font-size:12px;line-height:1.5;padding:5px 10px}.btn-group-xs>.btn,.btn-xs{border-radius:3px;font-size:12px;line-height:1.5;padding:1px 5px}.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{height:0;overflow:hidden;position:relative;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px dashed;border-top:4px solid\9;display:inline-block;height:0;margin-left:2px;vertical-align:middle;width:0}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{background-clip:padding-box;background-color:#fff;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);display:none;float:left;font-size:14px;left:0;list-style:none;margin:2px 0 0;min-width:160px;padding:5px 0;position:absolute;text-align:left;top:100%;z-index:1000}.dropdown-menu.pull-right{left:auto;right:0}.dropdown-menu .divider{background-color:#ebecf0;height:1px;margin:9px 0;overflow:hidden}.dropdown-menu>li>a{clear:both;color:#172b4d;display:block;font-weight:400;line-height:1.42857143;padding:3px 20px;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#ebecf0;color:#172b4d;text-decoration:none}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#172b4d;color:#fff;outline:0;text-decoration:none}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#7a869a}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{background-color:transparent;background-image:none;cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);text-decoration:none}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{color:#7a869a;display:block;font-size:12px;line-height:1.42857143;padding:3px 20px;white-space:nowrap}.dropdown-backdrop{bottom:0;left:0;position:fixed;right:0;top:0;z-index:990}.pull-right>.dropdown-menu{left:auto;right:0}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-bottom:4px dashed;border-bottom:4px solid\9;border-top:0;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{bottom:100%;margin-bottom:2px;top:auto}@media (min-width:700px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.nav{list-style:none;margin-bottom:0;padding-left:0}.nav>li,.nav>li>a{display:block;position:relative}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{background-color:#ebecf0;text-decoration:none}.nav>li.disabled>a{color:#7a869a}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{background-color:transparent;color:#7a869a;cursor:not-allowed;text-decoration:none}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#ebecf0;border-color:#0065ff}.nav .nav-divider{background-color:#e5e5e5;height:1px;margin:9px 0;overflow:hidden}.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{border:1px solid transparent;border-radius:4px 4px 0 0;line-height:1.42857143;margin-right:2px}.nav-tabs>li>a:hover{border-color:#ebecf0 #ebecf0 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{background-color:#fff;border:1px solid;border-color:#ddd #ddd transparent;color:#5e6c84;cursor:default}.nav-tabs.nav-justified{border-bottom:0;width:100%}.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{left:auto;top: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{border-radius:4px;margin-right:0}.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{background-color:#0065ff;color:#fff}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-left:0;margin-top:2px}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{left:auto;top: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{border-radius:4px;margin-right:0}.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{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.navbar{border:1px solid transparent;margin-bottom:20px;min-height:54px;position:relative}@media (min-width:700px){.navbar{border-radius:4px}.navbar-header{float:left}}.navbar-collapse{-webkit-overflow-scrolling:touch;border-top:1px solid transparent;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);overflow-x:visible;padding-left:15px;padding-right:15px}.navbar-collapse.in{overflow-y:auto}@media (min-width:700px){.navbar-collapse{border-top:0;box-shadow:none;width:auto}.navbar-collapse.collapse{display:block!important;height:auto!important;overflow:visible!important;padding-bottom:0}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-bottom,.navbar-fixed-top{left:0;position:fixed;right:0;z-index:1030}.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}}@media (min-width:700px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{border-width:0 0 1px;top:0}.navbar-fixed-bottom{border-width:1px 0 0;bottom:0;margin-bottom:0}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-left:-15px;margin-right:-15px}@media (min-width:700px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-left:0;margin-right:0}}.navbar-static-top{border-width:0 0 1px;z-index:1000}@media (min-width:700px){.navbar-static-top{border-radius:0}}.navbar-brand{float:left;font-size:18px;height:54px;line-height:20px;padding:17px 15px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:700px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px;float:right;margin-bottom:10px;margin-right:15px;margin-top:10px;padding:9px 10px;position:relative}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{border-radius:1px;display:block;height:2px;width:22px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:700px){.navbar-toggle{display:none}}.navbar-nav{margin:8.5px -15px}.navbar-nav>li>a{line-height:20px;padding-bottom:10px;padding-top:10px}@media (max-width:699px){.navbar-nav .open .dropdown-menu{background-color:transparent;border:0;box-shadow:none;float:none;margin-top:0;position:static;width:auto}.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:700px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-bottom:17px;padding-top:17px}}.navbar-form{border-bottom:1px solid transparent;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1);margin:10px -15px;padding:10px 15px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;vertical-align:middle;width:auto}.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-bottom:0;margin-top: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]{margin-left:0;position:relative}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:699px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:700px){.navbar-form{border:0;-webkit-box-shadow:none;box-shadow:none;margin-left:0;margin-right:0;padding-bottom:0;padding-top:0;width:auto}}.navbar-nav>li>.dropdown-menu{border-top-left-radius:0;border-top-right-radius:0;margin-top:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:4px;border-top-right-radius:4px;margin-bottom:0}.navbar-btn{margin-bottom:10px;margin-top:10px}.navbar-btn.btn-sm{margin-bottom:12px;margin-top:12px}.navbar-btn.btn-xs{margin-bottom:16px;margin-top:16px}.navbar-text{margin-bottom:17px;margin-top:17px}@media (min-width:700px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#fff;border-color:#c1c7d0}.navbar-default .navbar-brand{color:#344563}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{background-color:transparent;color:#344563}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#8993a4}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{background-color:transparent;color:#505f79}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{background-color:#dfe1e6;color:#6b778c}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{background-color:transparent;color:#c1c7d0}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#dfe1e6;color:#6b778c}@media (max-width:699px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#8993a4}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{background-color:transparent;color:#505f79}.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{background-color:#dfe1e6;color:#6b778c}.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{background-color:transparent;color:#c1c7d0}}.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:#c1c7d0}.navbar-default .navbar-link{color:#8993a4}.navbar-default .navbar-link:hover{color:#505f79}.navbar-default .btn-link{color:#8993a4}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#505f79}.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:#c1c7d0}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#a5aebb}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#a5aebb}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#080808;color:#fff}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{background-color:transparent;color:#444}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:699px){.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:#a5aebb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:transparent;color:#fff}.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{background-color:#080808;color:#fff}.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{background-color:transparent;color:#444}}.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-link{color:#a5aebb}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#a5aebb}.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{background-color:#f5f5f5;border-radius:4px;list-style:none;margin-bottom:20px;padding:8px 15px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{color:#ccc;content:"/\00a0";padding:0 5px}.breadcrumb>.active{color:#7a869a}.alert{border:1px solid transparent;border-radius:4px;margin-bottom:20px;padding:15px}.alert h4{color:inherit;margin-top:0}.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{color:inherit;position:relative;right:-21px;top:-2px}.alert-success{background-color:#00875a;border-color:#00875a;color:#fff}.alert-success hr{border-top-color:#006e49}.alert-success .alert-link{color:#e6e6e6}.alert-info{background-color:#448aff;border-color:#448aff;color:#fff}.alert-info hr{border-top-color:#2a7aff}.alert-info .alert-link{color:#e6e6e6}.alert-warning{background-color:#ff8b00;border-color:#ff8b00;color:#fff}.alert-warning hr{border-top-color:#e67d00}.alert-warning .alert-link{color:#e6e6e6}.alert-danger{background-color:#de350b;border-color:#de350b;color:#fff}.alert-danger hr{border-top-color:#c62f0a}.alert-danger .alert-link{color:#e6e6e6}.label{border-radius:.25em;color:#fff;display:inline;font-size:75%;font-weight:700;line-height:1;padding:.2em .6em .3em;text-align:center;vertical-align:baseline;white-space:nowrap}a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#7a869a}.label-default[href]:focus,.label-default[href]:hover{background-color:#616d80}.label-primary{background-color:#0052cc}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#003d99}.label-success{background-color:#36b37e}.label-success[href]:focus,.label-success[href]:hover{background-color:#2a8c62}.label-info{background-color:#3d5afe}.label-info[href]:focus,.label-info[href]:hover{background-color:#0a2ffe}.label-warning{background-color:#ffab00}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc8900}.label-danger{background-color:#ff5630}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fc2e00}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}.progress{background-color:#ebecf0;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);height:20px;margin-bottom:20px;overflow:hidden}.progress-bar{background-color:#6554c0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);color:#fff;float:left;font-size:12px;height:100%;line-height:20px;text-align:center;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease;width:0}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);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:#36b37e}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-info{background-color:#3d5afe}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-warning{background-color:#ffab00}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-bar-danger{background-color:#ff5630}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:-o-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 25%,transparent 50%,hsla(0,0%,100%,.15) 50%,hsla(0,0%,100%,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.btn-group,.btn-group-vertical{display:inline-block;position:relative;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{float:left;position:relative}.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-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-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-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right: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}.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;max-width:100%;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-left:0;margin-top:-1px}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:0;border-top-right-radius:0}.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-left-radius:0;border-bottom-right-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{border-collapse:separate;display:table;table-layout:fixed;width:100%}.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]{clip:rect(0,0,0,0);pointer-events:none;position:absolute}.input-group{border-collapse:separate;display:table;position:relative}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;margin-bottom:0;position:relative;width:100%;z-index:2}.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{border-radius:6px;font-size:18px;height:46px;line-height:1.3333333;padding:10px 16px}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{border-radius:3px;font-size:12px;height:30px;line-height:1.5;padding:5px 10px}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{vertical-align:middle;white-space:nowrap;width:1%}.input-group-addon{background-color:#ebecf0;border:1px solid #ced0da;border-radius:4px;color:#172b4d;font-size:14px;font-weight:400;line-height:1;padding:6px 12px;text-align:center}.input-group-addon.input-sm{border-radius:3px;font-size:12px;padding:5px 10px}.input-group-addon.input-lg{border-radius:6px;font-size:18px;padding:10px 16px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.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{margin-left:-1px;z-index:2}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.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-bottom:5px;margin-top:0}.media-list{list-style:none;padding-left:0}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{background-color:#fff;border:1px solid #ebecf0;display:block;margin-bottom:-1px;padding:10px 15px;position:relative}.list-group-item:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.list-group-item:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px;margin-bottom:0}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#ebecf0;color:#7a869a;cursor:not-allowed}.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:#7a869a}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{background-color:#fff;border-color:#ebecf0;color:#0065ff;z-index:2}.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:#fff}a.list-group-item,button.list-group-item{color:#7a869a}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{background-color:#fff;color:#172b4d;text-decoration:none}button.list-group-item{text-align:left;width:100%}.list-group-item-success{background-color:#dff0d8;color:#3c763d}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{background-color:#d0e9c6;color:#3c763d}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{background-color:#3c763d;border-color:#3c763d;color:#fff}.list-group-item-info{background-color:#d9edf7;color:#31708f}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{background-color:#c4e3f3;color:#31708f}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{background-color:#31708f;border-color:#31708f;color:#fff}.list-group-item-warning{background-color:#fcf8e3;color:#8a6d3b}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{background-color:#faf2cc;color:#8a6d3b}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{background-color:#8a6d3b;border-color:#8a6d3b;color:#fff}.list-group-item-danger{background-color:#f2dede;color:#a94442}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{background-color:#ebcccc;color:#a94442}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{background-color:#a94442;border-color:#a94442;color:#fff}.list-group-item-heading{margin-bottom:5px;margin-top:0}.list-group-item-text{line-height:1.3;margin-bottom:0}.panel{background-color:#fff;border:1px solid transparent;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);margin-bottom:20px}.panel-body{padding:15px}.panel-heading{border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px;padding:14px 15px}.panel-heading>.dropdown .dropdown-toggle,.panel-title{color:inherit}.panel-title{font-size:16px;margin-bottom:0;margin-top:0}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{background-color:#fff;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #ebecf0;padding:14px 15px}.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-radius:0;border-width:1px 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-left-radius:3px;border-bottom-right-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{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-left:15px;padding-right:15px}.panel>.table-responsive:first-child>.table:first-child,.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,.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-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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-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>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-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>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,.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-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{border-radius:4px;margin-bottom:0}.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 #ebecf0}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ebecf0}.panel-default{border-color:#ddd}.panel-default>.panel-heading{background-color:#fff;border-color:#ddd;color:#344563}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{background-color:#344563;color:#fff}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#0052cc}.panel-primary>.panel-heading{background-color:#0052cc;border-color:#0052cc;color:#fff}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#0052cc}.panel-primary>.panel-heading .badge{background-color:#fff;color:#0052cc}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#0052cc}.panel-success{border-color:#36b37e}.panel-success>.panel-heading{background-color:#dff0d8;border-color:#36b37e;color:#3c763d}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#36b37e}.panel-success>.panel-heading .badge{background-color:#3c763d;color:#dff0d8}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#36b37e}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{background-color:#31708f;color:#d9edf7}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{background-color:#8a6d3b;color:#fcf8e3}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ff5630}.panel-danger>.panel-heading{background-color:#f2dede;border-color:#ff5630;color:#a94442}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff5630}.panel-danger>.panel-heading .badge{background-color:#a94442;color:#f2dede}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff5630}.pager{list-style:none;margin:20px 0;padding-left:0;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{background-color:#fff;border:1px solid #ddd;border-radius:15px;display:inline-block;padding:5px 14px}.pager li>a:focus,.pager li>a:hover{background-color:#ebecf0;text-decoration:none}.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{background-color:#fff;color:#7a869a;cursor:not-allowed}.pagination{border-radius:4px;display:inline-block;margin:20px 0;padding-left:0}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{background-color:#fff;border:1px solid #ddd;color:#0065ff;float:left;line-height:1.42857143;margin-left:-1px;padding:6px 12px;position:relative;text-decoration:none}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{background-color:#ebecf0;border-color:#ddd;color:#0747a6;z-index:2}.pagination>li:first-child>a,.pagination>li:first-child>span{border-bottom-left-radius:4px;border-top-left-radius:4px;margin-left:0}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{background-color:#0052cc;border-color:#0052cc;color:#fff;cursor:default;z-index:3}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{background-color:#fff;border-color:#ddd;color:#7a869a;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{font-size:18px;line-height:1.3333333;padding:10px 16px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{font-size:12px;line-height:1.5;padding:5px 10px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.embed-responsive{display:block;height:0;overflow:hidden;padding:0;position:relative}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{border:0;bottom:0;height:100%;left:0;position:absolute;top:0;width:100%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{background-color:#fff;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);margin-bottom:20px;min-height:20px;padding:19px}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{border-radius:6px;padding:24px}.well-sm{border-radius:3px;padding:9px}.close{color:#000;filter:alpha(opacity=20);float:right;font-size:21px;font-weight:700;line-height:1;opacity:.2;text-shadow:0 1px 0 #fff}.close:focus,.close:hover{color:#000;cursor:pointer;filter:alpha(opacity=50);opacity:.5;text-decoration:none}button.close{-webkit-appearance:none;appearance:none;background:transparent;border:0;cursor:pointer;padding:0}.badge{background-color:#7a869a;border-radius:10px;color:#fff;display:inline-block;font-size:12px;font-weight:700;line-height:1;min-width:10px;padding:3px 7px;text-align:center;vertical-align:middle;white-space:nowrap}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{padding:1px 5px;top:0}a.badge:focus,a.badge:hover{color:#fff;cursor:pointer;text-decoration:none}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{background-color:#fff;color:#0065ff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.modal,.modal-open{overflow:hidden}.modal{-webkit-overflow-scrolling:touch;bottom:0;display:none;left:0;outline:0;position:fixed;right:0;top:0;z-index:1050}.modal.fade .modal-dialog{-webkit-transform:translateY(-25%);-ms-transform:translateY(-25%);-o-transform:translateY(-25%);transform:translateY(-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0);-ms-transform:translate(0);-o-transform:translate(0);transform:translate(0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{margin:10px;position:relative;width:auto}.modal-content{background-clip:padding-box;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0;position:relative}.modal-backdrop{background-color:#091e42;bottom:0;left:0;position:fixed;right:0;top:0;z-index:1040}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{border-bottom:1px solid #ced0da;padding:15px}.modal-header .close{margin-top:-2px}.modal-title{line-height:1.42857143;margin:0}.modal-body{padding:15px;position:relative}.modal-footer{border-top:1px solid #ced0da;padding:15px;text-align:right}.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{height:50px;overflow:scroll;position:absolute;top:-9999px;width:50px}@media (min-width:768px){.modal-dialog{margin:30px auto;width:600px}.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}}.agreement-footer:after,.agreement-footer:before,.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{content:" ";display:table}.agreement-footer:after,.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-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{background-color:transparent;border:0;color:transparent;font:0/0 a;text-shadow:none}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.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}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.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}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.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}.hidden-print{display:none!important}}@media screen and (max-width:991px){body,html{overflow-x:hidden}}@media screen and (min-width:992px){.md-margin-top-no{margin-top:0!important}}@media screen and (min-width:768px) and (max-width:991px){.sm-margin-top{margin-top:20px!important}.sm-margin-top-no{margin-top:0!important}.sm-margin-top-half{margin-top:6.6px!important}.sm-align-row-buttons{margin-top:5px!important}}@media screen and (max-width:767px){.xs-margin-top{margin-top:20px!important}.xs-margin-top-half{margin-top:6.6px!important}}.flex-row{display:block;margin:0 -15px}.flex-row-section{align-items:center;display:flex;flex:1}.flex-row-section+.flex-row-section{margin-top:20px}.flex-row-col{flex:1;padding:0 15px}@media screen and (min-width:768px){.flex-row{align-items:center;display:flex}.flex-row-section+.flex-row-section{margin:0}.flex-row-col,.flex-row-section{align-items:center;flex:0}.flex-row-section.flex-row-section-auto,.flex-row-section.flex-row-section-auto>.flex-row-col{flex:1}}.flex-row-col-shrink{flex:0!important}.auth-message{background-color:#ebecf0;left:0;padding:20px 0;position:fixed;top:-100%;transition:top .3s ease;width:100%;z-index:1070}.auth-message.show{bottom:auto;top:0}.auth-message p{color:#172b4d;padding:5px 0}@media screen and (max-width:991px){.auth-message{text-align:center}.auth-message .btn{font-size:18px;padding:10px 16px}}.alerts-snackbar{font-size:18px;pointer-events:none;position:fixed;text-align:center;top:-100%;transition:top .3s ease;width:100%;z-index:1060}.alerts-snackbar.in{top:0;transition:top .2s ease}.alerts-snackbar p{border-radius:0 0 4px 4px;display:inline-block;margin:0;pointer-events:all}.agreement-overlay{background-color:rgba(9,30,66,.5);height:100%;left:0;overflow-x:scroll;position:fixed;top:0;width:100%;z-index:1060}.agreement-overlay .container{max-width:900px;padding:20px 30px}.agreement-content{background-clip:padding-box;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0;padding:10px 16px}.agreement-header{border-bottom:1px solid #ebecf0;padding:10px 0}.agreement-header h2{margin-top:0}.agreement-header p{margin:0;padding:0}.agreement-body{padding:20px 0}.agreement-body p.lead{margin:0;padding:0}.agreement-footer{border-top:1px solid #ced0da;padding:10px 0;text-align:right}.agreement-footer .btn+.btn{margin-bottom:0;margin-left:5px}.agreement-footer .btn-group .btn+.btn{margin-left:-1px}.agreement-footer .btn-block+.btn-block{margin-left:0}body.agreement-overlay-visible{overflow:hidden}.loader{height:49px;text-align:center;width:100%}.loader.loader-spaced{margin:40px 0}.loader-spinning-wheel{animation:cssload-spin 575ms linear infinite;-o-animation:cssload-spin 575ms linear infinite;-ms-animation:cssload-spin 575ms linear infinite;-webkit-animation:cssload-spin 575ms linear infinite;-moz-animation:cssload-spin 575ms linear infinite;border-color:#7a869a transparent;border-radius:50%;border-style:solid;border-width:3px;height:49px;margin:0 auto;width:49px}@keyframes cssload-spin{to{transform:rotate(1turn)}}@-o-keyframes cssload-spin{to{-o-transform:rotate(1turn);transform:rotate(1turn)}}@-ms-keyframes cssload-spin{to{-ms-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes cssload-spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-moz-keyframes cssload-spin{to{-moz-transform:rotate(1turn);transform:rotate(1turn)}}.navbar{margin-bottom:0}.navbar .navbar-full .navbar-brand{font-size:21px;padding-bottom:11px;padding-top:11px}.navbar .navbar-full .navbar-brand>*{display:inline-block;vertical-align:middle}.navbar .navbar-full .navbar-brand img{height:32px;margin-right:6px}.navbar .navbar-full .navbar-nav>li>a{font-size:16.8px}.navbar .navbar-full .navbar-icon{color:#8993a4;display:block;height:54px;padding:13px 15px;position:relative}.navbar .navbar-full .navbar-icon:focus,.navbar .navbar-full .navbar-icon:hover{background-color:transparent;color:#505f79}.navbar .navbar-full .navbar-icon .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.navbar .navbar-full .navbar-icon .badge{background-color:#ff5630;font-size:9px;position:absolute;right:6px;top:6px}.navbar .navbar-full .open .navbar-icon,.navbar .navbar-full .open .navbar-icon:focus,.navbar .navbar-full .open .navbar-icon:hover{background-color:#dfe1e6;color:#6b778c}.navbar .navbar-full .nav-guest,.navbar .navbar-full .nav-user{float:right}.navbar .navbar-full .nav-guest .navbar-btn,.navbar .navbar-full .nav-user .navbar-btn{margin-left:15px}.navbar .navbar-full .nav-user .dropdown-toggle{padding:10px}.navbar .navbar-full .nav-user .dropdown-toggle img{height:34px;width:34px}.navbar ul.navbar-compact-nav{border-collapse:collapse;display:table;margin:0;table-layout:fixed;width:100%}.navbar ul.navbar-compact-nav>li{display:table-cell;width:100%}.navbar ul.navbar-compact-nav>li>a,.navbar ul.navbar-compact-nav>li>button{background:none;border:none;color:#8993a4;display:block;padding-bottom:13px;padding-top:13px;text-align:center;width:100%}.navbar ul.navbar-compact-nav>li>a.active,.navbar ul.navbar-compact-nav>li>a:focus,.navbar ul.navbar-compact-nav>li>a:hover,.navbar ul.navbar-compact-nav>li>button.active,.navbar ul.navbar-compact-nav>li>button:focus,.navbar ul.navbar-compact-nav>li>button:hover{background-color:#dfe1e6;color:#6b778c}.navbar ul.navbar-compact-nav>li>a>img,.navbar ul.navbar-compact-nav>li>button>img{height:24px;width:24px}.navbar ul.navbar-compact-nav>li>button{display:inline-block}.navbar ul.navbar-compact-nav>li>a>.material-icon{font-size:24px;line-height:24px}@media (max-width:700px){.navbar.navbar-misago{min-height:auto}}.navbar-misago .navbar-desktop-nav{display:none}@media (min-width:700px){.navbar-misago ul.navbar-compact-nav{display:none}.navbar-misago .navbar-desktop-nav{display:block}}.nav-side>a>.material-icon{bottom:1px;font-size:24px;height:24px;line-height:24px;margin:-5px 10px -5px -5px;position:relative;width:24px}.nav-side>a .badge{position:relative;top:1px}.nav-pills>li>a{align-items:center;display:flex;padding:5px 10px}.nav-pills>li>a .material-icon{margin-right:3px}.nav-pills>li>a,.nav-pills>li>a:link,.nav-pills>li>a:visited{background-color:#ebecf0;color:#344563}.nav-pills>li>a:active,.nav-pills>li>a:focus,.nav-pills>li>a:hover{background-color:#dcdee5;color:#344563}.nav-pills>li.active>a,.nav-pills>li.active>a:active,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:link,.nav-pills>li.active>a:visited{background-color:#344563;color:#fff}.nav-container .btn-block{margin-bottom:20px}.nav-container .nav{margin-bottom:30px;margin-right:-10px}.nav-container li{margin-bottom:10px;margin-right:10px}.breadcrumbs{display:block;margin-bottom:10px;padding:0}.breadcrumbs-item{display:inline-block;list-style:none;margin-bottom:10px;margin-right:15px;padding:0}.breadcrumbs-item a{align-items:center;display:flex;text-decoration:none}.breadcrumbs-item a,.breadcrumbs-item a:visited{color:#5e6c84}.breadcrumbs-item a:focus,.breadcrumbs-item a:hover{color:#172b4d}.breadcrumbs-item a:focus .breadcrumbs-item-name,.breadcrumbs-item a:hover .breadcrumbs-item-name{text-decoration:underline}.breadcrumbs-item a:active{color:#172b4d}.breadcrumbs-item .material-icon{margin-right:4px}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(../fonts/MaterialIcons-Regular.eot);src:local("Material Icons"),local("MaterialIcons-Regular"),url(../fonts/MaterialIcons-Regular.woff2) format("woff2"),url(../fonts/MaterialIcons-Regular.woff) format("woff"),url(../fonts/MaterialIcons-Regular.ttf) format("truetype")}.material-icon{word-wrap:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"liga";direction:ltr;display:inline-block;font-family:Material Icons;font-style:normal;font-weight:400;height:1em;letter-spacing:normal;line-height:1;text-align:center;text-rendering:optimizeLegibility;text-transform:none;vertical-align:middle;white-space:nowrap;width:1em}.modal-toolbar{background:#ebecf0;border-bottom:1px solid #ced0da;overflow:auto;padding:6px 12px}.modal-toolbar .pull-left{margin-right:8px}.modal-toolbar p{margin-bottom:0;padding:5px 0}@media screen and (max-width:991px){.modal-message{text-align:center}.modal-message .message-icon{margin:30px}.modal-message .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.modal-message .modal-body{padding-bottom:30px;padding-top:20px}.modal-message .message-icon{float:left;left:7px;position:relative}.modal-message .message-icon .material-icon{font-size:50px}.modal-message .message-body{margin-left:75px;margin-top:10px}.modal-message .message-body p{margin-top:20px}.modal-message .message-body .lead{margin-bottom:0;margin-top:0}}.modal-loader{padding:50px 0}.modal-loader .loader{height:80px;text-align:center;width:100%}.modal-loader .loader-spinning-wheel{height:80px;width:80px}.modal-body .form-group{min-height:34px}.list-item-errors{margin-bottom:20px}.list-errored-items li:last-child .list-item-errors{margin-bottom:0}.modal-post-likers .media-list{margin:0}.modal-post-likers .item-title{display:block}.has-feedback .material-icon.form-control-feedback{font-size:1.42857143;line-height:1.42857143;right:24px;top:6px}.well.well-form.well-done{font-size:18px;text-align:center}.well.well-form.well-done .message-icon{font-size:90px;line-height:90px;margin-bottom:10px}.well.well-form.well-done .message-body{margin-bottom:20px}.well.well-form.well-noscript{font-size:18px;text-align:center}.well.well-form.well-noscript .message-icon{font-size:90px;line-height:90px;margin-bottom:10px}.btn.btn-select,.btn.btn-yes-no{background:transparent;border:1px solid #ced0da}.btn.btn-select .material-icon,.btn.btn-yes-no .material-icon{bottom:1px;font-size:20px;height:20px;line-height:20px;margin:-4px 8px -4px 0;position:relative;width:20px}@media screen and (max-width:767px){.btn.btn-yes-no{overflow:auto;width:100%}.btn.btn-yes-no .material-icon{float:left;margin-top:1px}.btn.btn-yes-no .btn-text{display:block;margin-left:30px;text-align:left;white-space:normal}}input.hidden-file-upload{left:-9999px;position:absolute;top:-9999px}.form-search{position:relative}.form-search .form-control{padding-right:30px}.form-search .material-icon{color:#7a869a;font-size:24px;line-height:24px;pointer-events:none;position:absolute;right:5px;top:5px}.btn.btn-loading,.btn.btn-loading:active,.btn.btn-loading:focus,.btn.btn-loading:hover,.btn.btn-loading:link,.btn.btn-loading:visited{color:transparent}.btn.btn-loading .loader,.btn.btn-loading:active .loader,.btn.btn-loading:focus .loader,.btn.btn-loading:hover .loader,.btn.btn-loading:link .loader,.btn.btn-loading:visited .loader{height:20px;margin-top:-20px}.btn.btn-loading .loader>div,.btn.btn-loading:active .loader>div,.btn.btn-loading:focus .loader>div,.btn.btn-loading:hover .loader>div,.btn.btn-loading:link .loader>div,.btn.btn-loading:visited .loader>div{height:20px;width:20px}.btn.btn-loading.btn-default .loader>div{border-bottom-color:#172b4d;border-top-color:#172b4d}.btn.btn-loading.btn-danger .loader>div,.btn.btn-loading.btn-info .loader>div,.btn.btn-loading.btn-primary .loader>div,.btn.btn-loading.btn-success .loader>div,.btn.btn-loading.btn-warning .loader>div{border-bottom-color:#fff;border-top-color:#fff}.btn .material-icon{bottom:1px;margin-right:3px;position:relative}.btn-icon .material-icon{font-size:20px;height:20px;line-height:20px;margin:-1px -4px;width:20px}.btn-icon .btn-text{margin-left:10px}.btn-icon .btn-text-left{margin-right:10px}.btn-block.btn-icon{padding-left:0;padding-right:0}.dropdown-menu>li>.btn-link,.dropdown-menu>li>a,.modal-menu>li>.btn-link,.modal-menu>li>a{border:none;clear:both;color:#172b4d;display:block;float:none;font-weight:400;line-height:1.42857143;padding:6px 20px;text-align:left;white-space:nowrap;width:100%}.dropdown-menu>li>.btn-link:active,.dropdown-menu>li>.btn-link:focus,.dropdown-menu>li>.btn-link:hover,.dropdown-menu>li>a:active,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.modal-menu>li>.btn-link:active,.modal-menu>li>.btn-link:focus,.modal-menu>li>.btn-link:hover,.modal-menu>li>a:active,.modal-menu>li>a:focus,.modal-menu>li>a:hover{background-color:#ebecf0;color:#172b4d;text-decoration:none}.dropdown-menu>li>.btn-link:disabled,.dropdown-menu>li>a:disabled,.modal-menu>li>.btn-link:disabled,.modal-menu>li>a:disabled{color:rgba(23,43,77,.5)}.dropdown-menu>li>.btn-link .material-icon,.dropdown-menu>li>a .material-icon,.modal-menu>li>.btn-link .material-icon,.modal-menu>li>a .material-icon{bottom:1px;font-size:18px;margin:-2px 7px -2px 0;position:relative}.dropdown-menu>li>.btn-link .badge,.dropdown-menu>li>a .badge,.modal-menu>li>.btn-link .badge,.modal-menu>li>a .badge{float:right;position:relative;top:1px}.modal-menu{margin:20px 0;padding:0}.modal-menu>li{list-style:none;margin:6.66666667px 0;padding:0}.dropdown-menu{min-width:210px}.dropdown-menu .dropdown-footer{padding:6px 20px}.dropdown-menu .dropdown-buttons{padding:2px 20px 7px}.dropdown-menu .dropdown-buttons .btn{margin:4px 0}.mobile-dropdown{position:relative}.compact-nav.open>.dropdown-menu,.mobile-dropdown.open>.dropdown-menu{border:none;border-radius:0;display:block;margin:0;width:100%}.user-dropdown .guest-preview{text-align:center}.user-dropdown .guest-preview .row{margin:0}.navbar .user-dropdown{width:240px}.user-dropdown .dropdown-header{font-size:18px;padding:6px 20px}.user-dropdown .dropdown-header strong{font-weight:400}@media screen and (min-width:992px){.category-picker .dropdown-menu{width:300px}}.category-picker .dropdown-menu>li>.btn-link{word-wrap:break-word;white-space:normal}@media screen and (max-width:767px){.dropdown-menu.stick-to-bottom{border:none;border-radius:0;bottom:0;-webkit-box-shadow:0 0 30px #7a869a;box-shadow:0 0 30px #7a869a;clear:both;margin:0;max-height:300px;overflow-y:auto;padding:0 0 20px;position:fixed;top:auto;width:100%}.dropdown-menu.stick-to-bottom li{clear:both;float:none;margin:0}.dropdown-menu.stick-to-bottom li>.btn,.dropdown-menu.stick-to-bottom li>a{border-bottom:1px solid #ebecf0;padding-bottom:15px;padding-top:15px}}.category-label{border-radius:.25em;padding:.2em .6em .3em}.category-label-color,.category-label-color:active,.category-label-color:focus,.category-label-color:hover,.category-label-color:link,.category-label-color:visited{color:#fff}.category-label-no-color,.category-label-no-color:active,.category-label-no-color:focus,.category-label-no-color:hover,.category-label-no-color:link,.category-label-no-color:visited{background-color:#ebecf0;color:#344563}.thread-flags{margin:0;opacity:.8;padding:0}.thread-flags,.thread-flags li{align-items:center;display:flex}.thread-flags li{border-radius:3px;cursor:default;height:20px;justify-content:center;list-style-type:none;width:20px}.thread-flags li+li{margin-left:7.5px}.thread-flags .material-icon{font-size:16px;line-height:16px}.thread-flag-pinned-globally{background:#dbeafe;color:#2563eb}.thread-flag-pinned-locally{background:#dbeafe;color:#3b82f6}.thread-flag-answered{background:#d9f99d;color:#4d7c0f}.thread-flag-poll{background:#f5d0fe;color:#c026d3}.thread-flag-unapproved{background:#dc2626;color:#fff}.thread-flag-closed{background:#fecaca;color:#dc2626}.thread-flag-hidden{background:#64748b;color:#fff}.threads-replies{align-items:center;color:#5e6c84;display:flex;font-size:16px;font-weight:700}.threads-replies .material-icon{margin-right:7.5px;transform:matrix(-1,0,0,1,0,0)}.thread-user-card{align-items:center;display:flex}.thread-user-card-media{flex:0;margin-right:15px}.thread-user-card-media img{border-radius:3px}.thread-user-card-body{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navbar-misago .dropdown-menu.dropdown-search-results{left:auto;margin:0;padding-top:0;right:0;width:400px}.dropdown-search-results .form-group{margin:0;padding:12px}li.dropdown-search-message{text-align:center}.dropdown-search-thread{width:100%}.dropdown-search-thread h5{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-search-thread small{display:block;margin:4px 0 0}.page-header{margin:10px 0 0}.page-header-banner-bg-overlay{padding:20px 0}.page-header h1{margin:0;overflow-wrap:break-word}.page-container{padding-top:20px}@media screen and (max-width:991px){.panel-message-body{text-align:center}.panel-message-body .message-icon{margin:30px}.panel-message-body .message-icon .material-icon{font-size:160px}}@media screen and (min-width:992px){.panel-message-body{padding:20px 20px 30px}.panel-message-body .message-icon{float:left}.panel-message-body .message-icon .material-icon{font-size:50px}.panel-message-body .message-body{margin-left:65px;margin-top:10px}.panel-message-body .message-body .lead{margin-bottom:0}.panel-message-body .message-body .help-block{margin-top:13.2px}}.panel-body-loading{padding:0;text-align:center}.misago-footer{margin-bottom:50px;margin-top:30px}.misago-footer .footer-content{padding-top:30px}.misago-footer .noscript-message .material-icon{bottom:1px;font-size:18px;position:relative}.ui-preview{-webkit-animation:ui-preview-animation 1s linear infinite;-o-animation:ui-preview-animation 1s linear infinite;animation:ui-preview-animation 1s linear infinite;color:#ebecf0}@keyframes ui-preview-animation{0%{filter:alpha(opacity=100);opacity:1}50%{filter:alpha(opacity=10);opacity:.1}to{filter:alpha(opacity=100);opacity:1}}.ui-preview-text{background:#ebecf0;border-radius:100px;display:inline-block;height:14px;position:relative;top:3px}.ui-preview-paragraph .ui-preview-text{margin-right:6px}.ui-preview-paragraph .ui-preview-text:last-child{margin-right:0}.ui-preview-img{background:#ebecf0;border-radius:5px}.pager-undercontent{margin-top:-20px}.pager-more{text-align:center}@media screen and (min-width:992px){.pager-more .btn{padding-left:20px;padding-right:20px}}.misago-pagination{display:flex}.misago-pagination .btn{display:block;width:100%}.misago-pagination .btn+.btn{margin-left:30px}@media screen and (max-width:767px){.toolbar-item .misago-pagination{flex:1}}.panel-poll h2{margin-top:0}.poll-select-choice .btn,.poll-select-choice .btn:active,.poll-select-choice .btn:focus,.poll-select-choice .btn:hover{background:transparent;border:transparent;-webkit-box-shadow:none;box-shadow:none;margin:6px 0;outline:none;padding:0 0 0 6px;text-align:left}.poll-select-choice .btn .material-icon{line-heigh:28px;color:#ced0da;font-size:28px;height:28px;margin-right:6px;width:28px}.poll-select-choice .btn.btn-selected .material-icon{color:#0052cc}.poll-help{font-size:12px}.poll-chart-selected .material-icon{line-heigh:14px;bottom:1px;color:#36b37e;font-size:14px;height:14px;margin-right:4px;position:relative;width:14px}.poll-options{margin-bottom:0}@media screen and (max-width:767px){.poll-options{margin-top:-6px}.poll-options .btn{margin:6px 0}}.user-status.user-banned .status-icon{color:#ff5630}.user-status.user-online .status-icon{color:#36b37e}.user-status.user-offline .status-icon{color:#7a869a}@media screen and (min-width:768px){.user-card{text-align:center}}.user-card-small-avatar img{height:auto;width:100%}@media screen and (min-width:768px){.user-card-small-avatar{display:none}}@media screen and (max-width:767px){.user-card-avatar{display:none}}.toolbar{display:block;margin:0 -15px}.toolbar-section{display:flex;flex:1;justify-items:center;margin-bottom:20px}.toolbar-item{flex:1;padding:0 15px}.toolbar-item h3,.toolbar-item p{margin:0}.toolbar-item-shrink{flex:0}.toolbar-spacer{display:none}@media screen and (min-width:768px){.toolbar{display:flex}.toolbar-item,.toolbar-section{align-items:center;flex:0}.toolbar-section.toolbar-section-auto,.toolbar-section.toolbar-section-auto .toolbar-item{flex:1}.toolbar-spacer{display:block;flex:1}.toolbar-item .form-search{width:250px}}@media screen and (max-width:767px){.toolbar-item p{text-align:center}}abbr{border:none!important}.item-title{text-decoration:none}.item-title,a.item-title:active,a.item-title:hover,a.item-title:link,a.item-title:visited{color:#172b4d;font-weight:700}a.item-title:hover{text-decoration:underline}.message-line{text-align:center}.message-line .material-icon{font-size:20px;height:20px;line-height:20px;margin-right:6.66666667px;width:20px}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.misago-markup h1,.misago-markup h2,.misago-markup h3,.misago-markup h4,.misago-markup h5,.misago-markup h6,.misago-markup p{word-wrap:break-word}.misago-markup h1,.misago-markup h2,.misago-markup h3,.misago-markup h4,.misago-markup h5,.misago-markup h6{margin-top:40px}.misago-markup blockquote>*,.misago-markup>*{margin:20px 0}.misago-markup blockquote>:first-child,.misago-markup>:first-child{margin-top:0}.misago-markup blockquote>:last-child,.misago-markup>:last-child{margin-bottom:0}.misago-markup img{max-height:500px;max-width:100%}.misago-markup .quote-block,.misago-markup blockquote{background:#ebecf0;border:none;font-size:14px}.misago-markup .quote-block .quote-heading,.misago-markup blockquote .quote-heading{border-bottom:1px solid #d4d6df;font-size:12px;font-weight:700;padding:10px 20px}.misago-markup>.quote-block,.misago-markup>blockquote{border:1px solid #d4d6df}.misago-markup .quote-body{background:#fff;margin:0;padding:20px}.misago-markup .quote-body>.quote-block,.misago-markup .quote-body>blockquote{border:1px solid #d4d6df}.misago-markup .spoiler-block{background:#ebecf0;font-size:14px}.misago-markup>.spoiler-block{border:1px solid #d4d6df;position:relative}.misago-markup .spoiler-body{background:#fff;margin:0;padding:20px}.misago-markup .spoiler-overlay{background:#fff}.misago-markup .spoiler-block.revealed .spoiler-overlay{display:none}.misago-markup ul,.misago-markup ul li{list-style-type:square}.misago-markup ol,.misago-markup ol li{list-style-type:decimal}.misago-markup pre{background:#eee;border:none;color:#000;overflow:hidden;padding:10px}.misago-markup pre code.hljs{margin:-10px;padding:9.5px}.modal-change-avatar .modal-avatar-index .avatar-preview{border-radius:6px;height:200px;margin:0 auto;overflow:hidden;position:relative;width:200px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{display:none;height:100px;position:absolute;top:50px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{border-color:#fff transparent;border-width:10px;height:100px;width:100px}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img{filter:alpha(opacity=33);opacity:.33}.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader{display:block}@media (max-width:699px){.modal-change-avatar .modal-avatar-index .avatar-preview{height:150px;margin-bottom:20px;width:150px}.modal-change-avatar .modal-avatar-index .avatar-preview img{height:150px;width:150px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader{height:100px;top:25px}.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel{height:100px;width:100px}}.modal-change-avatar .modal-avatar-index .btn{text-align:left}.modal-change-avatar .modal-avatar-upload{text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file{background:transparent;border:2px solid #ebecf0;border-radius:6px;-webkit-box-shadow:none;box-shadow:none;color:#7a869a;font-size:18px;padding:10px 24px;text-align:center}.modal-change-avatar .modal-avatar-upload .btn-pick-file>.material-icon{display:block;font-size:50px;height:50px;margin:0 auto 13.2px;width:50px}.modal-change-avatar .modal-avatar-upload .btn-pick-file:active,.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover{border-color:#0052cc;color:#0052cc}.modal-change-avatar .modal-avatar-upload .text-muted{margin-top:13.2px}.modal-change-avatar .modal-avatar-upload .upload-progress img{border-radius:4px;margin-bottom:20px;max-height:80px;width:auto}.modal-change-avatar .modal-avatar-upload .upload-progress .progress{margin:0 auto;width:70%}.modal-avatar-crop .crop-form{margin:0 auto}.modal-avatar-crop .crop-form .cropit-image-zoom-input{-webkit-appearance:none;border:1px solid #fff;margin-top:10px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track{background:#ebecf0;border:none;border-radius:3px;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb{-webkit-appearance:none;background:#7a869a;border:none;border-radius:50%;height:20px;margin-top:-6px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus{outline:none}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track{background:#ebecf0}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track{background:#ebecf0;border:none;border-radius:4px;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb{background:#7a869a;border:none;border-radius:50%;height:20px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track{background:transparent;border-color:transparent;border-width:8px 0;color:transparent;height:8px;width:100%}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower,.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper{background:#ebecf0;border-radius:16px}.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb{background:#7a869a;border:none;border-radius:50%;height:20px;width:20px}.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower,.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper{background:#ebecf0}.modal-change-avatar .modal-avatar-gallery{padding-bottom:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery{margin-bottom:20px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3{margin-top:0}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row{margin-bottom:10px}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn{background:none;border:2px solid #ebecf0;border-radius:6px;padding:2px;position:relative}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover{border-color:#7a869a}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active{border-color:#0065ff}.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img{border-radius:4px;height:auto;width:100%}.category-main .read-status .material-icon{color:#ebecf0}.category-main .read-status.item-new .material-icon{color:#0052cc}.category-last-thread .media-heading a{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;width:290px}@media screen and (max-width:991px){.category-last-thread .media-heading a{width:275px}}@media screen and (max-width:767px){.category-last-thread .media-heading a{width:260px}}.category-thread-message .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.category-thread-message p{margin:0}.list-inline.subcategories-list{margin-top:-10px;overflow:auto}.list-inline.subcategories-list li{display:block;float:left}.list-inline.subcategories-list li a,.list-inline.subcategories-list li a:active,.list-inline.subcategories-list li a:focus,.list-inline.subcategories-list li a:hover,.list-inline.subcategories-list li a:link,.list-inline.subcategories-list li a:visited{background-color:#ebecf0;border:1px solid #dcdee5;border-radius:4px;color:#5e6c84;display:inline-block;margin-top:10px;padding:6px 12px}.list-inline.subcategories-list li a:active,.list-inline.subcategories-list li a:hover,.list-inline.subcategories-list li:focus{background-color:#dcdee5;color:#172b4d;text-decoration:none}.row.subcategories-list .btn{margin-top:20px;text-align:left}#posting-placeholder{background-color:#ebecf0;display:none;margin-bottom:-30px;margin-top:30px;padding:20px 0;transition:height .3s}#posting-placeholder.slide-in{display:block}#posting-placeholder .first-row{margin-bottom:20px}#posting-placeholder .first-row .form-control{border:1px solid #bfc2cf}#posting-placeholder .first-row .posting-options .btn{padding-bottom:4px;padding-top:4px}#posting-placeholder .first-row .posting-options .btn .btn-text{margin-left:5px;position:relative;top:1px}#posting-placeholder .first-row .posting-options .material-icon{font-size:14px;height:24px;line-height:14px;margin-right:0;position:relative;text-align:center;top:5px;width:14px}.posting-ui-preview{padding:20px 0;position:relative}.posting-ui-preview .form-control{box-shadow:none;resize:none}.posting-loader{text-align:center}.posting-loader .loader{height:100px}.posting-loader .loader .loader-spinning-wheel{height:100px;width:100px}.posting-message{text-align:center}.posting-message .material-icon{font-size:28px;height:28px;line-height:28px;margin-right:6.66666667px;position:relative;top:-1px;width:28px}.posting-message .message-body p{font-size:18px}.editor-border{background-color:#fff;border:1px solid #bfc2cf;border-radius:4px}.editor-border .form-control{border:none;resize:none}.editor-border .form-control,.editor-border .form-control:active,.editor-border .form-control:focus{-webkit-box-shadow:none;box-shadow:none}.editor-footer{border-top:1px solid #bfc2cf;overflow:auto;padding:6px 12px}.editor-footer .pull-left{margin-right:12px}.editor-footer .pull-right{margin-left:12px}.editor-footer .btn-icon .material-icon{margin-bottom:-2px}@media screen and (max-width:991px){.editor-footer .buttons-list{float:none!important;margin:0 0 10px}.editor-footer .buttons-list .btn{display:inline-block;float:none!important;margin:6.66666667px}.editor-footer .btn-protect .btn-text{margin-left:10px}.editor-footer .btn-protect .material-icon{bottom:2px;font-size:14px;height:14px;line-height:14px;position:relative;width:14px}}@media screen and (min-width:768px) and (max-width:991px){.buttons-list .btn:first-child{margin-left:0}}@media screen and (max-width:767px){.buttons-list{text-align:center}.buttons-list .btn-protect{display:block;float:none!important;margin:10px 0 0;width:100%}}.editor-attachments-list{margin:0;padding:0}.editor-attachments-list li{margin:0}.editor-attachment-complete{border-top:1px solid #bfc2cf;padding:6px 12px 6px 0}.editor-attachment-complete .editor-attachment-image{float:left;width:50px}.editor-attachment-complete .editor-attachment-image a{background-position:50%;background-size:cover;border-radius:3px;display:block;height:36px;margin:0 auto;width:36px}.editor-attachment-complete .editor-attachment-icon{float:left;text-align:center;width:50px}.editor-attachment-complete .editor-attachment-icon .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:2px;width:28px}.editor-attachment-complete .editor-attachment-details{margin-left:50px}.editor-attachment-complete .editor-attachment-details h4,.editor-attachment-complete .editor-attachment-details p{font-size:14px;margin:0;padding:0}.editor-attachment-complete .editor-attachment-details p{color:#7a869a;font-size:12px;margin-top:3px}.editor-attachment-complete .editor-attachment-details abbr{white-space:nowrap}@media screen and (min-width:768px){.editor-attachment-actions{padding-top:3px}}@media screen and (max-width:767px){.editor-attachment-actions{padding-left:12px;padding-right:12px}}.editor-attachment-error{border-top:1px solid #bfc2cf;padding:6px 12px 6px 0}.editor-attachment-error-icon{float:left;text-align:center;width:50px}.editor-attachment-error-icon .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:2px;width:28px}.editor-attachment-error-message{margin-left:50px;padding:6px 0;position:relative}.editor-attachment-error-message h4,.editor-attachment-error-message p{font-size:14px;margin:0;padding:0}.editor-attachment-error-message p{font-size:12px;margin-top:3px}.editor-attachment-error-message .btn{position:absolute;right:12px;top:9px}@media screen and (max-width:767px){.editor-attachment-error-message .btn{display:block;margin-top:10px;position:static}}.editor-attachment-progress-bar{background:#bfc2cf;overflow:auto}.editor-attachment-progress{background:#0052cc;float:left;height:1px}.editor-attachment-upload-message{margin:0;padding:6px 12px}#editor-upload-field{left:-1000px;position:absolute;top:-1000px}.atwho-view ul li img{border-radius:3px;height:20px;margin-right:4.66666667px;width:20px}.participant-card .btn-user,.participant-card .dropdown.open .btn-user{margin-bottom:20px}.participant-card .btn-user,.participant-card .btn-user:focus,.participant-card .btn-user:focus:active,.participant-card .btn-user:hover,.participant-card .dropdown.open .btn-user,.participant-card .dropdown.open .btn-user:focus,.participant-card .dropdown.open .btn-user:focus:active,.participant-card .dropdown.open .btn-user:hover{overflow:hidden;padding:0;text-align:left}.participant-card .btn-user img,.participant-card .dropdown.open .btn-user img{background-color:#fff;height:34px;margin-right:8px;width:34px}.panel-participants p{margin:7px 0 0}.poll-choices-control .list-group-item{padding:0}.poll-choices-control .list-group-item .btn{background:transparent;border:transparent;float:left;height:28px;margin:0 2px -29px;padding:0;position:relative;top:3px;width:28px}.poll-choices-control .list-group-item .btn .material-icon{font-size:28px;height:28px;line-height:28px;width:28px}.poll-choices-control input,.poll-choices-control input:active,.poll-choices-control input:focus{background:transparent;border:none;-webkit-box-shadow:none;box-shadow:none;margin-left:30px;outline:none;padding:6px 12px;width:100%}.posts-list{clear:both;margin:0;padding:0}.posts-list li{list-style:none;margin:0;padding:0}@media screen and (min-width:992px){.panel-post .panel-body{display:flex}.post-side{flex-shrink:0;padding-right:15px;width:260px}.panel-content{flex:1 0}}.post-side{font-size:12px}.post-side .media{margin:0}.post-side .poster-avatar{height:36px;width:36px}@media screen and (min-width:992px){.post-side .poster-avatar{height:82px;margin-top:4px;width:82px}}.post-side .user-status{margin-right:4px}.post-side .media-heading{display:block;font-size:14px;margin:-1px 0 0}.post-side .media-heading .user-status{margin-left:2px;margin-right:0}.post-side .pull-right{margin-left:16px}@media screen and (min-width:992px){.post-side .media-heading{font-size:18px;margin-top:3px}.post-side .media-heading .user-status{display:none}.post-side .user-title{margin-bottom:5px;margin-top:4px}.post-side .user-postcount,.post-side .user-status{display:block}}.post-heading{height:36px}@media screen and (max-width:991px){.post-heading{margin-top:10px}}.post-heading .pull-right{margin-left:16px}.post-heading .label{font-size:14px;font-weight:400;margin-top:6px}.post-heading .label-unread{background-color:#36b37e;color:#fff}@media screen and (min-width:992px){.post-side .pull-right{display:none}}@media screen and (max-width:991px){.post-heading .pull-right{display:none}}.post-body{padding-bottom:30px;padding-top:20px}.post-status-message{overflow:auto}.post-status-message .material-icon{float:left;font-size:28px;line-height:28px}.post-status-message p{margin:4px 0 0 36px}.post-status-best-answer{background-color:#36b37e;color:#fff}.post-status-hidden{background-color:#ff5630;color:#fff}.post-status-unapproved{background-color:#0052cc;color:#fff}.post-status-protected{background-color:#5e6c84;color:#fff}.post-footer .pull-left{margin-right:16px}.post-footer .pull-right{margin-left:16px}.post-footer p{margin-bottom:0;padding-bottom:6px;padding-top:7px}.post-attachments{border-top:1px solid #ebecf0;padding:6px 16px}.post-attachments abbr{white-space:nowrap}.post-attachments .attachment-name{word-wrap:break-word}.post-attachments .row>div{margin:10px 0}.post-attachments .post-attachment-preview{float:left;height:40px;text-align:center;width:40px}.post-attachments .post-attachment{margin-left:52px}.post-attachments .post-thumbnail{background-position:50%;background-size:cover;border-radius:3px;display:block;height:40px;width:40px}.post-attachments .material-icon{font-size:28px;height:28px;line-height:28px;position:relative;top:5px;width:28px}.post-attachments .material-icon:active,.post-attachments .material-icon:focus,.post-attachments .material-icon:hover,.post-attachments .material-icon:link,.post-attachments .material-icon:visited{color:#172b4d;text-decoration:none}.post-attachments .post-attachment-description{color:#7a869a;font-size:12px;margin:0;padding:0}.post-feed .post-side{padding-right:0;width:100%}.post-feed .post-side .media-heading{font-size:14px;margin:0}.post-feed .post-side .user-title{font-size:12px;margin:0}.post-feed .post-side .btn{display:inline-block}.post-feed .post-side img{height:36px;margin-top:0;width:36px}.post-feed .post-heading{height:auto;margin:10px 0}.post-feed .post-heading .btn{word-wrap:break-word;margin-right:16px;max-width:100%;text-align:left;white-space:normal}.posts-list .event{color:#7a869a;margin-bottom:20px}.posts-list .event .event-body{align-items:flex-start;display:flex}.posts-list .event-label{margin-left:51px}.posts-list .event-label .label-unread{background-color:#36b37e;color:#fff}.posts-list .event .event-icon{padding-right:15px}.posts-list .event .event-icon .event-icon-bg{align-items:center;background:#ebecf0;border-radius:4px;color:#5e6c84;display:flex;height:36px;justify-content:center;width:36px}.posts-list .event .event-icon .material-icon{align-items:center;display:flex;font-size:28px;justify-content:center}.posts-list .event .event-content{flex:1 0}.posts-list .event .event-message{font-size:18px;margin-bottom:5px}.posts-list .event .event-info{font-size:12px;margin:0}.posts-list .event .event-info li{margin-right:12px}.posts-list .event .event-info li:last-child{margin-right:0}.posts-list .event .event-controls .btn-link{border:0;font-size:12px;margin:0 12px 0 0;padding:0}.posts-list .event .event-controls .btn-link:last-child{margin-right:0}@media screen and (max-width:767px){.posts-list .event .event-info{margin-top:5px}.posts-list .event .event-controls{clear:both;margin-top:5px}.posts-list .event .event-controls .btn-link{font-size:14px;margin-right:20px}.posts-list .event .event-controls .btn-link:last-child{margin-right:0}}@media screen and (min-width:992px){.posts-list .event .event-icon{display:flex;flex-shrink:0;justify-content:flex-end;width:275px}.event-content{flex:1 0}.posts-list .event-label{margin-left:275px}}.post-changelog-diff{margin:0;padding:0}.post-changelog-diff .list-unstyled{margin:5px 0;padding:0}.post-changelog-diff .diff-item{padding:5px 10px}.post-changelog-diff .diff-item-sub{color:#ff5630}.post-changelog-diff .diff-item-add{color:#36b37e}.post-changelog-toolbar .row{margin-left:-12px;margin-right:-12px}@media screen and (max-width:767px){.page-error .message-panel,.page-message .message-panel,.post-changelog-toolbar .post-change-label{text-align:center}.page-error .message-icon,.page-message .message-icon{font-size:80px;margin:30px}}@media screen and (min-width:768px){.page-error .message-panel,.page-message .message-panel{margin:60px auto;max-width:779.35px;overflow:auto}.page-error .message-icon,.page-message .message-icon{float:left}.page-error .message-icon .material-icon,.page-message .message-icon .material-icon{font-size:80px}.page-error .message-body,.page-message .message-body{font-size:18px;margin-left:100px;margin-top:16px}.page-error .message-body p.lead,.page-message .message-body p.lead{font-size:36px}}.threads-list{margin-bottom:20px}.threads-list-item{align-items:center;display:flex}.threads-list-item img{height:32px;width:32px}.threads-list-item-top-row{flex:1}.threads-list-item-bottom-row,.threads-list-item-top-row{align-items:center;display:flex;justify-content:center}.threads-list-item-col-icon{padding-right:15px}.threads-list-icon{align-items:center;border-radius:3px;display:flex;font-size:16px;height:32px;justify-content:center;line-height:16px;width:32px}.threads-list-icon:active,.threads-list-icon:focus,.threads-list-icon:hover,.threads-list-icon:link,.threads-list-icon:visited{background-color:#ebecf0;color:#7a869a;text-decoration:none}.threads-list-icon-new:active,.threads-list-icon-new:focus,.threads-list-icon-new:hover,.threads-list-icon-new:link,.threads-list-icon-new:visited{background-color:#0052cc;color:#fff}.threads-list-item-col-title{flex:1}a.threads-list-item-title:active,a.threads-list-item-title:focus,a.threads-list-item-title:hover,a.threads-list-item-title:link,a.threads-list-item-title:visited{color:#172b4d;font-size:16px;overflow-wrap:break-word}a.threads-list-item-title-sm{font-size:18px}a.threads-list-item-title-sm:active,a.threads-list-item-title-sm:focus,a.threads-list-item-title-sm:hover,a.threads-list-item-title-sm:link,a.threads-list-item-title-sm:visited{color:#5e6c84;overflow-wrap:break-word}a.threads-list-item-title-new:active,a.threads-list-item-title-new:focus,a.threads-list-item-title-new:hover,a.threads-list-item-title-new:link,a.threads-list-item-title-new:visited{color:#172b4d}.threads-list-item-col-flags{padding-left:15px}.threads-list-item .thread-flags{opacity:.8}.threads-list-item:focus .thread-flags,.threads-list-item:hover .thread-flags{opacity:1}.threads-list-item-col-category{padding-left:15px;white-space:nowrap}.threads-list-category-label{border-radius:3px;font-size:12px;font-weight:700;padding:3px 6px}.threads-list-category-label,.threads-list-category-label:active,.threads-list-category-label:focus,.threads-list-category-label:hover,.threads-list-category-label:link,.threads-list-category-label:visited{background:#ebecf0;color:#344563;text-decoration:none}.threads-list-category-label.threads-list-category-label-color,.threads-list-category-label.threads-list-category-label-color:active,.threads-list-category-label.threads-list-category-label-color:focus,.threads-list-category-label.threads-list-category-label-color:hover,.threads-list-category-label.threads-list-category-label-color:link,.threads-list-category-label.threads-list-category-label-color:visited{background:var(--label-color);color:#fff}.threads-list-item-parent-category{border-radius:3px 0 0 3px;margin-right:2px}.threads-list-item-parent-category+.threads-list-category-label{border-radius:0 3px 3px 0}.threads-list-item-col-replies{padding-left:15px;width:80px}.threads-list-item-col-last-poster{padding-left:15px}.threads-list-item-col-last-poster img{border-radius:3px}.threads-list-item-col-last-activity{overflow:hidden;padding-left:15px;text-overflow:ellipsis;white-space:nowrap;width:120px}.threads-list-item-col-last-activity a:active,.threads-list-item-col-last-activity a:focus,.threads-list-item-col-last-activity a:hover,.threads-list-item-col-last-activity a:link,.threads-list-item-col-last-activity a:visited{color:#344563;font-size:16px}.threads-list-item-col-checkbox,.threads-list-item-col-subscription{padding-left:15px}.threads-list-item-col-checkbox-sm,.threads-list-item-title-sm{display:none}@media screen and (max-width:767px){.threads-list{margin-left:-15px;margin-right:-15px}.threads-list .list-group,.threads-list .list-group-item{border-left:0;border-radius:0;border-right:0}.threads-list-item-title{display:none}.threads-list-item-title-sm{display:inline-block}.threads-list-item-col-icon{display:none}}@media screen and (max-width:991px){.threads-list-item{display:block}.threads-list-item img{height:20px;width:20px}.threads-list-item-top-row{align-items:start;margin-bottom:7.5px}.threads-list-item-bottom-row{flex:0;justify-content:end}.threads-list-item-bottom-row>div{padding:0 0 0 15px;width:auto}.threads-list-item-col-checkbox,.threads-list-item-col-subscription{display:none}.threads-list-item-col-checkbox-sm{display:block;padding-left:15px}.threads-list-item-col-checkbox-sm .btn-icon{padding:4px}.threads-list-item-col-checkbox-sm .btn-icon .material-icon{font-size:16px}}.threads-list-item-is-busy .btn-icon{animation:busy .75s linear infinite;opacity:.8}@keyframes busy{50%{opacity:.5}}.threads-list-update-prompt{padding:0}.threads-list-update-prompt-btn{background:#d6e7ff;border:none;border-radius:3px 3px 0 0;color:#003d99;padding:10px 16px}.threads-list-update-prompt-btn:focus,.threads-list-update-prompt-btn:hover{background:#e6f0ff;color:#0052cc}.threads-list-update-prompt-btn:active{background:#b3d1ff;color:#06f}.active-posters li{display:block;overflow:auto}.active-posters .rank-user-avatar{float:left}@media screen and (max-width:991px){.active-posters .rank-user-avatar{height:42px}.active-posters .rank-user-avatar img{height:36px;position:relative;top:3px;width:36px}}.active-posters .rank-user{float:left;margin-top:3px}@media screen and (max-width:991px){.active-posters .rank-user{margin-left:13.2px;width:40%}}@media screen and (max-width:767px){.active-posters .rank-user{float:none;margin-left:50px;width:auto}}@media screen and (min-width:992px){.active-posters .rank-user{margin-left:16px;width:25%}.active-posters .rank-user .user-name{font-size:18px}}.active-posters .user-details{font-family:Sans-Serif;overflow:auto}.active-posters .user-details .rank-name,.active-posters .user-details .user-status,.active-posters .user-details .user-title{display:block;float:left;font-size:12px;margin-right:3px}@media screen and (min-width:992px){.active-posters .user-details .rank-name,.active-posters .user-details .user-status,.active-posters .user-details .user-title{margin-right:8px}}.active-posters .user-details .user-title{margin-right:0}@media screen and (min-width:992px){.active-posters .user-details{overflow:visible}.active-posters .user-details .rank-name,.active-posters .user-details .user-title{height:14px;overflow:hidden;position:relative;top:1px;vertical-align:baseline}}@media screen and (max-width:767px){.active-posters .user-details{margin-top:3px}.active-posters .user-details .rank-name,.active-posters .user-details .user-title{font-weight:400}}.active-posters .user-status{overflow:auto;position:relative;top:1px}.active-posters .user-status span{display:block;float:left}@media screen and (min-width:992px){.active-posters .user-status{height:14px;overflow:hidden}}.active-posters .user-status .status-icon{position:relative}@media screen and (max-width:991px){.active-posters .user-status .status-icon{font-size:12px;height:12px;line-height:12px;top:0;width:12px}}@media screen and (min-width:992px){.active-posters .user-status .status-icon{font-size:13px;height:13px;line-height:13px;margin-right:3px;top:1px;width:13px}}.active-posters .rank-name .ui-preview-text,.active-posters .status-label.ui-preview-text,.active-posters .user-title .ui-preview-text{font-size:11px;height:11px;line-height:11px;position:relative;top:2px}.active-posters .rank-name .ui-preview-text,.active-posters .user-title .ui-preview-text{position:static}.active-posters .rank-position small,.active-posters .rank-position strong,.active-posters .rank-posts-counted small,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total small,.active-posters .rank-posts-total strong{display:block}@media screen and (max-width:991px){.active-posters .rank-position,.active-posters .rank-posts-counted,.active-posters .rank-posts-total{overflow:auto}.active-posters .rank-position small,.active-posters .rank-position strong,.active-posters .rank-posts-counted small,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total small,.active-posters .rank-posts-total strong{float:left;font-size:10.5px}.active-posters .rank-position strong,.active-posters .rank-posts-counted strong,.active-posters .rank-posts-total strong{margin-right:3px;min-width:30px;text-align:right}.active-posters .rank-position .ui-preview-text,.active-posters .rank-posts-counted .ui-preview-text,.active-posters .rank-posts-total .ui-preview-text{font-size:8px;height:8px;line-height:8px;position:relative;top:-1px}}@media screen and (min-width:992px){.active-posters .rank-position,.active-posters .rank-posts-counted,.active-posters .rank-posts-total{float:left;font-size:18px;margin-top:3px;text-align:center;width:23%}.active-posters .rank-position small,.active-posters .rank-posts-counted small,.active-posters .rank-posts-total small{font-size:12px;font-weight:400}}.user-compact-stats .rank-position small,.user-compact-stats .rank-position strong,.user-compact-stats .rank-posts-counted small,.user-compact-stats .rank-posts-counted strong{display:inline-block;float:none}.user-compact-stats .rank-position strong,.user-compact-stats .rank-posts-counted strong{min-width:auto}.user-compact-stats .rank-position small,.user-compact-stats .rank-posts-counted small{margin-right:20px}@media screen and (min-width:768px) and (max-width:991px){.active-posters .rank-position{margin-top:6px}.active-posters .rank-posts-total{display:none}}.profile-page-header-avatar{margin:20px 0;text-align:center}.profile-page-header-avatar .user-avatar{border-radius:4px}.profile-data-list{display:block;font-size:12px;margin:0 -12px;padding:0}.profile-data-list li{display:inline-block;list-style:none;padding:5px 12px}.profile-data-list .status-icon{bottom:1px;margin-right:3px;position:relative}.profile-data-list .user-account-disabled{color:#ff5630;font-weight:700}@media screen and (min-width:768px){.profile-page-header{align-items:flex-end;display:flex}.profile-page-header-avatar{margin:0 30px 0 0}}@media screen and (min-width:992px){.profile-page-header-avatar{margin-top:-54px;position:relative;top:54px}.profile-page-header-details{padding-left:158px}.profile-data-list{font-size:14px}.username-history li{display:block;overflow:auto}}.username-history .change-avatar{float:left}.username-history .change-avatar a,.username-history .change-avatar span{margin-right:10px}.username-history .change-avatar a img,.username-history .change-avatar span img{height:42px;width:42px}@media screen and (min-width:992px){.username-history .change-avatar a img,.username-history .change-avatar span img{bottom:1px;height:18px;position:relative;width:18px}.username-history .change-author{float:left;width:30%}}.username-history .change{min-height:20px;overflow:auto}.username-history .change span{display:block;float:left}.username-history .change .material-icon{margin:0 7px;position:relative;top:4px}@media screen and (min-width:992px){.username-history .change{float:left;width:40%}.username-history .change-date{float:left;width:20%}}.search-footer p{color:#5e6c84;font-size:12px;margin-top:20px;text-align:center}@media screen and (min-width:768px){.page-search-form{padding-top:40px}}@media screen and (min-width:992px){.page-search-form{padding-bottom:40px}.page-search-form h1{position:relative;top:5px}.page-search-form .form-group{margin-bottom:0}}.hljs{background:#eee;color:#000;display:block;overflow-x:auto;padding:.5em}.hljs-addition,.hljs-attribute,.hljs-emphasis,.hljs-link{color:#070}.hljs-emphasis{font-style:italic}.hljs-deletion,.hljs-string,.hljs-strong{color:#d14}.hljs-strong{font-weight:700}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-section,.hljs-title{color:#900}.hljs-class .hljs-title,.hljs-type{color:#458}.hljs-template-variable,.hljs-variable{color:#369}.hljs-bullet{color:#970}.hljs-meta{color:#34b}.hljs-code,.hljs-keyword,.hljs-literal,.hljs-number,.hljs-selector-tag{color:#099}.hljs-regexp{background-color:#fff0ff;color:#808}.hljs-symbol{color:#990073}.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-tag{color:#070}.atwho-view{background:#fff;border:1px solid #ddd;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.1);color:#000;display:none;left:0;margin-top:18px;min-width:120px;position:absolute;top:0;z-index:11110!important}.atwho-view .atwho-header{border-bottom:1px solid #eaeff1;color:#6f8092;cursor:pointer;font-size:11px;font-weight:700;margin:5px;padding:5px}.atwho-view .atwho-header .small{color:#6f8092;float:right;font-size:12px;font-weight:400;margin-right:-5px;padding-top:2px}.atwho-view .atwho-header:hover{cursor:default}.atwho-view .cur{background:#36f;color:#fff}.atwho-view .cur small{color:#fff}.atwho-view strong{color:#36f}.atwho-view .cur strong{color:#fff;font:700}.atwho-view ul{list-style:none;margin:auto;max-height:200px;overflow-y:auto;padding:0}.atwho-view ul li{border-bottom:1px solid #ddd;cursor:pointer;display:block;padding:5px 10px}.atwho-view small{color:#777;font-size:smaller;font-weight:400}abbr{outline:none;text-decoration:none}.shadow-2dp{box-shadow:0 2px 2px 0 rgba(0,0,0,.04),0 3px 1px -2px rgba(0,0,0,.06),0 1px 5px 0 rgba(0,0,0,.12)}.shadow-3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.04),0 3px 3px -2px rgba(0,0,0,.06),0 1px 8px 0 rgba(0,0,0,.12)}.shadow-4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.04),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-6dp{box-shadow:0 6px 10px 0 rgba(0,0,0,.04),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.06)}.shadow-8dp{box-shadow:0 8px 10px 1px rgba(0,0,0,.04),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.06)}.shadow-16dp{box-shadow:0 16px 24px 2px rgba(0,0,0,.04),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.06)}.shadow-24dp{box-shadow:0 9px 46px 8px rgba(0,0,0,.04),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.06)}.btn-default,.btn-default.disabled,.btn-default.disabled:active,.btn-default.disabled:hover,.btn-default:disabled,.btn-default:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.disabled,.btn-default.disabled:active,.btn-default.disabled:hover,.btn-default:disabled,.btn-default:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-default:focus,.btn-default:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default:active,.btn-default:active:focus,.dropdown.open .dropdown-toggle .btn-default,.dropdown.open .dropdown-toggle .btn-default:active:focus,.dropdown.open .dropdown-toggle .btn-default:focus,.dropdown.open .dropdown-toggle .btn-default:hover{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-loading,.btn-default.btn-loading:active,.btn-default.btn-loading:active:focus,.btn-default.btn-loading:disabled,.btn-default.btn-loading:disabled:hover,.btn-default.btn-loading:focus,.btn-default.btn-loading:hover{color:transparent}.btn-primary,.btn-primary.disabled,.btn-primary.disabled:active,.btn-primary.disabled:hover,.btn-primary:disabled,.btn-primary:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.disabled,.btn-primary.disabled:active,.btn-primary.disabled:hover,.btn-primary:disabled,.btn-primary:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-primary:focus,.btn-primary:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary:active,.btn-primary:active:focus,.dropdown.open .dropdown-toggle .btn-primary,.dropdown.open .dropdown-toggle .btn-primary:active:focus,.dropdown.open .dropdown-toggle .btn-primary:focus,.dropdown.open .dropdown-toggle .btn-primary:hover{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-loading,.btn-primary.btn-loading:active,.btn-primary.btn-loading:active:focus,.btn-primary.btn-loading:disabled,.btn-primary.btn-loading:disabled:hover,.btn-primary.btn-loading:focus,.btn-primary.btn-loading:hover{color:transparent}.btn-success,.btn-success.disabled,.btn-success.disabled:active,.btn-success.disabled:hover,.btn-success:disabled,.btn-success:disabled:hover{background:#00c853;border:1px solid #00c853;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success.disabled,.btn-success.disabled:active,.btn-success.disabled:hover,.btn-success:disabled,.btn-success:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-success:focus,.btn-success:hover{background:#00af48;border:1px solid #00af48;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success:active,.btn-success:active:focus,.dropdown.open .dropdown-toggle .btn-success,.dropdown.open .dropdown-toggle .btn-success:active:focus,.dropdown.open .dropdown-toggle .btn-success:focus,.dropdown.open .dropdown-toggle .btn-success:hover{background:#007c33;border:1px solid #007c33;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-success.btn-loading,.btn-success.btn-loading:active,.btn-success.btn-loading:active:focus,.btn-success.btn-loading:disabled,.btn-success.btn-loading:disabled:hover,.btn-success.btn-loading:focus,.btn-success.btn-loading:hover{color:transparent}.btn-danger,.btn-danger.disabled,.btn-danger.disabled:active,.btn-danger.disabled:hover,.btn-danger:disabled,.btn-danger:disabled:hover{background:#ef5350;border:1px solid #ef5350;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger.disabled,.btn-danger.disabled:active,.btn-danger.disabled:hover,.btn-danger:disabled,.btn-danger:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-danger:focus,.btn-danger:hover{background:#ff8a80;border:1px solid #ff8a80;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger:active,.btn-danger:active:focus,.dropdown.open .dropdown-toggle .btn-danger,.dropdown.open .dropdown-toggle .btn-danger:active:focus,.dropdown.open .dropdown-toggle .btn-danger:focus,.dropdown.open .dropdown-toggle .btn-danger:hover{background:#d32f2f;border:1px solid #d32f2f;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-danger.btn-loading,.btn-danger.btn-loading:active,.btn-danger.btn-loading:active:focus,.btn-danger.btn-loading:disabled,.btn-danger.btn-loading:disabled:hover,.btn-danger.btn-loading:focus,.btn-danger.btn-loading:hover{color:transparent}.btn-default.btn-outline,.btn-default.btn-outline.disabled,.btn-default.btn-outline.disabled:active,.btn-default.btn-outline.disabled:hover,.btn-default.btn-outline:disabled,.btn-default.btn-outline:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline.disabled,.btn-default.btn-outline.disabled:active,.btn-default.btn-outline.disabled:hover,.btn-default.btn-outline:disabled,.btn-default.btn-outline:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-default.btn-outline:focus,.btn-default.btn-outline:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline:active,.btn-default.btn-outline:active:focus,.dropdown.open .btn-default.btn-outline,.dropdown.open .btn-default.btn-outline:active:focus,.dropdown.open .btn-default.btn-outline:focus,.dropdown.open .btn-default.btn-outline:hover{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.btn-default.btn-outline.btn-loading,.btn-default.btn-outline.btn-loading:active,.btn-default.btn-outline.btn-loading:active:focus,.btn-default.btn-outline.btn-loading:disabled,.btn-default.btn-outline.btn-loading:disabled:hover,.btn-default.btn-outline.btn-loading:focus,.btn-default.btn-outline.btn-loading:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.btn-primary.btn-outline,.btn-primary.btn-outline.disabled,.btn-primary.btn-outline.disabled:active,.btn-primary.btn-outline.disabled:hover,.btn-primary.btn-outline:disabled,.btn-primary.btn-outline:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline.disabled,.btn-primary.btn-outline.disabled:active,.btn-primary.btn-outline.disabled:hover,.btn-primary.btn-outline:disabled,.btn-primary.btn-outline:disabled:hover{filter:alpha(opacity=25);opacity:.25}.btn-primary.btn-outline:focus,.btn-primary.btn-outline:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline:active,.btn-primary.btn-outline:active:focus,.dropdown.open .btn-primary.btn-outline,.dropdown.open .btn-primary.btn-outline:active:focus,.dropdown.open .btn-primary.btn-outline:focus,.dropdown.open .btn-primary.btn-outline:hover{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.btn-primary.btn-outline.btn-loading,.btn-primary.btn-outline.btn-loading:active,.btn-primary.btn-outline.btn-loading:active:focus,.btn-primary.btn-outline.btn-loading:disabled,.btn-primary.btn-outline.btn-loading:disabled:hover,.btn-primary.btn-outline.btn-loading:focus,.btn-primary.btn-outline.btn-loading:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.navbar-misago .btn-sign-in{border-radius:4px}.navbar-misago .btn-sign-in,.navbar-misago .btn-sign-in.disabled,.navbar-misago .btn-sign-in.disabled:active,.navbar-misago .btn-sign-in.disabled:hover,.navbar-misago .btn-sign-in:disabled,.navbar-misago .btn-sign-in:disabled:hover{background:transparent;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#8993a4}.navbar-misago .btn-sign-in.disabled,.navbar-misago .btn-sign-in.disabled:active,.navbar-misago .btn-sign-in.disabled:hover,.navbar-misago .btn-sign-in:disabled,.navbar-misago .btn-sign-in:disabled:hover{filter:alpha(opacity=25);opacity:.25}.navbar-misago .btn-sign-in:focus,.navbar-misago .btn-sign-in:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.dropdown.open .navbar-misago .btn-sign-in,.dropdown.open .navbar-misago .btn-sign-in:active:focus,.dropdown.open .navbar-misago .btn-sign-in:focus,.dropdown.open .navbar-misago .btn-sign-in:hover,.navbar-misago .btn-sign-in:active,.navbar-misago .btn-sign-in:active:focus{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.navbar-misago .btn-sign-in.btn-loading,.navbar-misago .btn-sign-in.btn-loading:active,.navbar-misago .btn-sign-in.btn-loading:active:focus,.navbar-misago .btn-sign-in.btn-loading:disabled,.navbar-misago .btn-sign-in.btn-loading:disabled:hover,.navbar-misago .btn-sign-in.btn-loading:focus,.navbar-misago .btn-sign-in.btn-loading:hover{background:transparent;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.navbar-misago .btn-register{border-radius:4px}.navbar-misago .btn-register,.navbar-misago .btn-register.disabled,.navbar-misago .btn-register.disabled:active,.navbar-misago .btn-register.disabled:hover,.navbar-misago .btn-register:disabled,.navbar-misago .btn-register:disabled:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:#fff}.navbar-misago .btn-register.disabled,.navbar-misago .btn-register.disabled:active,.navbar-misago .btn-register.disabled:hover,.navbar-misago .btn-register:disabled,.navbar-misago .btn-register:disabled:hover{filter:alpha(opacity=25);opacity:.25}.navbar-misago .btn-register:focus,.navbar-misago .btn-register:hover{background:#5243aa;border:1px solid #5243aa;-webkit-box-shadow:none;box-shadow:none;color:#fff}.dropdown.open .navbar-misago .btn-register,.dropdown.open .navbar-misago .btn-register:active:focus,.dropdown.open .navbar-misago .btn-register:focus,.dropdown.open .navbar-misago .btn-register:hover,.navbar-misago .btn-register:active,.navbar-misago .btn-register:active:focus{background:#403294;border:1px solid #403294;-webkit-box-shadow:none;box-shadow:none;color:#fff}.navbar-misago .btn-register.btn-loading,.navbar-misago .btn-register.btn-loading:active,.navbar-misago .btn-register.btn-loading:active:focus,.navbar-misago .btn-register.btn-loading:disabled,.navbar-misago .btn-register.btn-loading:disabled:hover,.navbar-misago .btn-register.btn-loading:focus,.navbar-misago .btn-register.btn-loading:hover{background:#6554c0;border:1px solid #6554c0;-webkit-box-shadow:none;box-shadow:none;color:transparent}.btn-social-battlenet,.btn-social-battlenet-oauth2,.btn-social-battlenet-oauth2:disabled,.btn-social-battlenet-oauth2:disabled:hover,.btn-social-battlenet:disabled,.btn-social-battlenet:disabled:hover{color:#0e86ca;font-weight:700}.btn-social-bungie,.btn-social-bungie:disabled,.btn-social-bungie:disabled:hover{color:#0096db;font-weight:700}.btn-social-facebook,.btn-social-facebook-app,.btn-social-facebook-app:disabled,.btn-social-facebook-app:disabled:hover,.btn-social-facebook:disabled,.btn-social-facebook:disabled:hover{color:#3b5998;font-weight:700}.btn-social-github,.btn-social-github-enterprise,.btn-social-github-enterprise-org,.btn-social-github-enterprise-org:disabled,.btn-social-github-enterprise-org:disabled:hover,.btn-social-github-enterprise-team,.btn-social-github-enterprise-team:disabled,.btn-social-github-enterprise-team:disabled:hover,.btn-social-github-enterprise:disabled,.btn-social-github-enterprise:disabled:hover,.btn-social-github-team,.btn-social-github-team:disabled,.btn-social-github-team:disabled:hover,.btn-social-github:disabled,.btn-social-github:disabled:hover{color:#000;font-weight:700}.btn-social-gitlab,.btn-social-gitlab:disabled,.btn-social-gitlab:disabled:hover{color:#fc6d26;font-weight:700}.btn-social-google,.btn-social-google-oauth,.btn-social-google-oauth2,.btn-social-google-oauth2:disabled,.btn-social-google-oauth2:disabled:hover,.btn-social-google-oauth:disabled,.btn-social-google-oauth:disabled:hover,.btn-social-google-openidconnect,.btn-social-google-openidconnect:disabled,.btn-social-google-openidconnect:disabled:hover,.btn-social-google-plus,.btn-social-google-plus:disabled,.btn-social-google-plus:disabled:hover,.btn-social-google:disabled,.btn-social-google:disabled:hover{color:#dd4b39;font-weight:700}.btn-social-linkedin,.btn-social-linkedin:disabled,.btn-social-linkedin:disabled:hover{color:#0077b5;font-weight:700}.btn-social-steam,.btn-social-steam:disabled,.btn-social-steam:disabled:hover{color:#5c7e10;font-weight:700}.btn-social-twitter,.btn-social-twitter:disabled,.btn-social-twitter:disabled:hover{color:#1da1f2;font-weight:700}.form-social-auth .row{margin-bottom:-6px;margin-top:-6px}.form-social-auth .btn{margin:6px 0}input.form-control,textarea.form-control{border-color:#ced0da;box-shadow:inset 0 0 0 1px #ced0da}input.form-control:focus,textarea.form-control:focus{border-color:#66afe9;box-shadow:inset 0 0 0 1px #66afe9}.has-error input.form-control{border-color:#ff5630;box-shadow:inset 0 0 0 1px #ff5630}.has-error input.form-control:focus{border-color:#ffa996;box-shadow:inset 0 0 0 1px #ffa996}.has-success input.form-control{border-color:#36b37e;box-shadow:inset 0 0 0 1px #36b37e}.has-success input.form-control:focus{border-color:#79d6af;box-shadow:inset 0 0 0 1px #79d6af}.password-strength{margin-top:10px}.password-strength .text-small{color:#3462af;font-size:12px;margin-top:4px}.password-strength .progress{margin:0}.auth-message{background:#091e42;box-shadow:0 8px 10px 1px rgba(0,0,0,.04),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.06);padding:80px 0}.auth-message p{color:#fff}.auth-message .btn{background:#f4f5f7;border-color:#f4f5f7;color:#172b4d}.auth-message .btn:focus,.auth-message .btn:hover{background:#dfe1e6;border-color:#dfe1e6;color:#172b4d}.auth-message .btn:active{background:#b3bac5;border-color:#b3bac5;color:#172b4d}.dropdown-menu{border:none;box-shadow:0 4px 5px 0 rgba(0,0,0,.04),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.06)}.user-dropdown .dropdown-header strong{color:#172b4d;display:block;font-weight:700}.user-dropdown .dropdown-header .user-stats{font-size:12px;margin-top:10px}.user-dropdown .dropdown-header .user-stats .material-icon{bottom:1px;font-size:14px;height:14px;margin-right:3px;position:relative;width:14px}.user-dropdown .guest-preview{padding-bottom:10px}.user-dropdown .badge{background-color:#ff5630}.user-dropdown .btn-link:active .badge,.user-dropdown .btn-link:focus .badge,.user-dropdown .btn-link:hover .badge,.user-dropdown a:active .badge,.user-dropdown a:focus .badge,.user-dropdown a:hover .badge{background-color:#fff;color:#ff5630}.mobile-dropdown.open{margin:0}.navbar-misago{border-bottom:none;box-shadow:0 0 3px #c1c7d0}.navbar-misago .user-avatar{background:#fff;border-radius:3px}.navbar-misago .brand-link img{border-radius:3px}.dropdown-search-results{border-radius:0 0 4px 4px}.dropdown-search-message{color:#7a869a}.dropdown-search-loader,.dropdown-search-message{border-top:1px solid #ebecf0;padding:10px 16px}.dropdown-search-header{border-top:1px solid #ebecf0;color:#7a869a;font-weight:700;padding:8px 20px}.dropdown-search-thread small,.dropdown-search-user small{color:#7a869a}.dropdown-search-thread .dropdown-search-post-content{max-height:47px;overflow:hidden;white-space:normal}.dropdown-search-thread .dropdown-search-post-footer{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-search-footer{padding-bottom:5px}.dropdown-search-footer:last-child{padding-bottom:0}.dropdown-menu>li.dropdown-search-footer>a{font-size:small}.misago-footer{margin-top:40px}.misago-footer .footer-content{border-top:1px solid #ebecf0;color:#a5adba;padding-top:20px}@media screen and (max-width:767px){.misago-footer .footer-content{text-align:center}.misago-footer .footer-content .site-footnote{clear:both;margin-bottom:15px}}.misago-footer .footer-content a,.misago-footer .footer-content a:link,.misago-footer .footer-content a:visited{color:#a5adba}.misago-footer .footer-content a:focus,.misago-footer .footer-content a:hover{color:#7a8699}.misago-footer .footer-content .misago-branding,.misago-footer .footer-content .misago-branding:link,.misago-footer .footer-content .misago-branding:visited{color:#a5adba}.misago-footer .footer-content .misago-branding:focus,.misago-footer .footer-content .misago-branding:hover{color:#7a8699}.list-group{border-radius:3px}.list-group .list-group-item{border-left-color:#ebecf0;border-right-color:#ebecf0}.list-group .list-group-item:first-child{border-top-color:#ebecf0}.list-group .list-group-item:last-child{border-bottom-color:#ebecf0}.list-group-item.empty-message{padding-bottom:20px;padding-top:20px;text-align:center}.list-group-item.empty-message p{margin:10px 0}.nav-side{-webkit-box-shadow:none;box-shadow:none}.nav-side>.list-group-item{border-left:none;border-right:none;margin-bottom:1px}.nav-side>.list-group-item:first-child{border-top:none}.nav-side>.list-group-item:last-child{border-bottom:none}.nav-side>.list-group-item,.nav-side>.list-group-item:link,.nav-side>.list-group-item:visited{background:#f4f5f7;border:none;color:#172b4d}.nav-side>.list-group-item:active,.nav-side>.list-group-item:focus,.nav-side>.list-group-item:hover{background:#ebecf0;color:#172b4d}.nav-side>.list-group-item.active,.nav-side>.list-group-item.active:active,.nav-side>.list-group-item.active:focus,.nav-side>.list-group-item.active:hover,.nav-side>.list-group-item.active:link,.nav-side>.list-group-item.active:visited{background:#091e42;color:#fff;font-weight:700}.nav-side>.list-group-item.active .badge,.nav-side>.list-group-item.active:active .badge,.nav-side>.list-group-item.active:focus .badge,.nav-side>.list-group-item.active:hover .badge,.nav-side>.list-group-item.active:link .badge,.nav-side>.list-group-item.active:visited .badge{background:#f4f5f7;color:#172b4d}.username-history .user-avatar{border-radius:4px}.panel{border:none;border-radius:4px}.panel .panel-footer,.panel .panel-heading{background:#fff}.panel .panel-title{color:#5e6c84}.panel .form-group+.form-group{margin-top:20px}.panel .panel-body>.form-group:first-child{margin-top:10px}.panel fieldset{margin-top:20px}.panel fieldset:first-child{margin-top:0}.panel fieldset legend{border:none;color:#5e6c84;font-weight:300}.panel-message-body .message-icon{color:#9575cd}.panel-form{border:1px solid #ebecf0;box-shadow:none}.panel-form .panel-footer,.panel-form .panel-heading{border-color:#ebecf0}.poll-form .panel{margin:0}.help-block,.help-block .text-small{color:#7a869a}.category-main .media-left .read-status{background:#ebecf0;border-radius:4px;padding:5px 8px}.category-main .media-left .material-icon{color:#5e6c84;font-size:14px;height:14px;line-height:14px;width:14px}.category-main .media-left .read-status.item-new{background-color:#0052cc}.category-main .media-left .read-status.item-new .material-icon{color:#fff}@media screen and (min-width:768px){.category-main .media-left{padding:5px 0}}.category-main .media-body{padding-left:12px}@media screen and (max-width:767px){.category-main .media-body{padding-left:3.33333333px}}.list-group-category-no-description .category-main .media-heading{margin-top:10px}@media screen and (max-width:767px){.list-group-category-no-description .category-main .media-heading{margin-top:5px}}.category-main .media-heading a,.category-main .media-heading a:link,.category-main .media-heading a:visited{color:#344563}.category-main .media-heading a:active,.category-main .media-heading a:focus,.category-main .media-heading a:hover{color:#172b4d}.category-stats{color:#5e6c84}.category-main .category-description p{font-size:12px}.category-main .category-description p:last-child{margin-bottom:0}.category-last-thread img{background-color:#fff;border-radius:4px}.category-last-thread .media-heading{margin-bottom:2px}@media screen and (max-width:767px){.category-last-thread .media-heading{margin-top:10px}}.category-last-thread .list-inline{color:#7a869a;font-size:12px}.category-last-thread .list-inline a,.category-last-thread .list-inline a:link,.category-last-thread .list-inline a:visited{color:#7a869a}.category-last-thread .list-inline .item-title,.category-last-thread .list-inline .item-title:link,.category-last-thread .list-inline .item-title:visited,.category-last-thread .list-inline a:active,.category-last-thread .list-inline a:focus,.category-last-thread .list-inline a:hover{color:#344563}.category-last-thread .list-inline .item-title:active,.category-last-thread .list-inline .item-title:focus,.category-last-thread .list-inline .item-title:hover{color:#172b4d}.category-thread-message{color:#7a869a}.category-thread-message .material-icon{margin-right:3px;padding:6px 0}@media screen and (max-width:767px){.category-thread-message{font-size:12px;padding-top:15px}.category-thread-message .material-icon{padding:3px 0}}.panel-participants{border:1px solid #ebecf0}.participant-card .btn-user{border:0!important}.participant-card .dropdown-header-owner{color:#0052cc}.participant-card .dropdown-header-owner .material-icon{font-size:14px;height:14px;line-height:14px;width:14px}.participant-card .dropdown-header-owner .icon-text{margin-left:4px;position:relative;top:2px}.panel-participants p{color:#7a869a}@media screen and (max-width:767px){.panel-participants p{margin-top:10px;text-align:center}}.panel-poll{border:1px solid #ebecf0}.panel-poll .poll-select-choices{margin-top:-10px}.panel-poll .poll-details{color:#7a869a;font-size:12px;margin-bottom:20px}.panel-poll .progress{margin-bottom:5px;margin-top:6.66666667px}.panel-poll .poll-chart{color:#7a869a;font-size:12px}.panel-poll .poll-options{margin-top:20px}#posting-placeholder{background-color:#fafbfc}.posting-message .material-icon{color:#9575cd}.posting-message .btn{margin-top:20px}.panel-post{background:#fff;border:1px solid #ddd}.post-side{color:#7a869a}.post-side .poster-avatar{border-radius:4px}.post-side .user-title,.post-side .user-title a,.post-side .user-title a:active,.post-side .user-title a:focus,.post-side .user-title a:hover,.post-side .user-title a:link,.post-side .user-title a:visited{color:#5e6c84}.post-heading .label-unread{background-color:#a0f;margin-right:16px}.post-heading .label-protected{background-color:transparent;color:#bdbdbd;margin-left:24px;position:relative;top:1px}.post-heading .label-protected .material-icon{font-size:16px;line-height:16px;margin-right:2px;position:relative;top:-1px}.post-heading>.btn-link{padding-left:0;padding-right:0}.post-heading>.btn-link,.post-heading>.btn-link:link,.post-heading>.btn-link:visited{color:#7a869a}.post-heading>.btn-link:active,.post-heading>.btn-link:focus,.post-heading>.btn-link:focus:active,.post-heading>.btn-link:hover{color:#172b4d;text-decoration:none}.post-heading .btn-see-edits{margin-left:24px}.post-status-message{border-radius:4px;margin-top:10px;padding:6px 12px}@media screen and (max-width:767px){.post-status-message{font-size:12px}.post-status-message .material-icon{margin-top:3px}.post-status-message p{margin-top:0}}.post-body:last-child{padding-bottom:10px}.post-attachments{background-color:#ebecf0;border:none;border-radius:4px;margin-bottom:30px}.post-attachments:last-child{margin-bottom:10px}@media screen and (max-width:767px){.post-attachments{border-radius:0;margin:0 -15px 20px}}.post-footer>.btn-link{padding-left:0;padding-right:0}.post-footer>.btn-link,.post-footer>.btn-link:link,.post-footer>.btn-link:visited{color:#7a869a}.post-footer>.btn-link:active,.post-footer>.btn-link:focus,.post-footer>.btn-link:focus:active,.post-footer>.btn-link:hover{color:#172b4d;text-decoration:none}.post-footer p{color:#7a869a;font-size:12px}.post-body-hidden,.post-body-invalid{padding-bottom:10px;padding-top:10px}.post-body-hidden .lead,.post-body-invalid .lead{margin-bottom:10px}.post-body-hidden .text-muted,.post-body-invalid .text-muted{font-size:12px;margin-bottom:0}.post-hidden{filter:alpha(opacity=75);opacity:.75}.post-feed .panel-body{padding-bottom:0}.post-feed .post-body{max-height:300px;overflow-y:hidden;padding-bottom:20px;padding-top:0;position:relative}.post-feed .post-body:after{bottom:0;box-shadow:0 0 16px 16px #fff;color:transparent;content:"-";display:block;height:0;position:absolute;width:100%}.posts-list .event .event-label{margin-bottom:5px}.posts-list .event .label-unread{background-color:#a0f;color:#fff}.posts-list .event-info .btn-link,.posts-list .event-info a,.posts-list .event-info a:link,.posts-list .event-info a:visited{color:#5e6c84}.posts-list .event-info .btn-link:active,.posts-list .event-info .btn-link:focus,.posts-list .event-info .btn-link:focus:active,.posts-list .event-info a:active,.posts-list .event-info a:focus,.posts-list .event-info a:focus:active{color:#172b4d}.posts-list .event-hidden{filter:alpha(opacity=33);opacity:.33}.user-card{background:#f4f5f7}.user-card-avatar img,.user-card-small-avatar img{border-radius:4px}.user-card-avatar{margin:20px 0}.user-card-avatar img{height:150px;width:150px}.user-card-username a,.user-card-username a:active,.user-card-username a:focus,.user-card-username a:hover,.user-card-username a:link,.user-card-username a:visited{color:#172b4d;font-size:18px;font-weight:700}.user-card-title a,.user-card-title a:link,.user-card-title a:visited,.user-card-title span{color:#5e6c84}.user-card-title a:active,.user-card-title a:focus,.user-card-title a:hover{color:#172b4d}@media screen and (min-width:768px){.user-card-stats{margin-top:20px}}.user-card-stats ul{margin:0}.user-card-stats li{color:#7a869a;display:inline-block;font-size:12px;margin-right:12px}@media screen and (min-width:768px){.user-card-stats li{margin:0 6px}}.user-card-stats li.user-stat-empty{display:none}@media screen and (min-width:768px){li.user-stat-divider{display:block;margin:0}}@media screen and (max-width:767px){li.user-stat-divider{display:none}}@media screen and (min-width:768px){.user-card-stats{min-height:60px}}@media screen and (max-width:767px){.user-card-left{padding-right:0}}.progress,.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none;height:8px}.misago-markup img{border-radius:4px}.misago-markup .quote-block,.misago-markup blockquote{background-color:#ffecb3;border-color:#b3e5fc;color:#3e2723;overflow:hidden}.misago-markup .quote-block .quote-heading,.misago-markup blockquote .quote-heading{background-color:#ffe082;border:none;color:#795548}.misago-markup .quote-block .quote-heading a,.misago-markup .quote-block .quote-heading a:link,.misago-markup .quote-block .quote-heading a:visited,.misago-markup blockquote .quote-heading a,.misago-markup blockquote .quote-heading a:link,.misago-markup blockquote .quote-heading a:visited{color:#5d4037}.misago-markup .quote-block .quote-heading a:active,.misago-markup .quote-block .quote-heading a:focus,.misago-markup .quote-block .quote-heading a:hover,.misago-markup blockquote .quote-heading a:active,.misago-markup blockquote .quote-heading a:focus,.misago-markup blockquote .quote-heading a:hover{color:#3e2723}.misago-markup .quote-block hr,.misago-markup blockquote hr{border-color:#ffca28}.misago-markup>.quote-block,.misago-markup>blockquote{background:#ffecb3;border:none;border-radius:4px}.misago-markup .quote-body,.misago-markup>.quote-block .quote-block,.misago-markup>blockquote .quote-block{background:#ffecb3}.misago-markup .quote-body>.quote-block,.misago-markup .quote-body>blockquote{border-color:#ffe082;border-radius:4px}.misago-markup .spoiler-block{background:repeating-linear-gradient(45deg,rgba(235,236,240,.5),rgba(235,236,240,.5) 10px,#fff 0,#fff 20px);border:none}.misago-markup .spoiler-body{background:transparent;color:#172b4d;-webkit-filter:blur(5px);-moz-filter:blur(5px);-o-filter:blur(5px);-ms-filter:blur(5px);filter:blur(5px)}.misago-markup .spoiler-block.revealed .spoiler-body{-webkit-filter:none;-moz-filter:none;-o-filter:none;-ms-filter:none;filter:none}.misago-markup .spoiler-overlay{align-items:center;background:hsla(0,0%,100%,.1);display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.misago-markup .spoiler-reveal{background-color:#ebecf0;border-color:#ccc;color:#172b4d}.misago-markup .spoiler-reveal.focus,.misago-markup .spoiler-reveal:focus{background-color:#ced0da;border-color:#8c8c8c;color:#172b4d}.misago-markup .spoiler-reveal:hover{background-color:#ced0da;border-color:#adadad;color:#172b4d}.misago-markup .spoiler-reveal.active,.misago-markup .spoiler-reveal:active,.open>.dropdown-toggle.misago-markup .spoiler-reveal{background-color:#ced0da;background-image:none;border-color:#adadad;color:#172b4d}.misago-markup .spoiler-reveal.active.focus,.misago-markup .spoiler-reveal.active:focus,.misago-markup .spoiler-reveal.active:hover,.misago-markup .spoiler-reveal:active.focus,.misago-markup .spoiler-reveal:active:focus,.misago-markup .spoiler-reveal:active:hover,.open>.dropdown-toggle.misago-markup .spoiler-reveal.focus,.open>.dropdown-toggle.misago-markup .spoiler-reveal:focus,.open>.dropdown-toggle.misago-markup .spoiler-reveal:hover{background-color:#b9bdcb;border-color:#8c8c8c;color:#172b4d}.misago-markup .spoiler-reveal.disabled.focus,.misago-markup .spoiler-reveal.disabled:focus,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal[disabled].focus,.misago-markup .spoiler-reveal[disabled]:focus,.misago-markup .spoiler-reveal[disabled]:hover,fieldset[disabled] .misago-markup .spoiler-reveal.focus,fieldset[disabled] .misago-markup .spoiler-reveal:focus,fieldset[disabled] .misago-markup .spoiler-reveal:hover{background-color:#ebecf0;border-color:#ccc}.misago-markup .spoiler-reveal .badge{background-color:#172b4d;color:#ebecf0}.misago-markup .spoiler-reveal,.misago-markup .spoiler-reveal.disabled,.misago-markup .spoiler-reveal.disabled:active,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal:disabled,.misago-markup .spoiler-reveal:disabled:hover{background:#ebecf0;border:1px solid #ebecf0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.misago-markup .spoiler-reveal.disabled,.misago-markup .spoiler-reveal.disabled:active,.misago-markup .spoiler-reveal.disabled:hover,.misago-markup .spoiler-reveal:disabled,.misago-markup .spoiler-reveal:disabled:hover{filter:alpha(opacity=25);opacity:.25}.misago-markup .spoiler-reveal:focus,.misago-markup .spoiler-reveal:hover{background:#dfe1e6;border:1px solid #dfe1e6;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:active:focus,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:focus,.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:hover,.misago-markup .spoiler-reveal:active,.misago-markup .spoiler-reveal:active:focus{background:#c1c7d0;border:1px solid #c1c7d0;-webkit-box-shadow:none;box-shadow:none;color:#172b4d}.misago-markup .spoiler-reveal.btn-loading,.misago-markup .spoiler-reveal.btn-loading:active,.misago-markup .spoiler-reveal.btn-loading:active:focus,.misago-markup .spoiler-reveal.btn-loading:disabled,.misago-markup .spoiler-reveal.btn-loading:disabled:hover,.misago-markup .spoiler-reveal.btn-loading:focus,.misago-markup .spoiler-reveal.btn-loading:hover{color:transparent}.misago-markup .spoiler-reveal,.misago-markup .spoiler-reveal:active,.misago-markup .spoiler-reveal:hover{border-radius:4px;box-shadow:0 0 0 4px #fff;padding:6px 12px}.modal-header{background:#fff;border-bottom-color:#ced0da;border-radius:6px 6px 0 0;color:#172b4d}.modal-header .close{color:#172b4d;font-size:24px;line-height:24px;padding:0 6px;text-shadow:none}.modal-message .message-icon{color:#9575cd}.modal-body>.form-group{margin:20px 0}.modal-body>.form-group:first-child{margin-top:0}.modal-body>.form-group:last-child{margin-bottom:0}.modal-sign-in .modal-body{padding-bottom:0;padding-top:0}.modal-sign-in .modal-body>.form-group{margin:20px 0}.legal-footnote label{font-weight:700}.legal-footnote .help-block{color:#ff5630;margin-left:20px}.modal-avatar-index .avatar-preview{background:#fff;border-radius:6px}.modal-avatar-crop .cropit-preview{background:#fff;margin:20px 0}.modal-avatar-crop .cropit-image-zoom-input{margin-bottom:20px;margin-top:40px}.modal-post-likers .media{border-bottom:1px solid #ebecf0;padding-bottom:15px}.modal-post-likers .media img{border-radius:4px;height:40px;width:40px}.modal-post-likers .media:last-child{border:none;padding-bottom:0}.well{border:1px solid #ddd}.active-posters .rank-user-avatar img{border-radius:4px}.active-posters .user-details{color:#7a869a}.active-posters .user-details a.rank-name,.active-posters .user-details a.rank-name:link,.active-posters .user-details a.rank-name:visited{color:#5e6c84;font-weight:400}.active-posters .user-details a.rank-name:active,.active-posters .user-details a.rank-name:focus,.active-posters .user-details a.rank-name:hover{color:#172b4d}.active-posters .user-details span.rank-name{color:#5e6c84;font-weight:400}.active-posters small{color:#7a869a}.page-error .message-icon{color:#ef5350}.page-message .message-icon,.page-message-info .message-icon{color:#9575cd}.page-message-success .message-icon{color:#81c784}.page-options .message-line,.page-options .message-line a,.page-options .message-line a:link,.page-options .message-line a:visited{color:#7a869a}.page-options .message-line a:active,.page-options .message-line a:focus,.page-options .message-line a:focus:active,.page-options .message-line a:hover{color:#172b4d}.panel-profile-details-group.panel{border:1px solid #ebecf0}.panel-profile-details-group.panel .form-group{margin:0}.panel-profile-details-group .form-control-static p:last-child{margin-bottom:0}.post-primary .panel-post{border-color:#b388ff}.post-primary .user-title,.post-primary .user-title a,.post-primary .user-title a:active,.post-primary .user-title a:focus,.post-primary .user-title a:hover,.post-primary .user-title a:link,.post-primary .user-title a:visited{color:#6200ea}.post-success .panel-post{border-color:#00c853}.post-success .user-title,.post-success .user-title a,.post-success .user-title a:active,.post-success .user-title a:focus,.post-success .user-title a:hover,.post-success .user-title a:link,.post-success .user-title a:visited{color:#388e3c}.post-warning .panel-post{border-color:#ffab40}.post-warning .user-title,.post-warning .user-title a,.post-warning .user-title a:active,.post-warning .user-title a:focus,.post-warning .user-title a:hover,.post-warning .user-title a:link,.post-warning .user-title a:visited{color:#ff6d00}.post-danger .panel-post{border-color:#ff8a80}.post-danger .user-title,.post-danger .user-title a,.post-danger .user-title a:active,.post-danger .user-title a:focus,.post-danger .user-title a:hover,.post-danger .user-title a:link,.post-danger .user-title a:visited{color:#d50000}.user-card-primary .panel-body{background:#fff;border:2px solid #b388ff;border-radius:4px;padding:13px}.user-card-primary .user-card-title,.user-card-primary .user-card-title a.user-title,.user-card-primary .user-card-title a.user-title:active,.user-card-primary .user-card-title a.user-title:focus,.user-card-primary .user-card-title a.user-title:hover,.user-card-primary .user-card-title a.user-title:link,.user-card-primary .user-card-title a.user-title:visited{color:#6200ea}.user-card-primary .user-card-stats li{color:#9575cd}.user-card-success .panel-body{background:#fff;border:2px solid #00c853;border-radius:4px;padding:13px}.user-card-success .user-card-title,.user-card-success .user-card-title a.user-title,.user-card-success .user-card-title a.user-title:active,.user-card-success .user-card-title a.user-title:focus,.user-card-success .user-card-title a.user-title:hover,.user-card-success .user-card-title a.user-title:link,.user-card-success .user-card-title a.user-title:visited{color:#388e3c}.user-card-success .user-card-stats li{color:#66bb6a}.user-card-warning .panel-body{background:#fff;border:2px solid #ffab40;border-radius:4px;padding:13px}.user-card-warning .user-card-title,.user-card-warning .user-card-title a.user-title,.user-card-warning .user-card-title a.user-title:active,.user-card-warning .user-card-title a.user-title:focus,.user-card-warning .user-card-title a.user-title:hover,.user-card-warning .user-card-title a.user-title:link,.user-card-warning .user-card-title a.user-title:visited{color:#ff6d00}.user-card-warning .user-card-stats li{color:#ff6e40}.user-card-danger .panel-body{background:#fff;border:2px solid #ff8a80;border-radius:4px;padding:13px}.user-card-danger .user-card-title,.user-card-danger .user-card-title a.user-title,.user-card-danger .user-card-title a.user-title:active,.user-card-danger .user-card-title a.user-title:focus,.user-card-danger .user-card-title a.user-title:hover,.user-card-danger .user-card-title a.user-title:link,.user-card-danger .user-card-title a.user-title:visited{color:#d50000}.user-card-danger .user-card-stats li{color:#e57373}.list-group .list-group-rank-primary{border-left:4px solid #7e57c2;padding-left:11px}.list-group .list-group-rank-primary a.rank-name,.list-group .list-group-rank-primary a.rank-name:active,.list-group .list-group-rank-primary a.rank-name:focus,.list-group .list-group-rank-primary a.rank-name:hover,.list-group .list-group-rank-primary a.rank-name:link,.list-group .list-group-rank-primary a.rank-name:visited,.list-group .list-group-rank-primary span.rank-name{color:#6200ea}.list-group .list-group-rank-success{border-left:4px solid #9ccc65;padding-left:11px}.list-group .list-group-rank-success a.rank-name,.list-group .list-group-rank-success a.rank-name:active,.list-group .list-group-rank-success a.rank-name:focus,.list-group .list-group-rank-success a.rank-name:hover,.list-group .list-group-rank-success a.rank-name:link,.list-group .list-group-rank-success a.rank-name:visited,.list-group .list-group-rank-success span.rank-name{color:#388e3c}.list-group .list-group-rank-warning{border-left:4px solid #ff7043;padding-left:11px}.list-group .list-group-rank-warning a.rank-name,.list-group .list-group-rank-warning a.rank-name:active,.list-group .list-group-rank-warning a.rank-name:focus,.list-group .list-group-rank-warning a.rank-name:hover,.list-group .list-group-rank-warning a.rank-name:link,.list-group .list-group-rank-warning a.rank-name:visited,.list-group .list-group-rank-warning span.rank-name{color:#ff6d00}.list-group .list-group-rank-danger{border-left:4px solid #f44336;padding-left:11px}.list-group .list-group-rank-danger a.rank-name,.list-group .list-group-rank-danger a.rank-name:active,.list-group .list-group-rank-danger a.rank-name:focus,.list-group .list-group-rank-danger a.rank-name:hover,.list-group .list-group-rank-danger a.rank-name:link,.list-group .list-group-rank-danger a.rank-name:visited,.list-group .list-group-rank-danger span.rank-name{color:#d50000}.page-header-rank-primary .user-rank,.page-header-rank-primary .user-rank a,.page-header-rank-primary .user-rank a:active,.page-header-rank-primary .user-rank a:focus,.page-header-rank-primary .user-rank a:hover,.page-header-rank-primary .user-rank a:link,.page-header-rank-primary .user-rank a:visited{color:#6200ea}.page-header-rank-success .user-rank,.page-header-rank-success .user-rank a,.page-header-rank-success .user-rank a:active,.page-header-rank-success .user-rank a:focus,.page-header-rank-success .user-rank a:hover,.page-header-rank-success .user-rank a:link,.page-header-rank-success .user-rank a:visited{color:#388e3c}.page-header-rank-warning .user-rank,.page-header-rank-warning .user-rank a,.page-header-rank-warning .user-rank a:active,.page-header-rank-warning .user-rank a:focus,.page-header-rank-warning .user-rank a:hover,.page-header-rank-warning .user-rank a:link,.page-header-rank-warning .user-rank a:visited{color:#ff6d00}.page-header-rank-danger .user-rank,.page-header-rank-danger .user-rank a,.page-header-rank-danger .user-rank a:active,.page-header-rank-danger .user-rank a:focus,.page-header-rank-danger .user-rank a:hover,.page-header-rank-danger .user-rank a:link,.page-header-rank-danger .user-rank a:visited{color:#d50000} /*# sourceMappingURL=misago.css.map*/ \ No newline at end of file diff --git a/misago/static/misago/css/misago.css.map b/misago/static/misago/css/misago.css.map index 1d2f71e964..5ec32b9053 100644 --- a/misago/static/misago/css/misago.css.map +++ b/misago/static/misago/css/misago.css.map @@ -1 +1 @@ -{"version":3,"file":"../css/misago.css","mappings":"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,COhZA,YAAuB,gBPmZvB,COlZA,aAAuB,iBPqZvB,COpZA,cAAuB,kBPuZvB,COtZA,aAAuB,kBPyZvB,COtZA,gBAAuB,wBPyZvB,COxZA,gBAAuB,wBP2ZvB,CO1ZA,iBAAuB,yBP6ZvB,CO1ZA,YACE,aP4ZF,CO1ZA,cCvGE,aRogBF,CQngBE,0CAEE,aRqgBJ,CO9ZA,cC1GE,aR2gBF,CQ1gBE,0CAEE,aR4gBJ,COlaA,WC7GE,aRkhBF,CQjhBE,oCAEE,aRmhBJ,COtaA,cChHE,aRyhBF,CQxhBE,0CAEE,aR0hBJ,CO1aA,aCnHE,aRgiBF,CQ/hBE,wCAEE,aRiiBJ,CO1aA,YE1HE,yBF6HA,UP2aF,CSviBE,sCAEE,wBTyiBJ,CO5aA,YEhIE,wBT+iBF,CS9iBE,sCAEE,wBTgjBJ,COhbA,SEnIE,wBTsjBF,CSrjBE,gCAEE,wBTujBJ,COpbA,YEtIE,wBT6jBF,CS5jBE,sCAEE,wBT8jBJ,COxbA,WEzIE,wBTokBF,CSnkBE,oCAEE,wBTqkBJ,COvbA,aAGE,gCADA,mBADA,kBP2bF,COjbA,MAGE,mBADA,YPobF,COtbA,wBAMI,ePsbJ,COzaA,4BAJE,eAAgB,CADhB,cPubF,COlbA,aAEE,gBPgbF,COlbA,gBAKI,oBAAqB,CAErB,gBAAiB,CADjB,iBPibJ,CO3aA,GAEE,mBADA,YP8aF,CO3aA,MAEE,sBP6aF,CO3aA,GACE,eP6aF,CO3aA,GACE,aP6aF,COhaE,2CAII,UAAW,CAFX,UAAW,CGrNf,eAAgB,CHwNZ,gBAAiB,CGvNrB,sBAAuB,CACvB,kBAAmB,CHoNf,WPuaJ,CO1aA,kBASI,iBPoaJ,CACF,CO1ZA,sCAEE,WP4ZF,COzZA,YACE,aAAc,CA9IO,wBP0iBvB,COvZA,WAIE,8BADA,iBADA,gBADA,iBP4ZF,COpZI,0EACE,ePwZN,COlaA,qDAsBI,cAHA,aAAc,CACd,aAAc,CACd,sBPqZJ,COlZI,0EACE,qBPsZN,CO9YA,0CAME,aAAc,CADd,+BAFA,cAAe,CADf,kBAAmB,CAEnB,gBPkZF,CO1YI,gNAAW,UPkZf,COjZI,0MACE,qBPwZN,COlZA,QAEE,iBAAkB,CAClB,uBAFA,kBPsZF,CW5rBA,kBAIE,uDX8rBF,CW1rBA,KAIE,yBACA,kBAFA,aX8rBF,CWxrBA,SAPE,aAAc,CADd,eXwsBF,CWhsBA,IAIE,sBACA,kBACA,0CAHA,UX6rBF,CWhsBA,QAYI,eAAgB,CAFhB,cAAe,CACf,eAAgB,CAFhB,SX6rBJ,CWrrBA,IAQE,oBAAqB,CACrB,yBACA,sBACA,kBALA,cALA,aAAc,CAGd,eACA,uBAFA,gBADA,cAKA,oBX2rBF,CWlsBA,SAmBI,4BAA6B,CAC7B,eAAgB,CAHhB,aAAc,CADd,iBAAkB,CADlB,SAAU,CAGV,oBXwrBJ,CWjrBA,gBACE,iBACA,iBXmrBF,CY7uBA,WCAE,gBAAiB,CADjB,iBAAkB,CADlB,kBADA,kBbsvBF,CYhvBE,oCACE,WZmvBF,CACF,CYlvBE,oCACE,WZqvBF,CACF,CYpvBE,qCACE,YZuvBF,CACF,CY9uBA,iBCpBE,gBAAiB,CADjB,iBAAkB,CADlB,kBADA,kBb2wBF,CY3uBA,KCtBE,kBADA,kBbswBF,CY3uBA,gBAEE,aAAc,CADd,cZ8uBF,CY/uBA,8BAMI,cAAe,CADf,eZ8uBJ,Cc7xBC,4eCmBK,cAAe,CAGf,kBADA,mBAJA,iBfi0BN,Ccl1BC,2HCuCK,UfyzBN,Cch2BC,WC+CG,UfozBJ,Ccn2BC,WC+CG,kBfuzBJ,Cct2BC,WC+CG,kBf0zBJ,Ccz2BC,UC+CG,Sf6zBJ,Cc52BC,UC+CG,kBfg0BJ,Cc/2BC,UC+CG,kBfm0BJ,Ccl3BC,UC+CG,Sfs0BJ,Ccr3BC,UC+CG,kBfy0BJ,Ccx3BC,UC+CG,kBf40BJ,Cc33BC,UC+CG,Sf+0BJ,Cc93BC,UC+CG,kBfk1BJ,Ccj4BC,UC+CG,iBfq1BJ,Ccp4BC,gBC8DG,Ufy0BJ,Ccv4BC,gBC8DG,kBf40BJ,Cc14BC,gBC8DG,kBf+0BJ,Cc74BC,eC8DG,Sfk1BJ,Cch5BC,eC8DG,kBfq1BJ,Ccn5BC,eC8DG,kBfw1BJ,Cct5BC,eC8DG,Sf21BJ,Ccz5BC,eC8DG,kBf81BJ,Cc55BC,eC8DG,kBfi2BJ,Cc/5BC,eC8DG,Sfo2BJ,Ccl6BC,eC8DG,kBfu2BJ,Ccr6BC,eC8DG,iBf02BJ,Ccx6BC,eCmEG,Ufw2BJ,Cc36BC,gBCoDG,Sf03BJ,Cc96BC,gBCoDG,iBf63BJ,Ccj7BC,gBCoDG,iBfg4BJ,Ccp7BC,eCoDG,Qfm4BJ,Ccv7BC,eCoDG,iBfs4BJ,Cc17BC,eCoDG,iBfy4BJ,Cc77BC,eCoDG,Qf44BJ,Cch8BC,eCoDG,iBf+4BJ,Ccn8BC,eCoDG,iBfk5BJ,Cct8BC,eCoDG,Qfq5BJ,Ccz8BC,eCoDG,iBfw5BJ,Cc58BC,eCoDG,gBf25BJ,Cc/8BC,eCyDG,Sfy5BJ,Ccl9BC,kBCwEG,gBf64BJ,Ccr9BC,kBCwEG,wBfg5BJ,Ccx9BC,kBCwEG,wBfm5BJ,Cc39BC,iBCwEG,efs5BJ,Cc99BC,iBCwEG,wBfy5BJ,Ccj+BC,iBCwEG,wBf45BJ,Ccp+BC,iBCwEG,ef+5BJ,Ccv+BC,iBCwEG,wBfk6BJ,Cc1+BC,iBCwEG,wBfq6BJ,Cc7+BC,iBCwEG,efw6BJ,Cch/BC,iBCwEG,wBf26BJ,Ccn/BC,iBCwEG,uBf86BJ,Cct/BC,iBCwEG,afi7BJ,CYh7BA,yBEzEC,2HCuCK,Ufi+BJ,CcxgCD,WC+CG,Uf49BF,Cc3gCD,WC+CG,kBf+9BF,Cc9gCD,WC+CG,kBfk+BF,CcjhCD,UC+CG,Sfq+BF,CcphCD,UC+CG,kBfw+BF,CcvhCD,UC+CG,kBf2+BF,Cc1hCD,UC+CG,Sf8+BF,Cc7hCD,UC+CG,kBfi/BF,CchiCD,UC+CG,kBfo/BF,CcniCD,UC+CG,Sfu/BF,CctiCD,UC+CG,kBf0/BF,CcziCD,UC+CG,iBf6/BF,Cc5iCD,gBC8DG,Ufi/BF,Cc/iCD,gBC8DG,kBfo/BF,CcljCD,gBC8DG,kBfu/BF,CcrjCD,eC8DG,Sf0/BF,CcxjCD,eC8DG,kBf6/BF,Cc3jCD,eC8DG,kBfggCF,Cc9jCD,eC8DG,SfmgCF,CcjkCD,eC8DG,kBfsgCF,CcpkCD,eC8DG,kBfygCF,CcvkCD,eC8DG,Sf4gCF,Cc1kCD,eC8DG,kBf+gCF,Cc7kCD,eC8DG,iBfkhCF,CchlCD,eCmEG,UfghCF,CcnlCD,gBCoDG,SfkiCF,CctlCD,gBCoDG,iBfqiCF,CczlCD,gBCoDG,iBfwiCF,Cc5lCD,eCoDG,Qf2iCF,Cc/lCD,eCoDG,iBf8iCF,CclmCD,eCoDG,iBfijCF,CcrmCD,eCoDG,QfojCF,CcxmCD,eCoDG,iBfujCF,Cc3mCD,eCoDG,iBf0jCF,Cc9mCD,eCoDG,Qf6jCF,CcjnCD,eCoDG,iBfgkCF,CcpnCD,eCoDG,gBfmkCF,CcvnCD,eCyDG,SfikCF,Cc1nCD,kBCwEG,gBfqjCF,Cc7nCD,kBCwEG,wBfwjCF,CchoCD,kBCwEG,wBf2jCF,CcnoCD,iBCwEG,ef8jCF,CctoCD,iBCwEG,wBfikCF,CczoCD,iBCwEG,wBfokCF,Cc5oCD,iBCwEG,efukCF,Cc/oCD,iBCwEG,wBf0kCF,CclpCD,iBCwEG,wBf6kCF,CcrpCD,iBCwEG,efglCF,CcxpCD,iBCwEG,wBfmlCF,Cc3pCD,iBCwEG,uBfslCF,Cc9pCD,iBCwEG,afylCF,CACF,CYhlCA,yBElFC,2HCuCK,Uf0oCJ,CcjrCD,WC+CG,UfqoCF,CcprCD,WC+CG,kBfwoCF,CcvrCD,WC+CG,kBf2oCF,Cc1rCD,UC+CG,Sf8oCF,Cc7rCD,UC+CG,kBfipCF,CchsCD,UC+CG,kBfopCF,CcnsCD,UC+CG,SfupCF,CctsCD,UC+CG,kBf0pCF,CczsCD,UC+CG,kBf6pCF,Cc5sCD,UC+CG,SfgqCF,Cc/sCD,UC+CG,kBfmqCF,CcltCD,UC+CG,iBfsqCF,CcrtCD,gBC8DG,Uf0pCF,CcxtCD,gBC8DG,kBf6pCF,Cc3tCD,gBC8DG,kBfgqCF,Cc9tCD,eC8DG,SfmqCF,CcjuCD,eC8DG,kBfsqCF,CcpuCD,eC8DG,kBfyqCF,CcvuCD,eC8DG,Sf4qCF,Cc1uCD,eC8DG,kBf+qCF,Cc7uCD,eC8DG,kBfkrCF,CchvCD,eC8DG,SfqrCF,CcnvCD,eC8DG,kBfwrCF,CctvCD,eC8DG,iBf2rCF,CczvCD,eCmEG,UfyrCF,Cc5vCD,gBCoDG,Sf2sCF,Cc/vCD,gBCoDG,iBf8sCF,CclwCD,gBCoDG,iBfitCF,CcrwCD,eCoDG,QfotCF,CcxwCD,eCoDG,iBfutCF,Cc3wCD,eCoDG,iBf0tCF,Cc9wCD,eCoDG,Qf6tCF,CcjxCD,eCoDG,iBfguCF,CcpxCD,eCoDG,iBfmuCF,CcvxCD,eCoDG,QfsuCF,Cc1xCD,eCoDG,iBfyuCF,Cc7xCD,eCoDG,gBf4uCF,CchyCD,eCyDG,Sf0uCF,CcnyCD,kBCwEG,gBf8tCF,CctyCD,kBCwEG,wBfiuCF,CczyCD,kBCwEG,wBfouCF,Cc5yCD,iBCwEG,efuuCF,Cc/yCD,iBCwEG,wBf0uCF,CclzCD,iBCwEG,wBf6uCF,CcrzCD,iBCwEG,efgvCF,CcxzCD,iBCwEG,wBfmvCF,Cc3zCD,iBCwEG,wBfsvCF,Cc9zCD,iBCwEG,efyvCF,Ccj0CD,iBCwEG,wBf4vCF,Ccp0CD,iBCwEG,uBf+vCF,Ccv0CD,iBCwEG,afkwCF,CACF,CYhvCA,0BE3FC,2HCuCK,UfmzCJ,Cc11CD,WC+CG,Uf8yCF,Cc71CD,WC+CG,kBfizCF,Cch2CD,WC+CG,kBfozCF,Ccn2CD,UC+CG,SfuzCF,Cct2CD,UC+CG,kBf0zCF,Ccz2CD,UC+CG,kBf6zCF,Cc52CD,UC+CG,Sfg0CF,Cc/2CD,UC+CG,kBfm0CF,Ccl3CD,UC+CG,kBfs0CF,Ccr3CD,UC+CG,Sfy0CF,Ccx3CD,UC+CG,kBf40CF,Cc33CD,UC+CG,iBf+0CF,Cc93CD,gBC8DG,Ufm0CF,Ccj4CD,gBC8DG,kBfs0CF,Ccp4CD,gBC8DG,kBfy0CF,Ccv4CD,eC8DG,Sf40CF,Cc14CD,eC8DG,kBf+0CF,Cc74CD,eC8DG,kBfk1CF,Cch5CD,eC8DG,Sfq1CF,Ccn5CD,eC8DG,kBfw1CF,Cct5CD,eC8DG,kBf21CF,Ccz5CD,eC8DG,Sf81CF,Cc55CD,eC8DG,kBfi2CF,Cc/5CD,eC8DG,iBfo2CF,Ccl6CD,eCmEG,Ufk2CF,Ccr6CD,gBCoDG,Sfo3CF,Ccx6CD,gBCoDG,iBfu3CF,Cc36CD,gBCoDG,iBf03CF,Cc96CD,eCoDG,Qf63CF,Ccj7CD,eCoDG,iBfg4CF,Ccp7CD,eCoDG,iBfm4CF,Ccv7CD,eCoDG,Qfs4CF,Cc17CD,eCoDG,iBfy4CF,Cc77CD,eCoDG,iBf44CF,Cch8CD,eCoDG,Qf+4CF,Ccn8CD,eCoDG,iBfk5CF,Cct8CD,eCoDG,gBfq5CF,Ccz8CD,eCyDG,Sfm5CF,Cc58CD,kBCwEG,gBfu4CF,Cc/8CD,kBCwEG,wBf04CF,Ccl9CD,kBCwEG,wBf64CF,Ccr9CD,iBCwEG,efg5CF,Ccx9CD,iBCwEG,wBfm5CF,Cc39CD,iBCwEG,wBfs5CF,Cc99CD,iBCwEG,efy5CF,Ccj+CD,iBCwEG,wBf45CF,Ccp+CD,iBCwEG,wBf+5CF,Ccv+CD,iBCwEG,efk6CF,Cc1+CD,iBCwEG,wBfq6CF,Cc7+CD,iBCwEG,uBfw6CF,Cch/CD,iBCwEG,af26CF,CACF,CgB7+CA,MACE,4BhB++CF,CgBh/CA,uBASI,oBAAqB,CACrB,UAAW,CAFX,ehB6+CJ,CgBt+CI,4CAEE,kBAAmB,CACnB,UAAW,CAFX,ehB2+CN,CgBp+CA,QAGE,cADA,mBADA,ehBy+CF,CgBn+CA,WAHE,ehBy+CF,CgB/9CA,OAGE,mBADA,cAAe,CADf,UhBm+CF,CgBp+CA,kHAcQ,0BAFA,uBADA,YAEA,kBhBk+CR,CgB/+CA,mBAqBI,6BADA,qBhB+9CJ,CgBn/CA,oPA8BQ,YhB69CR,CgB3/CA,mBAoCI,yBhB09CJ,CgB9/CA,cAyCI,qBhBw9CJ,CgBj9CA,8KAOQ,WhBk9CR,CgBv8CA,wLAQQ,qBhB08CR,CgBl9CA,wDAeM,uBhBu8CN,CgB77CA,yCAEI,wBhB87CJ,CiBlkDE,oVAOI,wBjB4kDN,CiBtkDE,4LAMI,wBjBukDN,CiB1lDE,oUAOI,wBjBimDN,CiB3lDE,iMAMI,wBjB4lDN,CiB/mDE,gSAOI,wBjBsnDN,CiBhnDE,kLAMI,wBjBinDN,CiBpoDE,oUAOI,wBjB2oDN,CiBroDE,iMAMI,wBjBsoDN,CiBzpDE,wTAOI,wBjBgqDN,CiB1pDE,4LAMI,wBjB2pDN,CgBvgDA,kBACE,gBACA,ehBygDF,CgBvgDE,sDAIE,2CAA4C,CAC5C,sBAHA,mBACA,iBAAkB,CAFlB,UhB8gDF,CgB/gDA,yBASI,ehBygDJ,CgBlhDA,8NAkBU,kBhBwgDV,CgB1hDA,kCA0BI,QhBmgDJ,CgB7hDA,4VAmCU,ahBkgDV,CgBriDA,sVAuCU,chBsgDV,CgB7iDA,oOAoDU,ehB+/CV,CACF,CkBztDA,SAME,QAAS,CAFT,WlB2tDF,CkBrtDA,gBAHE,QAAS,CAFT,SlBquDF,CkBhuDA,OASE,gCAFA,cANA,aAAc,CAId,eACA,mBAAoB,CAFpB,mBAFA,UlB8tDF,CkBptDA,MACE,oBAAqB,CAGrB,eAAgB,CADhB,iBAAkB,CADlB,clBwtDF,CkB5sDA,mBAUE,uBAAwB,CACxB,eAAgB,CdkBhB,8BACG,2BACK,qBJorDV,CkBpsDA,uCAIE,kBAAmB,CAFnB,cAAe,CACf,gBlBusDF,CkBhsDE,iMAGE,kBlBqsDJ,CkBjsDA,iBACE,alBmsDF,CkB/rDA,kBACE,aAAc,CACd,UlBisDF,CkB7rDA,8BAEE,WlB+rDF,CkB3rDA,0Eb1FE,yCAA0C,CAC1C,mBL0xDF,CkB1rDA,OAEE,elB+rDF,CkBlqDA,qBA1BE,cAJA,aAAc,CAEd,eACA,sBlB+sDF,CkBprDA,cAQE,sBACA,qBAAsB,CACtB,yBACA,kBd3EA,oDACQ,4CckER,YACA,iBdsDA,6EACK,wEACG,qEc1DR,UlBkrDF,CmBlwDE,oBACE,qBfaF,iFACQ,yEebN,SnBswDJ,CIxtDE,gCACE,WACA,SJ0tDJ,CIxtDE,oCAA0B,UJ2tD5B,CI1tDE,yCAAgC,UJ6tDlC,CkB9qDE,0BACE,4BAA6B,CAC7B,QlBgrDJ,CkBxqDE,iFAGE,yBACA,SlB0qDJ,CkBvqDE,yDAEE,kBlByqDJ,CkBrqDE,sBACE,WlBuqDJ,CkBzpDA,qDAKI,mIACE,gBlB0pDJ,CkBvpDE,kQAEE,gBlB+pDJ,CkB5pDE,kQAEE,gBlBoqDJ,CACF,CkB1pDA,YACE,kBlB4pDF,CkBppDA,iBAGE,aAAc,CAEd,kBAAmB,CADnB,eAAgB,CAFhB,iBlBypDF,CkBnpDE,kHAGI,kBlBspDN,CkBjqDA,6BAoBI,cAAe,CADf,eAAgB,CADhB,eAAgB,CAFhB,gBACA,iBlBwpDJ,CkBlpDA,8HAME,iBAAkB,CADlB,gBAAkB,CADlB,iBlBspDF,CkBjpDA,kCAEE,elBmpDF,CkB/oDA,+BAQE,cAAe,CALf,oBAAqB,CAGrB,eAAgB,CADhB,eAAgB,CADhB,iBAAkB,CAFlB,iBAAkB,CAKlB,qBlBkpDF,CkB9oDE,sHAEE,kBlBkpDJ,CkB/oDA,8DAGE,gBAAiB,CADjB,YlBkpDF,CkBxoDA,qBAME,eAAgB,CALhB,gBAGA,mBADA,elB2oDF,CkBtoDE,4DAGE,cAAe,CADf,elByoDJ,CkB3nDA,UCvPE,kBAFA,eAFA,YAGA,gBAFA,gBnB43DF,CmBv3DE,gBACE,YACA,gBnBy3DJ,CmBt3DE,4CAEE,WnBw3DJ,CkBvoDA,6BAMI,kBAFA,eAFA,YAGA,gBAFA,gBlB2oDJ,CkB9oDA,mCASI,YACA,gBlBwoDJ,CkBlpDA,kFAcI,WlBwoDJ,CkBtpDA,oCAoBI,eAHA,YAIA,gBAHA,gBACA,gBlB0oDJ,CkBpoDA,UCnRE,kBAFA,eAFA,YAGA,sBAFA,iBnBi6DF,CmB55DE,gBACE,YACA,gBnB85DJ,CmB35DE,4CAEE,WnB65DJ,CkBhpDA,6BAMI,kBAFA,eAFA,YAGA,sBAFA,iBlBopDJ,CkBvpDA,mCASI,YACA,gBlBipDJ,CkB3pDA,kFAcI,WlBipDJ,CkB/pDA,oCAoBI,eAHA,YAIA,sBAHA,gBACA,iBlBmpDJ,CkBxoDA,cAEE,iBlByoDF,CkB3oDA,4BAMI,oBlBwoDJ,CkBpoDA,uBAKE,aAAc,CAEd,YACA,iBAEA,mBAAoB,CATpB,iBAAkB,CAElB,OAAQ,CAMR,iBAAkB,CAPlB,KAAM,CAIN,WAFA,SlB4oDF,CkBpoDA,4HAIE,YACA,iBAFA,UlBwoDF,CkBpoDA,4HAIE,YACA,iBAFA,UlBwoDF,CkBloDA,iRClZI,anBgiEJ,CkB9oDA,2BC9YI,qBfiDF,oDACQ,2CJ++DV,CmB/hEI,iCACE,qBf8CJ,oEACQ,2DJo/DV,CkBxpDA,gCCnYI,yBACA,qBAFA,anBiiEJ,CkB7pDA,oCC9XI,anB8hEJ,CkB7pDA,iRCrZI,anB8jEJ,CkBzqDA,2BCjZI,qBfiDF,oDACQ,2CJ6gEV,CmB7jEI,iCACE,qBf8CJ,oEACQ,2DJkhEV,CkBnrDA,gCCtYI,yBACA,qBAFA,anB+jEJ,CkBxrDA,oCCjYI,anB4jEJ,CkBxrDA,6PCxZI,anB4lEJ,CkBpsDA,yBCpZI,qBfiDF,oDACQ,2CJ2iEV,CmB3lEI,+BACE,qBf8CJ,oEACQ,2DJgjEV,CkB9sDA,8BCzYI,yBACA,qBAFA,anB6lEJ,CkBntDA,kCCpYI,anB0lEJ,CkB/sDE,2CACE,QlBitDJ,CkB/sDE,mDACE,KlBitDJ,CkBvsDA,YAIE,cAHA,aAAc,CAEd,kBAAmB,CADnB,clB2sDF,CkBvrDE,kDAGI,oBAAqB,CACrB,eAAgB,CAChB,qBlBwrDJ,CkB7rDA,2BAUI,oBAAqB,CAErB,qBAAsB,CADtB,UlBurDJ,CkBlsDA,kCAiBI,oBlBorDJ,CkBrsDA,0BAqBI,oBAAqB,CACrB,qBlBmrDJ,CkBzsDA,gIA2BM,UlBmrDN,CkB9sDA,wCAiCI,UlBgrDJ,CkBjtDA,4BAqCI,eAAgB,CAChB,qBlB+qDJ,CkBrtDA,2CA6CI,oBAAqB,CAErB,eAAgB,CADhB,YAAa,CAEb,qBlB4qDJ,CkB5tDA,uDAmDM,clB6qDN,CkBhuDA,kFAyDI,aAAc,CADd,iBlB6qDJ,CkBruDA,kDA8DI,KlB0qDJ,CACF,CkBhqDA,oHAWI,eAAgB,CADhB,YAAa,CADb,elB+pDJ,CkBxqDA,mDAiBI,elB2pDJ,CkB5qDA,6BL7gBE,kBADA,kBb8rEF,CkBrpDE,yDAGI,eAAgB,CADhB,gBAEA,gBlBupDJ,CACF,CkBvrDA,sDAwCI,UlBkpDJ,CkB1oDI,wEAGI,eADA,gBlB6oDN,CkBvoDE,+CAGI,eADA,elB2oDN,CALF,CoBntEA,KASE,qBAAsB,CACtB,4BAA6B,CCuC7B,kBDzCA,cAAe,CAPf,oBAAqB,CC8CrB,eD5CA,gBC6CA,uBD9CA,eAAgB,CC4ChB,iBD1CA,iBAAkB,CAGlB,yBAA0B,ChB+M1B,yBACG,sBACC,qBACI,iBgBnNR,qBAAsB,CADtB,kBpBwuEF,CoB5tEI,8FfrBF,yCAA0C,CAC1C,mBLyvEF,CoB/tEE,iCAGE,cACA,oBpBiuEJ,CoB9tEE,wBAEE,qBAAsB,ChB4BxB,oDACQ,4CgB5BN,SpBkuEJ,CoB9tEE,qDhBuBA,wBACQ,gBgBrBN,mBE9CF,yBACA,WtBixEF,CoB9tEI,wCAEE,mBpBguEN,CoBvtEA,aC5DE,yBACA,kBAFA,arByxEF,CqBrxEE,sCAGE,yBACA,qBAFA,arByxEJ,CqBrxEE,mBAEE,yBACA,qBAFA,arByxEJ,CqBrxEE,2EAIE,yBACA,qBAAsB,CACtB,qBAHA,arB0xEJ,CqBrxEI,uRAIE,yBACA,qBAFA,arB+xEN,CqBvxEI,6RAGE,yBACA,iBrB+xEN,CoBxwEA,oBCjBI,yBADA,arB8xEJ,CoBzwEA,aC/DE,yBACA,qBAFA,UrB80EF,CqB10EE,sCAGE,yBACA,qBAFA,UrB80EJ,CqB10EE,mBAEE,yBACA,qBAFA,UrB80EJ,CqB10EE,2EAIE,yBACA,qBAAsB,CACtB,qBAHA,UrB+0EJ,CqB10EI,uRAIE,yBACA,qBAFA,UrBo1EN,CqB50EI,6RAGE,yBACA,oBrBo1EN,CoB1zEA,oBCpBI,sBADA,arBm1EJ,CoB1zEA,aCnEE,yBACA,qBAFA,UrBm4EF,CqB/3EE,sCAGE,yBACA,qBAFA,UrBm4EJ,CqB/3EE,mBAEE,yBACA,qBAFA,UrBm4EJ,CqB/3EE,2EAIE,yBACA,qBAAsB,CACtB,qBAHA,UrBo4EJ,CqB/3EI,uRAIE,yBACA,qBAFA,UrBy4EN,CqBj4EI,6RAGE,yBACA,oBrBy4EN,CoB32EA,oBCxBI,sBADA,arBw4EJ,CoB32EA,UCvEE,yBACA,qBAFA,UrBw7EF,CqBp7EE,gCAGE,yBACA,qBAFA,UrBw7EJ,CqBp7EE,gBAEE,yBACA,qBAFA,UrBw7EJ,CqBp7EE,kEAIE,yBACA,qBAAsB,CACtB,qBAHA,UrBy7EJ,CqBp7EI,4PAIE,yBACA,qBAFA,UrB87EN,CqBt7EI,kQAGE,yBACA,oBrB87EN,CoB55EA,iBC5BI,sBADA,arB67EJ,CoB55EA,aC3EE,yBACA,qBAFA,UrB6+EF,CqBz+EE,sCAGE,yBACA,kBAFA,UrB6+EJ,CqBz+EE,mBAEE,yBACA,qBAFA,UrB6+EJ,CqBz+EE,2EAIE,yBACA,qBAAsB,CACtB,qBAHA,UrB8+EJ,CqBz+EI,uRAIE,yBACA,kBAFA,UrBm/EN,CqB3+EI,6RAGE,yBACA,oBrBm/EN,CoB78EA,oBChCI,sBADA,arBk/EJ,CoB78EA,YC/EE,yBACA,qBAFA,UrBkiFF,CqB9hFE,oCAGE,yBACA,qBAFA,UrBkiFJ,CqB9hFE,kBAEE,yBACA,qBAFA,UrBkiFJ,CqB9hFE,wEAIE,yBACA,qBAAsB,CACtB,qBAHA,UrBmiFJ,CqB9hFI,8QAIE,yBACA,qBAFA,UrBwiFN,CqBhiFI,oRAGE,yBACA,oBrBwiFN,CoB9/EA,mBCpCI,sBADA,arBuiFJ,CoBz/EA,UAGE,eAAgB,CADhB,cADA,epB6/EF,CoBz/EE,6FAKE,4BAA6B,ChBnC/B,wBACQ,eJ+hFV,CoB1/EE,2DAIE,wBpB4/EJ,CoB1/EE,gCAIE,4BAA6B,CAF7B,cACA,yBpB6/EJ,CoBx/EI,0HAEE,cACA,oBpB4/EN,CoBn/EA,2BC3EE,kBAFA,eACA,sBAFA,iBrBwkFF,CoBt/EA,2BC/EE,kBAFA,eACA,gBAFA,gBrB+kFF,CoBz/EA,2BCnFE,kBAFA,eACA,gBAFA,erBslFF,CoBx/EA,WACE,aAAc,CACd,UpB0/EF,CoBt/EA,sBACE,cpBw/EF,CoBj/EE,sFACE,UpBq/EJ,CuB/oFA,MACE,SAAU,CnBoLV,uCACK,kCACG,8BJ89EV,CuBjpFE,SACE,SvBmpFJ,CuB/oFA,UACE,YvBipFF,CuB/oFE,aAAY,avBkpFd,CuBjpFE,eAAY,iBvBopFd,CuBnpFE,kBAAY,uBvBspFd,CuBnpFA,YAEE,QAAS,CACT,eAAgB,CAFhB,iBAAkB,CnBgLlB,iCACQ,yBATR,8CACQ,sCAWR,wCACQ,+BJw+EV,CwBprFA,OASE,kCADA,mCAFA,sBACA,uBANA,oBAAqB,CAErB,QAAS,CACT,eAAgB,CAChB,qBAAsB,CAHtB,OxB6rFF,CwBlrFA,kBAEE,iBxBorFF,CwBhrFA,uBACE,SxBkrFF,CwB9qFA,eAcE,2BAA4B,CAD5B,sBAEA,sBACA,iCACA,kBpBuBA,+CACQ,uCoBpCR,YAAa,CACb,UAAW,CAIX,eAPA,MAAO,CASP,eAAgB,CAHhB,cAAe,CAFf,eAAgB,CAChB,aAAc,CAPd,iBAAkB,CAUlB,eAAgB,CAThB,QAAS,CAET,YxB+rFF,CwB5qFE,0BAEE,SAAU,CADV,OxB+qFJ,CwBvsFA,wBCtBE,yBAHA,UAAW,CACX,aACA,ezBouFF,CwB7sFA,oBAqCI,UAAW,CAGX,cALA,aAAc,CAGd,eAAgB,CAChB,uBAHA,gBAAiB,CAKjB,kBxB6qFJ,CwB3qFI,oDAIE,yBAFA,cACA,oBxB8qFN,CwBtqFE,uFAKE,yBAFA,WAGA,SAAU,CAFV,oBxB0qFJ,CwB/pFE,6FAGE,axBiqFJ,CwB7pFE,kEAIE,4BAA6B,CAC7B,qBAAsB,CAFtB,mBEvGF,mEFsGE,oBxBmqFJ,CwB1pFA,qBAGI,axB0pFJ,CwB7pFA,QAQI,SxBwpFJ,CwBhpFA,qBAEE,SAAU,CADV,OxBmpFF,CwB1oFA,oBAEE,MAAO,CADP,UxB6oFF,CwBxoFA,iBAKE,cAJA,aAAc,CAEd,eACA,uBAFA,gBAAiB,CAIjB,kBxB0oFF,CwBtoFA,mBAIE,QAAS,CACT,MAAO,CAJP,cAAe,CAEf,OAAQ,CADR,KAAM,CAIN,WxBwoFF,CwBpoFA,2BAEE,SAAU,CADV,OxBuoFF,CwB9nFA,qDAMI,yBACA,0BAFA,YAAa,CADb,UxBioFJ,CwBroFA,qEAYI,WAAY,CACZ,iBAAkB,CAFlB,QxBgoFJ,CwBrnFA,yBACE,6BAnEA,SAAU,CADV,OxB6rFA,CwBznFA,kCAzDA,MAAO,CADP,UxBurFA,CACF,C2B9zFA,KAGE,eAAgB,CADhB,eAAgB,CADhB,c3Bk0FF,C2Bn0FA,kBAQI,aAAc,CADd,iB3Bq0FJ,C2B50FA,UAaM,iB3B+zFN,C2B9zFM,gCAGE,yBADA,oB3Bi0FR,C2B3zFI,mBACE,a3B6zFN,C2B3zFM,kDAKE,4BAA6B,CAH7B,cAEA,mBADA,oB3B+zFR,C2BtzFI,mDAGE,yBACA,oB3BwzFN,C2Bj2FA,kBFFE,yBAHA,UAAW,CACX,aACA,ezB02FF,C2Bv2FA,cA0DI,c3BgzFJ,C2BvyFA,UACE,4B3ByyFF,C2B1yFA,aAGI,UAAW,CAEX,kB3ByyFJ,C2B9yFA,eAWM,4BAA6B,CAC7B,0BAFA,uBADA,gB3B2yFN,C2BvyFM,qBACE,iC3ByyFR,C2BnyFM,8EAKE,sBAEA,gBAAgC,CAAhC,kCAAgC,CAJhC,cACA,c3BwyFR,C2BhyFE,wBAmFA,eAAgB,CA9BhB,U3B+uFF,C2BpyFE,2BAwDE,U3B+uFJ,C2BvyFE,6BA0DI,iBAAkB,CAClB,iB3BgvFN,C2B3yFE,iDAiEE,SAAU,CADV,Q3B+uFJ,C2B3uFE,oDAEI,kBAAmB,CACnB,Q3B6uFJ,C2BhvFA,6BAKM,e3B8uFN,CACF,C2BxzFE,6BAwFE,kBADA,c3BquFJ,C2B5zFE,kHA8FE,qB3BmuFJ,C2BhuFE,sDAEI,6BACA,yB3BkuFJ,C2BruFA,kHAQI,wB3BkuFJ,CACF,C2Bn0FA,cAEI,U3Bo0FJ,C2Bt0FA,gBAMM,iB3Bm0FN,C2Bz0FA,iBASM,e3Bm0FN,C2B9zFM,iFAIE,yBADA,U3Bi0FR,C2BxzFA,gBAEI,U3ByzFJ,C2B3zFA,mBAKM,aAAc,CADd,c3B2zFN,C2B9yFA,eACE,U3BgzFF,C2BjzFA,kBAII,U3BgzFJ,C2BpzFA,oBAMM,iBAAkB,CAClB,iB3BizFN,C2BxzFA,wCAaI,SAAU,CADV,Q3BgzFJ,C2B5yFE,2CAEI,kBAAmB,CACnB,Q3B8yFJ,C2BjzFA,oBAKM,e3B+yFN,CACF,C2BvyFA,oBACE,e3ByyFF,C2B1yFA,yBAMI,kBADA,c3ByyFJ,C2B9yFA,sGAYI,qB3BuyFJ,C2BpyFE,kDAEI,6BACA,yB3BsyFJ,C2BzyFA,sGAQI,wB3BsyFJ,CACF,C2B7xFA,uBAEI,Y3B8xFJ,C2BhyFA,qBAKI,a3B8xFJ,C2BrxFA,yBC3OE,yBACA,0BD4OA,e3BwxFF,C6B5/FA,QAIE,4BAA6B,CAD7B,mBADA,gBADA,iB7BigGF,C6Bz/FE,iCACE,iB7B4/FF,C6B/+FA,eACE,U7Bm/FF,CAJF,C6Bh+FA,iBAOE,gCAAiC,CAHjC,gCAAiC,CACjC,4CAFA,kBAAmB,CADnB,kBADA,kB7B4+FF,C6Bp+FE,oBACE,e7Bs+FJ,C6Bn+FE,0CAEE,YAAa,CACb,eAAgB,CAFhB,U7Bw+FF,C6Bp+FE,0BACE,uBAAyB,CACzB,qBAAuB,CAEvB,0BAA4B,CAD5B,gB7Bu+FJ,C6Bn+FE,oBACE,kB7Bq+FJ,C6Bh+FE,6GAIE,cAAe,CADf,e7Bm+FJ,CACF,C6B99FA,uCAaE,MAAO,CAFP,cAAe,CACf,OAAQ,CAER,Y7Bu9FF,C6Br+FA,yEAGI,gB7Bs+FJ,C6Bp+FI,qIACE,gB7Bw+FJ,CACF,C6B99FE,gEACE,e7Bk+FF,CACF,C6B/9FA,kBAEE,oBAAqB,CADrB,K7Bk+FF,C6B/9FA,qBAGE,oBAAqB,CAFrB,QAAS,CACT,e7Bk+FF,C6Bz9FA,wHAKI,kBADA,kB7B49FJ,C6Bz9FI,iJAEE,aAAc,CADd,c7Bg+FJ,CACF,C6Bn9FA,mBAEE,oBAAqB,CADrB,Y7Bs9FF,C6Bn9FE,4CACE,e7Bs9FF,CACF,C6Bh9FA,cACE,UAAW,CAGX,eAFA,YAGA,iBAFA,iB7Bo9FF,C6Bh9FE,wCAEE,oB7Bk9FJ,C6B39FA,kBAaI,a7Bi9FJ,C6B98FE,yBACE,wEAEE,iB7Bg9FJ,CACF,C6Bt8FA,eAME,4BAA6B,CAC7B,qBAAsB,CACtB,4BAA6B,CAC7B,kBAPA,WAAY,CC3LZ,mBD6LA,kBC9LA,gBD6LA,gBAAiB,CAFjB,iB7Bi9FF,C6Br8FE,qBACE,S7Bu8FJ,C6Br9FA,yBAsBI,iBAAkB,CAHlB,aAAc,CAEd,UAAW,CADX,U7Bu8FJ,C6B39FA,mCAyBI,c7Bq8FJ,C6Bl8FE,wCACE,Y7Bq8FF,CACF,C6B57FA,YACE,kB7B87FF,C6B/7FA,iBAMI,iBADA,mBAAoB,CADpB,gB7Bg8FJ,C6B37FE,0DAOI,4BAA6B,CAC7B,QAAS,CACT,eAAgB,CALhB,UAAW,CAEX,YAAa,CAHb,eAAgB,CAEhB,U7Bg8FJ,C6Br8FA,wFAYM,yB7B67FN,C6Bz8FA,sCAeM,gB7B67FN,C6B57FM,wFAEE,qB7B87FR,CACF,C6Bx7FE,qCACE,UAAW,CACX,Q7B27FF,C6B77FA,eAKI,U7B27FJ,C6Bh8FA,iBAQM,oBADA,gB7B67FN,CACF,C6Bj7FA,aAKE,mCAAoC,CADpC,gCAAiC,CzB3NjC,+EACQ,uE0BhER,kBDuRA,iB7B27FF,CkBrwFE,kDAGI,oBAAqB,CACrB,eAAgB,CAChB,qBlBswFJ,CkB3wFA,2BAUI,oBAAqB,CAErB,qBAAsB,CADtB,UlBqwFJ,CkBhxFA,kCAiBI,oBlBkwFJ,CkBnxFA,0BAqBI,oBAAqB,CACrB,qBlBiwFJ,CkBvxFA,gIA2BM,UlBiwFN,CkB5xFA,wCAiCI,UlB8vFJ,CkB/xFA,4BAqCI,eAAgB,CAChB,qBlB6vFJ,CkBnyFA,2CA6CI,oBAAqB,CAErB,eAAgB,CADhB,YAAa,CAEb,qBlB0vFJ,CkB1yFA,uDAmDM,clB2vFN,CkB9yFA,kFAyDI,aAAc,CADd,iBlB2vFJ,CkBnzFA,kDA8DI,KlBwvFJ,CACF,C6Bj+FI,kDACE,iB7Bo+FJ,C6Bl+FI,oCACE,e7Bo+FN,CACF,C6B59FE,sCAME,QAAS,CzBvPX,wBACQ,gByBqPN,aAAc,CADd,cAAe,CADf,gBAAiB,CADjB,aAAc,CADd,U7Bs+FF,CACF,C6Bz9FA,8BDnUE,yBACA,0BCmUA,Y7B69FF,C6Bz9FA,mDD/TE,4BADA,6BARA,2BACA,4BCwUA,e7B+9FF,C6Br9FA,YC/UE,mBADA,e9ByyGF,C6Bt9FE,mBClVA,mBADA,e9B6yGF,C6Bv9FE,mBCrVA,mBADA,e9BizGF,C6Bj9FA,aC/VE,mBADA,e9BqzGF,C6Bl9FE,sCACE,UAAW,CAEX,iBADA,iB7Bs9FF,C6Bv8FA,aEtWA,oB/BkzGA,C6B38FA,cE1WA,qBAAuB,CF4WrB,kB7B68FF,C6B/8FA,4BAKI,c7B68FJ,CAXF,C6Bx7FA,gBACE,sBACA,oB7Bs8FF,C6Bx8FA,8BAKI,a7Bs8FJ,C6Br8FI,wEAGE,6BADA,a7Bw8FN,C6Bh9FA,6BAcI,U7Bq8FJ,C6Bn9FA,iCAmBM,a7Bm8FN,C6Bj8FM,8EAGE,6BADA,a7Bo8FR,C6B/7FM,8HAIE,yBADA,a7Bk8FR,C6B77FM,oIAIE,6BADA,a7Bg8FR,C6Bx7FM,wHAIE,yBADA,a7B27FR,C6Bt7FI,+EAIM,a7Bs7FR,C6Br7FQ,wHAGE,6BADA,a7Bw7FV,C6Bn7FQ,6LAIE,yBADA,a7Bs7FV,C6Bj7FQ,mMAIE,6BADA,a7Bo7FV,CACF,C6BngGA,+BAuFI,iB7B+6FJ,C6B96FI,0EAEE,qB7Bg7FN,C6B1gGA,yCA6FM,qB7Bg7FN,C6B7gGA,8DAmGI,oB7B86FJ,C6BjhGA,6BA4GI,a7Bw6FJ,C6Bv6FI,mCACE,a7By6FN,C6BvhGA,0BAmHI,a7Bu6FJ,C6Bt6FI,gEAEE,a7Bw6FN,C6Bp6FM,0LAEE,a7Bw6FR,C6Bh6FA,gBACE,sBACA,oB7Bk6FF,C6Bp6FA,8BAKI,a7Bk6FJ,C6Bj6FI,wEAGE,6BADA,U7Bo6FN,C6B56FA,8DAmBM,a7B+5FN,C6B75FM,8EAGE,6BADA,U7Bg6FR,C6B35FM,8HAIE,yBADA,U7B85FR,C6Bz5FM,oIAIE,6BADA,U7B45FR,C6Br5FM,wHAIE,yBADA,U7Bw5FR,C6Bn5FI,2FAIM,oB7Bm5FR,C6Bv5FE,0DAOM,wB7Bm5FR,C6B15FE,sDAUM,a7Bm5FR,C6Bl5FQ,wHAGE,6BADA,U7Bq5FV,C6Bh5FQ,6LAIE,yBADA,U7Bm5FV,C6B94FQ,mMAIE,6BADA,U7Bi5FV,CACF,C6Br+FA,+BA6FI,iB7B24FJ,C6B14FI,0EAEE,qB7B44FN,C6B5+FA,yCAmGM,qB7B44FN,C6B/+FA,8DAyGI,oB7B04FJ,C6Bn/FA,6BA6GI,a7By4FJ,C6Bx4FI,mCACE,U7B04FN,C6Bz/FA,0BAoHI,a7Bw4FJ,C6Bv4FI,gEAEE,U7By4FN,C6Br4FM,0LAEE,U7By4FR,CgC/gHA,YAIE,yBACA,kBAFA,eAAgB,CADhB,mBADA,gBhCqhHF,CgCthHA,eAQI,oBhCihHJ,CgCzhHA,yBAYM,WACA,iBAFA,ahCmhHN,CgC9hHA,oBAkBI,ahC+gHJ,CiC9hHA,OAGE,4BAA6B,CAC7B,kBAFA,mBADA,YjCmiHF,CiCpiHA,UASI,aAAc,CADd,YjCgiHJ,CiCxiHA,mBAcI,ejC6hHJ,CiC3iHA,mBAoBI,ejC2hHJ,CiC/iHA,WAwBI,cjC0hHJ,CiCjhHA,sCAEE,kBjCmhHF,CiCrhHA,oDASI,aAAc,CAHd,iBAAkB,CAElB,WAAY,CADZ,QjCqhHJ,CiC3gHA,eCtDE,yBACA,qBAFA,UlCukHF,CiChhHA,kBClDI,wBlCqkHJ,CiCnhHA,2BC9CI,alCokHJ,CiClhHA,YC1DE,yBACA,qBAFA,UlCklHF,CiCvhHA,eCtDI,wBlCglHJ,CiC1hHA,wBClDI,alC+kHJ,CiCzhHA,eC9DE,yBACA,qBAFA,UlC6lHF,CiC9hHA,kBC1DI,wBlC2lHJ,CiCjiHA,2BCtDI,alC0lHJ,CiChiHA,cClEE,yBACA,qBAFA,UlCwmHF,CiCriHA,iBC9DI,wBlCsmHJ,CiCxiHA,0BC1DI,alCqmHJ,CmC7mHA,OAUE,oBAJA,WALA,cAAe,CAEf,aAAc,CACd,eAAgB,CAChB,aAAc,CAHd,uBAKA,iBAAkB,CAElB,uBAAwB,CADxB,kBnCinHF,CmC3mHI,4BAEE,WAEA,cAAe,CADf,oBnC8mHN,CmCxmHE,aACE,YnC0mHJ,CmCtmHE,YACE,iBAAkB,CAClB,QnCwmHJ,CmCjmHA,eCtCE,wBpC0oHF,CoCvoHI,sDAEE,wBpCyoHN,CmCpmHA,eC1CE,wBpCipHF,CoC9oHI,sDAEE,wBpCgpHN,CmCvmHA,eC9CE,wBpCwpHF,CoCrpHI,sDAEE,wBpCupHN,CmC1mHA,YClDE,wBpC+pHF,CoC5pHI,gDAEE,wBpC8pHN,CmC7mHA,eCtDE,wBpCsqHF,CoCnqHI,sDAEE,wBpCqqHN,CmChnHA,cC1DE,wBpC6qHF,CoC1qHI,oDAEE,wBpC4qHN,CqCzqHA,wCACE,GAAQ,0BrC4qHR,CqC3qHA,GAAQ,uBrC8qHR,CACF,CqC3qHA,gCACE,GAAQ,0BrC8qHR,CqC7qHA,GAAQ,uBrCgrHR,CACF,CqCzqHA,UAIE,yBACA,kBjCsCA,kDACQ,0CiC3CR,YACA,mBACA,erC+qHF,CqCxqHA,cAQE,yBjCyBA,kDACQ,0CiC5BR,WALA,UAAW,CAGX,eADA,WAAY,CAEZ,iBAEA,iBAAkB,CjCoJlB,kCACK,6BACG,0BiC3JR,OrCqrHF,CqCrqHA,sDCDI,8KACA,+KACA,sKDEF,yBrCyqHF,CqClqHA,oDjC5CE,0DACK,qDACG,iDJktHV,CqC/pHA,sBEvEE,wBvCyuHF,CuCtuHE,wCDgDE,8KACA,+KACA,qKtCyrHJ,CqCnqHA,mBE3EE,wBvCivHF,CuC9uHE,qCDgDE,8KACA,+KACA,qKtCisHJ,CqCvqHA,sBE/EE,wBvCyvHF,CuCtvHE,wCDgDE,8KACA,+KACA,qKtCysHJ,CqC3qHA,qBEnFE,wBvCiwHF,CuC9vHE,uCDgDE,8KACA,+KACA,qKtCitHJ,CwClwHA,+BAGE,oBAAqB,CADrB,iBAAkB,CAElB,qBxCowHF,CwCxwHA,yCAOI,UAAW,CADX,iBxCuwHJ,CwCpwHI,wNAIE,SxC0wHN,CwCpwHA,4GAKI,gBxCqwHJ,CwChwHA,aACE,gBxCkwHF,CwCnwHA,oEAOI,UxCiwHJ,CwCxwHA,oEAYI,exCiwHJ,CwC7vHA,yEACE,exC+vHF,CwC3vHA,4BACE,axC6vHF,CwC5vHE,mEZnDA,6BADA,yB5BozHF,CwC3vHA,2FZhDE,4BADA,wB5BizHF,CwC1vHA,sBACE,UxC4vHF,CwC1vHA,8DACE,exC4vHF,CwC1vHA,uIZpEE,6BADA,yB5Bo0HF,CwCzvHA,oEZlEE,4BADA,wB5Bg0HF,CwCxvHA,oEAEE,SxC0vHF,CwCzuHA,iCAEE,gBAAiB,CADjB,iBxC4uHF,CwCzuHA,oCAEE,iBAAkB,CADlB,kBxC4uHF,CwCtuHA,iCpC/CE,oDACQ,2CJwxHV,CwCtuHE,0CpCnDA,wBACQ,eJ4xHV,CwCnuHA,YACE,axCquHF,CwCluHA,eAEE,sBxCouHF,CwCjuHA,uBACE,sBxCmuHF,CwC5tHA,4FAII,aAAc,CACd,UAAW,CAEX,cAAe,CADf,UxC8tHJ,CwCpuHA,oCAcM,UxCytHN,CwCvuHA,gJAuBI,aAAc,CADd,exCwtHJ,CwCltHE,4DACE,exCotHJ,CwCltHE,sDZpKA,4BADA,6BARA,2BACA,2B5Bo4HF,CwCptHE,sDZxKA,8BADA,+BARA,yBACA,yB5B04HF,CwCrtHA,uEACE,exCutHF,CwCrtHA,yJZhLE,4BADA,4B5B24HF,CwCptHA,6EZ/LE,yBACA,yB5Bs5HF,CwChtHA,qBAIE,wBAAyB,CAHzB,aAAc,CAEd,kBAAmB,CADnB,UxCotHF,CwCttHA,0DAOI,kBAAmB,CACnB,UAAW,CACX,QxCmtHJ,CwC5tHA,qCAYI,UxCmtHJ,CwC/tHA,+CAgBI,SxCktHJ,CwCjsHA,gNAMM,kBAAsB,CACtB,mBAAoB,CAFpB,iBxCosHN,CyC56HA,aAGE,wBAAyB,CADzB,aAAc,CADd,iBzCg7HF,CyC36HE,0BACE,UAAW,CAEX,cAAe,CADf,ezC86HJ,CyCt7HA,2BAqBI,UAAW,CAGX,eAAgB,CAThB,iBAAkB,CAQlB,UAAW,CAPX,SzC66HJ,CyCn6HI,iCACE,SzCq6HN,CyC35HA,uGtB4BE,kBAFA,eAFA,YAGA,sBAFA,iBnB24HF,CmBt4HE,yHACE,YACA,gBnB04HJ,CmBv4HE,sRAEE,WnB64HJ,CyC76HA,uGtBuBE,kBAFA,eAFA,YAGA,gBAFA,gBnBk6HF,CmB75HE,yHACE,YACA,gBnBi6HJ,CmB95HE,sRAEE,WnBo6HJ,CyC37HA,+DAGE,kBzC67HF,CyC37HE,wKACE,ezC+7HJ,CyC37HA,oCAIE,qBAAsB,CADtB,kBAAmB,CADnB,QzC+7HF,CyCx7HA,mBAOE,yBACA,yBACA,kBAJA,cAHA,eACA,eAAgB,CAChB,aAAc,CAHd,iBAKA,iBzC67HF,CyCv7HE,4BAGE,kBADA,eADA,gBzC27HJ,CyCv7HE,4BAGE,kBADA,eADA,iBzC27HJ,CyC78HA,6EA0BI,YzCu7HJ,CyCl7HA,wUbrGE,6BADA,yB5BkiIF,CyCn7HA,+BACE,czCq7HF,CyCn7HA,iTbzGE,4BADA,wB5BuiIF,CyCp7HA,8BACE,azCs7HF,CyCj7HA,iBAIE,WAAY,CACZ,kBzCi7HF,CyCt7HA,uCACE,iBzCw7HF,CyCz7HA,2BAYM,gBzCg7HN,CyC76HI,qFAGE,SzC+6HN,CyC16HE,0EAGI,iBzC26HN,CyCx6HE,wEAII,gBAAiB,CADjB,SzC06HN,C0CllIA,OAEE,e1CmlIF,C0CjlIE,mBACE,Y1CmlIJ,C0C/kIA,mBAGE,MAAO,CADP,e1CklIF,C0C9kIA,YACE,a1CglIF,C0C7kIA,cACE,a1C+kIF,C0C5kIE,4BACE,c1C8kIJ,C0C1kIA,gCAEE,iB1C4kIF,C0CzkIA,8BAEE,kB1C2kIF,C0CxkIA,qCAGE,kBAAmB,CACnB,kB1C0kIF,C0CvkIA,cACE,qB1CykIF,C0CtkIA,cACE,qB1CwkIF,C0CpkIA,eAEE,iBAAkB,CADlB,Y1CukIF,C0ChkIA,YAEE,eAAgB,CADhB,c1CmkIF,C2CvnIA,YAGE,kBAAmB,CADnB,c3CynIF,C2ChnIA,iBAME,sBACA,yBALA,aAAc,CAGd,kBAAmB,CAFnB,iBAAkB,CAFlB,iB3CunIF,C2C9mIE,6Bf7BA,2BACA,2B5B8oIF,C2C/mIE,4BfvBA,8BADA,+BeyBE,e3CmnIJ,C2C9mIE,0FAKE,yBAFA,cACA,kB3CinIJ,C2CrnIE,qKASI,a3CinIN,C2C1nIE,4JAYI,a3CmnIN,C2C9mIE,oFAKE,sBACA,qBAFA,cADA,S3CmnIJ,C2CtnIE,ogBAYI,a3CqnIN,C2CjoIE,sJAeI,U3CunIN,C2C5mIA,yCAEE,a3C8mIF,C2ChnIA,2FAKI,U3C+mIJ,C2C3mIE,0GAIE,sBAFA,cACA,oB3CgnIJ,C2C3mIA,uBAEE,eAAgB,CADhB,U3C8mIF,CcptIC,yB8BKG,yBADA,a5CotIJ,C4CjtII,yDAEE,a5CmtIN,C4CrtII,2GAKI,a5CotIR,C4CjtIM,0IAGE,yBADA,a5CstIR,C4CntIM,6OAIE,yBACA,qBAFA,U5C0tIR,CcjvIC,sB8BKG,yBADA,a5CivIJ,C4C9uII,mDAEE,a5CgvIN,C4ClvII,qGAKI,a5CivIR,C4C9uIM,8HAGE,yBADA,a5CmvIR,C4ChvIM,2NAIE,yBACA,qBAFA,U5CuvIR,Cc9wIC,yB8BKG,yBADA,a5C8wIJ,C4C3wII,yDAEE,a5C6wIN,C4C/wII,2GAKI,a5C8wIR,C4C3wIM,0IAGE,yBADA,a5CgxIR,C4C7wIM,6OAIE,yBACA,qBAFA,U5CoxIR,Cc3yIC,wB8BKG,yBADA,a5C2yIJ,C4CxyII,uDAEE,a5C0yIN,C4C5yII,yGAKI,a5C2yIR,C4CxyIM,sIAGE,yBADA,a5C6yIR,C4C1yIM,uOAIE,yBACA,qBAFA,U5CizIR,C2C9sIA,yBAEE,iBAAkB,CADlB,Y3CitIF,C2C9sIA,sBAEE,eAAgB,CADhB,e3CitIF,C6Cx0IA,OAEE,sBACA,4BAA6B,CzC2D7B,6CACQ,qCyC9DR,kB7C+0IF,C6Cv0IA,YACE,Y7Cy0IF,C6Cp0IA,eAEE,mCAAoC,CjBtBpC,2BACA,4BiBoBA,iB7Cy0IF,C6C/zIA,uDALI,a7C60IJ,C6Cx0IA,aAGE,eADA,eAAgB,CADhB,Y7Cu0IF,C6Cx0IA,iGAWI,a7Co0IJ,C6C/zIA,cAEE,sBjBxCA,8BADA,+BiB0CA,6BAFA,iB7Cq0IF,C6CzzIA,sDAGI,e7C0zIJ,C6C7zIA,wFAOM,eAAgB,CADhB,kB7C4zIN,C6CvzII,wIAEI,YAAa,CjBzEnB,2BACA,2B5Bm4IF,C6CrzII,oIAEI,eAAgB,CjBxEtB,8BADA,8B5Bk4IF,C6C90IA,+EjB5DE,yBACA,yB5B64IF,C6C5yIA,kFACE,kB7CizIF,C6CzyIA,4EAII,e7C0yIJ,C6C9yIA,oGAQM,kBADA,kB7C6yIN,C6CpzIA,0XAmBQ,2BACA,2B7C4yIR,C6Ch0IA,wsBAwBU,0B7CkzIV,C6C10IA,gsBA4BU,2B7CwzIV,C6Cp1IA,yWA0CQ,8BADA,8B7CuzIR,C6Ch2IA,4qBA8CU,6B7C4zIV,C6C12IA,oqBAkDU,8B7Ck0IV,C6Cp3IA,8HA2DI,yB7C+zIJ,C6C13IA,oGA+DI,Y7C+zIJ,C6C93IA,gEAmEI,Q7C+zIJ,C6Cl4IA,gqBA0EU,a7Cs0IV,C6Ch5IA,opBA8EU,c7Cg1IV,C6C95IA,w3BAgGU,e7Ck1IV,C6Cl7IA,yBAuGI,QAAS,CADT,e7Cg1IJ,C6Cr0IA,aACE,kB7Cu0IF,C6Cx0IA,oBAMI,kBADA,e7Cu0IJ,C6C50IA,2BASM,c7Cs0IN,C6C/0IA,4BAcI,e7Co0IJ,C6Cl1IA,gHAkBM,4B7Co0IN,C6Ct1IA,2BAuBI,Y7Ck0IJ,C6Cz1IA,uDAyBM,+B7Cm0IN,C6C5zIA,eC5PE,iB9C2jJF,C8CzjJE,8BAEE,sBACA,kBAFA,a9C6jJJ,C8C9jJE,0DAMI,qB9C2jJN,C8CjkJE,qCAUI,yBADA,U9C4jJN,C8CxjJE,yDAEI,wB9CyjJN,C6C30IA,eC/PE,oB9C6kJF,C8C3kJE,8BAEE,yBACA,qBAFA,U9C+kJJ,C8ChlJE,0DAMI,wB9C6kJN,C8CnlJE,qCAUI,sBADA,a9C8kJN,C8C1kJE,yDAEI,2B9C2kJN,C6C11IA,eClQE,oB9C+lJF,C8C7lJE,8BAEE,yBACA,qBAFA,a9CimJJ,C8ClmJE,0DAMI,wB9C+lJN,C8CrmJE,qCAUI,yBADA,a9CgmJN,C8C5lJE,yDAEI,2B9C6lJN,C6Cz2IA,YCrQE,oB9CinJF,C8C/mJE,2BAEE,yBACA,qBAFA,a9CmnJJ,C8CpnJE,uDAMI,wB9CinJN,C8CvnJE,kCAUI,yBADA,a9CknJN,C8C9mJE,sDAEI,2B9C+mJN,C6Cx3IA,eCxQE,oB9CmoJF,C8CjoJE,8BAEE,yBACA,qBAFA,a9CqoJJ,C8CtoJE,0DAMI,wB9CmoJN,C8CzoJE,qCAUI,yBADA,a9CooJN,C8ChoJE,yDAEI,2B9CioJN,C6Cv4IA,cC3QE,oB9CqpJF,C8CnpJE,6BAEE,yBACA,qBAFA,a9CupJJ,C8CxpJE,yDAMI,wB9CqpJN,C8C3pJE,oCAUI,yBADA,a9CspJN,C8ClpJE,wDAEI,2B9CmpJN,C+ClqJA,OAIE,eAAgB,CAFhB,cADA,cAAe,CAEf,iB/CqqJF,C+CxqJA,UAOI,c/CoqJJ,C+C3qJA,2BAYM,sBACA,sBACA,mBAJA,oBAAqB,CACrB,gB/CwqJN,C+CnrJA,oCAoBM,yBADA,oB/CqqJN,C+CxrJA,iCA2BM,W/CiqJN,C+C5rJA,yCAkCM,U/C8pJN,C+ChsJA,2FA6CM,sBAFA,cACA,kB/C4pJN,CgD1sJA,YAIE,kBAHA,oBAAqB,CAErB,cADA,chD8sJF,CgDhtJA,eAOI,chD4sJJ,CgDntJA,qCAiBM,sBACA,sBAHA,cAJA,UAAW,CAGX,uBADA,gBAAiB,CADjB,iBAFA,iBAAkB,CAMlB,oBhD+sJN,CgD3sJM,kGAIE,yBACA,kBAFA,cADA,ShDktJR,CgD5sJI,6DpBfF,8BADA,2BoBmBM,ahD+sJR,CgD3sJI,2DpB9BF,+BADA,2B5B+uJF,CgDtsJI,qKAME,yBACA,qBAHA,WACA,cAAe,CAFf,ShD+sJN,CgD/vJA,iLAiEM,sBACA,kBAHA,cACA,kBhD0sJN,CgD/rJA,2CCvEM,eACA,sBAFA,iBjD6wJN,CiDzwJI,mErBMF,8BADA,0B5BywJF,CiDxwJI,iErBRF,+BADA,2B5BsxJF,CgD1sJA,2CC5EM,eACA,gBAFA,gBjD6xJN,CiDzxJI,mErBMF,8BADA,0B5ByxJF,CiDxxJI,iErBRF,+BADA,2B5BsyJF,CkDzyJA,kBAEE,aAAc,CACd,QA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AU,2B1DmrKV,C0DlrKA,4BACU,4B1DqrKV,Cc9mKA,kBACE,uBdknKF,Cc9mKA,mBACE,wBdknKF,Cc9mKA,yBACE,8BdknKF,CAdF,Cc/lKE,4D4C3FA,uB1D6sKA,C0D5sKA,iBAAU,uB1D+sKV,C0D9sKA,cAAU,2B1DitKV,C0DhtKA,4BACU,4B1DmtKV,CcvnKA,kBACE,uBd2nKF,CcvnKA,mBACE,wBd2nKF,CcvnKA,yBACE,8Bd2nKF,CAdF,CcxmKE,sC4ChHA,uB1D2uKA,C0D1uKA,iBAAU,uB1D6uKV,C0D5uKA,cAAU,2B1D+uKV,C0D9uKA,4BACU,4B1DivKV,CchoKA,kBACE,uBdooKF,CchoKA,mBACE,wBdooKF,CchoKA,yBACE,8BdooKF,CAdF,CcjnKE,oC4C7HA,sB1DiwKA,CACF,CchoKE,0D4ClIA,sB1DswKA,CACF,CchoKE,2D4CvIA,sB1D2wKA,CACF,CchoKE,qC4C5IA,sB1DgxKA,CACF,Cc1nKA,e4CvJE,sB1DoxKF,Cc1nKE,4B4ClKA,uB1DgyKA,C0D/xKA,oBAAU,uB1DkyKV,C0DjyKA,iBAAU,2B1DoyKV,C0DnyKA,kCACU,4B1DsyKV,CACF,CcroKA,qBACE,sBduoKF,CcroKE,kCACE,uBdwoKF,CACF,CctoKA,sBACE,sBdwoKF,CctoKE,mCACE,wBdyoKF,CACF,CcvoKA,4BACE,sBdyoKF,CcvoKE,yCACE,8Bd0oKF,CcroKA,c4CrLA,sB1D+zKA,CAJF,C2Dj0KA,oCACE,UAEE,iB3Dw0KF,CACF,C2Dp0KA,oCACE,kBACE,sB3Ds0KF,CACF,C2Dn0KA,0DACE,eACE,yB3Dq0KF,C2Dl0KA,kBACE,sB3Do0KF,C2Dj0KA,oBACE,0B3Dm0KF,C2Dh0KA,sBACE,wB3Dk0KF,CACF,C2D/zKA,oCACE,eACE,yB3Di0KF,C2D9zKA,oBACE,0B3Dg0KF,CACF,C4Dx2KA,UACE,aAAc,CACd,c5D02KF,C4Dv2KA,kBACE,kBAAmB,CACnB,YAAa,CACb,M5Dy2KF,C4Dt2KA,oCACE,e5Dw2KF,C4Dr2KA,cACE,MAAO,CACP,c5Du2KF,C4Dp2KA,oCACE,UAEE,kBAAmB,CADnB,Y5Du2KF,C4Dn2KA,oCACE,Q5Dq2KF,C4Dl2KA,gCAIE,kBAAmB,CAFnB,M5Dq2KF,C4Dh2KA,8FAEE,M5Dk2KF,CACF,C4D/1KA,qBACE,gB5Di2KF,C6D74KA,cACE,yBAMA,MAAS,CALT,eAGA,cAAe,CACf,SAAU,CAKV,uBAA0B,CAR1B,UAAW,CAMX,Y7D84KF,C6D14KE,mBAEE,WAAY,CADZ,K7D64KJ,C6D35KA,gBAqBI,cAFA,a7D44KJ,C6Dt4KE,kDACE,iB7Dy4KF,C6D14KA,mBAMI,eAFA,iB7D04KJ,CACF,C8Dx6KA,iBAOE,eAIA,mBAAoB,CAVpB,cAAe,CAKf,iBAAkB,CAJlB,SAAU,CAOV,uBAA0B,CAN1B,UAAW,CACX,Y9D86KF,C8Dr6KE,oBACE,KAAQ,CACR,uB9Du6KJ,C8Dt7KA,mBAoBI,0BADA,oBAAqB,CAErB,QAAW,CAEX,kB9Dq6KJ,C+D57KA,mBAQE,kCALA,WAAY,CAEZ,MAAS,CAIT,iBAAkB,CARlB,cAAe,CAGf,KAAQ,CAFR,UAAW,CAIX,Y/Dg8KF,C+Dt8KA,8BAYI,gBACA,iB/D67KJ,C+Dz7KA,mBAME,2BAA4B,CAL5B,sBACA,sBACA,gCACA,kB3D6CA,4CACQ,oC2D3CR,SAAU,CAEV,iB/D27KF,C+Dx7KA,kBAGE,gCAFA,c/D27KF,C+D57KA,qBAMI,Y/Dy7KJ,C+D/7KA,oBAUI,QAAS,CACT,S/Dw7KJ,C+Dp7KA,gBACE,c/Ds7KF,C+Dv7KA,uBAII,QAAS,CACT,S/Ds7KJ,C+Dl7KA,kBTgDE,6BS7CA,eT4CA,gBtDy4KF,C+Dx7KA,4BTqDI,eAAgB,CAChB,etDs4KJ,C+D57KA,uCT0DI,gBtDq4KJ,C+D/7KA,wCT8DI,atDo4KJ,C+D37KA,+BACE,e/D67KF,CgE1/KA,QAEE,WAAY,CACZ,iBAAkB,CAFlB,UhE8/KF,CgE1/KE,sBACE,ahE4/KJ,CgEx/KA,uBAQE,4CAA6C,CAC7C,+CAAgD,CAChD,gDAAiD,CACjD,oDAAqD,CACrD,iDAAkD,CALlD,gCAA+B,CAF/B,iBAAkB,CAElB,kBAA+B,CAA/B,gBAA+B,CAL/B,WAAY,CACZ,aAAc,CAFd,UhEqgLF,CgEv/KA,wBACE,GAEE,uBhEw/KF,CACF,CgEr/KA,2BACE,GACE,0BAA4B,CAC5B,uBhEu/KF,CACF,CgEp/KA,4BACE,GACE,2BAA6B,CAC7B,uBhEs/KF,CACF,CgEn/KA,gCACE,GACE,+BAAiC,CACjC,uBhEq/KF,CACF,CgEl/KA,6BACE,GACE,4BAA8B,CAC9B,uBhEo/KF,CACF,CiE5iLA,QACE,ejE8iLF,CiE1iLA,mCAMI,eAFA,oBADA,gBjE4iLJ,CiEviLI,qCACE,oBAAqB,CACrB,qBjEyiLN,CiEnjLA,uCAcM,YACA,gBjEwiLN,CiEvjLA,sCAoBI,gBjEsiLJ,CiE1jLA,kCA+BI,cAPA,aAAc,CACd,YAGA,kBACA,iBjEsiLJ,CiEliLI,gFAGE,6BADA,ajEqiLN,CiExkLA,iDA2CM,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CAJjB,UjEsiLN,CiE9kLA,yCAgDM,yBAMA,aAAc,CALd,iBAAkB,CAGlB,SAAU,CADV,OjEkiLN,CiE1hLI,oIAGE,yBAEA,ajE2hLN,CiE3lLA,+DAuEI,WjEwhLJ,CiE/lLA,uFA0EM,gBjEyhLN,CiEnmLA,gDAgFI,YjEshLJ,CiEtmLA,oDAoFM,YADA,UjEuhLN,CiEhhLA,8BACE,wBAAyB,CACzB,aAAc,CACd,QAAW,CACX,kBAAmB,CACnB,UjEkhLF,CiEhhLE,iCACE,kBAAmB,CACnB,UjEkhLJ,CiE/gLE,2EAEE,eAAgB,CAChB,WAAY,CAOZ,cANA,aAAc,CAEd,mBAAoB,CADpB,gBAAiB,CAMjB,iBAAkB,CAHlB,UjEkhLJ,CiE7gLI,uQAIE,yBADA,ajEmhLN,CiE/gLI,mFAEE,YADA,UjEmhLN,CiE9gLE,wCACE,oBjEghLJ,CiE7gLE,kDACE,eACA,gBjE+gLJ,CiE1gLA,yBACE,sBACE,ejE4gLF,CACF,CiExgLA,mCACE,YjE0gLF,CiEvgLA,yBACE,qCACE,YjEygLF,CiEtgLA,mCACE,ajEwgLF,CACF,CkE1qLE,2BAKE,UAAW,CAKX,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CATjB,2BAEA,iBAAkB,CAGlB,UlE6qLJ,CkErrLA,mBAgBI,iBAAkB,CAClB,OlEwqLJ,CkEpqLA,gBAEE,kBAAmB,CADnB,YAAa,CAEb,gBlEsqLF,CkEzqLA,+BAMI,gBlEsqLJ,CkEnqLE,6DAGE,yBACA,alEqqLJ,CkElqLE,mEAGE,yBACA,alEoqLJ,CkE/pLE,0KAME,yBACA,UlEiqLJ,CkE7pLA,0BAEI,kBlE8pLJ,CkEhqLA,oBAOI,mBADA,kBlE8pLJ,CkEpqLA,kBAYI,mBADA,iBlE6pLJ,CmEnuLA,aACE,aAAc,CAGd,mBADA,SnEquLF,CmEjuLA,kBACE,oBAAqB,CAIrB,eAAgB,CAFhB,mBADA,kBAEA,SnEouLF,CmEhuLA,oBAEE,kBAAmB,CADnB,YAAa,CAEb,oBnEkuLF,CmEhuLE,gDAEE,anEkuLJ,CmE/tLE,oDAEE,anEiuLJ,CmEnuLE,kGAKI,yBnEkuLN,CmE9tLE,2BACE,anEguLJ,CmE5tLA,iCACE,gBnE8tLF,CoEpwLA,WACE,0BAA6B,CAC7B,iBAAkB,CAClB,eAAgB,CAChB,4CACA,uOpEuwLF,CoEjwLA,eAYE,gBAAiB,CAKjB,kCAAmC,CAKnC,iCAAkC,CAGlC,4BAA6B,CAX7B,aAAc,CAVd,oBAAqB,CAHrB,0BAA6B,CAE7B,iBAAkB,CADlB,eAAmB,CAInB,UAAW,CAIX,qBAAsB,CAHtB,aAAc,CACd,iBAAkB,CAWlB,iCAAkC,CAVlC,mBAAoB,CAEpB,qBAAsB,CAEtB,kBAAmB,CARnB,SpEoxLF,CqEnyLA,eACE,mBACA,gCACA,aAAc,CACd,gBrEqyLF,CqEzyLA,0BAOI,gBrEqyLJ,CqE5yLA,iBAYI,eAAkB,CADlB,arEqyLJ,CqE7xLA,oCACE,eACE,iBrE+xLF,CqEhyLA,6BAII,WrE+xLJ,CqEnyLA,4CAOM,erE+xLN,CACF,CqEzxLA,oCACE,2BAGI,oBADA,gBrE2xLJ,CqE7xLA,6BAOI,UAAW,CAEX,QAAS,CADT,iBrE0xLJ,CqElyLA,4CAYM,crEyxLN,CqEryLA,6BAiBI,iBACA,erEuxLJ,CqEzyLA,+BAqBM,erEuxLN,CqE5yLA,mCA0BM,eAAkB,CADlB,YrEuxLN,CACF,CqEhxLA,cACE,crEkxLF,CqEnxLA,sBAKI,YACA,iBAAkB,CAFlB,UrEoxLJ,CqExxLA,qCAWI,YADA,UrEkxLJ,CqE5wLA,wBACE,erE8wLF,CqE1wLA,kBACE,kBrE4wLF,CqEzwLA,oDACE,erE2wLF,CqEvwLA,+BAEI,QrEwwLJ,CqE1wLA,+BAMI,arEuwLJ,CsE/2LA,mDAIE,qBACA,uBAHA,WADA,OtEo3LF,CsE52LA,0BACE,eACA,iBtE82LF,CsEh3LA,wCAOI,eACA,iBAHA,kBtEg3LJ,CsEr3LA,wCAYI,kBtE42LJ,CsEv2LA,8BACE,eACA,iBtEy2LF,CsE32LA,4CAOI,eACA,iBAHA,kBtE22LJ,CuE14LA,gCAEE,sBAAuB,CACvB,wBvE44LF,CuE/4LA,8DAUI,UAAW,CAKX,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CATjB,sBAAiB,CAEjB,iBAAkB,CAGlB,UvE84LJ,CuEt4LA,oCACE,gBAEE,aAAc,CADd,UvEy4LF,CuE14LA,+BAKI,UAAW,CACX,cvEw4LJ,CuE94LA,0BAUI,aAAc,CAEd,gBAAiB,CAEjB,eAAgB,CAChB,kBvEq4LJ,CACF,CuEh4LA,yBAGE,YAAa,CAFb,iBAAkB,CAClB,WvEm4LF,CuE93LA,aACE,iBvEg4LF,CuEj4LA,2BAII,kBvEg4LJ,CuEp4LA,4BAYI,cACA,cAAe,CACf,gBAAiB,CAEjB,mBAAoB,CARpB,iBAAkB,CAElB,SAAU,CADV,OvEo4LJ,CwE77LE,sIAOE,iBxE87LJ,CwEr8LE,sLAWI,WAAY,CACZ,gBxEk8LN,CwEh8LM,8MAEE,WAAY,CADZ,UxEw8LR,CwEl8LE,yCAEE,4BADA,wBxEq8LJ,CwE76LE,yMAEE,yBADA,qBxEg8LJ,CwE17LA,oBAGE,UAAW,CAFX,gBAAiB,CACjB,iBxE67LF,CwEx7LA,yBAME,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CANjB,gBAAiB,CAEjB,UxE47LF,CwEr7LA,oBACE,gBxEu7LF,CwEp7LA,yBACE,iBxEs7LF,CwEl7LA,oBACE,cAAiB,CACjB,exEo7LF,CyEtgMA,0FAKE,WAAY,CACZ,UAAW,CAKX,cAPA,aAAc,CAGd,UAAW,CAKX,eAAmB,CACnB,uBALA,gBAAiB,CAMjB,eAAgB,CAChB,kBAAmB,CANnB,UzE6gMF,CyE7/LE,0VANE,yBAEA,cACA,oBzEohMJ,CyE1gME,8HACE,uBzE+gMJ,CyEhjMA,sJA0CI,UAAW,CAEX,cAAe,CALf,uBAEA,iBzEihMJ,CyE1jMA,sHAgDI,WAAY,CAEZ,iBAAkB,CAClB,OzE+gMJ,CyE1gMA,YACE,cACA,SzE4gMF,CyEzgMA,eAIE,eAAgB,CAHhB,sBACA,SzE4gMF,CyEtgMA,eACE,ezEwgMF,CyEpgMA,gCACE,gBzEsgMF,CyElgMA,iCAEE,oBzEogMF,CyEtgMA,sCAKI,YzEogMJ,CyE//LA,iBACE,iBzEigMF,CyE9/LA,sEAEE,WAAY,CACZ,eAAgB,CAEhB,aAAc,CACd,QAAW,CACX,UzE+/LF,CyE3/LA,8BACE,iBzE6/LF,CyE9/LA,mCAII,QzE6/LJ,CyEx/LA,uBACE,WzE0/LF,CyEv/LA,gCAGE,eAFA,gBzE0/LF,CyE3/LA,uCAMI,ezEw/LJ,CyEj/LE,oEACE,WzEo/LF,CACF,CyEj/LA,6CAEE,oBAAqB,CADrB,kBzEo/LF,CyE/+LA,oCACE,+BAEE,WAAY,CADZ,eAAkB,CAalB,QAAW,CrE3Fb,oCACQ,4BqEqFN,UAAW,CAOX,QAAW,CAZX,gBAAiB,CACjB,eAAgB,CAchB,iBANA,cAAe,CAHf,QAAS,CACT,UzEo/LF,CyE//LA,kCA0BI,UAAW,CAJX,UAAW,CAEX,QzE4+LJ,CyEx+LI,2EAKE,gCAFA,oBADA,gBzE4+LN,CACF,C0E7pMA,gBACE,mBAAqB,CACrB,sB1E+pMF,C0E5pMA,oKAME,U1E8pMF,C0E3pMA,sLAME,yBACA,a1E6pMF,C2EnrMA,cAME,QAAS,CAFT,WAGA,S3EmrMF,C2E1rMA,+BAEE,kBAAmB,CADnB,Y3EmsMF,C2EpsMA,iBAiBI,kBAGA,cAAe,CALf,YAHA,sBAAuB,CAMvB,oBAAqB,CAJrB,U3EsrMJ,C2EpsMA,oBAwBI,iB3E+qMJ,C2EvsMA,6BA4BI,eACA,gB3E8qMJ,C2E1qMA,6BAEE,mBADA,a3E6qMF,C2EzqMA,4BAEE,mBADA,a3E4qMF,C2ExqMA,sBAEE,mBADA,a3E2qMF,C2EvqMA,kBAEE,mBADA,a3E0qMF,C2EtqMA,wBAEE,mBADA,U3EyqMF,C2ErqMA,oBAEE,mBADA,a3EwqMF,C2EpqMA,oBAEE,mBADA,U3EuqMF,C4EvuMA,iBAEE,kBAAmB,CAEnB,cAHA,YAAa,CAIb,eACA,e5EwuMF,C4E9uMA,gCASI,mBACA,8B5EwuMJ,C6ElvMA,kBAEE,kBAAmB,CADnB,Y7EqvMF,C6EjvMA,wBACE,MAAO,CACP,iB7EmvMF,C6ErvMA,4BAKI,iB7EmvMJ,C6E/uMA,uBACE,MAAO,CAGP,eAAgB,CAChB,sBAAuB,CAFvB,kB7EkvMF,C8E9vMA,sDAIE,SAAU,CAHV,QAAW,CACX,aAAgB,CAGhB,OAAU,CAFV,W9EkwMF,C8E5vMA,qCACE,QAAW,CACX,Y9E8vMF,C8E1vMA,2BACE,iB9E4vMF,C8ExvMA,wBACE,U9E0vMF,C8E3vMA,2BAII,QAAW,CAEX,eAAgB,CAChB,sBAAuB,CAFvB,kB9E4vMJ,C8EjwMA,8BAWI,aAAc,CAEd,c9EyvMJ,C+E1xMA,aAEE,e/E4xMF,C+ExxMA,+BACE,c/E0xMF,C+EtxMA,gBACE,QAAS,CAET,wB/EuxMF,CgFxyMA,gBACE,gBhF0yMF,CiFxyMA,oCACE,oBACE,iBjF0yMF,CiF3yMA,kCAII,WjF0yMJ,CiF9yMA,iDAOM,ejF0yMN,CACF,CiFpyMA,oCACE,oBAEE,sBjFsyMF,CiFxyMA,kCAKI,UjFsyMJ,CiF3yMA,iDAQM,cjFsyMN,CiF9yMA,kCAaI,iBACA,ejFoyMJ,CiFlzMA,wCAiBM,ejFoyMN,CiFrzMA,8CAqBM,iBjFmyMN,CACF,CiF7xMA,oBACE,SAAY,CAEZ,iBjF8xMF,CkF70MA,eAEE,mBADA,elFg1MF,CkFj1MA,+BAMI,gBlF+0MJ,CkF10MA,gDAEE,UAAW,CAEX,eAHA,iBlF80MF,CmF11MA,Y/EgBE,0DACK,qDACG,kD+EjBR,anF+1MF,CmF11MA,gCACE,G7DRA,0BACA,StBq2MA,CmF31MA,I7DXA,yBACA,UtBy2MA,CmF51MA,G7DdA,0BACA,StB62MA,CACF,CmF31MA,iBACE,mBACA,mBAAoB,CACpB,oBAAqB,CACrB,YAEA,iBAAkB,CAClB,OnF41MF,CmFz1MA,uCAEI,gBnF01MJ,CmFx1MI,kDACE,cnF01MN,CmFp1MA,gBACE,mBACA,iBnFs1MF,CoFj4MA,oBACE,gBpFm4MF,CoF/3MA,YACE,iBpFi4MF,CoF73MA,oCACE,iBACE,kBACA,kBpF+3MF,CACF,CqF74MA,mBACE,YrF+4MF,CqFh5MA,wBAII,aAAc,CACd,UrF+4MJ,CqFp5MA,6BASI,gBrF84MJ,CqFz4MA,oCACE,iCACE,MrF24MF,CACF,CsF55MA,eACE,YtF85MF,CsF15ME,uHAIE,sBAAuB,CACvB,kBAAmB,ClFwDrB,wBACQ,gBkFtDN,aAIA,YAAa,CAFb,kBAIA,etF05MJ,CsFz6MA,wCAyBI,eAAgB,CAEhB,cAHA,cAAe,CAHf,WAAY,CAFZ,iBAGA,UtF25MJ,CsFn5ME,qDACE,atFq5MJ,CsFj5MA,WACE,ctFm5MF,CsFh5MA,oCAWE,eAAgB,CAPhB,UAAW,CAKX,cACA,cAAe,CAJf,WAAY,CALZ,gBAAiB,CAEjB,iBAAkB,CAIlB,UtFm5MF,CsF54MA,cACE,etF84MF,CsF54ME,kDACE,etF+4MF,CsFh5MA,mBAII,YtF+4MJ,CACF,CuF98ME,sCACE,avFg9MJ,CuF78ME,sCACE,avF+8MJ,CuF58ME,uCACE,avF88MJ,CwFv9ME,+CACE,iBxF09MF,CACF,CwFt9MA,4BAEE,WAAY,CADZ,UxFy9MF,CwFp9MA,oCACE,wBACE,YxFs9MF,CACF,CwFn9MA,oCACE,kBACE,YxFq9MF,CACF,CyF5+MA,SACE,aAAc,CACd,czF8+MF,CyF3+MA,iBAEE,YAAa,CACb,MAAO,CAFP,oBAAqB,CAGrB,kBzF6+MF,CyF1+MA,cACE,MAAO,CACP,czF4+MF,CyF9+MA,iCAMI,QzF4+MJ,CyFx+MA,qBACE,MzF0+MF,CyFv+MA,gBACE,YzFy+MF,CyFt+MA,oCACE,SACE,YzFw+MF,CyFr+MA,+BAIE,kBAAmB,CAFnB,MzFw+MF,CyFn+MA,0FAEE,MzFq+MF,CyFl+MA,gBACE,aAAc,CACd,MzFo+MF,CyFj+MA,2BACE,WzFm+MF,CACF,CyF99MA,oCACE,gBACE,iBzFg+MF,CACF,C0F9hNA,KACE,qB1FgiNF,C0F7hNA,YAGE,oB1F+hNF,C0F3hNE,0FANA,cACA,e1FuiNF,C0F1hNE,mBACE,yB1F4hNJ,C0FxhNA,cACE,iB1F0hNF,C0F3hNA,6BAMI,cAAe,CAGf,WAAY,CAFZ,gBAAiB,CAHjB,0BAMA,U1FwhNJ,C0FphNA,eAEE,eAAgB,CAChB,sBAAuB,CAFvB,kB1FwhNF,C2F9jNA,6HAQI,oB3F+jNJ,C2F1jNA,4GAOI,e3F2jNJ,C2FtjNA,6CAEE,a3FwjNF,C2FtjNE,mEACE,Y3FyjNJ,C2FtjNE,iEACE,e3FyjNJ,C2FpjNA,mBAEE,gBAAiB,CADjB,c3FujNF,C2FljNA,sDAEE,mBACA,WAAY,CAEZ,c3FmjNF,C2FxjNA,oFAQI,gCAGA,eACA,eAAiB,CAHjB,iB3FsjNJ,C2F/iNA,sDAEE,wB3FijNF,C2F9iNA,2BACE,gBACA,QAAW,CACX,Y3FgjNF,C2F9iNE,8EAEE,wB3FgjNJ,C2F3iNA,8BACE,mBAGA,c3F4iNF,C2FziNA,8BACE,yBACA,iB3F2iNF,C2FxiNA,6BACE,gBACA,QAAW,CACX,Y3F0iNF,C2FviNA,gCASE,e3FyiNF,C2FtiNA,wDACE,Y3FwiNF,C2FpiNA,uCAII,sB3FsiNJ,C2FliNA,uCAII,uB3FoiNJ,C2F/hNA,mBACE,eAAgB,CAChB,WAAY,CAIZ,UAAW,CAFX,eAAgB,CADhB,Y3FmiNF,C2FtiNA,6BASI,aACA,a3FgiNJ,C4F5qNA,yDAEI,kBAMA,YAAa,CALb,aAAgB,CAChB,eAAgB,CAChB,iBAAkB,CAElB,W5F6qNJ,C4FprNA,iEAWM,YAAa,CAIb,YAAa,CAFb,iBAAkB,CAClB,Q5F4qNN,C4F1rNA,wFAqBQ,6BAA+B,CAH/B,iBAAkB,CAMlB,YAAa,CADb,W5F2qNR,C4FtqNI,6EtE7BF,yBACA,WtBssNF,C4F1qNI,iFAMI,a5FuqNR,C4FnqNI,kFAIE,YAAa,CAHb,mBAEA,W5FsqNJ,C4FzqNE,6DAQI,YAAa,CADb,W5FsqNN,C4F7qNE,iEAaI,YAAa,CADb,Q5FqqNN,C4FjrNE,wFAiBM,YAAa,CADb,W5FqqNR,CACF,C4F5tNA,8CA8DI,e5FiqNJ,C4F5pNA,0CACE,iB5F8pNF,C4F/pNA,yDAII,sBAAuB,CACvB,yBACA,kBxFRF,wBACQ,gBwFWN,cACA,eAJA,kBAKA,iB5F8pNJ,C4F5pNI,wEACE,aAAc,CAId,eAEA,YAJA,qBAGA,U5F8pNN,C4F1pNI,+HAEE,qBACA,a5F4pNN,C4FvrNA,sDAgCI,iB5F0pNJ,C4F1rNA,+DAqCM,kBACA,mBAEA,eAAgB,CAChB,U5FupNN,C4FhsNA,qEA8CM,aAAgB,CADhB,S5FupNN,C4FhpNA,8BACE,a5FkpNF,C4FnpNA,uDAOI,uBAAwB,CAGxB,qBAAuB,CANvB,gBASA,U5F6oNJ,C4F3oNI,sFAGE,mBACA,WAAY,CACZ,iBAAkB,CAHlB,UAAW,CADX,U5FipNN,C4F1oNI,6EACE,uBAAwB,CAKxB,mBAJA,WAAY,CAGZ,iBAAkB,CAFlB,WAAY,CAIZ,eAAgB,CAHhB,U5F+oNN,C4FzoNI,6DACE,Y5F2oNN,C4FxoNI,4FACE,kB5F0oNN,C4FvoNI,yEAGE,mBACA,WAAY,CACZ,iBAAkB,CAHlB,UAAW,CADX,U5F6oNN,C4FtoNI,yEAKE,mBAJA,WAAY,CAGZ,iBAAkB,CAFlB,WAAY,CACZ,U5F0oNN,C4FpoNI,sEACE,sBAAwB,CACxB,mB5FsoNN,C4FnoNI,kEAKE,sBAAuB,CAGvB,wBAAyB,CACzB,kBAAmB,CAGnB,iBAAkB,CAVlB,UAAW,CADX,U5F6oNN,C4F1nNI,8IACE,mBACA,kB5FgoNN,C4F7nNI,kEAKE,mBAJA,WAAY,CAGZ,iBAAkB,CAFlB,WAAY,CACZ,U5FioNN,C4FxnNI,0JACE,kB5F6nNN,C4FvnNA,2CACE,gB5FynNF,C4F1nNA,4DAII,kB5FynNJ,C4F7nNA,+DAOM,Y5FynNN,C4FhoNA,wEAaM,kB5FsnNN,C4FnoNA,wEAmBM,eAAgB,CADhB,yBADA,kBAGA,WAAY,CACZ,iB5FqnNN,C4FnnNM,4JAEE,oB5FqnNR,C4FlnNM,uKAEE,oB5FonNR,C4FlpNA,4EAkCQ,kBAEA,WAAY,CADZ,U5FonNR,C6Ft3NA,2CACE,a7Fw3NF,C6Fr3NA,oDACE,a7Fu3NF,C6Fn3NA,uCAEI,oBAAqB,CACrB,eAAgB,CAKhB,sBAAuB,CACvB,kBAAmB,CAJnB,kBAAmB,CACnB,W7Fq3NJ,C6Fh3NI,2EACE,W7Fm3NJ,CACF,C6Fj3NI,2EACE,W7Fo3NJ,CACF,C6F/2NA,wCAKI,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CAJjB,U7Fm3NJ,C6Fr3NA,2BAUI,Q7F82NJ,C6Fx2NA,gCAEE,iBADA,a7F22NF,C6F52NA,mCAKI,aAAc,CACd,U7F02NJ,C6Fh3NA,8PAcM,yBACA,yBACA,kBAKA,cAJA,oBAAqB,CACrB,gBACA,gB7F22NN,C6Ft2NI,gIAGE,yBAEA,cACA,oB7Fu2NN,C6Fl2NA,6BAEI,gBAEA,e7Fk2NJ,C8F37NA,qBACE,yBACA,YAAa,CAEb,oBADA,gBAEA,eAEA,qB9F47NF,C8F17NE,8BACE,a9F47NJ,C8Fv7NA,gCACE,kB9Fy7NF,C8F17NA,8CAII,wB9Fy7NJ,C8F77NA,sDAUM,kBAAmB,CADnB,e9Fw7NN,C8Fj8NA,gEAaQ,gBAEA,iBAAkB,CAClB,O9Fs7NR,C8Ft8NA,gEA6BM,cAAe,CAPf,WAAY,CAQZ,gBAAiB,CANjB,cAAiB,CAEjB,iBAAkB,CAKlB,iBAAkB,CAJlB,OAAQ,CANR,U9F27NN,C8F36NA,oBACE,eACA,iB9F66NF,C8F/6NA,kCAKI,eAAgB,CAChB,W9F66NJ,C8Fx6NA,gBACE,iB9F06NF,C8Fv6NA,wBACE,Y9Fy6NF,C8F16NA,+CAKI,YAAa,CADb,W9F06NJ,C8Fl6NA,iBACE,iB9Fo6NF,C8Fr6NA,gCAWI,eAFA,YAGA,iBARA,0BACA,iBAAkB,CAClB,QAAS,CAET,U9Fs6NJ,C8F96NA,iCAiBM,c9Fg6NN,C+F//NA,eACE,qBAAsB,CACtB,yBACA,iB/FigOF,C+F9/NA,6BAEE,WAAY,CACZ,W/F+/NF,C+F5/NE,oG3FoDA,wBACQ,eJ68NV,C+F1/NA,eACE,6BAEA,aAAc,CADd,gB/F6/NF,C+F//NA,0BAMI,iB/F4/NJ,C+FlgOA,2BAUI,gB/F2/NJ,C+FrgOA,wCAcI,kB/F0/NJ,C+Ft/NE,iEAEI,oBAAsB,CAGtB,e/Fu/NJ,C+F5/NA,kCAQM,oBAAqB,CACrB,oBAAsB,CAEtB,mB/Fs/NN,C+FjgOA,sCAiBM,gB/Fm/NN,C+FpgOA,2CAsBM,UAAW,CAKX,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CAPjB,iBAAkB,CAGlB,U/Fo/NN,CACF,C+F3+NA,0DAEI,+BACE,a/F4+NJ,CACF,C+Fv+NA,oCACE,cACE,iB/Fy+NF,C+F1+NA,2BAII,aAAc,CACd,oBAAsB,CAKtB,gBAHA,U/F0+NJ,CACF,C+Fl+NA,yBACE,QAAW,CACX,S/Fo+NF,C+Ft+NA,4BAKI,Q/Fo+NJ,C+Fh+NA,4BACE,6BAEA,sB/Fk+NF,C+Fr+NA,qDAMI,UAAW,CACX,U/Fk+NJ,C+Fz+NA,uDAWM,uBAA2B,CAD3B,qBAAsB,CAEtB,kBACA,aAAc,CAId,WAAY,CAFZ,aAAgB,CAChB,U/Fk+NN,C+Fl/NA,oDAsBI,UAAW,CAGX,iBAAkB,CAFlB,U/Fg+NJ,C+Fv/NA,mEAkCM,cAAe,CAHf,WAAY,CAIZ,gBAAiB,CAPjB,iBAAkB,CAClB,OAAQ,CAGR,U/F+9NN,C+F//NA,uDAwCI,gB/F09NJ,C+FlgOA,mHA+CM,eAHA,QAAW,CACX,S/F29NN,C+FxgOA,yDAqDM,cACA,eAHA,c/F09NN,C+F7gOA,4DA0DM,kB/Fs9NN,C+Fh9NE,+DACE,e/Fm9NF,CACF,C+Fj9NE,+DACE,kBACA,kB/Fo9NF,CACF,C+Fj9NA,yBACE,6BAEA,sB/Fm9NF,C+Fh9NA,8BACE,UAAW,CAGX,iBAAkB,CAFlB,U/Fm9NF,C+Fr9NA,6CAaI,cAAe,CAHf,WAAY,CAIZ,gBAAiB,CAPjB,iBAAkB,CAClB,OAAQ,CAGR,U/Fk9NJ,C+F38NA,iCACE,gBAAiB,CACjB,cACA,iB/F68NF,C+Fh9NA,uEAUI,eAHA,QAAW,CACX,S/F88NJ,C+Ft9NA,mCAeI,eADA,c/F48NJ,C+F19NA,sCAmBI,iBAAkB,CAElB,WADA,O/F28NJ,C+Fx8NI,0EACE,aAAc,CAEd,gBAEA,e/Fy8NJ,CACF,C+Fr8NA,gCACE,mBACA,a/Fu8NF,C+Fp8NA,4BACE,mBACA,UAAW,CACX,U/Fs8NF,C+Fn8NA,kCACE,QAAW,CACX,gB/Fq8NF,C+Fj8NA,qBAEE,YAAa,CADb,iBAAkB,CAElB,W/Fm8NF,C+F/7NA,sBACE,kBAIA,YAHA,0BAEA,U/Fi8NF,CgG7sOA,uEAEE,kBhG+sOF,CgG7sOE,8UAME,eAAgB,CAFhB,SAAY,CAIZ,ehGitOJ,CgG7tOA,+EAgBI,qBAAsB,CAEtB,WAAY,CAEZ,gBAAiB,CAHjB,UhGmtOJ,CgG3sOA,sBAEE,chG6sOF,CiGxuOA,uCAEI,SjGyuOJ,CiG3uOA,4CAMI,sBAAuB,CACvB,kBAAmB,CACnB,UAAW,CAKX,WAAY,CAHZ,kBAAoB,CACpB,SAAY,CAIZ,iBAAkB,CAClB,OAAQ,CAJR,UjG2uOJ,CiGvvOA,2DAsBM,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CAJjB,UjG0uON,CiGjuOI,iGAGE,sBAAuB,CACvB,WAAY,C7FkChB,wBACQ,gB6FhCJ,gBAAiB,CADjB,YAAa,CAEb,iBACA,UjGouON,CkGxwOA,YAGE,UAAW,CAFX,QAAW,CACX,SlG2wOF,CkG7wOA,eAMI,eAAgB,CAChB,QAAW,CACX,SlG0wOJ,CmGnxOA,oCACE,wBACE,YnGqxOF,CmGlxOA,WACE,aAAc,CAEd,mBADA,WnGqxOF,CmGjxOA,eACE,QnGmxOF,CACF,CmG/wOA,WACE,cnGixOF,CmGlxOA,kBAII,QnGixOJ,CmGrxOA,0BAQI,WAAY,CACZ,UnGgxOJ,CmG9wOI,8DAGE,WAAY,CAFZ,cAAe,CAGf,UnGgxOJ,CACF,CmGhyOA,wBAoBI,gBnG+wOJ,CmGnyOA,0BAwBI,aAAc,CAOd,eAFA,enGywOJ,CmGtyOA,uCAmCM,eAAgB,CADhB,cnG6wON,CmG/yOA,uBAwCI,gBnG0wOJ,CmGtwOE,8DAII,eAFA,cnGywOJ,CmG3wOA,uCAOM,YnGuwON,CmG9wOA,uBAaI,iBAAkB,CADlB,cnGswOJ,CmGlxOA,mDAqBI,anGmwOJ,CACF,CmG9vOA,cACE,WnGgwOF,CmG9vOE,kDACE,enGiwOF,CACF,CmGtwOA,0BAQI,gBnGiwOJ,CmGzwOA,qBAmBI,eACA,eAAmB,CAHnB,cnGiwOJ,CmGlxOA,4BAwBI,yBAEA,UnG4vOJ,CmGvvOA,oCACE,uBACE,YnGyvOF,CACF,CmGtvOA,oCACE,0BACE,YnGwvOF,CACF,CmGpvOA,WAEE,oBADA,gBnGuvOF,CmGlvOA,qBACE,anGovOF,CmGrvOA,oCAII,UAAW,CAEX,cAAe,CACf,gBnGmvOJ,CmG1vOA,uBAaI,mBnGkvOJ,CmG9uOA,yBACE,yBAEA,UnG+uOF,CmG5uOA,oBACE,yBAEA,UnG6uOF,CmG1uOA,wBACE,yBAEA,UnG2uOF,CmGxuOA,uBACE,yBAEA,UnGyuOF,CmGruOA,wBAEI,iBnGsuOJ,CmGxuOA,yBAMI,gBnGquOJ,CmG3uOA,eAYI,eAAkB,CADlB,kBAAmB,CADnB,enGsuOJ,CmG/tOA,kBAGE,6BACA,gBnG+tOF,CmGnuOA,uBAOI,kBnG+tOJ,CmGtuOA,mCAWI,oBnG8tOJ,CmGzuOA,2BAeI,anG6tOJ,CmG5uOA,2CAmBI,UAAW,CACX,YAGA,iBAAkB,CAFlB,UnG6tOJ,CmGlvOA,mCA2BI,gBnG0tOJ,CmGrvOA,kCAiCI,uBAA2B,CAD3B,qBAAsB,CAEtB,kBAHA,aAAc,CAKd,YADA,UnG0tOJ,CmG7vOA,iCA8CI,cAAe,CALf,WAAY,CAMZ,gBAAiB,CAJjB,iBAAkB,CAClB,OAAQ,CAJR,UnG6tOJ,CmGptOI,qMAKE,cACA,oBnGstON,CmG7wOA,+CA+DI,cACA,eAJA,QAAW,CACX,SnGstOJ,CoGx9OA,qCAII,eAFA,QpG09OJ,CoG59OA,kCAUI,eAFA,QpGw9OJ,CoGl9OA,2BACE,oBpGo9OF,CoGj9OA,0BAIE,WAAY,CAHZ,YAAe,CAEf,UpGm9OF,CoG/8OA,yBACE,WAAY,CACZ,apGi9OF,CoG98OA,8BAME,oBAAqB,CALrB,kBACA,cAAe,CAEf,eAAgB,CAChB,kBpGg9OF,CqGl/OA,mBAGE,cAFA,kBrGq/OF,CqGh/OA,+BAEE,sBAAuB,CADvB,YrGm/OF,CqG9+OA,yBACE,gBrGg/OF,CqGj/OA,uCAII,yBAEA,UrG++OJ,CqG1+OA,+BACE,kBrG4+OF,CqG7+OA,8CAKI,kBAAmB,CAMnB,mBACA,kBACA,cATA,YAAa,CAIb,YAFA,sBAAuB,CAGvB,UrG8+OJ,CqGv/OA,8CAkBI,kBAAmB,CADnB,YAAa,CAIb,eAFA,sBrG0+OJ,CqGn+OA,kCACE,QrGq+OF,CqGj+OA,kCAGE,eAFA,iBrGo+OF,CqG/9OA,+BAGE,eAFA,QrGk+OF,CqGn+OA,kCAMI,iBrGg+OJ,CqG99OI,6CACE,crGg+ON,CqG19OA,6CAEI,QAAW,CAKX,eAHA,kBACA,SrG49OJ,CqGx9OI,wDACE,crG09ON,CqGp9OA,oCACE,+BACE,crGs9OF,CqGn9OA,mCACE,UAAW,CACX,crGq9OF,CqGv9OA,6CAOI,eAFA,iBrGs9OJ,CqGl9OI,wDACE,crGo9ON,CACF,CqG/8OA,oCACE,+BAIE,YAAa,CADb,aAAc,CADd,wBAAyB,CAGzB,WrGg9OF,CqG78OA,eACE,QrG+8OF,CqG58OA,yBACE,iBrG88OF,CACF,CsG9kPA,qBAEE,QAAW,CADX,StGilPF,CsGllPA,oCAMI,aADA,StGilPJ,CsGtlPA,gCAUI,gBtG+kPJ,CsGzlPA,oCAcI,atG8kPJ,CsG5lPA,oCAkBI,atG6kPJ,CsGzkPA,6BACE,iBAAkB,CAClB,kBtG2kPF,CsGvkPE,oCC1BA,mGAGI,iBvGwmPJ,CuG3mPA,sDAQI,eADA,WvGymPJ,CAVF,CuGxlPA,oCACE,wDAGI,iBACA,mBACA,avGomPJ,CuGzmPA,sDASI,UvGomPJ,CuG7mPA,oFAYM,cvGqmPN,CuGjnPA,sDAoBI,eAFA,kBADA,evGsmPJ,CuGvnPA,oEAuBM,cvGomPN,CACF,CwG7oPA,cACE,kBxG+oPF,CwG3oPA,mBAEE,kBAAmB,CADnB,YxG8oPF,CwG/oPA,uBAMI,YADA,UxG8oPJ,CwGzoPA,2BAEE,MxG6oPF,CwGxoPA,yDAJE,kBAAmB,CAFnB,YAAa,CAGb,sBxGgpPF,CwGtoPA,4BACE,kBxGwoPF,CwGroPA,mBAEE,kBAAmB,CAKnB,kBANA,YAAa,CAOb,eAHA,YAFA,sBAAuB,CAMvB,iBALA,UxG2oPF,CwGpoPE,+HAKE,yBACA,cACA,oBxGsoPJ,CwGjoPE,mJAKE,yBACA,UxGmoPJ,CwG9nPA,6BACE,MxGgoPF,CwG5nPE,kKAOE,cAFA,eAGA,wBxG6nPJ,CwGznPA,6BACE,cxG2nPF,CwGznPE,iLAKE,cACA,wBxG2nPJ,CwGtnPE,sLAKE,axGwnPJ,CwGnnPA,6BACE,iBxGqnPF,CwGlnPA,iCACE,UxGonPF,CwGjnPA,8EAGI,SxGknPJ,CwG7mPA,gCACE,kBAEA,kBxG8mPF,CwG3mPA,6BAGE,kBAEA,eACA,eAAiB,CALjB,exGgnPF,CwGzmPE,8MAOE,mBADA,cAEA,oBxG2mPJ,CwGvmPI,0ZAOE,6BAA8B,CAD9B,UxG0mPN,CwGpmPA,mCACE,0BACA,gBxGsmPF,CwGnmPA,gEACE,yBxGqmPF,CwGjmPA,+BAEE,kBADA,UxGomPF,CwG/lPA,mCACE,iBxGimPF,CwGlmPA,uCAII,iBxGimPJ,CwG5lPA,qCAIE,eAAgB,CAFhB,kBAIA,sBAAuB,CADvB,kBAAmB,CAJnB,WxGkmPF,CwGnmPA,mOAaI,cACA,cxG6lPJ,CwGxlPA,oEAEE,iBxG0lPF,CwGtlPA,+DAEE,YxGwlPF,CwGrlPA,oCAEE,cACE,kBACA,kBxGslPF,CwGxlPA,yDAOI,aAAc,CADd,eAAgB,CAEhB,cxGslPJ,CwGjlPA,yBACE,YxGmlPF,CwGhlPA,4BACE,oBxGklPF,CwG9kPA,4BACE,YxGglPF,CACF,CwG7kPA,oCAEE,mBACE,axG8kPF,CwG/kPA,uBAMI,YADA,UxG8kPJ,CwGxkPA,2BACE,iBAAkB,CAClB,mBxG0kPF,CwGtkPA,8BAEE,MAAO,CADP,mBxGykPF,CwGtkPE,kCAEE,mBADA,UxGykPJ,CwGnkPA,oEAEE,YxGqkPF,CwGjkPA,mCACE,aAAc,CACd,iBxGmkPF,CwGrkPA,6CAKI,WxGmkPJ,CwGxkPA,4DAQM,cxGmkPN,CACF,CwG7jPA,qCAEE,mCAAqC,CADrC,UxGgkPF,CwG5jPA,gBACE,IACE,UxG8jPF,CACF,CwG1jPA,4BACE,SxG4jPF,CwGzjPA,gCAGE,mBAEA,WAAY,CACZ,0BAFA,cAHA,iBxG+jPF,CwGvjPA,4EAEE,mBACA,axGyjPF,CwGtjPA,uCACE,mBACA,UxGwjPF,CyGj4PA,mBAEI,aAAc,CACd,azGk4PJ,CyG73PA,kCACE,UzG+3PF,CyG73PE,sEACE,WzGg4PF,CyGj4PA,sCAKI,WAAY,CAEZ,iBAAkB,CAClB,OAAQ,CAJR,UzGm4PJ,CACF,CyG13PA,2BACE,UAAW,CACX,czG43PF,CyG13PE,+DACE,mBACA,SzG63PF,CACF,CyG33PE,+DACE,UAAW,CACX,gBAAiB,CACjB,UzG83PF,CACF,CyG53PE,+DACE,iBACA,SzG+3PF,CyGj4PA,sCAKI,czG+3PJ,CACF,CyG13PA,8BAGE,sBAAuB,CAFvB,azG63PF,CyG93PA,8HAQI,aAAc,CACd,UAAW,CAGX,eAFA,gBzG43PJ,CyGx3PI,kKACE,gBzG63PJ,CACF,CyG74PA,0CAoBI,czG43PJ,CyGz3PE,kEACE,gBzG43PF,CyG73PA,mFAKI,WAAY,CACZ,eAAgB,CAEhB,iBAAkB,CAClB,OAAQ,CAER,uBzG03PJ,CACF,CyGv3PE,kEACE,czG03PF,CyG33PA,mFAKI,ezG03PJ,CACF,CyGr3PA,6BACE,aAAc,CAEd,iBAAkB,CAClB,OzGs3PF,CyG13PA,kCAOI,aAAc,CACd,UzGs3PJ,CyGn3PE,iEACE,WAAY,CACZ,ezGs3PF,CACF,CyGp4PA,0CAiBI,iBzGs3PJ,CyGp3PI,8EAME,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CANjB,KAAQ,CAER,UzGy3PJ,CACF,CyGn3PI,8EAQE,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CANjB,gBAAiB,CAFjB,OAAQ,CAIR,UzGu3PJ,CACF,CyG92PA,uIASI,cAAe,CALf,WAAY,CAMZ,gBAAiB,CAJjB,iBAAkB,CAClB,OzGg3PJ,CyGv3PA,yFAiBM,ezG02PN,CyGp2PA,iPAMM,azGs2PN,CyGn2PI,yIACE,azGw2PJ,CyGz2PE,iPAKI,UAAW,CAEX,gBzG22PN,CyGl3PE,0HAYI,gBAAiB,CADjB,cAAe,CAGf,gBzG22PN,CyGz3PE,wJAuBI,aAAc,CALd,UAAW,CAMX,eAAgB,CAJhB,iBAAkB,CAClB,QzG62PN,CACF,CyGv2PI,yIACE,UAAW,CAIX,eAHA,cAAe,CAIf,iBAAkB,CAHlB,SzG82PJ,CyGj3PE,uHASI,eACA,ezG62PN,CACF,CyGx2PA,gLAKM,oBAAqB,CACrB,UzGy2PN,CyG/2PA,yFAUM,czGy2PN,CyGn3PA,uFAcM,iBzGy2PN,CyGt1PA,0DAEE,+BACE,czG+1PF,CyG31PA,kCACE,YzG61PF,CACF,C0GpmQA,4BAEE,cADA,iB1GumQF,C0GxmQA,yCAKI,iB1GsmQJ,C0GjmQA,mBACE,aAAc,CAId,eAFA,eADA,S1GqmQF,C0GvmQA,sBAQI,oBAAqB,CACrB,eAAgB,CAChB,gB1GkmQJ,C0G5mQA,gCAgBI,UAAW,CAFX,gBAAiB,CACjB,iB1GkmQJ,C0GjnQA,0CAoBI,cACA,e1GgmQJ,C0G3lQA,oCACE,qBAEE,oBAAqB,CADrB,Y1G8lQF,C0G1lQA,4BAEE,iB1G4lQF,CACF,C0GxlQA,oCACE,4BAGE,iBAFA,iBAAkB,CAClB,Q1G2lQF,C0GvlQA,6BACE,kB1GylQF,C0GtlQA,mBACE,c1GwlQF,C2GnpQA,qBACE,aAAc,CACd,a3GupQF,CALF,C2G7oQA,iCACE,U3GqpQF,C2GtpQA,yEAKI,iB3GqpQJ,C2G1pQA,iFASM,WAAY,CADZ,U3GupQN,C2GlpQE,qHAQM,UAAW,CAHX,WAAY,CAEZ,iBAAkB,CAHlB,U3GspQN,C2G1oQA,iCACE,UAAW,CACX,S3G8oQF,CALF,C2GpoQA,0BACE,gBACA,a3G4oQF,C2G9oQA,+BAKI,aAAc,CACd,U3G4oQJ,C2GlpQA,yCAUI,aAEA,iBAAkB,CAClB,O3G0oQJ,C2GvoQE,8DACE,UAAW,CACX,S3G0oQF,C2GpoQA,+BACE,UAAW,CACX,S3GwoQF,CALF,C4G1sQA,iBAGE,cACA,eAHA,gBAIA,iB5GitQF,C4G7sQE,sDACE,gB5GgtQF,CACF,C4G9sQE,sDACE,mB5GitQF,C4GltQA,qBAII,iBAAkB,CAClB,O5GitQJ,C4GttQA,8BASI,e5GgtQJ,CACF,C6GnuQA,MAIE,eAAgB,CAAE,UAAY,CAH9B,aAAc,CACd,eAAgB,CAChB,Y7G8uQF,C6G1uQA,yDAIE,U7G4uQF,C6GzuQA,eACE,iB7G2uQF,C6GxuQA,yCAGE,U7G0uQF,C6GvuQA,aACE,e7GyuQF,C6GtuQA,0BAEE,UAAW,CACX,iB7GwuQF,C6GruQA,0BAEE,U7GuuQF,C6GpuQA,mCAEE,U7GsuQF,C6GnuQA,uCAEE,U7GquQF,C6GluQA,aACE,U7GouQF,C6GjuQA,WACE,U7GmuQF,C6GhuQA,uEAKE,U7GkuQF,C6G/tQA,aACE,wBAAyB,CACzB,U7GiuQF,C6G9tQA,aACE,a7GguQF,C6G7tQA,4DAIE,U7G+tQF,C8GrzQA,YAMI,eAAiB,CAEjB,qBAAsB,CACtB,iBAAkB,CAClB,kCAHA,UAAY,CAHZ,YAAa,CADb,MAAO,CAEP,eAAgB,CAMhB,eAAgB,CAVhB,kBACA,KAAM,CAUN,uB9GuzQJ,C8GpzQA,0BAII,+BAAgC,CAChC,aAAc,CAFd,cAAe,CAGf,cAAe,CACf,eAAiB,CALjB,UAAW,CADX,W9G4zQJ,C8GnzQA,iCACI,aAAc,CACd,WAAY,CAGZ,cAAe,CACf,eAAmB,CAFnB,iBAAkB,CADlB,e9GwzQJ,C8GlzQA,gCACI,c9GozQJ,C8GjzQA,iBACI,eAAmB,CACnB,U9GmzQJ,C8GjzQA,uBACI,U9GmzQJ,C8GjzQA,mBACI,U9GmzQJ,C8GjzQA,wBACI,UAAY,CACZ,Q9GmzQJ,C8GjzQA,eAEI,gBAEA,YACA,gBAAiB,CACjB,eAAgB,CAHhB,S9GszQJ,C8GjzQA,kBAGI,4BAA6B,CAC7B,cAAe,CAHf,aAAc,CACd,gB9GszQJ,C8GjzQA,kBAEI,UAAW,CADX,iBAAkB,CAElB,e9GmzQJ,C+Gr3QA,KACE,YAAa,CACb,oB/Gu3QF,CgHz3QA,YACE,iGhH23QF,CgHt3QA,YACE,iGhHw3QF,CgHn3QA,YACE,kGhHq3QF,CgHh3QA,YACE,mGhHk3QF,CgH72QA,YACE,uGhH+2QF,CgH12QA,aACE,yGhH42QF,CgHv2QA,aACE,0GhHy2QF,CiH54QE,8IAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,ajH+4QJ,CiH14QE,iI3FhBA,yBACA,WtBi6QF,CiH14QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,ajH64QJ,CiHx4QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,ajH24QJ,CiHr4QI,uOAOE,iBjHu4QN,CiH77QE,8IAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHg8QJ,CiH37QE,iI3FhBA,yBACA,WtBk9QF,CiH37QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjH87QJ,CiHz7QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjH47QJ,CiHt7QI,uOAOE,iBjHw7QN,CiH9+QE,8IAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHi/QJ,CiH5+QE,iI3FhBA,yBACA,WtBmgRF,CiH5+QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjH++QJ,CiH1+QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjH6+QJ,CiHv+QI,uOAOE,iBjHy+QN,CiH/hRE,wIAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHkiRJ,CiH7hRE,4H3FhBA,yBACA,WtBojRF,CiH7hRE,oCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjHgiRJ,CiH3hRE,qPAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjH8hRJ,CiHxhRI,gOAOE,iBjH0hRN,CiHlhRE,sNAME,mBACA,yB7GLF,wBACQ,gB6GMN,ajHqhRJ,CiHhhRE,6L3F9EA,yBACA,WtBqmRF,CiHhhRE,8DAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,ajHmhRJ,CiH9gRE,+PAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,ajHihRJ,CiH3gRI,2TAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjH8gRN,CiHvkRE,sNAME,mBACA,yB7GLF,wBACQ,gB6GMN,UjH0kRJ,CiHrkRE,6L3F9EA,yBACA,WtB0pRF,CiHrkRE,8DAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,UjHwkRJ,CiHnkRE,+PAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,UjHskRJ,CiHhkRI,2TAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjHmkRN,CiHr+QA,4BAEI,iBjHs+QJ,CiH/nRE,wOAME,uBACA,yB7GLF,wBACQ,gB6GMN,ajHkoRJ,CiH7nRE,4M3F9EA,yBACA,WtBktRF,CiH7nRE,oEAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,ajHgoRJ,CiH3nRE,iRAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,ajH8nRJ,CiHxnRI,gVAOE,uBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjH2nRN,CiH7hRA,6BAoBI,iBjH4gRJ,CiHvrRE,8OAME,mBACA,yB7GLF,wBACQ,gB6GMN,UjH0rRJ,CiHrrRE,iN3F9EA,yBACA,WtB0wRF,CiHrrRE,sEAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,UjHwrRJ,CiHnrRE,uRAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,UjHsrRJ,CiHhrRI,uVAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjHmrRN,CkH1yRE,yMAGE,cACA,elH+yRJ,CkHnzRE,iFAGE,cACA,elHqzRJ,CkHzzRE,0LAGE,cACA,elH8zRJ,CkHl0RE,kiBAGE,WACA,elHg1RJ,CkHp1RE,iFAGE,cACA,elHs1RJ,CkH11RE,qfAGE,cACA,elHw2RJ,CkH52RE,uFAGE,cACA,elH82RJ,CkHl3RE,8EAGE,cACA,elHo3RJ,CkHx3RE,oFAGE,cACA,elH03RJ,CkHx0RA,uBAGI,mBADA,elH00RJ,CkH50RA,uBAOI,YlHw0RJ,CmHt4RA,yCAEE,qBACA,kCnHw4RF,CmHt4RE,qDACE,qBACA,kCnHy4RJ,CmHr4RA,8BACE,qBACA,kCnHu4RF,CmHr4RE,oCACE,qBACA,kCnHu4RJ,CmHn4RA,gCACE,qBACA,kCnHq4RF,CmHn4RE,sCACE,qBACA,kCnHq4RJ,CmHh4RA,mBACE,enHk4RF,CmHn4RA,+BAMI,cACA,eAHA,cnHo4RJ,CmHx4RA,6BAWI,QnHg4RJ,CoH56RA,cACE,mBJwBA,wGIvBA,cpH+6RF,CoHj7RA,gBAOI,UpH66RJ,CoHp7RA,mBAYM,mBACA,qBAEA,apH06RN,CoHv6RI,kDAEE,mBACA,qBAEA,apHw6RN,CoHr6RI,0BACE,mBACA,qBAEA,apHs6RN,CqHp8RA,eACE,WAAY,CLYZ,kGhH27RF,CqHj8RA,uCAII,cAFA,aAAc,CAGd,erHi8RJ,CqHt8RA,4CAWI,eAFA,erHi8RJ,CqH18RA,2DAiBM,UAAW,CAKX,cAAe,CAFf,WAAY,CANZ,gBAAiB,CAEjB,iBAAkB,CAGlB,UrH+7RN,CqHv7RA,8BACE,mBrHy7RF,CqHt7RA,sBACE,wBrHw7RF,CqHr7RA,8MAQM,qBAAsB,CAEtB,arHo7RN,CqH96RA,sBACE,QrHg7RF,CsH3+RA,eACE,kBAAmB,CACnB,0BtH6+RF,CsHz+RA,4BACE,eAAgB,CAChB,iBtH2+RF,CsHv+RA,+BACE,iBtHy+RF,CuHt/RA,yBACE,yBvHw/RF,CuHr/RA,yBAIE,avHs/RF,CuHn/RA,iDANE,6BACA,iBvH4/RF,CuHl/RA,wBACE,6BAGA,cACA,eAAiB,CAHjB,gBvHs/RF,CuH/+RA,0DAGI,avHg/RJ,CuH5+RA,sDAII,eAAgB,CAFhB,eAAgB,CAChB,kBvH8+RJ,CuHj/RA,qDASI,eAAgB,CAChB,sBAAuB,CAFvB,kBvH8+RJ,CuHv+RA,wBACE,kBvHy+RF,CuHv+RE,mCACE,gBvHy+RJ,CuHr+RA,2CACE,evHu+RF,CwH9hSA,eACE,exHgiSF,CwHjiSA,+BAII,6BAGA,cAFA,gBxHiiSJ,CwH7hSI,mEACE,iBxHgiSJ,CwHjiSE,8CAII,UAAW,CACX,kBxHgiSN,CACF,CwH/iSA,gHAqBM,axH+hSN,CwHpjSA,8EA0BM,axH8hSN,CwH1hSM,6JAGE,axH4hSR,CwHzhSM,4GAEE,axH2hSR,CyHlkSA,YACE,iBzHokSF,CyHrkSA,6BAII,0BACA,0BzHokSJ,CyHzkSA,yCASI,wBzHmkSJ,CyH5kSA,wCAaI,2BzHkkSJ,CyH9jSA,+BAEE,oBADA,iBAGA,iBzH+jSF,CyHnkSA,iCAOI,azH+jSJ,C0HvlSA,UtHkEE,wBACQ,eJwhSV,C0HvlSA,2BACE,gBAAiB,CACjB,iBAAkB,CAClB,iB1HylSF,C0HvlSE,uCACE,e1HylSJ,C0HtlSE,sCACE,kB1HwlSJ,C0HrlSE,8FAGE,mBACA,WAAY,CAEZ,a1HslSJ,C0HnlSE,oGAGE,mBAEA,a1HolSJ,C0HhlSI,4OAME,mBAEA,WACA,e1HilSN,C0H1lSI,sRAYI,mBAEA,a1HqlSR,C2HtoSA,+BACE,iB3HwoSF,C4HzoSA,OACE,WAAY,CACZ,iB5H2oSF,C4H7oSA,2CAMI,e5H2oSJ,C4HjpSA,oBAUI,a5H0oSJ,C4HppSA,+BAcI,e5HyoSJ,C4HvpSA,2CAkBI,e5HwoSJ,C4H1pSA,gBAsBI,e5HuoSJ,C4HroSI,4BACE,Y5HuoSN,C4HhqSA,uBA6BM,WAAY,CAEZ,cACA,e5HqoSN,C4H/nSA,kCACE,a5HioSF,C6HxqSA,YACE,yBACA,e7H0qSF,C6HvqSA,qDAEE,oB7HyqSF,C6HrqSA,kBACE,Q7HuqSF,C6HnqSA,oCAEE,a7HqqSF,C8HtrSA,wCAEI,mBACA,kBACA,e9HurSJ,C8H3rSA,0CAWI,cACA,cAAe,CAJf,WAAY,CAKZ,gBAAiB,CAJjB,U9HyrSJ,C8HlsSA,iDAiBI,wB9HorSJ,C8HrsSA,gEAoBM,U9HorSN,C8HhrSE,+DACE,a9HmrSF,CACF,C8H/qSA,2BACE,iB9HirSF,C8H/qSE,+DACE,yB9HkrSF,CACF,C8H/qSA,kEAEI,e9HgrSJ,C8H9qSI,sGACE,c9HirSJ,CACF,C8H5qSA,6GAII,a9H6qSJ,C8HjrSA,mHAUI,a9H4qSJ,C8HvqSA,gBACE,a9HyqSF,C8HrqSA,uCACE,c9HuqSF,C8HrqSE,kDACE,e9HuqSJ,C8HlqSA,0BACE,qBAAsB,CACtB,iB9HoqSF,C8HhqSA,qCACE,iB9HkqSF,C8HhqSE,yEACE,e9HmqSF,CACF,C8HhqSA,mCACE,cACA,c9HkqSF,C8HpqSA,4HAOI,a9HkqSJ,C8HxpSI,4RAGE,a9H+pSN,C8H5pSI,gKAGE,a9H8pSN,C8HxpSA,yBACE,a9H0pSF,C8H3pSA,wCAKI,iBADA,a9H2pSJ,C8HvpSE,6DAGE,eAFA,gB9H2pSF,C8H5pSA,wCAMI,a9HypSJ,CACF,C+HrySA,oBACE,wB/HuySF,C+HpySA,4BACE,kB/HsySF,C+HnySA,yCACE,a/HqySF,C+HtySA,wDAOI,cAAe,CAFf,WAAY,CAGZ,gBAAiB,CA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C0Iz2TA,8BACE,a1I22TF,C0Ix2TI,2IAGE,cACA,e1I02TN,C0Iv2TI,iJAGE,a1Iy2TN,C0Iv3TA,6CAmBI,cACA,e1Iu2TJ,C0In2TA,sBACE,a1Iq2TF,C2Il4TA,0BACE,a3Io4TF,C2I73TA,6DACE,a3Ik4TF,C2I/3TA,oCACE,a3Ii4TF,C4I94TA,mIAMI,a5Ig5TJ,C4It5TA,wJAaI,a5I+4TJ,C6I55TA,mCACE,wB7I85TF,C6I35TA,+CACE,Q7I65TF,C6I15TA,+DAEI,e7I25TJ,C8Il1TA,0BAjFI,oB9Is6TJ,C8Ir1TA,kOArEM,a9Iq6TN,C8I51TA,0BArFI,oB9Io7TJ,C8I/1TA,kOAzEM,a9Im7TN,C8It2TA,0BAzFI,oB9Ik8TJ,C8Iz2TA,kOA7EM,a9Ii8TN,C8Ih3TA,yBA7FI,oB9Ig9TJ,C8In3TA,2NAjFM,a9I+8TN,C8Iz3TA,+BA/EI,gBACA,yBACA,kBACA,Y9I28TJ,C8Ip8TM,0WAME,a9Iy8TR,C8I14TA,uCAzDI,a9Is8TJ,C8Iz4TA,+BAnFI,gBACA,yBACA,kBACA,Y9I+9TJ,C8Ix9TM,0WAME,a9I69TR,C8I15TA,uCA7DI,a9I09TJ,C8Iz5TA,+BAvFI,gBACA,yBACA,kBACA,Y9Im/TJ,C8I5+TM,0WAME,a9Ii/TR,C8I16TA,uCAjEI,a9I8+TJ,C8Iz6TA,8BA3FI,gBACA,yBACA,kBACA,Y9IugUJ,C8IhgUM,mWAME,a9IqgUR,C8I17TA,sCArEI,a9IkgUJ,C8Ix7TA,qCArEE,8BACA,iB9IggUF,C8Iz/TI,0XAME,a9I8/TN,C8Iv8TA,qCArEE,8BACA,iB9I+gUF,C8IxgUI,0XAME,a9I6gUN,C8It9TA,qCArEE,8BACA,iB9I8hUF,C8IvhUI,0XAME,a9I4hUN,C8Ir+TA,oCArEE,8BACA,iB9I6iUF,C8ItiUI,mXAME,a9I2iUN,C8Ij+TA,+SA3DM,a9IuiUN,C8Ix+TA,+SA/DM,a9IkjUN,C8I/+TA,+SAnEM,a9I6jUN,C8It/TA,wSAvEM,a9IwkUN","sources":["webpack://misago/./src/style/index.less","webpack://misago/./node_modules/bootstrap/less/normalize.less","webpack://misago/./node_modules/bootstrap/less/print.less","webpack://misago/./node_modules/bootstrap/less/scaffolding.less","webpack://misago/./node_modules/bootstrap/less/mixins/vendor-prefixes.less","webpack://misago/./node_modules/bootstrap/less/mixins/tab-focus.less","webpack://misago/./node_modules/bootstrap/less/mixins/image.less","webpack://misago/./node_modules/bootstrap/less/type.less","webpack://misago/./node_modules/bootstrap/less/mixins/text-emphasis.less","webpack://misago/./node_modules/bootstrap/less/mixins/background-variant.less","webpack://misago/./node_modules/bootstrap/less/mixins/text-overflow.less","webpack://misago/./node_modules/bootstrap/less/code.less","webpack://misago/./node_modules/bootstrap/less/grid.less","webpack://misago/./node_modules/bootstrap/less/mixins/grid.less","webpack://misago/./node_modules/bootstrap/less/responsive-utilities.less","webpack://misago/./node_modules/bootstrap/less/mixins/grid-framework.less","webpack://misago/./node_modules/bootstrap/less/tables.less","webpack://misago/./node_modules/bootstrap/less/mixins/table-row.less","webpack://misago/./node_modules/bootstrap/less/forms.less","webpack://misago/./node_modules/bootstrap/less/mixins/forms.less","webpack://misago/./node_modules/bootstrap/less/buttons.less","webpack://misago/./node_modules/bootstrap/less/mixins/buttons.less","webpack://misago/./node_modules/bootstrap/less/mixins/opacity.less","webpack://misago/./node_modules/bootstrap/less/component-animations.less","webpack://misago/./node_modules/bootstrap/less/dropdowns.less","webpack://misago/./node_modules/bootstrap/less/mixins/nav-divider.less","webpack://misago/./node_modules/bootstrap/less/mixins/reset-filter.less","webpack://misago/./node_modules/bootstrap/less/navs.less","webpack://misago/./node_modules/bootstrap/less/mixins/border-radius.less","webpack://misago/./node_modules/bootstrap/less/navbar.less","webpack://misago/./node_modules/bootstrap/less/mixins/nav-vertical-align.less","webpack://misago/./node_modules/bootstrap/less/utilities.less","webpack://misago/./node_modules/bootstrap/less/breadcrumbs.less","webpack://misago/./node_modules/bootstrap/less/alerts.less","webpack://misago/./node_modules/bootstrap/less/mixins/alerts.less","webpack://misago/./node_modules/bootstrap/less/labels.less","webpack://misago/./node_modules/bootstrap/less/mixins/labels.less","webpack://misago/./node_modules/bootstrap/less/progress-bars.less","webpack://misago/./node_modules/bootstrap/less/mixins/gradients.less","webpack://misago/./node_modules/bootstrap/less/mixins/progress-bar.less","webpack://misago/./node_modules/bootstrap/less/button-groups.less","webpack://misago/./node_modules/bootstrap/less/input-groups.less","webpack://misago/./node_modules/bootstrap/less/media.less","webpack://misago/./node_modules/bootstrap/less/list-group.less","webpack://misago/./node_modules/bootstrap/less/mixins/list-group.less","webpack://misago/./node_modules/bootstrap/less/panels.less","webpack://misago/./node_modules/bootstrap/less/mixins/panels.less","webpack://misago/./node_modules/bootstrap/less/pager.less","webpack://misago/./node_modules/bootstrap/less/pagination.less","webpack://misago/./node_modules/bootstrap/less/mixins/pagination.less","webpack://misago/./node_modules/bootstrap/less/responsive-embed.less","webpack://misago/./node_modules/bootstrap/less/wells.less","webpack://misago/./node_modules/bootstrap/less/close.less","webpack://misago/./node_modules/bootstrap/less/badges.less","webpack://misago/./node_modules/bootstrap/less/modals.less","webpack://misago/./node_modules/bootstrap/less/mixins/clearfix.less","webpack://misago/./node_modules/bootstrap/less/mixins/center-block.less","webpack://misago/./node_modules/bootstrap/less/mixins/hide-text.less","webpack://misago/./node_modules/bootstrap/less/mixins/responsive-visibility.less","webpack://misago/./src/style/misago/scaffolding.less","webpack://misago/./src/style/misago/flex-row.less","webpack://misago/./src/style/misago/auth-message.less","webpack://misago/./src/style/misago/alerts-snackbar.less","webpack://misago/./src/style/misago/agreement-overlay.less","webpack://misago/./src/style/misago/loaders.less","webpack://misago/./src/style/misago/navbar.less","webpack://misago/./src/style/misago/navs.less","webpack://misago/./src/style/misago/breadcrumbs.less","webpack://misago/./src/style/misago/material-icons.less","webpack://misago/./src/style/misago/modals.less","webpack://misago/./src/style/misago/forms.less","webpack://misago/./src/style/misago/inputs.less","webpack://misago/./src/style/misago/buttons.less","webpack://misago/./src/style/misago/dropdowns.less","webpack://misago/./src/style/misago/category-label.less","webpack://misago/./src/style/misago/thread-flags.less","webpack://misago/./src/style/misago/thread-replies.less","webpack://misago/./src/style/misago/thread-user-card.less","webpack://misago/./src/style/misago/search-dropdown.less","webpack://misago/./src/style/misago/page-header.less","webpack://misago/./src/style/misago/page-container.less","webpack://misago/./src/style/misago/panels.less","webpack://misago/./src/style/misago/footer.less","webpack://misago/./src/style/misago/ui-preview.less","webpack://misago/./src/style/misago/pager.less","webpack://misago/./src/style/misago/pagination.less","webpack://misago/./src/style/misago/poll.less","webpack://misago/./src/style/misago/user-status.less","webpack://misago/./src/style/misago/user-card.less","webpack://misago/./src/style/misago/toolbar.less","webpack://misago/./src/style/misago/type.less","webpack://misago/./src/style/misago/markup.less","webpack://misago/./src/style/misago/change-avatar.less","webpack://misago/./src/style/misago/categories-lists.less","webpack://misago/./src/style/misago/posting.less","webpack://misago/./src/style/misago/editor.less","webpack://misago/./src/style/misago/participants.less","webpack://misago/./src/style/misago/poll-editor.less","webpack://misago/./src/style/misago/posts-list.less","webpack://misago/./src/style/misago/post.less","webpack://misago/./src/style/misago/post-feed.less","webpack://misago/./src/style/misago/event.less","webpack://misago/./src/style/misago/post-changelog.less","webpack://misago/./src/style/misago/message-pages.less","webpack://misago/./src/style/misago/threads-lists.less","webpack://misago/./src/style/misago/active-posters.less","webpack://misago/./src/style/misago/user-profile.less","webpack://misago/./src/style/misago/username-history.less","webpack://misago/./src/style/misago/search.less","webpack://misago/./highlight/styles/foundation.css","webpack://misago/./node_modules/at.js/dist/css/jquery.atwho.css","webpack://misago/./src/style/flavor/typo.less","webpack://misago/./src/style/flavor/shadows.less","webpack://misago/./src/style/flavor/buttons.less","webpack://misago/./src/style/flavor/social-buttons.less","webpack://misago/./src/style/flavor/inputs.less","webpack://misago/./src/style/flavor/auth-message.less","webpack://misago/./src/style/flavor/dropdowns.less","webpack://misago/./src/style/flavor/navbar.less","webpack://misago/./src/style/flavor/search-dropdown.less","webpack://misago/./src/style/flavor/page-footer.less","webpack://misago/./src/style/flavor/list-group.less","webpack://misago/./src/style/flavor/navs.less","webpack://misago/./src/style/flavor/username-history.less","webpack://misago/./src/style/flavor/panels.less","webpack://misago/./src/style/flavor/form.less","webpack://misago/./src/style/flavor/categories-lists.less","webpack://misago/./src/style/flavor/participants.less","webpack://misago/./src/style/flavor/poll.less","webpack://misago/./src/style/flavor/posting.less","webpack://misago/./src/style/flavor/post.less","webpack://misago/./src/style/flavor/post-feed.less","webpack://misago/./src/style/flavor/event.less","webpack://misago/./src/style/flavor/user-card.less","webpack://misago/./src/style/flavor/progress-bars.less","webpack://misago/./src/style/flavor/markup.less","webpack://misago/./src/style/flavor/modals.less","webpack://misago/./src/style/flavor/wells.less","webpack://misago/./src/style/flavor/active-posters.less","webpack://misago/./src/style/flavor/message-pages.less","webpack://misago/./src/style/flavor/user-options.less","webpack://misago/./src/style/flavor/profile-details.less","webpack://misago/./src/style/flavor/ranks-flavors.less"],"sourcesContent":["/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #0065ff;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #0747a6;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #ebecf0;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: 400;\n line-height: 1;\n color: #7a869a;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #7a869a;\n}\n.text-primary {\n color: #0052cc;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #003d99;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #0052cc;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #003d99;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #ebecf0;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 700px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #ebecf0;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #7a869a;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #ebecf0;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: \"\\00A0 \\2014\";\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #344563;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #7a869a;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #344563;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ced0da;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #ebecf0;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #3462af;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #172b4d;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #172b4d;\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #172b4d;\n background-color: #ced0da;\n background-image: none;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #172b4d;\n background-color: #b9bdcb;\n border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #ebecf0;\n background-color: #172b4d;\n}\n.btn-primary {\n color: #fff;\n background-color: #6554c0;\n border-color: #5643b7;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #4d3da4;\n border-color: #2a215a;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #4d3da4;\n border-color: #41338a;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #4d3da4;\n background-image: none;\n border-color: #41338a;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #41338a;\n border-color: #2a215a;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #6554c0;\n border-color: #5643b7;\n}\n.btn-primary .badge {\n color: #6554c0;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #00c853;\n border-color: #00af48;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #00953e;\n border-color: #002f14;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #00953e;\n border-color: #00712f;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #00953e;\n background-image: none;\n border-color: #00712f;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #00712f;\n border-color: #002f14;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #00c853;\n border-color: #00af48;\n}\n.btn-success .badge {\n color: #00c853;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #3d5afe;\n border-color: #2444fe;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #0a2ffe;\n border-color: #0119a1;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #0a2ffe;\n border-color: #0123e3;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #0a2ffe;\n background-image: none;\n border-color: #0123e3;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #0123e3;\n border-color: #0119a1;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #3d5afe;\n border-color: #2444fe;\n}\n.btn-info .badge {\n color: #3d5afe;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #ffab00;\n border-color: #e69a00;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #cc8900;\n border-color: #664400;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #cc8900;\n border-color: #a87100;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #cc8900;\n background-image: none;\n border-color: #a87100;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #a87100;\n border-color: #664400;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #ffab00;\n border-color: #e69a00;\n}\n.btn-warning .badge {\n color: #ffab00;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #ef5350;\n border-color: #ed3c39;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #eb2521;\n border-color: #98110e;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #eb2521;\n border-color: #d51713;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #eb2521;\n background-image: none;\n border-color: #d51713;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #d51713;\n border-color: #98110e;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #ef5350;\n border-color: #ed3c39;\n}\n.btn-danger .badge {\n color: #ef5350;\n background-color: #fff;\n}\n.btn-link {\n font-weight: 400;\n color: #0065ff;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #0747a6;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #7a869a;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #ebecf0;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #172b4d;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #172b4d;\n text-decoration: none;\n background-color: #ebecf0;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #172b4d;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #7a869a;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #7a869a;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 700px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #ebecf0;\n}\n.nav > li.disabled > a {\n color: #7a869a;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #7a869a;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #ebecf0;\n border-color: #0065ff;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #ebecf0 #ebecf0 #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #5e6c84;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #0065ff;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 54px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 700px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 700px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 700px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n@media (min-width: 700px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 700px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 700px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-brand {\n float: left;\n height: 54px;\n padding: 17px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 700px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: 15px;\n margin-top: 10px;\n margin-bottom: 10px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 700px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 8.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 699px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 700px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 17px;\n padding-bottom: 17px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-right: -15px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 10px;\n margin-bottom: 10px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 699px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 700px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-sm {\n margin-top: 12px;\n margin-bottom: 12px;\n}\n.navbar-btn.btn-xs {\n margin-top: 16px;\n margin-bottom: 16px;\n}\n.navbar-text {\n margin-top: 17px;\n margin-bottom: 17px;\n}\n@media (min-width: 700px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 700px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #ffffff;\n border-color: #c1c7d0;\n}\n.navbar-default .navbar-brand {\n color: #344563;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #344563;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #8993a4;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #505f79;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #c1c7d0;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n@media (max-width: 699px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #8993a4;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #505f79;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #c1c7d0;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #c1c7d0;\n}\n.navbar-default .navbar-link {\n color: #8993a4;\n}\n.navbar-default .navbar-link:hover {\n color: #505f79;\n}\n.navbar-default .btn-link {\n color: #8993a4;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #505f79;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #c1c7d0;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 699px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #a5aebb;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #a5aebb;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #7a869a;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #fff;\n background-color: #00875a;\n border-color: #00875a;\n}\n.alert-success hr {\n border-top-color: #006e49;\n}\n.alert-success .alert-link {\n color: #e6e6e6;\n}\n.alert-info {\n color: #fff;\n background-color: #448aff;\n border-color: #448aff;\n}\n.alert-info hr {\n border-top-color: #2a7aff;\n}\n.alert-info .alert-link {\n color: #e6e6e6;\n}\n.alert-warning {\n color: #fff;\n background-color: #ff8b00;\n border-color: #ff8b00;\n}\n.alert-warning hr {\n border-top-color: #e67d00;\n}\n.alert-warning .alert-link {\n color: #e6e6e6;\n}\n.alert-danger {\n color: #fff;\n background-color: #de350b;\n border-color: #de350b;\n}\n.alert-danger hr {\n border-top-color: #c62f0a;\n}\n.alert-danger .alert-link {\n color: #e6e6e6;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #7a869a;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #616d80;\n}\n.label-primary {\n background-color: #0052cc;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #003d99;\n}\n.label-success {\n background-color: #36b37e;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #2a8c62;\n}\n.label-info {\n background-color: #3d5afe;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #0a2ffe;\n}\n.label-warning {\n background-color: #ffab00;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #cc8900;\n}\n.label-danger {\n background-color: #ff5630;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #fc2e00;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #ebecf0;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #6554c0;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #36b37e;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #3d5afe;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #ffab00;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #ff5630;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 1;\n color: #172b4d;\n text-align: center;\n background-color: #ebecf0;\n border: 1px solid #ced0da;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ebecf0;\n}\n.list-group-item:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #ebecf0;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #7a869a;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #0065ff;\n background-color: #fff;\n border-color: #ebecf0;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #ffffff;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #7a869a;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #172b4d;\n text-decoration: none;\n background-color: #fff;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 14px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 14px 15px;\n background-color: #fff;\n border-top: 1px solid #ebecf0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ebecf0;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ebecf0;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #344563;\n background-color: #fff;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #fff;\n background-color: #344563;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #0052cc;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #0052cc;\n border-color: #0052cc;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #0052cc;\n}\n.panel-primary > .panel-heading .badge {\n color: #0052cc;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #0052cc;\n}\n.panel-success {\n border-color: #36b37e;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #36b37e;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #36b37e;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #36b37e;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ff5630;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ff5630;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ff5630;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ff5630;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #ebecf0;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #fff;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #0065ff;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #0747a6;\n background-color: #ebecf0;\n border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #0052cc;\n border-color: #0052cc;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #7a869a;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #0065ff;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #091e42;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #ced0da;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #ced0da;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.panel-body:before,\n.panel-body:after,\n.pager:before,\n.pager:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after,\n.agreement-footer:before,\n.agreement-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.panel-body:after,\n.pager:after,\n.modal-header:after,\n.modal-footer:after,\n.agreement-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n@media screen and (max-width: 991px) {\n html,\n body {\n overflow-x: hidden;\n }\n}\n@media screen and (min-width: 992px) {\n .md-margin-top-no {\n margin-top: 0px !important;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .sm-margin-top {\n margin-top: 20px !important;\n }\n .sm-margin-top-no {\n margin-top: 0px !important;\n }\n .sm-margin-top-half {\n margin-top: 6.6px !important;\n }\n .sm-align-row-buttons {\n margin-top: 5px !important;\n }\n}\n@media screen and (max-width: 767px) {\n .xs-margin-top {\n margin-top: 20px !important;\n }\n .xs-margin-top-half {\n margin-top: 6.6px !important;\n }\n}\n.flex-row {\n display: block;\n margin: 0 -15px;\n}\n.flex-row-section {\n align-items: center;\n display: flex;\n flex: 1;\n}\n.flex-row-section + .flex-row-section {\n margin-top: 20px;\n}\n.flex-row-col {\n flex: 1;\n padding: 0 15px;\n}\n@media screen and (min-width: 768px) {\n .flex-row {\n display: flex;\n align-items: center;\n }\n .flex-row-section + .flex-row-section {\n margin: 0;\n }\n .flex-row-section,\n .flex-row-col {\n flex: 0;\n align-items: center;\n }\n .flex-row-section.flex-row-section-auto,\n .flex-row-section.flex-row-section-auto > .flex-row-col {\n flex: 1;\n }\n}\n.flex-row-col-shrink {\n flex: 0 !important;\n}\n.auth-message {\n background-color: #ebecf0;\n padding: 20px 0px;\n width: 100%;\n position: fixed;\n top: -100%;\n left: 0px;\n z-index: 1070;\n transition: top 300ms ease;\n}\n.auth-message.show {\n top: 0px;\n bottom: auto;\n}\n.auth-message p {\n padding: 5px 0px;\n color: #172b4d;\n}\n@media screen and (max-width: 991px) {\n .auth-message {\n text-align: center;\n }\n .auth-message .btn {\n padding: 10px 16px;\n font-size: 18px;\n }\n}\n.alerts-snackbar {\n position: fixed;\n top: -100%;\n width: 100%;\n z-index: 1060;\n text-align: center;\n font-size: 18px;\n transition: top 300ms ease;\n pointer-events: none;\n}\n.alerts-snackbar.in {\n top: 0px;\n transition: top 200ms ease;\n}\n.alerts-snackbar p {\n display: inline-block;\n border-radius: 0px 0px 4px 4px;\n margin: 0px;\n pointer-events: all;\n}\n.agreement-overlay {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n z-index: 1060;\n background-color: rgba(9, 30, 66, 0.5);\n overflow-x: scroll;\n}\n.agreement-overlay .container {\n max-width: 900px;\n padding: 20px 30px;\n}\n.agreement-content {\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n padding: 10px 16px;\n}\n.agreement-header {\n padding: 10px 0;\n border-bottom: 1px solid #ebecf0;\n}\n.agreement-header h2 {\n margin-top: 0;\n}\n.agreement-header p {\n margin: 0;\n padding: 0;\n}\n.agreement-body {\n padding: 20px 0;\n}\n.agreement-body p.lead {\n margin: 0;\n padding: 0;\n}\n.agreement-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #ced0da;\n padding: 10px 0;\n}\n.agreement-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.agreement-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.agreement-footer .btn-block + .btn-block {\n margin-left: 0;\n}\nbody.agreement-overlay-visible {\n overflow: hidden;\n}\n.loader {\n width: 100%;\n height: 49px;\n text-align: center;\n}\n.loader.loader-spaced {\n margin: 40px 0px;\n}\n.loader-spinning-wheel {\n width: 49px;\n height: 49px;\n margin: 0 auto;\n border: 3px solid #7a869a;\n border-radius: 50%;\n border-left-color: transparent;\n border-right-color: transparent;\n animation: cssload-spin 575ms infinite linear;\n -o-animation: cssload-spin 575ms infinite linear;\n -ms-animation: cssload-spin 575ms infinite linear;\n -webkit-animation: cssload-spin 575ms infinite linear;\n -moz-animation: cssload-spin 575ms infinite linear;\n}\n@keyframes cssload-spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n@-o-keyframes cssload-spin {\n 100% {\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-ms-keyframes cssload-spin {\n 100% {\n -ms-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes cssload-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-moz-keyframes cssload-spin {\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.navbar {\n margin-bottom: 0px;\n}\n.navbar .navbar-full .navbar-brand {\n padding-top: 11px;\n padding-bottom: 11px;\n font-size: 21px;\n}\n.navbar .navbar-full .navbar-brand > * {\n display: inline-block;\n vertical-align: middle;\n}\n.navbar .navbar-full .navbar-brand img {\n height: 32px;\n margin-right: 6px;\n}\n.navbar .navbar-full .navbar-nav > li > a {\n font-size: 16.8px;\n}\n.navbar .navbar-full .navbar-icon {\n display: block;\n height: 54px;\n padding: 10px 15px;\n padding-top: 13px;\n padding-bottom: 13px;\n position: relative;\n color: #8993a4;\n}\n.navbar .navbar-full .navbar-icon:hover,\n.navbar .navbar-full .navbar-icon:focus {\n color: #505f79;\n background-color: transparent;\n}\n.navbar .navbar-full .navbar-icon .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.navbar .navbar-full .navbar-icon .badge {\n background-color: #ff5630;\n position: absolute;\n top: 6px;\n right: 6px;\n font-size: 9px;\n}\n.navbar .navbar-full .open .navbar-icon,\n.navbar .navbar-full .open .navbar-icon:hover,\n.navbar .navbar-full .open .navbar-icon:focus {\n background-color: #dfe1e6;\n color: #6b778c;\n}\n.navbar .navbar-full .nav-guest,\n.navbar .navbar-full .nav-user {\n float: right;\n}\n.navbar .navbar-full .nav-guest .navbar-btn,\n.navbar .navbar-full .nav-user .navbar-btn {\n margin-left: 15px;\n}\n.navbar .navbar-full .nav-user .dropdown-toggle {\n padding: 10px;\n}\n.navbar .navbar-full .nav-user .dropdown-toggle img {\n width: 34px;\n height: 34px;\n}\n.navbar ul.navbar-compact-nav {\n border-collapse: collapse;\n display: table;\n margin: 0px;\n table-layout: fixed;\n width: 100%;\n}\n.navbar ul.navbar-compact-nav > li {\n display: table-cell;\n width: 100%;\n}\n.navbar ul.navbar-compact-nav > li > a,\n.navbar ul.navbar-compact-nav > li > button {\n background: none;\n border: none;\n display: block;\n padding-top: 13px;\n padding-bottom: 13px;\n width: 100%;\n color: #8993a4;\n text-align: center;\n}\n.navbar ul.navbar-compact-nav > li > a.active,\n.navbar ul.navbar-compact-nav > li > button.active,\n.navbar ul.navbar-compact-nav > li > a:hover,\n.navbar ul.navbar-compact-nav > li > button:hover,\n.navbar ul.navbar-compact-nav > li > a:focus,\n.navbar ul.navbar-compact-nav > li > button:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n.navbar ul.navbar-compact-nav > li > a > img,\n.navbar ul.navbar-compact-nav > li > button > img {\n width: 24px;\n height: 24px;\n}\n.navbar ul.navbar-compact-nav > li > button {\n display: inline-block;\n}\n.navbar ul.navbar-compact-nav > li > a > .material-icon {\n font-size: 24px;\n line-height: 24px;\n}\n@media (max-width: 700px) {\n .navbar.navbar-misago {\n min-height: auto;\n }\n}\n.navbar-misago .navbar-desktop-nav {\n display: none;\n}\n@media (min-width: 700px) {\n .navbar-misago ul.navbar-compact-nav {\n display: none;\n }\n .navbar-misago .navbar-desktop-nav {\n display: block;\n }\n}\n.nav-side > a > .material-icon {\n margin: -5px;\n margin-right: 10px;\n position: relative;\n bottom: 1px;\n width: 24px;\n height: 24px;\n font-size: 24px;\n line-height: 24px;\n}\n.nav-side > a .badge {\n position: relative;\n top: 1px;\n}\n.nav-pills > li > a {\n display: flex;\n align-items: center;\n padding: 5px 10px;\n}\n.nav-pills > li > a .material-icon {\n margin-right: 3px;\n}\n.nav-pills > li > a,\n.nav-pills > li > a:link,\n.nav-pills > li > a:visited {\n background-color: #ebecf0;\n color: #344563;\n}\n.nav-pills > li > a:focus,\n.nav-pills > li > a:hover,\n.nav-pills > li > a:active {\n background-color: #dcdee5;\n color: #344563;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:link,\n.nav-pills > li.active > a:visited,\n.nav-pills > li.active > a:focus,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:active {\n background-color: #344563;\n color: #fff;\n}\n.nav-container .btn-block {\n margin-bottom: 20px;\n}\n.nav-container .nav {\n margin-right: -10px;\n margin-bottom: 30px;\n}\n.nav-container li {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.breadcrumbs {\n display: block;\n padding: 0;\n margin-bottom: 10px;\n}\n.breadcrumbs-item {\n display: inline-block;\n margin-right: 15px;\n margin-bottom: 10px;\n padding: 0;\n list-style: none;\n}\n.breadcrumbs-item a {\n display: flex;\n align-items: center;\n text-decoration: none;\n}\n.breadcrumbs-item a,\n.breadcrumbs-item a:visited {\n color: #5e6c84;\n}\n.breadcrumbs-item a:hover,\n.breadcrumbs-item a:focus {\n color: #172b4d;\n}\n.breadcrumbs-item a:hover .breadcrumbs-item-name,\n.breadcrumbs-item a:focus .breadcrumbs-item-name {\n text-decoration: underline;\n}\n.breadcrumbs-item a:active {\n color: #172b4d;\n}\n.breadcrumbs-item .material-icon {\n margin-right: 4px;\n}\n@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n src: url(./fonts/MaterialIcons-Regular.eot);\n /* For IE6-8 */\n src: local(\"Material Icons\"), local(\"MaterialIcons-Regular\"), url(./fonts/MaterialIcons-Regular.woff2) format(\"woff2\"), url(./fonts/MaterialIcons-Regular.woff) format(\"woff\"), url(./fonts/MaterialIcons-Regular.ttf) format(\"truetype\");\n}\n.material-icon {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 1;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n vertical-align: middle;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n /* Support for IE. */\n font-feature-settings: \"liga\";\n}\n.modal-toolbar {\n background: #ebecf0;\n border-bottom: 1px solid #ced0da;\n overflow: auto;\n padding: 6px 12px;\n}\n.modal-toolbar .pull-left {\n margin-right: 8px;\n}\n.modal-toolbar p {\n padding: 5px 0px;\n margin-bottom: 0px;\n}\n@media screen and (max-width: 991px) {\n .modal-message {\n text-align: center;\n }\n .modal-message .message-icon {\n margin: 30px;\n }\n .modal-message .message-icon .material-icon {\n font-size: 160px;\n }\n}\n@media screen and (min-width: 992px) {\n .modal-message .modal-body {\n padding-top: 20px;\n padding-bottom: 30px;\n }\n .modal-message .message-icon {\n float: left;\n position: relative;\n left: 7px;\n }\n .modal-message .message-icon .material-icon {\n font-size: 50px;\n }\n .modal-message .message-body {\n margin-left: 75px;\n margin-top: 10px;\n }\n .modal-message .message-body p {\n margin-top: 20px;\n }\n .modal-message .message-body .lead {\n margin-top: 0px;\n margin-bottom: 0px;\n }\n}\n.modal-loader {\n padding: 50px 0px;\n}\n.modal-loader .loader {\n width: 100%;\n height: 80px;\n text-align: center;\n}\n.modal-loader .loader-spinning-wheel {\n width: 80px;\n height: 80px;\n}\n.modal-body .form-group {\n min-height: 34px;\n}\n.list-item-errors {\n margin-bottom: 20px;\n}\n.list-errored-items li:last-child .list-item-errors {\n margin-bottom: 0px;\n}\n.modal-post-likers .media-list {\n margin: 0px;\n}\n.modal-post-likers .item-title {\n display: block;\n}\n.has-feedback .material-icon.form-control-feedback {\n top: 6px;\n right: 24px;\n font-size: 1.42857143;\n line-height: 1.42857143;\n}\n.well.well-form.well-done {\n font-size: 18px;\n text-align: center;\n}\n.well.well-form.well-done .message-icon {\n margin-bottom: 10px;\n font-size: 90px;\n line-height: 90px;\n}\n.well.well-form.well-done .message-body {\n margin-bottom: 20px;\n}\n.well.well-form.well-noscript {\n font-size: 18px;\n text-align: center;\n}\n.well.well-form.well-noscript .message-icon {\n margin-bottom: 10px;\n font-size: 90px;\n line-height: 90px;\n}\n.btn.btn-yes-no,\n.btn.btn-select {\n background: transparent;\n border: 1px solid #ced0da;\n}\n.btn.btn-yes-no .material-icon,\n.btn.btn-select .material-icon {\n margin: -4px 0px;\n margin-right: 8px;\n position: relative;\n bottom: 1px;\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n}\n@media screen and (max-width: 767px) {\n .btn.btn-yes-no {\n width: 100%;\n overflow: auto;\n }\n .btn.btn-yes-no .material-icon {\n float: left;\n margin-top: 1px;\n }\n .btn.btn-yes-no .btn-text {\n display: block;\n margin-left: 30px;\n text-align: left;\n white-space: normal;\n }\n}\ninput.hidden-file-upload {\n position: absolute;\n top: -9999px;\n left: -9999px;\n}\n.form-search {\n position: relative;\n}\n.form-search .form-control {\n padding-right: 30px;\n}\n.form-search .material-icon {\n position: absolute;\n top: 5px;\n right: 5px;\n color: #7a869a;\n font-size: 24px;\n line-height: 24px;\n pointer-events: none;\n}\n.btn.btn-loading,\n.btn.btn-loading:link,\n.btn.btn-loading:active,\n.btn.btn-loading:visited,\n.btn.btn-loading:hover,\n.btn.btn-loading:focus {\n color: transparent;\n}\n.btn.btn-loading .loader,\n.btn.btn-loading:link .loader,\n.btn.btn-loading:active .loader,\n.btn.btn-loading:visited .loader,\n.btn.btn-loading:hover .loader,\n.btn.btn-loading:focus .loader {\n height: 20px;\n margin-top: -20px;\n}\n.btn.btn-loading .loader > div,\n.btn.btn-loading:link .loader > div,\n.btn.btn-loading:active .loader > div,\n.btn.btn-loading:visited .loader > div,\n.btn.btn-loading:hover .loader > div,\n.btn.btn-loading:focus .loader > div {\n width: 20px;\n height: 20px;\n}\n.btn.btn-loading.btn-default .loader > div {\n border-top-color: #172b4d;\n border-bottom-color: #172b4d;\n}\n.btn.btn-loading.btn-primary .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-success .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-info .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-warning .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-danger .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n.btn-icon .material-icon {\n margin: -1px -4px;\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n}\n.btn-icon .btn-text {\n margin-left: 10px;\n}\n.btn-icon .btn-text-left {\n margin-right: 10px;\n}\n.btn-block.btn-icon {\n padding-left: 0px;\n padding-right: 0px;\n}\n.dropdown-menu > li > a,\n.dropdown-menu > li > .btn-link,\n.modal-menu > li > a,\n.modal-menu > li > .btn-link {\n display: block;\n border: none;\n clear: both;\n float: none;\n padding: 6px 20px;\n width: 100%;\n color: #172b4d;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > .btn-link:hover,\n.modal-menu > li > a:hover,\n.modal-menu > li > .btn-link:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-menu > li > .btn-link:focus,\n.modal-menu > li > a:focus,\n.modal-menu > li > .btn-link:focus {\n background-color: #ebecf0;\n color: #172b4d;\n text-decoration: none;\n}\n.dropdown-menu > li > a:active,\n.dropdown-menu > li > .btn-link:active,\n.modal-menu > li > a:active,\n.modal-menu > li > .btn-link:active {\n background-color: #ebecf0;\n color: #172b4d;\n text-decoration: none;\n}\n.dropdown-menu > li > a:disabled,\n.dropdown-menu > li > .btn-link:disabled,\n.modal-menu > li > a:disabled,\n.modal-menu > li > .btn-link:disabled {\n color: rgba(23, 43, 77, 0.5);\n}\n.dropdown-menu > li > a .material-icon,\n.dropdown-menu > li > .btn-link .material-icon,\n.modal-menu > li > a .material-icon,\n.modal-menu > li > .btn-link .material-icon {\n margin: -2px 0px;\n margin-right: 7px;\n position: relative;\n bottom: 1px;\n font-size: 18px;\n}\n.dropdown-menu > li > a .badge,\n.dropdown-menu > li > .btn-link .badge,\n.modal-menu > li > a .badge,\n.modal-menu > li > .btn-link .badge {\n float: right;\n position: relative;\n top: 1px;\n}\n.modal-menu {\n margin: 20px 0px;\n padding: 0px;\n}\n.modal-menu > li {\n margin: 6.66666667px 0px;\n padding: 0px;\n list-style: none;\n}\n.dropdown-menu {\n min-width: 210px;\n}\n.dropdown-menu .dropdown-footer {\n padding: 6px 20px;\n}\n.dropdown-menu .dropdown-buttons {\n padding: 2px 20px;\n padding-bottom: 7px;\n}\n.dropdown-menu .dropdown-buttons .btn {\n margin: 4px 0px;\n}\n.mobile-dropdown {\n position: relative;\n}\n.mobile-dropdown.open > .dropdown-menu,\n.compact-nav.open > .dropdown-menu {\n border: none;\n border-radius: 0;\n display: block;\n margin: 0px;\n width: 100%;\n}\n.user-dropdown .guest-preview {\n text-align: center;\n}\n.user-dropdown .guest-preview .row {\n margin: 0px;\n}\n.navbar .user-dropdown {\n width: 240px;\n}\n.user-dropdown .dropdown-header {\n padding: 6px 20px;\n font-size: 18px;\n}\n.user-dropdown .dropdown-header strong {\n font-weight: normal;\n}\n@media screen and (min-width: 992px) {\n .category-picker .dropdown-menu {\n width: 300px;\n }\n}\n.category-picker .dropdown-menu > li > .btn-link {\n white-space: normal;\n word-wrap: break-word;\n}\n@media screen and (max-width: 767px) {\n .dropdown-menu.stick-to-bottom {\n border-radius: 0px;\n border: none;\n max-height: 300px;\n overflow-y: auto;\n -webkit-box-shadow: 0px 0px 30px #7a869a;\n box-shadow: 0px 0px 30px #7a869a;\n clear: both;\n top: auto;\n width: 100%;\n position: fixed;\n bottom: 0px;\n margin: 0px;\n padding: 0px;\n padding-bottom: 20px;\n }\n .dropdown-menu.stick-to-bottom li {\n float: none;\n margin: 0px;\n clear: both;\n }\n .dropdown-menu.stick-to-bottom li > a,\n .dropdown-menu.stick-to-bottom li > .btn {\n padding-top: 15px;\n padding-bottom: 15px;\n border-bottom: 1px solid #ebecf0;\n }\n}\n.category-label {\n border-radius: 0.25em;\n padding: 0.2em 0.6em 0.3em;\n}\n.category-label-color,\n.category-label-color:link,\n.category-label-color:focus,\n.category-label-color:active,\n.category-label-color:visited,\n.category-label-color:hover {\n color: #fff;\n}\n.category-label-no-color,\n.category-label-no-color:link,\n.category-label-no-color:focus,\n.category-label-no-color:active,\n.category-label-no-color:visited,\n.category-label-no-color:hover {\n background-color: #ebecf0;\n color: #344563;\n}\n.thread-flags {\n display: flex;\n align-items: center;\n opacity: 0.8;\n margin: 0;\n padding: 0;\n}\n.thread-flags li {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 3px;\n list-style-type: none;\n cursor: default;\n}\n.thread-flags li + li {\n margin-left: 7.5px;\n}\n.thread-flags .material-icon {\n font-size: 16px;\n line-height: 16px;\n}\n.thread-flag-pinned-globally {\n color: #2563eb;\n background: #dbeafe;\n}\n.thread-flag-pinned-locally {\n color: #3b82f6;\n background: #dbeafe;\n}\n.thread-flag-answered {\n color: #4d7c0f;\n background: #d9f99d;\n}\n.thread-flag-poll {\n color: #c026d3;\n background: #f5d0fe;\n}\n.thread-flag-unapproved {\n color: #ffffff;\n background: #dc2626;\n}\n.thread-flag-closed {\n color: #dc2626;\n background: #fecaca;\n}\n.thread-flag-hidden {\n color: #ffffff;\n background: #64748b;\n}\n.threads-replies {\n display: flex;\n align-items: center;\n color: #5e6c84;\n font-size: 16px;\n font-weight: bold;\n}\n.threads-replies .material-icon {\n margin-right: 7.5px;\n transform: matrix(-1, 0, 0, 1, 0, 0);\n}\n.thread-user-card {\n display: flex;\n align-items: center;\n}\n.thread-user-card-media {\n flex: 0;\n margin-right: 15px;\n}\n.thread-user-card-media img {\n border-radius: 3px;\n}\n.thread-user-card-body {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.navbar-misago .dropdown-menu.dropdown-search-results {\n margin: 0px;\n padding-top: 0px;\n width: 400px;\n left: auto;\n right: 0px;\n}\n.dropdown-search-results .form-group {\n margin: 0px;\n padding: 12px;\n}\nli.dropdown-search-message {\n text-align: center;\n}\n.dropdown-search-thread {\n width: 100%;\n}\n.dropdown-search-thread h5 {\n margin: 0px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dropdown-search-thread small {\n display: block;\n margin: 0px;\n margin-top: 4px;\n}\n.page-header {\n margin: 0;\n margin-top: 10px;\n}\n.page-header-banner-bg-overlay {\n padding: 20px 0;\n}\n.page-header h1 {\n margin: 0;\n overflow-wrap: break-word;\n}\n.page-container {\n padding-top: 20px;\n}\n@media screen and (max-width: 991px) {\n .panel-message-body {\n text-align: center;\n }\n .panel-message-body .message-icon {\n margin: 30px;\n }\n .panel-message-body .message-icon .material-icon {\n font-size: 160px;\n }\n}\n@media screen and (min-width: 992px) {\n .panel-message-body {\n padding: 20px;\n padding-bottom: 30px;\n }\n .panel-message-body .message-icon {\n float: left;\n }\n .panel-message-body .message-icon .material-icon {\n font-size: 50px;\n }\n .panel-message-body .message-body {\n margin-left: 65px;\n margin-top: 10px;\n }\n .panel-message-body .message-body .lead {\n margin-bottom: 0px;\n }\n .panel-message-body .message-body .help-block {\n margin-top: 13.2px;\n }\n}\n.panel-body-loading {\n padding: 0px;\n text-align: center;\n}\n.misago-footer {\n margin-top: 30px;\n margin-bottom: 50px;\n}\n.misago-footer .footer-content {\n border-top: 1px solid #ebecf0;\n padding-top: 30px;\n}\n.misago-footer .noscript-message .material-icon {\n position: relative;\n bottom: 1px;\n font-size: 18px;\n}\n.ui-preview {\n color: #ebecf0;\n -webkit-animation: ui-preview-animation 1s linear infinite;\n -o-animation: ui-preview-animation 1s linear infinite;\n animation: ui-preview-animation 1s linear infinite;\n}\n@keyframes ui-preview-animation {\n 0% {\n filter: alpha(opacity=100);\n opacity: 1;\n }\n 50% {\n filter: alpha(opacity=10);\n opacity: 0.1;\n }\n 100% {\n filter: alpha(opacity=100);\n opacity: 1;\n }\n}\n.ui-preview-text {\n background: #ebecf0;\n border-radius: 100px;\n display: inline-block;\n height: 14px;\n position: relative;\n top: 3px;\n}\n.ui-preview-paragraph .ui-preview-text {\n margin-right: 6px;\n}\n.ui-preview-paragraph .ui-preview-text:last-child {\n margin-right: 0px;\n}\n.ui-preview-img {\n background: #ebecf0;\n border-radius: 5px;\n}\n.pager-undercontent {\n margin-top: -20px;\n}\n.pager-more {\n text-align: center;\n}\n@media screen and (min-width: 992px) {\n .pager-more .btn {\n padding-left: 20px;\n padding-right: 20px;\n }\n}\n.misago-pagination {\n display: flex;\n}\n.misago-pagination .btn {\n display: block;\n width: 100%;\n}\n.misago-pagination .btn + .btn {\n margin-left: 30px;\n}\n@media screen and (max-width: 767px) {\n .toolbar-item .misago-pagination {\n flex: 1;\n }\n}\n.panel-poll h2 {\n margin-top: 0px;\n}\n.poll-select-choice .btn,\n.poll-select-choice .btn:active,\n.poll-select-choice .btn:focus,\n.poll-select-choice .btn:hover {\n background: transparent;\n border: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n margin: 6px 0px;\n padding: 0px;\n padding-left: 6px;\n outline: none;\n text-align: left;\n}\n.poll-select-choice .btn .material-icon {\n margin-right: 6px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-heigh: 28px;\n color: #ced0da;\n}\n.poll-select-choice .btn.btn-selected .material-icon {\n color: #0052cc;\n}\n.poll-help {\n font-size: 12px;\n}\n.poll-chart-selected .material-icon {\n margin-right: 4px;\n position: relative;\n bottom: 1px;\n height: 14px;\n width: 14px;\n color: #36b37e;\n font-size: 14px;\n line-heigh: 14px;\n}\n.poll-options {\n margin-bottom: 0px;\n}\n@media screen and (max-width: 767px) {\n .poll-options {\n margin-top: -6px;\n }\n .poll-options .btn {\n margin: 6px 0px;\n }\n}\n.user-status.user-banned .status-icon {\n color: #ff5630;\n}\n.user-status.user-online .status-icon {\n color: #36b37e;\n}\n.user-status.user-offline .status-icon {\n color: #7a869a;\n}\n@media screen and (min-width: 768px) {\n .user-card {\n text-align: center;\n }\n}\n.user-card-small-avatar img {\n width: 100%;\n height: auto;\n}\n@media screen and (min-width: 768px) {\n .user-card-small-avatar {\n display: none;\n }\n}\n@media screen and (max-width: 767px) {\n .user-card-avatar {\n display: none;\n }\n}\n.toolbar {\n display: block;\n margin: 0 -15px;\n}\n.toolbar-section {\n justify-items: center;\n display: flex;\n flex: 1;\n margin-bottom: 20px;\n}\n.toolbar-item {\n flex: 1;\n padding: 0 15px;\n}\n.toolbar-item h3,\n.toolbar-item p {\n margin: 0;\n}\n.toolbar-item-shrink {\n flex: 0;\n}\n.toolbar-spacer {\n display: none;\n}\n@media screen and (min-width: 768px) {\n .toolbar {\n display: flex;\n }\n .toolbar-section,\n .toolbar-item {\n flex: 0;\n align-items: center;\n }\n .toolbar-section.toolbar-section-auto,\n .toolbar-section.toolbar-section-auto .toolbar-item {\n flex: 1;\n }\n .toolbar-spacer {\n display: block;\n flex: 1;\n }\n .toolbar-item .form-search {\n width: 250px;\n }\n}\n@media screen and (max-width: 767px) {\n .toolbar-item p {\n text-align: center;\n }\n}\nabbr {\n border: none !important;\n}\n.item-title {\n color: #172b4d;\n font-weight: bold;\n text-decoration: none;\n}\na.item-title:link,\na.item-title:active,\na.item-title:visited,\na.item-title:hover {\n color: #172b4d;\n font-weight: bold;\n}\na.item-title:hover {\n text-decoration: underline;\n}\n.message-line {\n text-align: center;\n}\n.message-line .material-icon {\n margin-right: 6.66666667px;\n font-size: 20px;\n line-height: 20px;\n height: 20px;\n width: 20px;\n}\n.text-ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.misago-markup h1,\n.misago-markup h2,\n.misago-markup h3,\n.misago-markup h4,\n.misago-markup h5,\n.misago-markup h6,\n.misago-markup p {\n word-wrap: break-word;\n}\n.misago-markup h1,\n.misago-markup h2,\n.misago-markup h3,\n.misago-markup h4,\n.misago-markup h5,\n.misago-markup h6 {\n margin-top: 40px;\n}\n.misago-markup > *,\n.misago-markup blockquote > * {\n margin: 20px 0px;\n}\n.misago-markup > *:first-child,\n.misago-markup blockquote > *:first-child {\n margin-top: 0px;\n}\n.misago-markup > *:last-child,\n.misago-markup blockquote > *:last-child {\n margin-bottom: 0px;\n}\n.misago-markup img {\n max-width: 100%;\n max-height: 500px;\n}\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background: #ebecf0;\n border: none;\n font-size: 14px;\n}\n.misago-markup .quote-block .quote-heading,\n.misago-markup blockquote .quote-heading {\n border-bottom: 1px solid #d4d6df;\n padding: 10px 20px;\n font-size: 12px;\n font-weight: bold;\n}\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n border: 1px solid #d4d6df;\n}\n.misago-markup .quote-body {\n background: #fff;\n margin: 0px;\n padding: 20px;\n}\n.misago-markup .quote-body > .quote-block,\n.misago-markup .quote-body > blockquote {\n border: 1px solid #d4d6df;\n}\n.misago-markup .spoiler-block {\n background: #ebecf0;\n border: none;\n font-size: 14px;\n}\n.misago-markup > .spoiler-block {\n border: 1px solid #d4d6df;\n position: relative;\n}\n.misago-markup .spoiler-body {\n background: #fff;\n margin: 0px;\n padding: 20px;\n}\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #fff;\n}\n.misago-markup .spoiler-block.revealed .spoiler-overlay {\n display: none;\n}\n.misago-markup ul {\n list-style-type: square;\n}\n.misago-markup ul li {\n list-style-type: square;\n}\n.misago-markup ol {\n list-style-type: decimal;\n}\n.misago-markup ol li {\n list-style-type: decimal;\n}\n.misago-markup pre {\n background: #eee;\n border: none;\n padding: 10px;\n overflow: hidden;\n color: #000;\n}\n.misago-markup pre code.hljs {\n margin: -10px;\n padding: 9.5px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview {\n border-radius: 6px;\n margin: 0px auto;\n overflow: hidden;\n position: relative;\n width: 200px;\n height: 200px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview .loader {\n display: none;\n position: absolute;\n top: 50px;\n height: 100px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel {\n border-width: 10px;\n border-color: #fff;\n border-left-color: transparent;\n border-right-color: transparent;\n width: 100px;\n height: 100px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img {\n filter: alpha(opacity=33);\n opacity: 0.33;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader {\n display: block;\n}\n@media (max-width: 699px) {\n .modal-change-avatar .modal-avatar-index .avatar-preview {\n margin-bottom: 20px;\n width: 150px;\n height: 150px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview img {\n width: 150px;\n height: 150px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview .loader {\n top: 25px;\n height: 100px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n}\n.modal-change-avatar .modal-avatar-index .btn {\n text-align: left;\n}\n.modal-change-avatar .modal-avatar-upload {\n text-align: center;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file {\n background: transparent;\n border: 2px solid #ebecf0;\n border-radius: 6px;\n padding: 10px 24px;\n -webkit-box-shadow: none;\n box-shadow: none;\n color: #7a869a;\n font-size: 18px;\n text-align: center;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file > .material-icon {\n display: block;\n margin: 0px auto;\n margin-bottom: 13.2px;\n font-size: 50px;\n width: 50px;\n height: 50px;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover,\n.modal-change-avatar .modal-avatar-upload .btn-pick-file:active {\n border-color: #0052cc;\n color: #0052cc;\n}\n.modal-change-avatar .modal-avatar-upload .text-muted {\n margin-top: 13.2px;\n}\n.modal-change-avatar .modal-avatar-upload .upload-progress img {\n border-radius: 4px;\n margin-bottom: 20px;\n max-height: 80px;\n width: auto;\n}\n.modal-change-avatar .modal-avatar-upload .upload-progress .progress {\n width: 70%;\n margin: 0px auto;\n}\n.modal-avatar-crop .crop-form {\n margin: 0px auto;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input {\n margin-top: 10px;\n -webkit-appearance: none;\n border: 1px solid white;\n width: 100%;\n /*hide the outline behind the border*/\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n background: #ebecf0;\n border: none;\n border-radius: 3px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n margin-top: -6px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus {\n outline: none;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track {\n background: #ebecf0;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track {\n width: 100%;\n height: 8px;\n background: #ebecf0;\n border: none;\n border-radius: 4px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track {\n width: 100%;\n height: 8px;\n /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */\n background: transparent;\n /*leave room for the larger thumb to overflow with a transparent border */\n border-color: transparent;\n border-width: 8px 0;\n /*remove default tick marks*/\n color: transparent;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower {\n background: #ebecf0;\n border-radius: 16px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper {\n background: #ebecf0;\n border-radius: 16px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower {\n background: #ebecf0;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper {\n background: #ebecf0;\n}\n.modal-change-avatar .modal-avatar-gallery {\n padding-bottom: 0px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery {\n margin-bottom: 20px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3 {\n margin-top: 0px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row {\n margin-bottom: 10px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn {\n border-radius: 6px;\n border: 2px solid #ebecf0;\n background: none;\n padding: 2px;\n position: relative;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover,\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus {\n border-color: #7a869a;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active {\n border-color: #0065ff;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img {\n border-radius: 4px;\n width: 100%;\n height: auto;\n}\n.category-main .read-status .material-icon {\n color: #ebecf0;\n}\n.category-main .read-status.item-new .material-icon {\n color: #0052cc;\n}\n.category-last-thread .media-heading a {\n display: inline-block;\n overflow: hidden;\n white-space: nowrap;\n width: 290px;\n text-overflow: ellipsis;\n vertical-align: top;\n}\n@media screen and (max-width: 991px) {\n .category-last-thread .media-heading a {\n width: 275px;\n }\n}\n@media screen and (max-width: 767px) {\n .category-last-thread .media-heading a {\n width: 260px;\n }\n}\n.category-thread-message .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.category-thread-message p {\n margin: 0px;\n}\n.list-inline.subcategories-list {\n overflow: auto;\n margin-top: -10px;\n}\n.list-inline.subcategories-list li {\n display: block;\n float: left;\n}\n.list-inline.subcategories-list li a,\n.list-inline.subcategories-list li a:link,\n.list-inline.subcategories-list li a:visited,\n.list-inline.subcategories-list li a:active,\n.list-inline.subcategories-list li a:hover,\n.list-inline.subcategories-list li a:focus {\n background-color: #ebecf0;\n border: 1px solid #dcdee5;\n border-radius: 4px;\n display: inline-block;\n margin-top: 10px;\n padding: 6px 12px;\n color: #5e6c84;\n}\n.list-inline.subcategories-list li:focus,\n.list-inline.subcategories-list li a:hover,\n.list-inline.subcategories-list li a:active {\n background-color: #dcdee5;\n color: #172b4d;\n text-decoration: none;\n}\n.row.subcategories-list .btn {\n margin-top: 20px;\n text-align: left;\n}\n#posting-placeholder {\n background-color: #ebecf0;\n display: none;\n margin-top: 30px;\n margin-bottom: -30px;\n padding: 20px 0px;\n transition: height 300ms;\n}\n#posting-placeholder.slide-in {\n display: block;\n}\n#posting-placeholder .first-row {\n margin-bottom: 20px;\n}\n#posting-placeholder .first-row .form-control {\n border: 1px solid #bfc2cf;\n}\n#posting-placeholder .first-row .posting-options .btn {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n#posting-placeholder .first-row .posting-options .btn .btn-text {\n margin-left: 5px;\n position: relative;\n top: 1px;\n}\n#posting-placeholder .first-row .posting-options .material-icon {\n width: 14px;\n height: 24px;\n margin-right: 0px;\n position: relative;\n top: 5px;\n font-size: 14px;\n line-height: 14px;\n text-align: center;\n}\n.posting-ui-preview {\n padding: 20px 0px;\n position: relative;\n}\n.posting-ui-preview .form-control {\n box-shadow: none;\n resize: none;\n}\n.posting-loader {\n text-align: center;\n}\n.posting-loader .loader {\n height: 100px;\n}\n.posting-loader .loader .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n}\n.posting-message {\n text-align: center;\n}\n.posting-message .material-icon {\n margin-right: 6.66666667px;\n position: relative;\n top: -1px;\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.posting-message .message-body p {\n font-size: 18px;\n}\n.editor-border {\n background-color: #fff;\n border: 1px solid #bfc2cf;\n border-radius: 4px;\n}\n.editor-border .form-control {\n border: none;\n resize: none;\n}\n.editor-border .form-control,\n.editor-border .form-control:focus,\n.editor-border .form-control:active {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.editor-footer {\n border-top: 1px solid #bfc2cf;\n padding: 6px 12px;\n overflow: auto;\n}\n.editor-footer .pull-left {\n margin-right: 12px;\n}\n.editor-footer .pull-right {\n margin-left: 12px;\n}\n.editor-footer .btn-icon .material-icon {\n margin-bottom: -2px;\n}\n@media screen and (max-width: 991px) {\n .editor-footer .buttons-list {\n float: none !important;\n margin: 0px;\n margin-bottom: 10px;\n }\n .editor-footer .buttons-list .btn {\n display: inline-block;\n float: none !important;\n margin: 6.66666667px;\n }\n .editor-footer .btn-protect .btn-text {\n margin-left: 10px;\n }\n .editor-footer .btn-protect .material-icon {\n position: relative;\n bottom: 2px;\n width: 14px;\n height: 14px;\n font-size: 14px;\n line-height: 14px;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .buttons-list .btn:first-child {\n margin-left: 0px;\n }\n}\n@media screen and (max-width: 767px) {\n .buttons-list {\n text-align: center;\n }\n .buttons-list .btn-protect {\n display: block;\n float: none !important;\n width: 100%;\n margin: 0px;\n margin-top: 10px;\n }\n}\n.editor-attachments-list {\n margin: 0px;\n padding: 0px;\n}\n.editor-attachments-list li {\n margin: 0px;\n}\n.editor-attachment-complete {\n border-top: 1px solid #bfc2cf;\n padding: 6px 0px;\n padding-right: 12px;\n}\n.editor-attachment-complete .editor-attachment-image {\n float: left;\n width: 50px;\n}\n.editor-attachment-complete .editor-attachment-image a {\n background-size: cover;\n background-position: center;\n border-radius: 3px;\n display: block;\n margin: 0px auto;\n width: 36px;\n height: 36px;\n}\n.editor-attachment-complete .editor-attachment-icon {\n float: left;\n width: 50px;\n text-align: center;\n}\n.editor-attachment-complete .editor-attachment-icon .material-icon {\n position: relative;\n top: 2px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.editor-attachment-complete .editor-attachment-details {\n margin-left: 50px;\n}\n.editor-attachment-complete .editor-attachment-details h4,\n.editor-attachment-complete .editor-attachment-details p {\n margin: 0px;\n padding: 0px;\n font-size: 14px;\n}\n.editor-attachment-complete .editor-attachment-details p {\n margin-top: 3px;\n color: #7a869a;\n font-size: 12px;\n}\n.editor-attachment-complete .editor-attachment-details abbr {\n white-space: nowrap;\n}\n@media screen and (min-width: 768px) {\n .editor-attachment-actions {\n padding-top: 3px;\n }\n}\n@media screen and (max-width: 767px) {\n .editor-attachment-actions {\n padding-left: 12px;\n padding-right: 12px;\n }\n}\n.editor-attachment-error {\n border-top: 1px solid #bfc2cf;\n padding: 6px 0px;\n padding-right: 12px;\n}\n.editor-attachment-error-icon {\n float: left;\n width: 50px;\n text-align: center;\n}\n.editor-attachment-error-icon .material-icon {\n position: relative;\n top: 2px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.editor-attachment-error-message {\n margin-left: 50px;\n padding: 6px 0px;\n position: relative;\n}\n.editor-attachment-error-message h4,\n.editor-attachment-error-message p {\n margin: 0px;\n padding: 0px;\n font-size: 14px;\n}\n.editor-attachment-error-message p {\n margin-top: 3px;\n font-size: 12px;\n}\n.editor-attachment-error-message .btn {\n position: absolute;\n top: 9px;\n right: 12px;\n}\n@media screen and (max-width: 767px) {\n .editor-attachment-error-message .btn {\n display: block;\n margin-top: 10px;\n position: static;\n }\n}\n.editor-attachment-progress-bar {\n background: #bfc2cf;\n overflow: auto;\n}\n.editor-attachment-progress {\n background: #0052cc;\n float: left;\n height: 1px;\n}\n.editor-attachment-upload-message {\n margin: 0px;\n padding: 6px 12px;\n}\n#editor-upload-field {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}\n.atwho-view ul li img {\n border-radius: 3px;\n margin-right: 4.66666667px;\n width: 20px;\n height: 20px;\n}\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user {\n margin-bottom: 20px;\n}\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user,\n.participant-card .btn-user:hover,\n.participant-card .dropdown.open .btn-user:hover,\n.participant-card .btn-user:focus,\n.participant-card .dropdown.open .btn-user:focus,\n.participant-card .btn-user:focus:active,\n.participant-card .dropdown.open .btn-user:focus:active {\n padding: 0px;\n overflow: hidden;\n text-align: left;\n}\n.participant-card .btn-user img,\n.participant-card .dropdown.open .btn-user img {\n background-color: #fff;\n width: 34px;\n height: 34px;\n margin-right: 8px;\n}\n.panel-participants p {\n margin: 0px;\n margin-top: 7px;\n}\n.poll-choices-control .list-group-item {\n padding: 0px;\n}\n.poll-choices-control .list-group-item .btn {\n background: transparent;\n border: transparent;\n float: left;\n margin: 0px 2px;\n margin-bottom: -29px;\n padding: 0px;\n width: 28px;\n height: 28px;\n position: relative;\n top: 3px;\n}\n.poll-choices-control .list-group-item .btn .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.poll-choices-control input,\n.poll-choices-control input:focus,\n.poll-choices-control input:active {\n background: transparent;\n border: none;\n -webkit-box-shadow: none;\n box-shadow: none;\n outline: none;\n margin-left: 30px;\n padding: 6px 12px;\n width: 100%;\n}\n.posts-list {\n margin: 0px;\n padding: 0px;\n clear: both;\n}\n.posts-list li {\n list-style: none;\n margin: 0px;\n padding: 0px;\n}\n@media screen and (min-width: 992px) {\n .panel-post .panel-body {\n display: flex;\n }\n .post-side {\n flex-shrink: 0;\n width: 260px;\n padding-right: 15px;\n }\n .panel-content {\n flex: 1 0;\n }\n}\n.post-side {\n font-size: 12px;\n}\n.post-side .media {\n margin: 0px;\n}\n.post-side .poster-avatar {\n height: 36px;\n width: 36px;\n}\n@media screen and (min-width: 992px) {\n .post-side .poster-avatar {\n margin-top: 4px;\n height: 82px;\n width: 82px;\n }\n}\n.post-side .user-status {\n margin-right: 4px;\n}\n.post-side .media-heading {\n display: block;\n}\n.post-side .media-heading {\n margin: 0px;\n margin-top: -1px;\n font-size: 14px;\n}\n.post-side .media-heading .user-status {\n margin-right: 0;\n margin-left: 2px;\n}\n.post-side .pull-right {\n margin-left: 16px;\n}\n@media screen and (min-width: 992px) {\n .post-side .media-heading {\n margin-top: 3px;\n font-size: 18px;\n }\n .post-side .media-heading .user-status {\n display: none;\n }\n .post-side .user-title {\n margin-top: 4px;\n margin-bottom: 5px;\n }\n .post-side .user-postcount {\n display: block;\n }\n .post-side .user-status {\n display: block;\n }\n}\n.post-heading {\n height: 36px;\n}\n@media screen and (max-width: 991px) {\n .post-heading {\n margin-top: 10px;\n }\n}\n.post-heading .pull-right {\n margin-left: 16px;\n}\n.post-heading > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-heading .label {\n margin-top: 6px;\n font-size: 14px;\n font-weight: normal;\n}\n.post-heading .label-unread {\n background-color: #36b37e;\n color: #fff;\n}\n@media screen and (min-width: 992px) {\n .post-side .pull-right {\n display: none;\n }\n}\n@media screen and (max-width: 991px) {\n .post-heading .pull-right {\n display: none;\n }\n}\n.post-body {\n padding-top: 20px;\n padding-bottom: 30px;\n}\n.post-status-message {\n overflow: auto;\n}\n.post-status-message .material-icon {\n float: left;\n font-size: 28px;\n line-height: 28px;\n}\n.post-status-message p {\n margin: 0px;\n margin-top: 4px;\n margin-left: 36px;\n}\n.post-status-best-answer {\n background-color: #36b37e;\n color: #fff;\n}\n.post-status-hidden {\n background-color: #ff5630;\n color: #fff;\n}\n.post-status-unapproved {\n background-color: #0052cc;\n color: #fff;\n}\n.post-status-protected {\n background-color: #5e6c84;\n color: #fff;\n}\n.post-footer .pull-left {\n margin-right: 16px;\n}\n.post-footer .pull-right {\n margin-left: 16px;\n}\n.post-footer p {\n padding-top: 7px;\n padding-bottom: 6px;\n margin-bottom: 0px;\n}\n.post-attachments {\n border-top: 1px solid #ebecf0;\n padding: 6px 16px;\n}\n.post-attachments abbr {\n white-space: nowrap;\n}\n.post-attachments .attachment-name {\n word-wrap: break-word;\n}\n.post-attachments .row > div {\n margin: 10px 0px;\n}\n.post-attachments .post-attachment-preview {\n float: left;\n height: 40px;\n width: 40px;\n text-align: center;\n}\n.post-attachments .post-attachment {\n margin-left: 52px;\n}\n.post-attachments .post-thumbnail {\n display: block;\n background-size: cover;\n background-position: center;\n border-radius: 3px;\n width: 40px;\n height: 40px;\n}\n.post-attachments .material-icon {\n width: 28px;\n height: 28px;\n position: relative;\n top: 5px;\n font-size: 28px;\n line-height: 28px;\n}\n.post-attachments .material-icon:link,\n.post-attachments .material-icon:active,\n.post-attachments .material-icon:visited,\n.post-attachments .material-icon:hover,\n.post-attachments .material-icon:focus {\n color: #172b4d;\n text-decoration: none;\n}\n.post-attachments .post-attachment-description {\n margin: 0px;\n padding: 0px;\n color: #7a869a;\n font-size: 12px;\n}\n.post-feed .post-side .media-heading {\n margin: 0px;\n font-size: 14px;\n}\n.post-feed .post-side .user-title {\n margin: 0px;\n font-size: 12px;\n}\n.post-feed .post-side .btn {\n display: inline-block;\n}\n.post-feed .post-side img {\n margin-top: 0px;\n width: 36px;\n height: 36px;\n}\n.post-feed .post-heading {\n height: auto;\n margin: 10px 0px;\n}\n.post-feed .post-heading .btn {\n margin-right: 16px;\n max-width: 100%;\n text-align: left;\n white-space: normal;\n word-wrap: break-word;\n}\n.posts-list .event {\n margin-bottom: 20px;\n color: #7a869a;\n}\n.posts-list .event .event-body {\n display: flex;\n align-items: flex-start;\n}\n.posts-list .event-label {\n margin-left: 51px;\n}\n.posts-list .event-label .label-unread {\n background-color: #36b37e;\n color: #fff;\n}\n.posts-list .event .event-icon {\n padding-right: 15px;\n}\n.posts-list .event .event-icon .event-icon-bg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 36px;\n width: 36px;\n background: #ebecf0;\n border-radius: 4px;\n color: #5e6c84;\n}\n.posts-list .event .event-icon .material-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 28px;\n}\n.posts-list .event .event-content {\n flex: 1 0;\n}\n.posts-list .event .event-message {\n margin-bottom: 5px;\n font-size: 18px;\n}\n.posts-list .event .event-info {\n margin: 0px;\n font-size: 12px;\n}\n.posts-list .event .event-info li {\n margin-right: 12px;\n}\n.posts-list .event .event-info li:last-child {\n margin-right: 0px;\n}\n.posts-list .event .event-controls .btn-link {\n border: 0px;\n margin: 0px;\n margin-right: 12px;\n padding: 0px;\n font-size: 12px;\n}\n.posts-list .event .event-controls .btn-link:last-child {\n margin-right: 0px;\n}\n@media screen and (max-width: 767px) {\n .posts-list .event .event-info {\n margin-top: 5px;\n }\n .posts-list .event .event-controls {\n clear: both;\n margin-top: 5px;\n }\n .posts-list .event .event-controls .btn-link {\n margin-right: 20px;\n font-size: 14px;\n }\n .posts-list .event .event-controls .btn-link:last-child {\n margin-right: 0px;\n }\n}\n@media screen and (min-width: 992px) {\n .posts-list .event .event-icon {\n justify-content: flex-end;\n flex-shrink: 0;\n display: flex;\n width: 275px;\n }\n .event-content {\n flex: 1 0;\n }\n .posts-list .event-label {\n margin-left: 275px;\n }\n}\n.post-changelog-diff {\n padding: 0px;\n margin: 0px;\n}\n.post-changelog-diff .list-unstyled {\n padding: 0px;\n margin: 5px 0px;\n}\n.post-changelog-diff .diff-item {\n padding: 5px 10px;\n}\n.post-changelog-diff .diff-item-sub {\n color: #ff5630;\n}\n.post-changelog-diff .diff-item-add {\n color: #36b37e;\n}\n.post-changelog-toolbar .row {\n margin-left: -12px;\n margin-right: -12px;\n}\n@media screen and (max-width: 767px) {\n .post-changelog-toolbar .post-change-label {\n text-align: center;\n }\n}\n@media screen and (max-width: 767px) {\n .page-message .message-panel,\n .page-error .message-panel {\n text-align: center;\n }\n .page-message .message-icon,\n .page-error .message-icon {\n margin: 30px;\n font-size: 80px;\n }\n}\n@media screen and (min-width: 768px) {\n .page-message .message-panel,\n .page-error .message-panel {\n margin: 60px auto;\n max-width: 779.35px;\n overflow: auto;\n }\n .page-message .message-icon,\n .page-error .message-icon {\n float: left;\n }\n .page-message .message-icon .material-icon,\n .page-error .message-icon .material-icon {\n font-size: 80px;\n }\n .page-message .message-body,\n .page-error .message-body {\n margin-top: 16px;\n margin-left: 100px;\n font-size: 18px;\n }\n .page-message .message-body p.lead,\n .page-error .message-body p.lead {\n font-size: 36px;\n }\n}\n.threads-list {\n margin-bottom: 20px;\n}\n.threads-list-item {\n display: flex;\n align-items: center;\n}\n.threads-list-item img {\n width: 32px;\n height: 32px;\n}\n.threads-list-item-top-row {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n}\n.threads-list-item-bottom-row {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.threads-list-item-col-icon {\n padding-right: 15px;\n}\n.threads-list-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 3px;\n font-size: 16px;\n line-height: 16px;\n}\n.threads-list-icon:link,\n.threads-list-icon:active,\n.threads-list-icon:focus,\n.threads-list-icon:hover,\n.threads-list-icon:visited {\n background-color: #ebecf0;\n color: #7a869a;\n text-decoration: none;\n}\n.threads-list-icon-new:link,\n.threads-list-icon-new:active,\n.threads-list-icon-new:focus,\n.threads-list-icon-new:hover,\n.threads-list-icon-new:visited {\n background-color: #0052cc;\n color: #fff;\n}\n.threads-list-item-col-title {\n flex: 1;\n}\na.threads-list-item-title:link,\na.threads-list-item-title:active,\na.threads-list-item-title:focus,\na.threads-list-item-title:hover,\na.threads-list-item-title:visited {\n font-size: 16px;\n color: #172b4d;\n overflow-wrap: break-word;\n}\na.threads-list-item-title-sm {\n font-size: 18px;\n}\na.threads-list-item-title-sm:link,\na.threads-list-item-title-sm:active,\na.threads-list-item-title-sm:focus,\na.threads-list-item-title-sm:hover,\na.threads-list-item-title-sm:visited {\n color: #5e6c84;\n overflow-wrap: break-word;\n}\na.threads-list-item-title-new:link,\na.threads-list-item-title-new:active,\na.threads-list-item-title-new:focus,\na.threads-list-item-title-new:hover,\na.threads-list-item-title-new:visited {\n color: #172b4d;\n}\n.threads-list-item-col-flags {\n padding-left: 15px;\n}\n.threads-list-item .thread-flags {\n opacity: 0.8;\n}\n.threads-list-item:hover .thread-flags,\n.threads-list-item:focus .thread-flags {\n opacity: 1;\n}\n.threads-list-item-col-category {\n padding-left: 15px;\n white-space: nowrap;\n}\n.threads-list-category-label {\n padding: 3px 6px;\n border-radius: 3px;\n font-size: 12px;\n font-weight: bold;\n}\n.threads-list-category-label,\n.threads-list-category-label:link,\n.threads-list-category-label:active,\n.threads-list-category-label:hover,\n.threads-list-category-label:focus,\n.threads-list-category-label:visited {\n color: #344563;\n background: #ebecf0;\n text-decoration: none;\n}\n.threads-list-category-label.threads-list-category-label-color,\n.threads-list-category-label.threads-list-category-label-color:link,\n.threads-list-category-label.threads-list-category-label-color:active,\n.threads-list-category-label.threads-list-category-label-color:hover,\n.threads-list-category-label.threads-list-category-label-color:focus,\n.threads-list-category-label.threads-list-category-label-color:visited {\n color: #fff;\n background: var(--label-color);\n}\n.threads-list-item-parent-category {\n border-radius: 3px 0 0 3px;\n margin-right: 2px;\n}\n.threads-list-item-parent-category + .threads-list-category-label {\n border-radius: 0 3px 3px 0;\n}\n.threads-list-item-col-replies {\n width: 80px;\n padding-left: 15px;\n}\n.threads-list-item-col-last-poster {\n padding-left: 15px;\n}\n.threads-list-item-col-last-poster img {\n border-radius: 3px;\n}\n.threads-list-item-col-last-activity {\n width: 120px;\n padding-left: 15px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.threads-list-item-col-last-activity a:link,\n.threads-list-item-col-last-activity a:hover,\n.threads-list-item-col-last-activity a:active,\n.threads-list-item-col-last-activity a:visited,\n.threads-list-item-col-last-activity a:focus {\n color: #344563;\n font-size: 16px;\n}\n.threads-list-item-col-checkbox,\n.threads-list-item-col-subscription {\n padding-left: 15px;\n}\n.threads-list-item-title-sm,\n.threads-list-item-col-checkbox-sm {\n display: none;\n}\n@media screen and (max-width: 767px) {\n .threads-list {\n margin-left: -15px;\n margin-right: -15px;\n }\n .threads-list .list-group,\n .threads-list .list-group-item {\n border-radius: 0;\n border-left: 0;\n border-right: 0;\n }\n .threads-list-item-title {\n display: none;\n }\n .threads-list-item-title-sm {\n display: inline-block;\n }\n .threads-list-item-col-icon {\n display: none;\n }\n}\n@media screen and (max-width: 991px) {\n .threads-list-item {\n display: block;\n }\n .threads-list-item img {\n width: 20px;\n height: 20px;\n }\n .threads-list-item-top-row {\n align-items: start;\n margin-bottom: 7.5px;\n }\n .threads-list-item-bottom-row {\n justify-content: end;\n flex: 0;\n }\n .threads-list-item-bottom-row > div {\n width: auto;\n padding: 0 0 0 15px;\n }\n .threads-list-item-col-subscription,\n .threads-list-item-col-checkbox {\n display: none;\n }\n .threads-list-item-col-checkbox-sm {\n display: block;\n padding-left: 15px;\n }\n .threads-list-item-col-checkbox-sm .btn-icon {\n padding: 4px;\n }\n .threads-list-item-col-checkbox-sm .btn-icon .material-icon {\n font-size: 16px;\n }\n}\n.threads-list-item-is-busy .btn-icon {\n opacity: 0.8;\n animation: busy 0.75s linear infinite;\n}\n@keyframes busy {\n 50% {\n opacity: 0.5;\n }\n}\n.threads-list-update-prompt {\n padding: 0;\n}\n.threads-list-update-prompt-btn {\n padding: 10px 16px;\n background: #d6e7ff;\n color: #003d99;\n border: none;\n border-radius: 3px 3px 0 0;\n}\n.threads-list-update-prompt-btn:hover,\n.threads-list-update-prompt-btn:focus {\n background: #e6f0ff;\n color: #0052cc;\n}\n.threads-list-update-prompt-btn:active {\n background: #b3d1ff;\n color: #0066ff;\n}\n.active-posters li {\n display: block;\n overflow: auto;\n}\n.active-posters .rank-user-avatar {\n float: left;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-user-avatar {\n height: 42px;\n }\n .active-posters .rank-user-avatar img {\n width: 36px;\n height: 36px;\n position: relative;\n top: 3px;\n }\n}\n.active-posters .rank-user {\n float: left;\n margin-top: 3px;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-user {\n margin-left: 13.2px;\n width: 40%;\n }\n}\n@media screen and (max-width: 767px) {\n .active-posters .rank-user {\n float: none;\n margin-left: 50px;\n width: auto;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .rank-user {\n margin-left: 16px;\n width: 25%;\n }\n .active-posters .rank-user .user-name {\n font-size: 18px;\n }\n}\n.active-posters .user-details {\n overflow: auto;\n font-family: Sans-Serif;\n}\n.active-posters .user-details .user-status,\n.active-posters .user-details .rank-name,\n.active-posters .user-details .user-title {\n display: block;\n float: left;\n margin-right: 3px;\n font-size: 12px;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-details .user-status,\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n margin-right: 8px;\n }\n}\n.active-posters .user-details .user-title {\n margin-right: 0px;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-details {\n overflow: visible;\n }\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n height: 14px;\n overflow: hidden;\n position: relative;\n top: 1px;\n vertical-align: baseline;\n }\n}\n@media screen and (max-width: 767px) {\n .active-posters .user-details {\n margin-top: 3px;\n }\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n font-weight: normal;\n }\n}\n.active-posters .user-status {\n overflow: auto;\n position: relative;\n top: 1px;\n}\n.active-posters .user-status span {\n display: block;\n float: left;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-status {\n height: 14px;\n overflow: hidden;\n }\n}\n.active-posters .user-status .status-icon {\n position: relative;\n}\n@media screen and (max-width: 991px) {\n .active-posters .user-status .status-icon {\n top: 0px;\n width: 12px;\n height: 12px;\n font-size: 12px;\n line-height: 12px;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-status .status-icon {\n top: 1px;\n margin-right: 3px;\n width: 13px;\n height: 13px;\n font-size: 13px;\n line-height: 13px;\n }\n}\n.active-posters .status-label.ui-preview-text,\n.active-posters .rank-name .ui-preview-text,\n.active-posters .user-title .ui-preview-text {\n height: 11px;\n position: relative;\n top: 2px;\n font-size: 11px;\n line-height: 11px;\n}\n.active-posters .rank-name .ui-preview-text,\n.active-posters .user-title .ui-preview-text {\n position: static;\n}\n.active-posters .rank-position strong,\n.active-posters .rank-posts-counted strong,\n.active-posters .rank-posts-total strong,\n.active-posters .rank-position small,\n.active-posters .rank-posts-counted small,\n.active-posters .rank-posts-total small {\n display: block;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-position,\n .active-posters .rank-posts-counted,\n .active-posters .rank-posts-total {\n overflow: auto;\n }\n .active-posters .rank-position strong,\n .active-posters .rank-posts-counted strong,\n .active-posters .rank-posts-total strong,\n .active-posters .rank-position small,\n .active-posters .rank-posts-counted small,\n .active-posters .rank-posts-total small {\n float: left;\n font-size: 10.5px;\n }\n .active-posters .rank-position strong,\n .active-posters .rank-posts-counted strong,\n .active-posters .rank-posts-total strong {\n min-width: 30px;\n margin-right: 3px;\n text-align: right;\n }\n .active-posters .rank-position .ui-preview-text,\n .active-posters .rank-posts-counted .ui-preview-text,\n .active-posters .rank-posts-total .ui-preview-text {\n height: 8px;\n position: relative;\n top: -1px;\n font-size: 8px;\n line-height: 8px;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .rank-position,\n .active-posters .rank-posts-counted,\n .active-posters .rank-posts-total {\n float: left;\n margin-top: 3px;\n width: 23%;\n font-size: 18px;\n text-align: center;\n }\n .active-posters .rank-position small,\n .active-posters .rank-posts-counted small,\n .active-posters .rank-posts-total small {\n font-size: 12px;\n font-weight: normal;\n }\n}\n.user-compact-stats .rank-position strong,\n.user-compact-stats .rank-posts-counted strong,\n.user-compact-stats .rank-position small,\n.user-compact-stats .rank-posts-counted small {\n display: inline-block;\n float: none;\n}\n.user-compact-stats .rank-position strong,\n.user-compact-stats .rank-posts-counted strong {\n min-width: auto;\n}\n.user-compact-stats .rank-position small,\n.user-compact-stats .rank-posts-counted small {\n margin-right: 20px;\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .active-posters .rank-position {\n margin-top: 6px;\n }\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .active-posters .rank-position {\n margin-top: 6px;\n }\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n.profile-page-header-avatar {\n text-align: center;\n margin: 20px 0;\n}\n.profile-page-header-avatar .user-avatar {\n border-radius: 4px;\n}\n.profile-data-list {\n display: block;\n padding: 0;\n margin: 0 -12px;\n font-size: 12px;\n}\n.profile-data-list li {\n display: inline-block;\n list-style: none;\n padding: 5px 12px;\n}\n.profile-data-list .status-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n.profile-data-list .user-account-disabled {\n color: #ff5630;\n font-weight: bold;\n}\n@media screen and (min-width: 768px) {\n .profile-page-header {\n display: flex;\n align-items: flex-end;\n }\n .profile-page-header-avatar {\n margin: 0;\n margin-right: 30px;\n }\n}\n@media screen and (min-width: 992px) {\n .profile-page-header-avatar {\n position: relative;\n top: 54px;\n margin-top: -54px;\n }\n .profile-page-header-details {\n padding-left: 158px;\n }\n .profile-data-list {\n font-size: 14px;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history li {\n display: block;\n overflow: auto;\n }\n}\n.username-history .change-avatar {\n float: left;\n}\n.username-history .change-avatar a,\n.username-history .change-avatar span {\n margin-right: 10px;\n}\n.username-history .change-avatar a img,\n.username-history .change-avatar span img {\n width: 42px;\n height: 42px;\n}\n@media screen and (min-width: 992px) {\n .username-history .change-avatar a img,\n .username-history .change-avatar span img {\n width: 18px;\n height: 18px;\n position: relative;\n bottom: 1px;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history .change-author {\n float: left;\n width: 30%;\n }\n}\n.username-history .change {\n min-height: 20px;\n overflow: auto;\n}\n.username-history .change span {\n display: block;\n float: left;\n}\n.username-history .change .material-icon {\n margin: 0px 7px;\n position: relative;\n top: 4px;\n}\n@media screen and (min-width: 992px) {\n .username-history .change {\n float: left;\n width: 40%;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history .change-date {\n float: left;\n width: 20%;\n }\n}\n.search-footer p {\n margin-top: 20px;\n color: #5e6c84;\n font-size: 12px;\n text-align: center;\n}\n@media screen and (min-width: 768px) {\n .page-search-form {\n padding-top: 40px;\n }\n}\n@media screen and (min-width: 992px) {\n .page-search-form {\n padding-bottom: 40px;\n }\n .page-search-form h1 {\n position: relative;\n top: 5px;\n }\n .page-search-form .form-group {\n margin-bottom: 0px;\n }\n}\n/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #eee;\n color: black;\n}\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n color: #070;\n}\n.hljs-emphasis {\n font-style: italic;\n}\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n color: #d14;\n}\n.hljs-strong {\n font-weight: bold;\n}\n.hljs-quote,\n.hljs-comment {\n color: #998;\n font-style: italic;\n}\n.hljs-section,\n.hljs-title {\n color: #900;\n}\n.hljs-class .hljs-title,\n.hljs-type {\n color: #458;\n}\n.hljs-variable,\n.hljs-template-variable {\n color: #336699;\n}\n.hljs-bullet {\n color: #997700;\n}\n.hljs-meta {\n color: #3344bb;\n}\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n color: #099;\n}\n.hljs-regexp {\n background-color: #fff0ff;\n color: #880088;\n}\n.hljs-symbol {\n color: #990073;\n}\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n color: #007700;\n}\n.atwho-view {\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n margin-top: 18px;\n background: white;\n color: black;\n border: 1px solid #DDD;\n border-radius: 3px;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);\n min-width: 120px;\n z-index: 11110 !important;\n}\n.atwho-view .atwho-header {\n padding: 5px;\n margin: 5px;\n cursor: pointer;\n border-bottom: solid 1px #eaeff1;\n color: #6f8092;\n font-size: 11px;\n font-weight: bold;\n}\n.atwho-view .atwho-header .small {\n color: #6f8092;\n float: right;\n padding-top: 2px;\n margin-right: -5px;\n font-size: 12px;\n font-weight: normal;\n}\n.atwho-view .atwho-header:hover {\n cursor: default;\n}\n.atwho-view .cur {\n background: #3366FF;\n color: white;\n}\n.atwho-view .cur small {\n color: white;\n}\n.atwho-view strong {\n color: #3366FF;\n}\n.atwho-view .cur strong {\n color: white;\n font: bold;\n}\n.atwho-view ul {\n /* width: 100px; */\n list-style: none;\n padding: 0;\n margin: auto;\n max-height: 200px;\n overflow-y: auto;\n}\n.atwho-view ul li {\n display: block;\n padding: 5px 10px;\n border-bottom: 1px solid #DDD;\n cursor: pointer;\n /* border-top: 1px solid #C8C8C8; */\n}\n.atwho-view small {\n font-size: smaller;\n color: #777;\n font-weight: normal;\n}\nabbr {\n outline: none;\n text-decoration: none;\n}\n.shadow-2dp {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.04), 0 3px 1px -2px rgba(0, 0, 0, 0.06), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.shadow-3dp {\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.04), 0 3px 3px -2px rgba(0, 0, 0, 0.06), 0 1px 8px 0 rgba(0, 0, 0, 0.12);\n}\n.shadow-4dp {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.04), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n.shadow-6dp {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.04), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.06);\n}\n.shadow-8dp {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.06);\n}\n.shadow-16dp {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.06);\n}\n.shadow-24dp {\n box-shadow: 0 9px 46px 8px rgba(0, 0, 0, 0.04), 0 11px 15px -7px rgba(0, 0, 0, 0.12), 0 24px 38px 3px rgba(0, 0, 0, 0.06);\n}\n.btn-default,\n.btn-default:disabled,\n.btn-default:disabled:hover,\n.btn-default.disabled,\n.btn-default.disabled:hover,\n.btn-default.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default:disabled,\n.btn-default:disabled:hover,\n.btn-default.disabled,\n.btn-default.disabled:hover,\n.btn-default.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-default:hover,\n.btn-default:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default:active:focus,\n.btn-default:active,\n.dropdown.open .dropdown-toggle .btn-default,\n.dropdown.open .dropdown-toggle .btn-default:focus,\n.dropdown.open .dropdown-toggle .btn-default:active:focus,\n.dropdown.open .dropdown-toggle .btn-default:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-loading,\n.btn-default.btn-loading:disabled,\n.btn-default.btn-loading:disabled:hover,\n.btn-default.btn-loading:hover,\n.btn-default.btn-loading:focus,\n.btn-default.btn-loading:active:focus,\n.btn-default.btn-loading:active {\n color: transparent;\n}\n.btn-primary,\n.btn-primary:disabled,\n.btn-primary:disabled:hover,\n.btn-primary.disabled,\n.btn-primary.disabled:hover,\n.btn-primary.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary:disabled,\n.btn-primary:disabled:hover,\n.btn-primary.disabled,\n.btn-primary.disabled:hover,\n.btn-primary.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary:active:focus,\n.btn-primary:active,\n.dropdown.open .dropdown-toggle .btn-primary,\n.dropdown.open .dropdown-toggle .btn-primary:focus,\n.dropdown.open .dropdown-toggle .btn-primary:active:focus,\n.dropdown.open .dropdown-toggle .btn-primary:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-loading,\n.btn-primary.btn-loading:disabled,\n.btn-primary.btn-loading:disabled:hover,\n.btn-primary.btn-loading:hover,\n.btn-primary.btn-loading:focus,\n.btn-primary.btn-loading:active:focus,\n.btn-primary.btn-loading:active {\n color: transparent;\n}\n.btn-success,\n.btn-success:disabled,\n.btn-success:disabled:hover,\n.btn-success.disabled,\n.btn-success.disabled:hover,\n.btn-success.disabled:active {\n background: #00c853;\n border: 1px solid #00c853;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success:disabled,\n.btn-success:disabled:hover,\n.btn-success.disabled,\n.btn-success.disabled:hover,\n.btn-success.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-success:hover,\n.btn-success:focus {\n background: #00af48;\n border: 1px solid #00af48;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success:active:focus,\n.btn-success:active,\n.dropdown.open .dropdown-toggle .btn-success,\n.dropdown.open .dropdown-toggle .btn-success:focus,\n.dropdown.open .dropdown-toggle .btn-success:active:focus,\n.dropdown.open .dropdown-toggle .btn-success:hover {\n background: #007c33;\n border: 1px solid #007c33;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success.btn-loading,\n.btn-success.btn-loading:disabled,\n.btn-success.btn-loading:disabled:hover,\n.btn-success.btn-loading:hover,\n.btn-success.btn-loading:focus,\n.btn-success.btn-loading:active:focus,\n.btn-success.btn-loading:active {\n color: transparent;\n}\n.btn-danger,\n.btn-danger:disabled,\n.btn-danger:disabled:hover,\n.btn-danger.disabled,\n.btn-danger.disabled:hover,\n.btn-danger.disabled:active {\n background: #ef5350;\n border: 1px solid #ef5350;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger:disabled,\n.btn-danger:disabled:hover,\n.btn-danger.disabled,\n.btn-danger.disabled:hover,\n.btn-danger.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background: #ff8a80;\n border: 1px solid #ff8a80;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger:active:focus,\n.btn-danger:active,\n.dropdown.open .dropdown-toggle .btn-danger,\n.dropdown.open .dropdown-toggle .btn-danger:focus,\n.dropdown.open .dropdown-toggle .btn-danger:active:focus,\n.dropdown.open .dropdown-toggle .btn-danger:hover {\n background: #d32f2f;\n border: 1px solid #d32f2f;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger.btn-loading,\n.btn-danger.btn-loading:disabled,\n.btn-danger.btn-loading:disabled:hover,\n.btn-danger.btn-loading:hover,\n.btn-danger.btn-loading:focus,\n.btn-danger.btn-loading:active:focus,\n.btn-danger.btn-loading:active {\n color: transparent;\n}\n.btn-default.btn-outline,\n.btn-default.btn-outline:disabled,\n.btn-default.btn-outline:disabled:hover,\n.btn-default.btn-outline.disabled,\n.btn-default.btn-outline.disabled:hover,\n.btn-default.btn-outline.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline:disabled,\n.btn-default.btn-outline:disabled:hover,\n.btn-default.btn-outline.disabled,\n.btn-default.btn-outline.disabled:hover,\n.btn-default.btn-outline.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-default.btn-outline:hover,\n.btn-default.btn-outline:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline:active:focus,\n.btn-default.btn-outline:active,\n.dropdown.open .btn-default.btn-outline,\n.dropdown.open .btn-default.btn-outline:focus,\n.dropdown.open .btn-default.btn-outline:active:focus,\n.dropdown.open .btn-default.btn-outline:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline.btn-loading,\n.btn-default.btn-outline.btn-loading:disabled,\n.btn-default.btn-outline.btn-loading:disabled:hover,\n.btn-default.btn-outline.btn-loading:hover,\n.btn-default.btn-outline.btn-loading:focus,\n.btn-default.btn-outline.btn-loading:active:focus,\n.btn-default.btn-outline.btn-loading:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline,\n.btn-primary.btn-outline:disabled,\n.btn-primary.btn-outline:disabled:hover,\n.btn-primary.btn-outline.disabled,\n.btn-primary.btn-outline.disabled:hover,\n.btn-primary.btn-outline.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline:disabled,\n.btn-primary.btn-outline:disabled:hover,\n.btn-primary.btn-outline.disabled,\n.btn-primary.btn-outline.disabled:hover,\n.btn-primary.btn-outline.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-primary.btn-outline:hover,\n.btn-primary.btn-outline:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline:active:focus,\n.btn-primary.btn-outline:active,\n.dropdown.open .btn-primary.btn-outline,\n.dropdown.open .btn-primary.btn-outline:focus,\n.dropdown.open .btn-primary.btn-outline:active:focus,\n.dropdown.open .btn-primary.btn-outline:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline.btn-loading,\n.btn-primary.btn-outline.btn-loading:disabled,\n.btn-primary.btn-outline.btn-loading:disabled:hover,\n.btn-primary.btn-outline.btn-loading:hover,\n.btn-primary.btn-outline.btn-loading:focus,\n.btn-primary.btn-outline.btn-loading:active:focus,\n.btn-primary.btn-outline.btn-loading:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in {\n border-radius: 4px;\n}\n.navbar-misago .btn-sign-in,\n.navbar-misago .btn-sign-in:disabled,\n.navbar-misago .btn-sign-in:disabled:hover,\n.navbar-misago .btn-sign-in.disabled,\n.navbar-misago .btn-sign-in.disabled:hover,\n.navbar-misago .btn-sign-in.disabled:active {\n background: transparent;\n border: 1px solid #c1c7d0;\n color: #8993a4;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in:disabled,\n.navbar-misago .btn-sign-in:disabled:hover,\n.navbar-misago .btn-sign-in.disabled,\n.navbar-misago .btn-sign-in.disabled:hover,\n.navbar-misago .btn-sign-in.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.navbar-misago .btn-sign-in:hover,\n.navbar-misago .btn-sign-in:focus {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in:active:focus,\n.navbar-misago .btn-sign-in:active,\n.dropdown.open .navbar-misago .btn-sign-in,\n.dropdown.open .navbar-misago .btn-sign-in:focus,\n.dropdown.open .navbar-misago .btn-sign-in:active:focus,\n.dropdown.open .navbar-misago .btn-sign-in:hover {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in.btn-loading,\n.navbar-misago .btn-sign-in.btn-loading:disabled,\n.navbar-misago .btn-sign-in.btn-loading:disabled:hover,\n.navbar-misago .btn-sign-in.btn-loading:hover,\n.navbar-misago .btn-sign-in.btn-loading:focus,\n.navbar-misago .btn-sign-in.btn-loading:active:focus,\n.navbar-misago .btn-sign-in.btn-loading:active {\n background: transparent;\n border: 1px solid #c1c7d0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register {\n border-radius: 4px;\n}\n.navbar-misago .btn-register,\n.navbar-misago .btn-register:disabled,\n.navbar-misago .btn-register:disabled:hover,\n.navbar-misago .btn-register.disabled,\n.navbar-misago .btn-register.disabled:hover,\n.navbar-misago .btn-register.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register:disabled,\n.navbar-misago .btn-register:disabled:hover,\n.navbar-misago .btn-register.disabled,\n.navbar-misago .btn-register.disabled:hover,\n.navbar-misago .btn-register.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.navbar-misago .btn-register:hover,\n.navbar-misago .btn-register:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register:active:focus,\n.navbar-misago .btn-register:active,\n.dropdown.open .navbar-misago .btn-register,\n.dropdown.open .navbar-misago .btn-register:focus,\n.dropdown.open .navbar-misago .btn-register:active:focus,\n.dropdown.open .navbar-misago .btn-register:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register.btn-loading,\n.navbar-misago .btn-register.btn-loading:disabled,\n.navbar-misago .btn-register.btn-loading:disabled:hover,\n.navbar-misago .btn-register.btn-loading:hover,\n.navbar-misago .btn-register.btn-loading:focus,\n.navbar-misago .btn-register.btn-loading:active:focus,\n.navbar-misago .btn-register.btn-loading:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-social-battlenet,\n.btn-social-battlenet-oauth2,\n.btn-social-battlenet:disabled,\n.btn-social-battlenet-oauth2:disabled,\n.btn-social-battlenet:disabled:hover,\n.btn-social-battlenet-oauth2:disabled:hover {\n color: #0e86ca;\n font-weight: bold;\n}\n.btn-social-bungie,\n.btn-social-bungie:disabled,\n.btn-social-bungie:disabled:hover {\n color: #0096db;\n font-weight: bold;\n}\n.btn-social-facebook,\n.btn-social-facebook-app,\n.btn-social-facebook:disabled,\n.btn-social-facebook-app:disabled,\n.btn-social-facebook:disabled:hover,\n.btn-social-facebook-app:disabled:hover {\n color: #3b5998;\n font-weight: bold;\n}\n.btn-social-github,\n.btn-social-github-team,\n.btn-social-github-enterprise,\n.btn-social-github-enterprise-org,\n.btn-social-github-enterprise-team,\n.btn-social-github:disabled,\n.btn-social-github-team:disabled,\n.btn-social-github-enterprise:disabled,\n.btn-social-github-enterprise-org:disabled,\n.btn-social-github-enterprise-team:disabled,\n.btn-social-github:disabled:hover,\n.btn-social-github-team:disabled:hover,\n.btn-social-github-enterprise:disabled:hover,\n.btn-social-github-enterprise-org:disabled:hover,\n.btn-social-github-enterprise-team:disabled:hover {\n color: #000000;\n font-weight: bold;\n}\n.btn-social-gitlab,\n.btn-social-gitlab:disabled,\n.btn-social-gitlab:disabled:hover {\n color: #fc6d26;\n font-weight: bold;\n}\n.btn-social-google,\n.btn-social-google-oauth,\n.btn-social-google-oauth2,\n.btn-social-google-plus,\n.btn-social-google-openidconnect,\n.btn-social-google:disabled,\n.btn-social-google-oauth:disabled,\n.btn-social-google-oauth2:disabled,\n.btn-social-google-plus:disabled,\n.btn-social-google-openidconnect:disabled,\n.btn-social-google:disabled:hover,\n.btn-social-google-oauth:disabled:hover,\n.btn-social-google-oauth2:disabled:hover,\n.btn-social-google-plus:disabled:hover,\n.btn-social-google-openidconnect:disabled:hover {\n color: #dd4b39;\n font-weight: bold;\n}\n.btn-social-linkedin,\n.btn-social-linkedin:disabled,\n.btn-social-linkedin:disabled:hover {\n color: #0077b5;\n font-weight: bold;\n}\n.btn-social-steam,\n.btn-social-steam:disabled,\n.btn-social-steam:disabled:hover {\n color: #5c7e10;\n font-weight: bold;\n}\n.btn-social-twitter,\n.btn-social-twitter:disabled,\n.btn-social-twitter:disabled:hover {\n color: #1da1f2;\n font-weight: bold;\n}\n.form-social-auth .row {\n margin-top: -6px;\n margin-bottom: -6px;\n}\n.form-social-auth .btn {\n margin: 6px 0px;\n}\ninput.form-control,\ntextarea.form-control {\n border-color: #ced0da;\n box-shadow: inset 0px 0px 0px 1px #ced0da;\n}\ninput.form-control:focus,\ntextarea.form-control:focus {\n border-color: #66afe9;\n box-shadow: inset 0px 0px 0px 1px #66afe9;\n}\n.has-error input.form-control {\n border-color: #ff5630;\n box-shadow: inset 0px 0px 0px 1px #ff5630;\n}\n.has-error input.form-control:focus {\n border-color: #ffa996;\n box-shadow: inset 0px 0px 0px 1px #ffa996;\n}\n.has-success input.form-control {\n border-color: #36b37e;\n box-shadow: inset 0px 0px 0px 1px #36b37e;\n}\n.has-success input.form-control:focus {\n border-color: #79d6af;\n box-shadow: inset 0px 0px 0px 1px #79d6af;\n}\n.password-strength {\n margin-top: 10px;\n}\n.password-strength .text-small {\n margin-top: 4px;\n color: #3462af;\n font-size: 12px;\n}\n.password-strength .progress {\n margin: 0px;\n}\n.auth-message {\n background: #091e42;\n padding: 80px 0px;\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.06);\n}\n.auth-message p {\n color: #fff;\n}\n.auth-message .btn {\n background: #f4f5f7;\n border-color: #f4f5f7;\n color: #172b4d;\n}\n.auth-message .btn:hover,\n.auth-message .btn:focus {\n background: #dfe1e6;\n border-color: #dfe1e6;\n color: #172b4d;\n}\n.auth-message .btn:active {\n background: #b3bac5;\n border-color: #b3bac5;\n color: #172b4d;\n}\n.dropdown-menu {\n border: none;\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.04), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n.user-dropdown .dropdown-header strong {\n display: block;\n color: #172b4d;\n font-weight: bold;\n}\n.user-dropdown .dropdown-header .user-stats {\n margin-top: 10px;\n font-size: 12px;\n}\n.user-dropdown .dropdown-header .user-stats .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n width: 14px;\n height: 14px;\n font-size: 14px;\n}\n.user-dropdown .guest-preview {\n padding-bottom: 10px;\n}\n.user-dropdown .badge {\n background-color: #ff5630;\n}\n.user-dropdown a:hover .badge,\n.user-dropdown a:focus .badge,\n.user-dropdown a:active .badge,\n.user-dropdown .btn-link:hover .badge,\n.user-dropdown .btn-link:focus .badge,\n.user-dropdown .btn-link:active .badge {\n background-color: #fff;\n color: #ff5630;\n}\n.mobile-dropdown.open {\n margin: 0px;\n}\n.navbar-misago {\n border-bottom: none;\n box-shadow: 0px 0px 3px #c1c7d0;\n}\n.navbar-misago .user-avatar {\n background: #fff;\n border-radius: 3px;\n}\n.navbar-misago .brand-link img {\n border-radius: 3px;\n}\n.dropdown-search-results {\n border-radius: 0px 0px 4px 4px;\n}\n.dropdown-search-message {\n border-top: 1px solid #ebecf0;\n padding: 10px 16px;\n color: #7a869a;\n}\n.dropdown-search-loader {\n border-top: 1px solid #ebecf0;\n padding: 10px 16px;\n}\n.dropdown-search-header {\n border-top: 1px solid #ebecf0;\n padding: 8px 20px;\n color: #7a869a;\n font-weight: bold;\n}\n.dropdown-search-thread small,\n.dropdown-search-user small {\n color: #7a869a;\n}\n.dropdown-search-thread .dropdown-search-post-content {\n overflow: hidden;\n white-space: normal;\n max-height: 47px;\n}\n.dropdown-search-thread .dropdown-search-post-footer {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dropdown-search-footer {\n padding-bottom: 5px;\n}\n.dropdown-search-footer:last-child {\n padding-bottom: 0px;\n}\n.dropdown-menu > li.dropdown-search-footer > a {\n font-size: small;\n}\n.misago-footer {\n margin-top: 40px;\n}\n.misago-footer .footer-content {\n border-top: 1px solid #ebecf0;\n padding-top: 20px;\n color: #a5adba;\n}\n@media screen and (max-width: 767px) {\n .misago-footer .footer-content {\n text-align: center;\n }\n .misago-footer .footer-content .site-footnote {\n clear: both;\n margin-bottom: 15px;\n }\n}\n.misago-footer .footer-content a,\n.misago-footer .footer-content a:link,\n.misago-footer .footer-content a:visited {\n color: #a5adba;\n}\n.misago-footer .footer-content a:hover,\n.misago-footer .footer-content a:focus {\n color: #7a8699;\n}\n.misago-footer .footer-content .misago-branding,\n.misago-footer .footer-content .misago-branding:link,\n.misago-footer .footer-content .misago-branding:visited {\n color: #a5adba;\n}\n.misago-footer .footer-content .misago-branding:hover,\n.misago-footer .footer-content .misago-branding:focus {\n color: #7a8699;\n}\n.list-group {\n border-radius: 3px;\n}\n.list-group .list-group-item {\n border-left-color: #ebecf0;\n border-right-color: #ebecf0;\n}\n.list-group .list-group-item:first-child {\n border-top-color: #ebecf0;\n}\n.list-group .list-group-item:last-child {\n border-bottom-color: #ebecf0;\n}\n.list-group-item.empty-message {\n padding-top: 20px;\n padding-bottom: 20px;\n text-align: center;\n}\n.list-group-item.empty-message p {\n margin: 10px 0px;\n}\n.nav-side {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.nav-side > .list-group-item {\n border-left: none;\n border-right: none;\n margin-bottom: 1px;\n}\n.nav-side > .list-group-item:first-child {\n border-top: none;\n}\n.nav-side > .list-group-item:last-child {\n border-bottom: none;\n}\n.nav-side > .list-group-item,\n.nav-side > .list-group-item:link,\n.nav-side > .list-group-item:visited {\n background: #f4f5f7;\n border: none;\n color: #172b4d;\n}\n.nav-side > .list-group-item:hover,\n.nav-side > .list-group-item:focus,\n.nav-side > .list-group-item:active {\n background: #ebecf0;\n color: #172b4d;\n}\n.nav-side > .list-group-item.active,\n.nav-side > .list-group-item.active:link,\n.nav-side > .list-group-item.active:visited,\n.nav-side > .list-group-item.active:hover,\n.nav-side > .list-group-item.active:focus,\n.nav-side > .list-group-item.active:active {\n background: #091e42;\n color: #fff;\n font-weight: bold;\n}\n.nav-side > .list-group-item.active .badge,\n.nav-side > .list-group-item.active:link .badge,\n.nav-side > .list-group-item.active:visited .badge,\n.nav-side > .list-group-item.active:hover .badge,\n.nav-side > .list-group-item.active:focus .badge,\n.nav-side > .list-group-item.active:active .badge {\n background: #f4f5f7;\n color: #172b4d;\n}\n.username-history .user-avatar {\n border-radius: 4px;\n}\n.panel {\n border: none;\n border-radius: 4px;\n}\n.panel .panel-heading,\n.panel .panel-footer {\n background: #fff;\n}\n.panel .panel-title {\n color: #5e6c84;\n}\n.panel .form-group + .form-group {\n margin-top: 20px;\n}\n.panel .panel-body > .form-group:first-child {\n margin-top: 10px;\n}\n.panel fieldset {\n margin-top: 20px;\n}\n.panel fieldset:first-child {\n margin-top: 0px;\n}\n.panel fieldset legend {\n border: none;\n color: #5e6c84;\n font-weight: 300;\n}\n.panel-message-body .message-icon {\n color: #9575cd;\n}\n.panel-form {\n border: 1px solid #ebecf0;\n box-shadow: none;\n}\n.panel-form .panel-heading,\n.panel-form .panel-footer {\n border-color: #ebecf0;\n}\n.poll-form .panel {\n margin: 0px;\n}\n.help-block,\n.help-block .text-small {\n color: #7a869a;\n}\n.category-main .media-left .read-status {\n background: #ebecf0;\n border-radius: 4px;\n padding: 5px 8px;\n}\n.category-main .media-left .material-icon {\n height: 14px;\n width: 14px;\n color: #5e6c84;\n font-size: 14px;\n line-height: 14px;\n}\n.category-main .media-left .read-status.item-new {\n background-color: #0052cc;\n}\n.category-main .media-left .read-status.item-new .material-icon {\n color: #fff;\n}\n@media screen and (min-width: 768px) {\n .category-main .media-left {\n padding: 5px 0px;\n }\n}\n.category-main .media-body {\n padding-left: 12px;\n}\n@media screen and (max-width: 767px) {\n .category-main .media-body {\n padding-left: 3.33333333px;\n }\n}\n.list-group-category-no-description .category-main .media-heading {\n margin-top: 10px;\n}\n@media screen and (max-width: 767px) {\n .list-group-category-no-description .category-main .media-heading {\n margin-top: 5px;\n }\n}\n.category-main .media-heading a,\n.category-main .media-heading a:link,\n.category-main .media-heading a:visited {\n color: #344563;\n}\n.category-main .media-heading a:focus,\n.category-main .media-heading a:hover,\n.category-main .media-heading a:active {\n color: #172b4d;\n}\n.category-stats {\n color: #5e6c84;\n}\n.category-main .category-description p {\n font-size: 12px;\n}\n.category-main .category-description p:last-child {\n margin-bottom: 0px;\n}\n.category-last-thread img {\n background-color: #fff;\n border-radius: 4px;\n}\n.category-last-thread .media-heading {\n margin-bottom: 2px;\n}\n@media screen and (max-width: 767px) {\n .category-last-thread .media-heading {\n margin-top: 10px;\n }\n}\n.category-last-thread .list-inline {\n color: #7a869a;\n font-size: 12px;\n}\n.category-last-thread .list-inline a,\n.category-last-thread .list-inline a:link,\n.category-last-thread .list-inline a:visited {\n color: #7a869a;\n}\n.category-last-thread .list-inline a:hover,\n.category-last-thread .list-inline a:active,\n.category-last-thread .list-inline a:focus {\n color: #344563;\n}\n.category-last-thread .list-inline .item-title,\n.category-last-thread .list-inline .item-title:link,\n.category-last-thread .list-inline .item-title:visited {\n color: #344563;\n}\n.category-last-thread .list-inline .item-title:hover,\n.category-last-thread .list-inline .item-title:active,\n.category-last-thread .list-inline .item-title:focus {\n color: #172b4d;\n}\n.category-thread-message {\n color: #7a869a;\n}\n.category-thread-message .material-icon {\n padding: 6px 0px;\n margin-right: 3px;\n}\n@media screen and (max-width: 767px) {\n .category-thread-message {\n padding-top: 15px;\n font-size: 12px;\n }\n .category-thread-message .material-icon {\n padding: 3px 0px;\n }\n}\n.panel-participants {\n border: 1px solid #ebecf0;\n}\n.participant-card .btn-user {\n border: 0px !important;\n}\n.participant-card .dropdown-header-owner {\n color: #0052cc;\n}\n.participant-card .dropdown-header-owner .material-icon {\n width: 14px;\n height: 14px;\n font-size: 14px;\n line-height: 14px;\n}\n.participant-card .dropdown-header-owner .icon-text {\n margin-left: 4px;\n position: relative;\n top: 2px;\n}\n.panel-participants p {\n color: #7a869a;\n}\n@media screen and (max-width: 767px) {\n .panel-participants p {\n margin-top: 10px;\n text-align: center;\n }\n}\n.panel-poll {\n border: 1px solid #ebecf0;\n}\n.panel-poll .poll-select-choices {\n margin-top: -10px;\n}\n.panel-poll .poll-details {\n margin-bottom: 20px;\n color: #7a869a;\n font-size: 12px;\n}\n.panel-poll .progress {\n margin-top: 6.66666667px;\n margin-bottom: 5px;\n}\n.panel-poll .poll-chart {\n color: #7a869a;\n font-size: 12px;\n}\n.panel-poll .poll-options {\n margin-top: 20px;\n}\n#posting-placeholder {\n background-color: #fafbfc;\n}\n.posting-message .material-icon {\n color: #9575cd;\n}\n.posting-message .btn {\n margin-top: 20px;\n}\n.panel-post {\n background: #fff;\n border: 1px solid #ddd;\n}\n.post-side {\n color: #7a869a;\n}\n.post-side .poster-avatar {\n border-radius: 4px;\n}\n.post-side .user-title {\n color: #5e6c84;\n}\n.post-side .user-title a,\n.post-side .user-title a:link,\n.post-side .user-title a:visited,\n.post-side .user-title a:focus,\n.post-side .user-title a:hover,\n.post-side .user-title a:active {\n color: #5e6c84;\n}\n.post-heading .label-unread {\n background-color: #aa00ff;\n margin-right: 16px;\n}\n.post-heading .label-protected {\n background-color: transparent;\n margin-left: 24px;\n position: relative;\n top: 1px;\n color: #bdbdbd;\n}\n.post-heading .label-protected .material-icon {\n margin-right: 2px;\n position: relative;\n top: -1px;\n font-size: 16px;\n line-height: 16px;\n}\n.post-heading > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-heading > .btn-link,\n.post-heading > .btn-link:link,\n.post-heading > .btn-link:visited {\n color: #7a869a;\n}\n.post-heading > .btn-link:hover,\n.post-heading > .btn-link:focus,\n.post-heading > .btn-link:focus:active,\n.post-heading > .btn-link:active {\n color: #172b4d;\n text-decoration: none;\n}\n.post-heading .btn-see-edits {\n margin-left: 24px;\n}\n.post-status-message {\n border-radius: 4px;\n margin-top: 10px;\n padding: 6px 12px;\n}\n@media screen and (max-width: 767px) {\n .post-status-message {\n font-size: 12px;\n }\n .post-status-message .material-icon {\n margin-top: 3px;\n }\n .post-status-message p {\n margin-top: 0px;\n }\n}\n.post-body:last-child {\n padding-bottom: 10px;\n}\n.post-attachments {\n background-color: #ebecf0;\n border: none;\n border-radius: 4px;\n margin-bottom: 30px;\n}\n.post-attachments:last-child {\n margin-bottom: 10px;\n}\n@media screen and (max-width: 767px) {\n .post-attachments {\n border-radius: 0px;\n margin: 0px -15px;\n margin-bottom: 20px;\n }\n}\n.post-footer > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-footer > .btn-link,\n.post-footer > .btn-link:link,\n.post-footer > .btn-link:visited {\n color: #7a869a;\n}\n.post-footer > .btn-link:hover,\n.post-footer > .btn-link:focus,\n.post-footer > .btn-link:focus:active,\n.post-footer > .btn-link:active {\n color: #172b4d;\n text-decoration: none;\n}\n.post-footer p {\n color: #7a869a;\n font-size: 12px;\n}\n.post-body-hidden,\n.post-body-invalid {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.post-body-hidden .lead,\n.post-body-invalid .lead {\n margin-bottom: 10px;\n}\n.post-body-hidden .text-muted,\n.post-body-invalid .text-muted {\n margin-bottom: 0px;\n font-size: 12px;\n}\n.post-hidden {\n filter: alpha(opacity=75);\n opacity: 0.75;\n}\n.post-feed .panel-body {\n padding-bottom: 0px;\n}\n.post-feed .post-body {\n position: relative;\n padding-top: 0px;\n padding-bottom: 20px;\n max-height: 300px;\n overflow-y: hidden;\n}\n.post-feed .post-body:after {\n box-shadow: 0px 0px 16px 16px #ffffff;\n display: block;\n position: absolute;\n bottom: 0px;\n height: 0px;\n width: 100%;\n content: \"-\";\n color: transparent;\n}\n.posts-list .event .event-label {\n margin-bottom: 5px;\n}\n.posts-list .event .label-unread {\n background-color: #aa00ff;\n color: #fff;\n}\n.posts-list .event-info a,\n.posts-list .event-info a:link,\n.posts-list .event-info a:visited,\n.posts-list .event-info .btn-link {\n color: #5e6c84;\n}\n.posts-list .event-info a:focus,\n.posts-list .event-info a:active,\n.posts-list .event-info a:focus:active,\n.posts-list .event-info .btn-link:focus,\n.posts-list .event-info .btn-link:active,\n.posts-list .event-info .btn-link:focus:active {\n color: #172b4d;\n}\n.posts-list .event-hidden {\n filter: alpha(opacity=33);\n opacity: 0.33;\n}\n.user-card {\n background: #f4f5f7;\n}\n.user-card-small-avatar img,\n.user-card-avatar img {\n border-radius: 4px;\n}\n.user-card-avatar {\n margin: 20px 0px;\n}\n.user-card-avatar img {\n width: 150px;\n height: 150px;\n}\n.user-card-username a,\n.user-card-username a:link,\n.user-card-username a:visited,\n.user-card-username a:hover,\n.user-card-username a:focus,\n.user-card-username a:active {\n color: #172b4d;\n font-size: 18px;\n font-weight: bold;\n}\n.user-card-title span,\n.user-card-title a,\n.user-card-title a:link,\n.user-card-title a:visited {\n color: #5e6c84;\n}\n.user-card-title a:focus,\n.user-card-title a:hover,\n.user-card-title a:active {\n color: #172b4d;\n}\n@media screen and (min-width: 768px) {\n .user-card-stats {\n margin-top: 20px;\n }\n}\n.user-card-stats ul {\n margin: 0px;\n}\n.user-card-stats li {\n display: inline-block;\n margin-right: 12px;\n color: #7a869a;\n font-size: 12px;\n}\n@media screen and (min-width: 768px) {\n .user-card-stats li {\n margin: 0px 6px;\n }\n}\n.user-card-stats li.user-stat-empty {\n display: none;\n}\n@media screen and (min-width: 768px) {\n li.user-stat-divider {\n display: block;\n margin: 0px;\n }\n}\n@media screen and (max-width: 767px) {\n li.user-stat-divider {\n display: none;\n }\n}\n@media screen and (min-width: 768px) {\n .user-card-stats {\n min-height: 60px;\n }\n}\n@media screen and (max-width: 767px) {\n .user-card-left {\n padding-right: 0px;\n }\n}\n.progress,\n.progress .progress-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n height: 8px;\n}\n.misago-markup img {\n border-radius: 4px;\n}\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background-color: #ffecb3;\n border-color: #b3e5fc;\n overflow: hidden;\n color: #3e2723;\n}\n.misago-markup .quote-block .quote-heading,\n.misago-markup blockquote .quote-heading {\n background-color: #ffe082;\n border: none;\n color: #795548;\n}\n.misago-markup .quote-block .quote-heading a,\n.misago-markup blockquote .quote-heading a,\n.misago-markup .quote-block .quote-heading a:link,\n.misago-markup blockquote .quote-heading a:link,\n.misago-markup .quote-block .quote-heading a:visited,\n.misago-markup blockquote .quote-heading a:visited {\n color: #5d4037;\n}\n.misago-markup .quote-block .quote-heading a:hover,\n.misago-markup blockquote .quote-heading a:hover,\n.misago-markup .quote-block .quote-heading a:focus,\n.misago-markup blockquote .quote-heading a:focus,\n.misago-markup .quote-block .quote-heading a:active,\n.misago-markup blockquote .quote-heading a:active {\n color: #3e2723;\n}\n.misago-markup .quote-block hr,\n.misago-markup blockquote hr {\n border-color: #ffca28;\n}\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n background: #ffecb3;\n border: none;\n border-radius: 4px;\n}\n.misago-markup > .quote-block .quote-block,\n.misago-markup > blockquote .quote-block {\n background: #ffecb3;\n}\n.misago-markup .quote-body {\n background: #ffecb3;\n}\n.misago-markup .quote-body > .quote-block,\n.misago-markup .quote-body > blockquote {\n border-color: #ffe082;\n border-radius: 4px;\n}\n.misago-markup .spoiler-block {\n background: repeating-linear-gradient(45deg, rgba(235, 236, 240, 0.5), rgba(235, 236, 240, 0.5) 10px, #fff 10px, #fff 20px);\n border: none;\n}\n.misago-markup .spoiler-body {\n background: transparent;\n -webkit-filter: blur(5px);\n -moz-filter: blur(5px);\n -o-filter: blur(5px);\n -ms-filter: blur(5px);\n filter: blur(5px);\n color: #172b4d;\n}\n.misago-markup .spoiler-block.revealed .spoiler-body {\n -webkit-filter: none;\n -moz-filter: none;\n -o-filter: none;\n -ms-filter: none;\n filter: none;\n}\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.1);\n}\n.misago-markup .spoiler-reveal {\n color: #172b4d;\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal.focus {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #8c8c8c;\n}\n.misago-markup .spoiler-reveal:hover {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #adadad;\n}\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal.active,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal {\n color: #172b4d;\n background-color: #ced0da;\n background-image: none;\n border-color: #adadad;\n}\n.misago-markup .spoiler-reveal:active:hover,\n.misago-markup .spoiler-reveal.active:hover,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal:active:focus,\n.misago-markup .spoiler-reveal.active:focus,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal:active.focus,\n.misago-markup .spoiler-reveal.active.focus,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal.focus {\n color: #172b4d;\n background-color: #b9bdcb;\n border-color: #8c8c8c;\n}\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal[disabled]:hover,\nfieldset[disabled] .misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal.disabled:focus,\n.misago-markup .spoiler-reveal[disabled]:focus,\nfieldset[disabled] .misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal.disabled.focus,\n.misago-markup .spoiler-reveal[disabled].focus,\nfieldset[disabled] .misago-markup .spoiler-reveal.focus {\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.misago-markup .spoiler-reveal .badge {\n color: #ebecf0;\n background-color: #172b4d;\n}\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:disabled,\n.misago-markup .spoiler-reveal:disabled:hover,\n.misago-markup .spoiler-reveal.disabled,\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal:disabled,\n.misago-markup .spoiler-reveal:disabled:hover,\n.misago-markup .spoiler-reveal.disabled,\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal:active:focus,\n.misago-markup .spoiler-reveal:active,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:focus,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:active:focus,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal.btn-loading,\n.misago-markup .spoiler-reveal.btn-loading:disabled,\n.misago-markup .spoiler-reveal.btn-loading:disabled:hover,\n.misago-markup .spoiler-reveal.btn-loading:hover,\n.misago-markup .spoiler-reveal.btn-loading:focus,\n.misago-markup .spoiler-reveal.btn-loading:active:focus,\n.misago-markup .spoiler-reveal.btn-loading:active {\n color: transparent;\n}\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal:hover {\n border-radius: 4px;\n box-shadow: 0px 0px 0px 4px #fff;\n padding: 6px 12px;\n}\n.modal-header {\n background: #fff;\n border-bottom-color: #ced0da;\n border-radius: 6px 6px 0px 0px;\n color: #172b4d;\n}\n.modal-header .close {\n padding: 0px 6px;\n color: #172b4d;\n font-size: 24px;\n line-height: 24px;\n text-shadow: none;\n}\n.modal-message .message-icon {\n color: #9575cd;\n}\n.modal-body > .form-group {\n margin: 20px 0px;\n}\n.modal-body > .form-group:first-child {\n margin-top: 0px;\n}\n.modal-body > .form-group:last-child {\n margin-bottom: 0px;\n}\n.modal-sign-in .modal-body {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.modal-sign-in .modal-body > .form-group {\n margin: 20px 0px;\n}\n.legal-footnote label {\n font-weight: bold;\n}\n.legal-footnote .help-block {\n margin-left: 20px;\n color: #ff5630;\n}\n.modal-avatar-index .avatar-preview {\n background: #fff;\n border-radius: 6px;\n}\n.modal-avatar-crop .cropit-preview {\n background: #fff;\n margin: 20px 0px;\n}\n.modal-avatar-crop .cropit-image-zoom-input {\n margin-top: 40px;\n margin-bottom: 20px;\n}\n.modal-post-likers .media {\n border-bottom: 1px solid #ebecf0;\n padding-bottom: 15px;\n}\n.modal-post-likers .media img {\n border-radius: 4px;\n width: 40px;\n height: 40px;\n}\n.modal-post-likers .media:last-child {\n border: none;\n padding-bottom: 0px;\n}\n.well {\n border: 1px solid #ddd;\n}\n.active-posters .rank-user-avatar img {\n border-radius: 4px;\n}\n.active-posters .user-details {\n color: #7a869a;\n}\n.active-posters .user-details a.rank-name,\n.active-posters .user-details a.rank-name:link,\n.active-posters .user-details a.rank-name:visited {\n color: #5e6c84;\n font-weight: normal;\n}\n.active-posters .user-details a.rank-name:focus,\n.active-posters .user-details a.rank-name:hover,\n.active-posters .user-details a.rank-name:active {\n color: #172b4d;\n}\n.active-posters .user-details span.rank-name {\n color: #5e6c84;\n font-weight: normal;\n}\n.active-posters small {\n color: #7a869a;\n}\n.page-error .message-icon {\n color: #ef5350;\n}\n.page-message .message-icon {\n color: #9575cd;\n}\n.page-message-info .message-icon {\n color: #9575cd;\n}\n.page-message-success .message-icon {\n color: #81c784;\n}\n.page-options .message-line {\n color: #7a869a;\n}\n.page-options .message-line a,\n.page-options .message-line a:link,\n.page-options .message-line a:visited {\n color: #7a869a;\n}\n.page-options .message-line a:hover,\n.page-options .message-line a:focus,\n.page-options .message-line a:focus:active,\n.page-options .message-line a:active {\n color: #172b4d;\n}\n.panel-profile-details-group.panel {\n border: 1px solid #ebecf0;\n}\n.panel-profile-details-group.panel .form-group {\n margin: 0px;\n}\n.panel-profile-details-group .form-control-static p:last-child {\n margin-bottom: 0px;\n}\n.post-primary .panel-post {\n border-color: #b388ff;\n}\n.post-primary .user-title {\n color: #6200ea;\n}\n.post-primary .user-title a,\n.post-primary .user-title a:link,\n.post-primary .user-title a:visited,\n.post-primary .user-title a:focus,\n.post-primary .user-title a:hover,\n.post-primary .user-title a:active {\n color: #6200ea;\n}\n.post-success .panel-post {\n border-color: #00c853;\n}\n.post-success .user-title {\n color: #388e3c;\n}\n.post-success .user-title a,\n.post-success .user-title a:link,\n.post-success .user-title a:visited,\n.post-success .user-title a:focus,\n.post-success .user-title a:hover,\n.post-success .user-title a:active {\n color: #388e3c;\n}\n.post-warning .panel-post {\n border-color: #ffab40;\n}\n.post-warning .user-title {\n color: #ff6d00;\n}\n.post-warning .user-title a,\n.post-warning .user-title a:link,\n.post-warning .user-title a:visited,\n.post-warning .user-title a:focus,\n.post-warning .user-title a:hover,\n.post-warning .user-title a:active {\n color: #ff6d00;\n}\n.post-danger .panel-post {\n border-color: #ff8a80;\n}\n.post-danger .user-title {\n color: #d50000;\n}\n.post-danger .user-title a,\n.post-danger .user-title a:link,\n.post-danger .user-title a:visited,\n.post-danger .user-title a:focus,\n.post-danger .user-title a:hover,\n.post-danger .user-title a:active {\n color: #d50000;\n}\n.user-card-primary .panel-body {\n background: #fff;\n border: 2px solid #b388ff;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-primary .user-card-title {\n color: #6200ea;\n}\n.user-card-primary .user-card-title a.user-title,\n.user-card-primary .user-card-title a.user-title:link,\n.user-card-primary .user-card-title a.user-title:visited,\n.user-card-primary .user-card-title a.user-title:focus,\n.user-card-primary .user-card-title a.user-title:hover,\n.user-card-primary .user-card-title a.user-title:active {\n color: #6200ea;\n}\n.user-card-primary .user-card-stats li {\n color: #9575cd;\n}\n.user-card-success .panel-body {\n background: #fff;\n border: 2px solid #00c853;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-success .user-card-title {\n color: #388e3c;\n}\n.user-card-success .user-card-title a.user-title,\n.user-card-success .user-card-title a.user-title:link,\n.user-card-success .user-card-title a.user-title:visited,\n.user-card-success .user-card-title a.user-title:focus,\n.user-card-success .user-card-title a.user-title:hover,\n.user-card-success .user-card-title a.user-title:active {\n color: #388e3c;\n}\n.user-card-success .user-card-stats li {\n color: #66bb6a;\n}\n.user-card-warning .panel-body {\n background: #fff;\n border: 2px solid #ffab40;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-warning .user-card-title {\n color: #ff6d00;\n}\n.user-card-warning .user-card-title a.user-title,\n.user-card-warning .user-card-title a.user-title:link,\n.user-card-warning .user-card-title a.user-title:visited,\n.user-card-warning .user-card-title a.user-title:focus,\n.user-card-warning .user-card-title a.user-title:hover,\n.user-card-warning .user-card-title a.user-title:active {\n color: #ff6d00;\n}\n.user-card-warning .user-card-stats li {\n color: #ff6e40;\n}\n.user-card-danger .panel-body {\n background: #fff;\n border: 2px solid #ff8a80;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-danger .user-card-title {\n color: #d50000;\n}\n.user-card-danger .user-card-title a.user-title,\n.user-card-danger .user-card-title a.user-title:link,\n.user-card-danger .user-card-title a.user-title:visited,\n.user-card-danger .user-card-title a.user-title:focus,\n.user-card-danger .user-card-title a.user-title:hover,\n.user-card-danger .user-card-title a.user-title:active {\n color: #d50000;\n}\n.user-card-danger .user-card-stats li {\n color: #e57373;\n}\n.list-group .list-group-rank-primary {\n border-left: 4px solid #7e57c2;\n padding-left: 11px;\n}\n.list-group .list-group-rank-primary span.rank-name {\n color: #6200ea;\n}\n.list-group .list-group-rank-primary a.rank-name,\n.list-group .list-group-rank-primary a.rank-name:link,\n.list-group .list-group-rank-primary a.rank-name:visited,\n.list-group .list-group-rank-primary a.rank-name:focus,\n.list-group .list-group-rank-primary a.rank-name:hover,\n.list-group .list-group-rank-primary a.rank-name:active {\n color: #6200ea;\n}\n.list-group .list-group-rank-success {\n border-left: 4px solid #9ccc65;\n padding-left: 11px;\n}\n.list-group .list-group-rank-success span.rank-name {\n color: #388e3c;\n}\n.list-group .list-group-rank-success a.rank-name,\n.list-group .list-group-rank-success a.rank-name:link,\n.list-group .list-group-rank-success a.rank-name:visited,\n.list-group .list-group-rank-success a.rank-name:focus,\n.list-group .list-group-rank-success a.rank-name:hover,\n.list-group .list-group-rank-success a.rank-name:active {\n color: #388e3c;\n}\n.list-group .list-group-rank-warning {\n border-left: 4px solid #ff7043;\n padding-left: 11px;\n}\n.list-group .list-group-rank-warning span.rank-name {\n color: #ff6d00;\n}\n.list-group .list-group-rank-warning a.rank-name,\n.list-group .list-group-rank-warning a.rank-name:link,\n.list-group .list-group-rank-warning a.rank-name:visited,\n.list-group .list-group-rank-warning a.rank-name:focus,\n.list-group .list-group-rank-warning a.rank-name:hover,\n.list-group .list-group-rank-warning a.rank-name:active {\n color: #ff6d00;\n}\n.list-group .list-group-rank-danger {\n border-left: 4px solid #f44336;\n padding-left: 11px;\n}\n.list-group .list-group-rank-danger span.rank-name {\n color: #d50000;\n}\n.list-group .list-group-rank-danger a.rank-name,\n.list-group .list-group-rank-danger a.rank-name:link,\n.list-group .list-group-rank-danger a.rank-name:visited,\n.list-group .list-group-rank-danger a.rank-name:focus,\n.list-group .list-group-rank-danger a.rank-name:hover,\n.list-group .list-group-rank-danger a.rank-name:active {\n color: #d50000;\n}\n.page-header-rank-primary .user-rank {\n color: #6200ea;\n}\n.page-header-rank-primary .user-rank a,\n.page-header-rank-primary .user-rank a:link,\n.page-header-rank-primary .user-rank a:visited,\n.page-header-rank-primary .user-rank a:focus,\n.page-header-rank-primary .user-rank a:hover,\n.page-header-rank-primary .user-rank a:active {\n color: #6200ea;\n}\n.page-header-rank-success .user-rank {\n color: #388e3c;\n}\n.page-header-rank-success .user-rank a,\n.page-header-rank-success .user-rank a:link,\n.page-header-rank-success .user-rank a:visited,\n.page-header-rank-success .user-rank a:focus,\n.page-header-rank-success .user-rank a:hover,\n.page-header-rank-success .user-rank a:active {\n color: #388e3c;\n}\n.page-header-rank-warning .user-rank {\n color: #ff6d00;\n}\n.page-header-rank-warning .user-rank a,\n.page-header-rank-warning .user-rank a:link,\n.page-header-rank-warning .user-rank a:visited,\n.page-header-rank-warning .user-rank a:focus,\n.page-header-rank-warning .user-rank a:hover,\n.page-header-rank-warning .user-rank a:active {\n color: #ff6d00;\n}\n.page-header-rank-danger .user-rank {\n color: #d50000;\n}\n.page-header-rank-danger .user-rank a,\n.page-header-rank-danger .user-rank a:link,\n.page-header-rank-danger .user-rank a:visited,\n.page-header-rank-danger .user-rank a:focus,\n.page-header-rank-danger .user-rank a:hover,\n.page-header-rank-danger .user-rank a:active {\n color: #d50000;\n}\n","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n border-bottom: none; // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important; // Black prints faster: h5bp.com/s\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n}\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: 400;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n padding: .2em;\n background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: \"\"; }\n &:after {\n content: \"\\00A0 \\2014\"; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n color: @pre-color;\n word-break: break-all;\n word-wrap: break-word;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n padding-right: ceil((@gutter / 2));\n padding-left: floor((@gutter / 2));\n margin-right: auto;\n margin-left: auto;\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-right: floor((@gutter / -2));\n margin-left: ceil((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// stylelint-disable declaration-no-important, at-rule-no-vendor-prefix\n\n//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width\n// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-right: floor((@grid-gutter-width / 2));\n padding-left: ceil((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n\n // Table cell sizing\n //\n // Reset default table behavior\n\n col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-column;\n float: none;\n }\n\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-cell;\n float: none;\n }\n }\n}\n\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\n\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n overflow-x: auto;\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * .75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n // Override content-box in Normalize (* isn't specific enough)\n .box-sizing(border-box);\n\n // Search inputs in iOS\n //\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n -webkit-appearance: none;\n appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n\n // Apply same disabled cursor tweak as for inputs\n // Some special care is needed because <label>s don't inherit their parent's `cursor`.\n //\n // Note: Neither radios nor checkboxes can be readonly.\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n // These are used on elements with <label> descendants\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n\n // These are used directly on <label>s\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n min-height: (@line-height-computed + @font-size-base);\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n\n &.input-lg,\n &.input-sm {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n margin-top: 0;\n margin-bottom: 0;\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n margin-bottom: 0;\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-large-vertical + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n background-color: @background-color;\n border-color: @border-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n background-image: none;\n outline: 0;\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: 400;\n color: @link-color;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n background-image: none;\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n @opacity-ie: (@opacity * 100); // IE8 filter\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n opacity: @opacity;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: @dropdown-bg;\n background-clip: padding-box;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0, 0, 0, .175));\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n\n &:hover,\n &:focus {\n color: @dropdown-link-hover-color;\n text-decoration: none;\n background-color: @dropdown-link-hover-bg;\n }\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n background-color: @dropdown-link-active-bg;\n outline: 0;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n cursor: @cursor-disabled;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n content: \"\";\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// stylelint-disable selector-no-qualifying-type, selector-max-type\n\n//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n padding-left: 0; // Override default ul/ol\n margin-bottom: 0;\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n cursor: @cursor-disabled;\n background-color: transparent;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n cursor: default;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n margin-bottom: 5px;\n text-align: center;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-left-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-top-right-radius: @radius;\n border-bottom-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-top-left-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, selector-max-class, declaration-no-important, selector-no-qualifying-type\n\n//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n\n // Fix the top/bottom navbars when screen real estate supports it\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n height: @navbar-height;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: @navbar-padding-horizontal;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n padding: 10px @navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-right: @navbar-padding-horizontal;\n margin-left: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n\n // Dropdown menu items\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n\n // Dropdowns\n > .open > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n padding: 0 5px;\n color: @breadcrumb-color;\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n// The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissable,\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n color: @text-color;\n background-color: @background;\n border-color: @border;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","// stylelint-disable at-rule-no-vendor-prefix\n\n//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n overflow: hidden;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n","// stylelint-disable selector-no-qualifying-type */\n\n//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: 400;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 20px;\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n background-color: @list-group-disabled-bg;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n color: @list-group-link-hover-color;\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, no-duplicate-selectors\n\n//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0, 0, 0, .05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-right: @panel-body-padding;\n padding-left: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n border-bottom-left-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n margin-bottom: 0;\n border: 0;\n }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n text-align: center;\n list-style: none;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n cursor: @cursor-disabled;\n background-color: @pager-bg;\n }\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n margin-left: -1px;\n line-height: @line-height-base;\n color: @pagination-color;\n text-decoration: none;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n cursor: default;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n cursor: @cursor-disabled;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, .15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","// stylelint-disable property-no-vendor-prefix\n\n//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n line-height: @badge-line-height;\n color: @badge-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0); }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n background-clip: padding-box;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0, 0, 0, .5));\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n margin-left: 5px;\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0, 0, 0, .5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n display: table; // 2\n content: \" \"; // 1\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n","// stylelint-disable font-family-name-quotes, font-family-no-missing-generic-family-keyword\n\n// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","// stylelint-disable declaration-no-important\n\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n","//\n// Misago Global Scaffolding\n// --------------------------------------------------\n\n// Disable horizontal scroll on mobile displays top-most containers\n@media screen and (max-width: @screen-sm-max) {\n html,\n body {\n overflow-x: hidden;\n }\n}\n\n// top margin utils\n@media screen and (min-width: @screen-md-min) {\n .md-margin-top-no {\n margin-top: 0px !important;\n }\n}\n\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .sm-margin-top {\n margin-top: @line-height-computed !important;\n }\n\n .sm-margin-top-no {\n margin-top: 0px !important;\n }\n\n .sm-margin-top-half {\n margin-top: @line-height-computed * 0.33 !important;\n }\n\n .sm-align-row-buttons {\n margin-top: @line-height-computed * 0.25 !important;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .xs-margin-top {\n margin-top: @line-height-computed !important;\n }\n\n .xs-margin-top-half {\n margin-top: @line-height-computed * 0.33 !important;\n }\n}\n","//\n// Simple flex row util, inspired by toolbar\n// --------------------------------------------------\n\n.flex-row {\n display: block;\n margin: 0 floor(@grid-gutter-width * -0.5);\n}\n\n.flex-row-section {\n align-items: center;\n display: flex;\n flex: 1;\n}\n\n.flex-row-section + .flex-row-section {\n margin-top: @line-height-computed;\n}\n\n.flex-row-col {\n flex: 1;\n padding: 0 floor(@grid-gutter-width * 0.5);\n}\n\n@media screen and (min-width: @screen-sm-min) {\n .flex-row {\n display: flex;\n align-items: center;\n }\n\n .flex-row-section + .flex-row-section {\n margin: 0;\n }\n\n .flex-row-section,\n .flex-row-col {\n flex: 0;\n\n align-items: center;\n }\n\n .flex-row-section.flex-row-section-auto,\n .flex-row-section.flex-row-section-auto > .flex-row-col {\n flex: 1;\n }\n}\n\n.flex-row-col-shrink {\n flex: 0 !important;\n}\n","//\n// Auth changed message\n// --------------------------------------------------\n\n.auth-message {\n background-color: @auth-changed-bg;\n padding: @line-height-computed 0px;\n width: 100%;\n\n position: fixed;\n top: -100%;\n left: 0px;\n\n z-index: @zindex-auth-message;\n\n transition: top 300ms ease;\n\n &.show {\n top: 0px;\n bottom: auto;\n }\n\n p {\n padding: @line-height-computed / 4 0px;\n\n color: @auth-changed-color;\n }\n\n // Small displays\n @media screen and (max-width: @screen-sm-max) {\n text-align: center;\n\n .btn {\n padding: @padding-large-vertical @padding-large-horizontal;\n\n font-size: @font-size-large;\n }\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n.alerts-snackbar {\n position: fixed;\n top: -100%;\n width: 100%;\n z-index: @zindex-modal + 10;\n\n text-align: center;\n font-size: @font-size-large;\n\n transition: top 300ms ease;\n\n pointer-events: none;\n\n &.in {\n top: 0px;\n transition: top 200ms ease;\n }\n\n p {\n display: inline-block;\n border-radius: 0px 0px @border-radius-base @border-radius-base;\n margin: 0px;\n\n pointer-events: all;\n }\n}\n","//\n// Agreement overlay\n// --------------------------------------------------\n\n.agreement-overlay {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n z-index: @zindex-modal + 10;\n\n background-color: fadeOut(@modal-backdrop-bg, @modal-backdrop-opacity * 100);\n overflow-x: scroll;\n\n .container {\n max-width: @modal-lg;\n padding: @line-height-computed @grid-gutter-width;\n }\n}\n\n.agreement-content {\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,0.5));\n background-clip: padding-box;\n outline: 0;\n\n padding: @padding-large-vertical @padding-large-horizontal;\n}\n\n.agreement-header {\n padding: @padding-large-vertical 0;\n\n border-bottom: 1px solid @gray-lighter;\n\n h2 {\n margin-top: 0;\n }\n\n p {\n margin: 0;\n padding: 0;\n }\n}\n\n.agreement-body {\n padding: @line-height-computed 0;\n\n p.lead {\n margin: 0;\n padding: 0;\n }\n}\n\n.agreement-footer {\n .modal-footer();\n\n padding: @padding-large-vertical 0;\n}\n\n// utility class disabling scroll on body\nbody.agreement-overlay-visible {\n overflow: hidden;\n}\n","//\n// Misago Loaders\n// --------------------------------------------------\n\n.loader {\n width: 100%;\n height: 49px;\n text-align: center;\n\n &.loader-spaced {\n margin: @line-height-computed * 2 0px;\n }\n}\n\n.loader-spinning-wheel {\n width: 49px;\n height: 49px;\n margin: 0 auto;\n border: 3px solid @loader-color;\n border-radius: 50%;\n border-left-color: transparent;\n border-right-color: transparent;\n animation: cssload-spin 575ms infinite linear;\n -o-animation: cssload-spin 575ms infinite linear;\n -ms-animation: cssload-spin 575ms infinite linear;\n -webkit-animation: cssload-spin 575ms infinite linear;\n -moz-animation: cssload-spin 575ms infinite linear;\n}\n\n@keyframes cssload-spin {\n 100% {\n transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-o-keyframes cssload-spin {\n 100% {\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-ms-keyframes cssload-spin {\n 100% {\n -ms-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes cssload-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-moz-keyframes cssload-spin {\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n","//\n// Misago Navbar\n// --------------------------------------------------\n\n// Remove bottom margin from navbar\n.navbar {\n margin-bottom: 0px;\n}\n\n// Desktop navbar\n.navbar .navbar-full {\n // Brand\n .navbar-brand {\n padding-top: (@navbar-height - @navbar-icon-height) / 2;\n padding-bottom: (@navbar-height - @navbar-icon-height) / 2;\n\n font-size: @font-size-base * 1.5;\n\n & > * {\n display: inline-block;\n vertical-align: middle;\n }\n\n img {\n height: @navbar-icon-height;\n margin-right: @padding-base-horizontal / 2;\n }\n }\n\n .navbar-nav > li > a {\n font-size: @font-size-base * 1.2;\n }\n\n .navbar-icon {\n display: block;\n height: @navbar-height;\n padding: @nav-link-padding;\n padding-top: (@navbar-height - 28px) / 2;\n padding-bottom: (@navbar-height - 28px) / 2;\n position: relative;\n\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n .badge {\n background-color: @brand-danger;\n position: absolute;\n\n top: 6px;\n right: 6px;\n\n font-size: 9px;\n }\n }\n\n .open .navbar-icon {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n\n color: @navbar-default-link-active-color;\n }\n }\n\n // Pull Guest and User menus to right\n .nav-guest,\n .nav-user {\n float: right;\n\n .navbar-btn {\n margin-left: @navbar-padding-horizontal;\n }\n }\n\n // User avatar size\n .nav-user .dropdown-toggle {\n padding: (@navbar-height - @navbar-avatar-size) / 2;\n\n img {\n width: @navbar-avatar-size;\n height: @navbar-avatar-size;\n }\n }\n}\n\n// Compact (mobile) navbar\n.navbar ul.navbar-compact-nav {\n border-collapse: collapse;\n display: table;\n margin: 0px;\n table-layout: fixed;\n width: 100%;\n\n & > li {\n display: table-cell;\n width: 100%;\n }\n\n & > li > a,\n & > li > button {\n background: none;\n border: none;\n display: block;\n padding-top: 13px;\n padding-bottom: 13px;\n\n width: 100%;\n\n color: @navbar-compact-link-color;\n text-align: center;\n\n &.active,\n &:hover,\n &:focus {\n color: @navbar-compact-link-hover-color;\n background-color: @navbar-compact-link-hover-bg;\n }\n\n & > img {\n width: @navbar-compact-item-size;\n height: @navbar-compact-item-size;\n }\n }\n\n & > li > button {\n display: inline-block;\n }\n\n & > li > a > .material-icon {\n font-size: @navbar-compact-item-size;\n line-height: @navbar-compact-item-size;\n }\n}\n\n// Make navbar's height match compact nav\n@media (max-width: @grid-float-breakpoint) {\n .navbar.navbar-misago {\n min-height: auto;\n }\n}\n\n// Hide compact navbar above breakpoint\n.navbar-misago .navbar-desktop-nav {\n display: none;\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-misago ul.navbar-compact-nav {\n display: none;\n }\n\n .navbar-misago .navbar-desktop-nav {\n display: block;\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n.nav-side > a {\n & > .material-icon {\n margin: -5px;\n margin-right: @line-height-computed / 2;\n\n position: relative;\n bottom: 1px;\n\n width: 24px;\n height: 24px;\n\n font-size: 24px;\n line-height: 24px;\n }\n\n .badge {\n position: relative;\n top: 1px;\n }\n}\n\n.nav-pills > li > a {\n display: flex;\n align-items: center;\n padding: @nav-pills-padding-vertical @nav-pills-padding-horizontal;\n\n .material-icon {\n margin-right: 3px;\n }\n\n &,\n &:link,\n &:visited {\n background-color: @nav-pills-bg;\n color: @nav-pills-color;\n }\n\n &:focus,\n &:hover,\n &:active {\n background-color: @nav-pills-hover-bg;\n color: @nav-pills-hover-color;\n }\n}\n\n.nav-pills > li.active > a {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n background-color: @nav-pills-active-bg;\n color: @nav-pills-active-color;\n }\n}\n\n.nav-container {\n .btn-block {\n margin-bottom: @line-height-computed;\n }\n\n .nav {\n margin-right: floor(@line-height-computed / -2);\n margin-bottom: floor(@line-height-computed * 1.5);\n }\n\n li {\n margin-right: floor(@line-height-computed / 2);\n margin-bottom: floor(@line-height-computed / 2);\n }\n}\n","// Breadcrumbs component\n\n.breadcrumbs {\n display: block;\n\n padding: 0;\n margin-bottom: @line-height-computed / 2;\n}\n\n.breadcrumbs-item {\n display: inline-block;\n margin-right: @breadcrumbs-gutter;\n margin-bottom: @line-height-computed / 2;\n padding: 0;\n list-style: none;\n}\n\n.breadcrumbs-item a {\n display: flex;\n align-items: center;\n text-decoration: none;\n\n &,\n &:visited {\n color: @breadcrumbs-color;\n }\n\n &:hover,\n &:focus {\n color: @breadcrumbs-color-hover;\n\n .breadcrumbs-item-name {\n text-decoration: underline;\n }\n }\n\n &:active {\n color: @breadcrumbs-color-active;\n }\n}\n\n.breadcrumbs-item .material-icon {\n margin-right: 4px;\n}\n","//\n// Material Icons\n// --------------------------------------------------\n\n@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n src: url(../fonts/MaterialIcons-Regular.eot); /* For IE6-8 */\n src: local(\"Material Icons\"), local(\"MaterialIcons-Regular\"),\n url(../fonts/MaterialIcons-Regular.woff2) format(\"woff2\"),\n url(../fonts/MaterialIcons-Regular.woff) format(\"woff\"),\n url(../fonts/MaterialIcons-Regular.ttf) format(\"truetype\");\n}\n\n.material-icon {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 1;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n vertical-align: middle;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n\n /* Support for IE. */\n font-feature-settings: \"liga\";\n}\n","//\n// Misago Modals\n// --------------------------------------------------\n\n// Modal toolbar\n.modal-toolbar {\n background: @gray-lighter;\n border-bottom: 1px solid @modal-header-border-color;\n overflow: auto;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n .pull-left {\n margin-right: 8px;\n }\n\n p {\n padding: @padding-small-vertical 0px;\n margin-bottom: 0px;\n }\n}\n\n// Modals displaying messages\n\n// Small displays\n@media screen and (max-width: @screen-sm-max) {\n .modal-message {\n text-align: center;\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n\n .material-icon {\n font-size: @message-page-icon-size * 2;\n }\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-md-min) {\n .modal-message {\n .modal-body {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n }\n\n .message-icon {\n float: left;\n position: relative;\n left: 7px;\n\n .material-icon {\n font-size: @line-height-computed * 2.5;\n }\n }\n\n .message-body {\n margin-left: @line-height-computed * 3.75;\n margin-top: @line-height-computed * 0.6 - 2px;\n\n p {\n margin-top: @line-height-computed;\n }\n\n .lead {\n margin-top: 0px;\n margin-bottom: 0px;\n }\n }\n }\n}\n\n// Modal loader\n.modal-loader {\n padding: @line-height-computed * 2.5 0px;\n\n .loader {\n width: 100%;\n height: @loader-size;\n text-align: center;\n }\n\n .loader-spinning-wheel {\n width: @loader-size;\n height: @loader-size;\n }\n}\n\n// Modal form\n.modal-body .form-group {\n min-height: 34px;\n}\n\n// Errors modal\n.list-item-errors {\n margin-bottom: @line-height-computed;\n}\n\n.list-errored-items li:last-child .list-item-errors {\n margin-bottom: 0px;\n}\n\n// Post likes modal\n.modal-post-likers {\n .media-list {\n margin: 0px;\n }\n\n .item-title {\n display: block;\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n// Material feedback icon\n.has-feedback .material-icon.form-control-feedback {\n top: @padding-base-vertical;\n right: @padding-base-horizontal * 2;\n\n font-size: @line-height-base;\n line-height: @line-height-base;\n}\n\n// Well done\n.well.well-form.well-done {\n font-size: @font-size-large;\n text-align: center;\n\n .message-icon {\n margin-bottom: @line-height-computed / 2;\n\n font-size: @font-size-large * 5;\n line-height: @font-size-large * 5;\n }\n\n .message-body {\n margin-bottom: @line-height-computed;\n }\n}\n\n// Noscript well\n.well.well-form.well-noscript {\n font-size: @font-size-large;\n text-align: center;\n\n .message-icon {\n margin-bottom: @line-height-computed / 2;\n\n font-size: @font-size-large * 5;\n line-height: @font-size-large * 5;\n }\n}\n","//\n// Inputs\n// --------------------------------------------------\n\n// Button-based inputs\n.btn.btn-yes-no,\n.btn.btn-select {\n background: transparent;\n border: 1px solid darken(@gray-lighter, 10%);\n\n .material-icon {\n margin: -4px 0px;\n margin-right: 8px;\n\n position: relative;\n bottom: 1px;\n\n width: 20px;\n height: 20px;\n\n font-size: 20px;\n line-height: 20px;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .btn.btn-yes-no {\n width: 100%;\n overflow: auto;\n\n .material-icon {\n float: left;\n margin-top: 1px;\n }\n\n .btn-text {\n display: block;\n\n margin-left: 30px;\n\n text-align: left;\n white-space: normal;\n }\n }\n}\n\n// Hidden file input\ninput.hidden-file-upload {\n position: absolute;\n top: -9999px;\n left: -9999px;\n}\n\n// Search field\n.form-search {\n position: relative;\n\n .form-control {\n padding-right: 30px;\n }\n\n .material-icon {\n position: absolute;\n top: 5px;\n right: 5px;\n\n color: @gray-light;\n font-size: 24px;\n line-height: 24px;\n\n pointer-events: none;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n// Button loading style\n.btn.btn-loading {\n &,\n &:link,\n &:active,\n &:visited,\n &:hover,\n &:focus {\n // make text transparent, but still take place in button\n color: transparent;\n\n // position loader over the text\n .loader {\n height: 20px;\n margin-top: -20px;\n\n & > div {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n &.btn-default .loader > div {\n border-top-color: @btn-default-color;\n border-bottom-color: @btn-default-color;\n }\n\n &.btn-primary .loader > div {\n border-top-color: @btn-primary-color;\n border-bottom-color: @btn-primary-color;\n }\n\n &.btn-success .loader > div {\n border-top-color: @btn-success-color;\n border-bottom-color: @btn-success-color;\n }\n\n &.btn-info .loader > div {\n border-top-color: @btn-info-color;\n border-bottom-color: @btn-info-color;\n }\n\n &.btn-warning .loader > div {\n border-top-color: @btn-warning-color;\n border-bottom-color: @btn-warning-color;\n }\n\n &.btn-danger .loader > div {\n border-top-color: @btn-danger-color;\n border-bottom-color: @btn-danger-color;\n }\n}\n\n// Icons in buttons\n.btn .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n\n// Btn with larger icon\n.btn-icon .material-icon {\n margin: -1px -4px;\n\n width: 20px;\n height: 20px;\n\n font-size: 20px;\n line-height: 20px;\n}\n\n.btn-icon .btn-text {\n margin-left: @padding-small-horizontal;\n}\n\n.btn-icon .btn-text-left {\n margin-right: @padding-small-horizontal;\n}\n\n// Block btn icon\n.btn-block.btn-icon {\n padding-left: 0px;\n padding-right: 0px;\n}\n","//\n// Dropdowns\n// --------------------------------------------------\n\n// Unify .btn-link appearance with anchors\n.dropdown-menu > li > a,\n.dropdown-menu > li > .btn-link,\n.modal-menu > li > a,\n.modal-menu > li > .btn-link {\n display: block;\n border: none;\n clear: both;\n float: none;\n padding: 6px 20px;\n width: 100%;\n\n color: @dropdown-link-color;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n white-space: nowrap;\n\n &:hover,\n &:focus {\n background-color: @dropdown-link-hover-bg;\n\n color: @dropdown-link-hover-color;\n text-decoration: none;\n }\n\n &:active {\n background-color: @dropdown-link-hover-bg;\n\n color: @dropdown-link-hover-color;\n text-decoration: none;\n }\n\n &:disabled {\n color: fadeOut(@dropdown-link-color, 50);\n }\n\n // Set material icons in dropdown menus\n .material-icon {\n margin: -2px 0px;\n margin-right: @line-height-computed * 0.35;\n\n position: relative;\n bottom: 1px;\n\n font-size: 18px;\n }\n\n .badge {\n float: right;\n\n position: relative;\n top: 1px;\n }\n}\n\n// Extra overrides for modal nav\n.modal-menu {\n margin: @line-height-computed 0px;\n padding: 0px;\n}\n\n.modal-menu > li {\n margin: @line-height-computed / 3 0px;\n padding: 0px;\n\n list-style: none;\n}\n\n// Bump min dropdown width to 210px\n.dropdown-menu {\n min-width: 210px;\n}\n\n// Dropdown footer\n.dropdown-menu .dropdown-footer {\n padding: 6px 20px;\n}\n\n// Dropdown buttons container\n.dropdown-menu .dropdown-buttons {\n padding: 2px 20px;\n padding-bottom: 7px;\n\n .btn {\n margin: 4px 0px;\n }\n}\n\n// Navbar's dropdown\n.mobile-dropdown {\n position: relative;\n}\n\n.mobile-dropdown.open > .dropdown-menu,\n.compact-nav.open > .dropdown-menu {\n border: none;\n border-radius: 0;\n\n display: block;\n margin: 0px;\n width: 100%;\n}\n\n// Guest menu\n.user-dropdown .guest-preview {\n text-align: center;\n\n .row {\n margin: 0px;\n }\n}\n\n// User menu\n.navbar .user-dropdown {\n width: 240px;\n}\n\n.user-dropdown .dropdown-header {\n padding: 6px 20px;\n\n font-size: @font-size-large;\n\n strong {\n font-weight: normal;\n }\n}\n\n// Category picker\n.category-picker .dropdown-menu {\n // Make category picker wider on desktops\n @media screen and (min-width: @screen-md-min) {\n width: 300px;\n }\n}\n\n.category-picker .dropdown-menu > li > .btn-link {\n white-space: normal;\n word-wrap: break-word;\n}\n\n// Stick to bottom on mobile\n@media screen and (max-width: @screen-xs-max) {\n .dropdown-menu.stick-to-bottom {\n border-radius: 0px;\n border: none;\n\n max-height: 300px;\n overflow-y: auto;\n\n .box-shadow(0px 0px @line-height-computed * 1.5 @gray-light);\n\n clear: both;\n top: auto;\n width: 100%;\n\n position: fixed;\n bottom: 0px;\n\n margin: 0px;\n padding: 0px;\n\n padding-bottom: @line-height-computed;\n\n li {\n float: none;\n\n margin: 0px;\n\n clear: both;\n\n & > a,\n & > .btn {\n padding-top: @line-height-computed * 0.75;\n padding-bottom: @line-height-computed * 0.75;\n\n border-bottom: 1px solid @dropdown-divider-bg;\n }\n }\n }\n}\n","// Category label is category on threads list\n.category-label {\n border-radius: 0.25em;\n padding: 0.2em 0.6em 0.3em;\n}\n\n.category-label-color,\n.category-label-color:link,\n.category-label-color:focus,\n.category-label-color:active,\n.category-label-color:visited,\n.category-label-color:hover {\n color: @category-label-color;\n}\n\n.category-label-no-color,\n.category-label-no-color:link,\n.category-label-no-color:focus,\n.category-label-no-color:active,\n.category-label-no-color:visited,\n.category-label-no-color:hover {\n background-color: @category-label-default-bg;\n color: @category-label-default-color;\n}\n",".thread-flags {\n display: flex;\n align-items: center;\n\n opacity: @thread-flag-icon-opacity;\n\n margin: 0;\n padding: 0;\n\n li {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: @thread-flag-block-size;\n height: @thread-flag-block-size;\n\n border-radius: @border-radius-small;\n list-style-type: none;\n\n cursor: default;\n }\n\n li + li {\n margin-left: @grid-gutter-width / 4;\n }\n\n .material-icon {\n font-size: @thread-flag-icon-size;\n line-height: @thread-flag-icon-size;\n }\n}\n\n.thread-flag-pinned-globally {\n color: @thread-flag-pinned-globally-color;\n background: @thread-flag-pinned-globally-bg;\n}\n\n.thread-flag-pinned-locally {\n color: @thread-flag-pinned-locally-color;\n background: @thread-flag-pinned-locally-bg;\n}\n\n.thread-flag-answered {\n color: @thread-flag-answered-color;\n background: @thread-flag-answered-bg;\n}\n\n.thread-flag-poll {\n color: @thread-flag-poll-color;\n background: @thread-flag-poll-bg;\n}\n\n.thread-flag-unapproved {\n color: @thread-flag-unapproved-color;\n background: @thread-flag-unapproved-bg;\n}\n\n.thread-flag-closed {\n color: @thread-flag-closed-color;\n background: @thread-flag-closed-bg;\n}\n\n.thread-flag-hidden {\n color: @thread-flag-hidden-color;\n background: @thread-flag-hidden-bg;\n}\n",".threads-replies {\n display: flex;\n align-items: center;\n\n color: @thread-replies-color;\n font-size: @thread-replies-size;\n font-weight: bold;\n\n .material-icon {\n margin-right: @grid-gutter-width / 4;\n transform: matrix(-1, 0, 0, 1, 0, 0);\n }\n}\n",".thread-user-card {\n display: flex;\n align-items: center;\n}\n\n.thread-user-card-media {\n flex: 0;\n margin-right: floor(@grid-gutter-width * .5;);\n\n img {\n border-radius: @border-radius-small;\n }\n}\n\n.thread-user-card-body {\n flex: 1;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","//\n// Search Dropdown\n// --------------------------------------------------\n\n// Default size and position for search dropdown\n.navbar-misago .dropdown-menu.dropdown-search-results {\n margin: 0px;\n padding-top: 0px;\n width: 400px;\n left: auto;\n right: 0px;\n}\n\n// Search input\n.dropdown-search-results .form-group {\n margin: 0px;\n padding: @padding-base-horizontal;\n}\n\n// Message\nli.dropdown-search-message {\n text-align: center;\n}\n\n// Thread result\n.dropdown-search-thread {\n width: 100%;\n\n h5 {\n margin: 0px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n small {\n display: block;\n margin: 0px;\n margin-top: 4px;\n }\n}\n","//\n// Page Header\n// --------------------------------------------------\n\n// Remove margins from header\n.page-header {\n margin: 0;\n margin-top: floor(@line-height-computed * 0.5);\n}\n\n// Add padding to header's banner and message\n.page-header-banner-bg-overlay {\n padding: @line-height-computed 0;\n}\n\n// Don't rely on header's margins for spacing, force word break\n.page-header h1 {\n margin: 0;\n\n overflow-wrap: break-word;\n}\n","// Page container is .container element for page content (excluding header)\n\n.page-container {\n padding-top: @line-height-computed;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n// Messages\n@media screen and (max-width: @screen-sm-max) {\n .panel-message-body {\n text-align: center;\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n\n .material-icon {\n font-size: @message-page-icon-size * 2;\n }\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-md-min) {\n .panel-message-body {\n padding: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n\n .message-icon {\n float: left;\n\n .material-icon {\n font-size: @line-height-computed * 2.5;\n }\n }\n\n .message-body {\n margin-left: @line-height-computed * 3.25;\n margin-top: @line-height-computed * 0.6 - 2px;\n\n .lead {\n margin-bottom: 0px;\n }\n\n .help-block {\n margin-top: @line-height-computed * 0.66;\n }\n }\n }\n}\n\n// Loading\n.panel-body-loading {\n padding: 0px;\n\n text-align: center;\n}\n","//\n// Forum Footer\n// --------------------------------------------------\n\n// Superbasic spacing and layout for easy overriding\n.misago-footer {\n margin-top: @line-height-computed * 1.5;\n margin-bottom: @line-height-computed * 2.5;\n\n .footer-content {\n border-top: 1px solid @page-header-border-color;\n padding-top: @line-height-computed * 1.5;\n }\n}\n\n// Position \"enable JS!\" message's icon\n.misago-footer .noscript-message .material-icon {\n position: relative;\n bottom: 1px;\n\n font-size: @font-size-large;\n}\n","//\n// UI Preview\n// --------------------------------------------------\n\n// Animation\n.ui-preview {\n color: @ui-preview;\n\n .animation(ui-preview-animation @ui-preview-frequency linear infinite);\n}\n\n@keyframes ui-preview-animation {\n 0% {\n .opacity(@ui-preview-in);\n }\n 50% {\n .opacity(@ui-preview-out);\n }\n 100% {\n .opacity(@ui-preview-in);\n }\n}\n\n// Text\n.ui-preview-text {\n background: @ui-preview;\n border-radius: 100px;\n display: inline-block;\n height: @font-size-base;\n\n position: relative;\n top: (@line-height-computed - @font-size-base) / 2;\n}\n\n.ui-preview-paragraph {\n .ui-preview-text {\n margin-right: 6px;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Image\n.ui-preview-img {\n background: @ui-preview;\n border-radius: @border-radius-base + 1px;\n}\n","//\n// Misago pager\n// --------------------------------------------------\n\n.pager-undercontent {\n margin-top: @line-height-computed * -1;\n}\n\n// \"Load more\" button\n.pager-more {\n text-align: center;\n}\n\n// Large displays\n@media screen and (min-width: @screen-md-min) {\n .pager-more .btn {\n padding-left: @line-height-computed;\n padding-right: @line-height-computed;\n }\n}\n","//\n// Misago pagination\n// --------------------------------------------------\n\n.misago-pagination {\n display: flex;\n\n .btn {\n display: block;\n width: 100%;\n }\n\n .btn + .btn {\n margin-left: @grid-gutter-width;\n }\n}\n\n// Make it full width on small screens (in toolbars)\n@media screen and (max-width: @screen-xs-max) {\n .toolbar-item .misago-pagination {\n flex: 1;\n }\n}\n","//\n// Poll\n// --------------------------------------------------\n\n.panel-poll h2 {\n margin-top: 0px;\n}\n\n.poll-select-choice .btn {\n &,\n &:active,\n &:focus,\n &:hover {\n background: transparent;\n border: transparent;\n .box-shadow(none);\n\n margin: @padding-base-vertical 0px;\n padding: 0px;\n padding-left: @padding-base-vertical;\n\n outline: none;\n\n text-align: left;\n }\n\n .material-icon {\n margin-right: @padding-base-vertical;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-heigh: 28px;\n\n color: darken(@gray-lighter, 10%);\n }\n\n &.btn-selected .material-icon {\n color: @brand-primary;\n }\n}\n\n.poll-help {\n font-size: @font-size-small;\n}\n\n.poll-chart-selected .material-icon {\n margin-right: 4px;\n\n position: relative;\n bottom: 1px;\n\n height: 14px;\n width: 14px;\n\n color: @brand-success;\n font-size: 14px;\n line-heigh: 14px;\n}\n\n.poll-options {\n margin-bottom: 0px;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-base-vertical * -1;\n\n .btn {\n margin: @padding-base-vertical 0px;\n }\n }\n}\n","//\n// Misago User Status\n// --------------------------------------------------\n\n// Colors\n.user-status {\n &.user-banned .status-icon {\n color: @user-status-banned;\n }\n\n &.user-online .status-icon {\n color: @user-status-online;\n }\n\n &.user-offline .status-icon {\n color: @user-status-offline;\n }\n}\n","//\n// User Card\n// --------------------------------------------------\n\n// Center card's content on larger displays\n.user-card {\n @media screen and (min-width: @screen-sm-min) {\n text-align: center;\n }\n}\n\n// Max out small avatar's width\n.user-card-small-avatar img {\n width: 100%;\n height: auto;\n}\n\n// Toggle avatar visibility\n@media screen and (min-width: @screen-sm-min) {\n .user-card-small-avatar {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .user-card-avatar {\n display: none;\n }\n}\n","//\n// Misago Toolbar\n// --------------------------------------------------\n\n.toolbar {\n display: block;\n margin: 0 floor(@grid-gutter-width * -0.5);\n}\n\n.toolbar-section {\n justify-items: center;\n display: flex;\n flex: 1;\n margin-bottom: @line-height-computed;\n}\n\n.toolbar-item {\n flex: 1;\n padding: 0 floor(@grid-gutter-width * 0.5);\n\n h3,\n p {\n margin: 0;\n }\n}\n\n.toolbar-item-shrink {\n flex: 0;\n}\n\n.toolbar-spacer {\n display: none;\n}\n\n@media screen and (min-width: @screen-sm-min) {\n .toolbar {\n display: flex;\n }\n\n .toolbar-section,\n .toolbar-item {\n flex: 0;\n\n align-items: center;\n }\n\n .toolbar-section.toolbar-section-auto,\n .toolbar-section.toolbar-section-auto .toolbar-item {\n flex: 1;\n }\n\n .toolbar-spacer {\n display: block;\n flex: 1;\n }\n\n .toolbar-item .form-search {\n width: 250px;\n }\n}\n\n// Center paragraph of text on portrait phones\n// Used for pagination messages\n@media screen and (max-width: @screen-xs-max) {\n .toolbar-item p {\n text-align: center;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\nabbr {\n border: none !important;\n}\n\n.item-title {\n color: @text-color;\n font-weight: bold;\n text-decoration: none;\n}\n\na.item-title {\n &:link,\n &:active,\n &:visited,\n &:hover {\n color: @text-color;\n font-weight: bold;\n }\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.message-line {\n text-align: center;\n\n .material-icon {\n margin-right: @line-height-computed / 3;\n\n font-size: 20px;\n line-height: 20px;\n\n height: 20px;\n width: 20px;\n }\n}\n\n.text-ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","//\n// Markup styles\n// --------------------------------------------------\n\n// Force word wrap for user text\n.misago-markup {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n word-wrap: break-word;\n }\n}\n\n// Add upper margins for headers\n.misago-markup {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: @line-height-computed * 2;\n }\n}\n\n// Even out blocks\n.misago-markup > *,\n.misago-markup blockquote > * {\n margin: @line-height-computed 0px;\n\n &:first-child {\n margin-top: 0px;\n }\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Downscale images so they don't expand area\n.misago-markup img {\n max-width: 100%;\n max-height: 500px;\n}\n\n// Make quotes stand out a little\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background: @gray-lighter;\n border: none;\n\n font-size: @font-size-base;\n\n .quote-heading {\n border-bottom: 1px solid darken(@gray-lighter, 8%);\n padding: (@line-height-computed / 2) @line-height-computed;\n\n font-size: @font-size-small;\n font-weight: bold;\n }\n}\n\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n border: 1px solid darken(@gray-lighter, 8%);\n}\n\n.misago-markup .quote-body {\n background: @body-bg;\n margin: 0px;\n padding: @line-height-computed;\n\n & > .quote-block,\n & > blockquote {\n border: 1px solid darken(@gray-lighter, 8%);\n }\n}\n\n// Style spoilers\n.misago-markup .spoiler-block {\n background: @gray-lighter;\n border: none;\n\n font-size: @font-size-base;\n}\n\n.misago-markup > .spoiler-block {\n border: 1px solid darken(@gray-lighter, 8%);\n position: relative;\n}\n\n.misago-markup .spoiler-body {\n background: @body-bg;\n margin: 0px;\n padding: @line-height-computed;\n}\n\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: @body-bg;\n}\n\n.misago-markup .spoiler-block.revealed .spoiler-overlay {\n display: none;\n}\n\n// Add bullets to lists\n.misago-markup ul {\n list-style-type: square;\n\n li {\n list-style-type: square;\n }\n}\n\n.misago-markup ol {\n list-style-type: decimal;\n\n li {\n list-style-type: decimal;\n }\n}\n\n// Expand code blocks a little\n.misago-markup pre {\n background: #eee;\n border: none;\n padding: @padding-large-vertical;\n overflow: hidden;\n\n color: #000;\n\n code.hljs {\n margin: @padding-large-vertical * -1;\n padding: ((@line-height-computed - 1) / 2);\n }\n}\n","//\n// Change Avatar Modal\n// --------------------------------------------------\n\n// Index\n.modal-change-avatar .modal-avatar-index {\n .avatar-preview {\n border-radius: @border-radius-large;\n margin: 0px auto;\n overflow: hidden;\n position: relative;\n\n width: 200px;\n height: 200px;\n\n .loader {\n display: none;\n\n position: absolute;\n top: 50px;\n height: 100px;\n\n .loader-spinning-wheel {\n border-width: 10px;\n border-color: #fff;\n border-left-color: transparent;\n border-right-color: transparent;\n\n width: 100px;\n height: 100px;\n }\n }\n\n &.preview-loading {\n img {\n .opacity(0.33);\n }\n\n .loader {\n display: block;\n }\n }\n\n @media (max-width: (@grid-float-breakpoint - 1)) {\n margin-bottom: @line-height-computed;\n\n width: 150px;\n height: 150px;\n\n img {\n width: 150px;\n height: 150px;\n }\n\n .loader {\n top: 25px;\n height: 100px;\n\n .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n }\n }\n }\n\n .btn {\n text-align: left;\n }\n}\n\n// Upload\n.modal-change-avatar .modal-avatar-upload {\n text-align: center;\n\n .btn-pick-file {\n background: transparent;\n border: 2px solid @gray-lighter;\n border-radius: @border-radius-large;\n padding: @padding-large-vertical @padding-large-horizontal * 1.5;\n .box-shadow(none);\n\n color: @gray-light;\n font-size: @font-size-large;\n text-align: center;\n\n & > .material-icon {\n display: block;\n margin: 0px auto;\n margin-bottom: @line-height-computed * 0.66;\n\n font-size: @line-height-computed * 2.5;\n width: @line-height-computed * 2.5;\n height: @line-height-computed * 2.5;\n }\n\n &:hover,\n &:active {\n border-color: @brand-primary;\n color: @brand-primary;\n }\n }\n\n .text-muted {\n margin-top: @line-height-computed * 0.66;\n }\n\n .upload-progress {\n img {\n border-radius: @border-radius-base;\n margin-bottom: @line-height-computed;\n\n max-height: 80px;\n width: auto;\n }\n\n .progress {\n width: 70%;\n margin: 0px auto;\n }\n }\n}\n\n// Crop\n.modal-avatar-crop .crop-form {\n margin: 0px auto;\n\n .cropit-image-zoom-input {\n margin-top: @line-height-computed / 2;\n\n // removes default webkit styles\n -webkit-appearance: none;\n\n // fix for FF unable to apply focus style bug\n border: 1px solid white;\n\n // required for proper track sizing in FF\n width: 100%;\n\n &::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n background: @gray-lighter;\n border: none;\n border-radius: 3px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n margin-top: -6px;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus::-webkit-slider-runnable-track {\n background: @gray-lighter;\n }\n\n &::-moz-range-track {\n width: 100%;\n height: 8px;\n background: @gray-lighter;\n border: none;\n border-radius: 4px;\n }\n\n &::-moz-range-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n }\n\n /*hide the outline behind the border*/\n &:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n }\n\n &::-ms-track {\n width: 100%;\n height: 8px;\n\n /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */\n background: transparent;\n\n /*leave room for the larger thumb to overflow with a transparent border */\n border-color: transparent;\n border-width: 8px 0;\n\n /*remove default tick marks*/\n color: transparent;\n }\n\n &::-ms-fill-lower {\n background: @gray-lighter;\n border-radius: 16px;\n }\n\n &::-ms-fill-upper {\n background: @gray-lighter;\n border-radius: 16px;\n }\n\n &::-ms-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n }\n\n &:focus::-ms-fill-lower {\n background: @gray-lighter;\n }\n\n &:focus::-ms-fill-upper {\n background: @gray-lighter;\n }\n }\n}\n\n// Gallery\n.modal-change-avatar .modal-avatar-gallery {\n padding-bottom: 0px;\n\n .avatars-gallery {\n margin-bottom: @line-height-computed;\n\n h3 {\n margin-top: 0px;\n }\n }\n\n .avatars-gallery-images {\n .row {\n margin-bottom: @line-height-computed / 2;\n }\n\n .btn {\n border-radius: @border-radius-base + 2px;\n border: 2px solid @gray-lighter;\n background: none;\n padding: 2px;\n position: relative;\n\n &:hover,\n &:focus {\n border-color: @gray-light;\n }\n\n &.avatar-selected,\n &:active {\n border-color: @link-color;\n }\n\n img {\n border-radius: @border-radius-base;\n width: 100%;\n height: auto;\n }\n }\n }\n}\n","//\n// Categories Lists\n// --------------------------------------------------\n\n// Category Block\n// --------------------------------------------------\n\n// Thread unread state icon\n.category-main .read-status .material-icon {\n color: @category-read-color;\n}\n\n.category-main .read-status.item-new .material-icon {\n color: @category-new-color;\n}\n\n// Last thread\n.category-last-thread .media-heading {\n a {\n display: inline-block;\n overflow: hidden;\n\n white-space: nowrap;\n width: 290px; // md-3 - avatar column\n\n text-overflow: ellipsis;\n vertical-align: top;\n\n @media screen and (max-width: @screen-sm-max) {\n width: 275px; // md-3 - avatar column\n }\n\n @media screen and (max-width: @screen-xs-max) {\n width: 260px; // md-3 - avatar column\n }\n }\n}\n\n// Last thread message\n.category-thread-message {\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n p {\n margin: 0px;\n }\n}\n\n// Subcategories list\n// --------------------------------------------------\n.list-inline.subcategories-list {\n overflow: auto;\n margin-top: @line-height-computed / -2;\n\n li {\n display: block;\n float: left;\n\n a,\n a:link,\n a:visited,\n a:active,\n a:hover,\n a:focus {\n background-color: @gray-lighter;\n border: 1px solid darken(@gray-lighter, 5%);\n border-radius: @border-radius-base;\n display: inline-block;\n margin-top: @line-height-computed / 2;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n color: @gray;\n }\n\n &:focus,\n a:hover,\n a:active {\n background-color: darken(@gray-lighter, 5%);\n\n color: @text-color;\n text-decoration: none;\n }\n }\n}\n\n.row.subcategories-list {\n .btn {\n margin-top: @line-height-computed;\n\n text-align: left;\n }\n}\n","//\n// Posting\n// --------------------------------------------------\n\n// Affix and style placeholder\n#posting-placeholder {\n background-color: @gray-lighter;\n display: none;\n margin-top: @line-height-computed * 1.5;\n margin-bottom: @line-height-computed * -1.5;\n padding: @line-height-computed 0px;\n\n transition: height 300ms;\n\n &.slide-in {\n display: block;\n }\n}\n\n// First row\n#posting-placeholder .first-row {\n margin-bottom: @line-height-computed;\n\n .form-control {\n border: 1px solid darken(@gray-lighter, 15%);\n }\n\n .posting-options {\n .btn {\n padding-top: 4px;\n padding-bottom: 4px;\n\n .btn-text {\n margin-left: @line-height-computed / 4;\n\n position: relative;\n top: 1px;\n }\n }\n\n .material-icon {\n width: 14px;\n height: 24px;\n\n margin-right: 0px;\n\n position: relative;\n top: 5px;\n\n font-size: 14px;\n line-height: 14px;\n text-align: center;\n }\n }\n}\n\n// Posting ui preview\n.posting-ui-preview {\n padding: @line-height-computed 0px;\n position: relative;\n\n .form-control {\n box-shadow: none;\n resize: none;\n }\n}\n\n// Posting Loader\n.posting-loader {\n text-align: center;\n}\n\n.posting-loader .loader {\n height: 100px;\n\n .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n}\n\n// Posting message\n@posting-icon-width: 28px;\n\n.posting-message {\n text-align: center;\n\n .material-icon {\n margin-right: @line-height-computed / 3;\n position: relative;\n top: -1px;\n\n width: @posting-icon-width;\n height: @posting-icon-width;\n\n font-size: @posting-icon-width;\n line-height: @posting-icon-width;\n }\n\n .message-body {\n p {\n font-size: @font-size-large;\n }\n }\n}\n","//\n// Editor\n// --------------------------------------------------\n\n@editor-border: darken(@gray-lighter, 15%);\n\n.editor-border {\n background-color: #fff;\n border: 1px solid @editor-border;\n border-radius: @border-radius-base;\n}\n\n.editor-border .form-control {\n // remove border and resizing\n border: none;\n resize: none;\n\n // remove shadow from control\n &,\n &:focus,\n &:active {\n .box-shadow(none);\n }\n}\n\n// Footer styles\n.editor-footer {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical @padding-base-horizontal;\n overflow: auto;\n\n .pull-left {\n margin-right: @padding-base-horizontal;\n }\n\n .pull-right {\n margin-left: @padding-base-horizontal;\n }\n\n .btn-icon .material-icon {\n margin-bottom: -2px;\n }\n\n // center buttons on small devices\n @media screen and (max-width: @screen-sm-max) {\n .buttons-list {\n float: none !important;\n\n margin: 0px;\n margin-bottom: @line-height-computed / 2;\n\n .btn {\n display: inline-block;\n float: none !important;\n\n margin: @line-height-computed / 3;\n }\n }\n\n .btn-protect {\n .btn-text {\n margin-left: @padding-small-horizontal;\n }\n\n .material-icon {\n position: relative;\n bottom: 2px;\n\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n line-height: 14px;\n }\n }\n }\n}\n\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .buttons-list .btn {\n &:first-child {\n margin-left: 0px;\n }\n }\n}\n\n// make lock button full width\n@media screen and (max-width: @screen-xs-max) {\n .buttons-list {\n text-align: center;\n\n .btn-protect {\n display: block;\n float: none !important;\n\n width: 100%;\n\n margin: 0px;\n margin-top: @line-height-computed / 2;\n }\n }\n}\n\n// Attachments list\n.editor-attachments-list {\n margin: 0px;\n padding: 0px;\n\n li {\n margin: 0px;\n }\n}\n\n.editor-attachment-complete {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical 0px;\n padding-right: @padding-base-horizontal;\n\n .editor-attachment-image {\n float: left;\n width: 50px;\n\n a {\n background-size: cover;\n background-position: center;\n border-radius: @border-radius-small;\n display: block;\n\n margin: 0px auto;\n width: 36px;\n height: 36px;\n }\n }\n\n .editor-attachment-icon {\n float: left;\n width: 50px;\n\n text-align: center;\n\n .material-icon {\n position: relative;\n top: 2px;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n }\n\n .editor-attachment-details {\n margin-left: 50px;\n\n h4,\n p {\n margin: 0px;\n padding: 0px;\n\n font-size: @font-size-base;\n }\n\n p {\n margin-top: @padding-base-vertical / 2;\n\n color: @gray-light;\n font-size: @font-size-small;\n }\n\n abbr {\n white-space: nowrap;\n }\n }\n}\n\n.editor-attachment-actions {\n @media screen and (min-width: @screen-sm-min) {\n padding-top: 3px;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n padding-left: @padding-base-horizontal;\n padding-right: @padding-base-horizontal;\n }\n}\n\n.editor-attachment-error {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical 0px;\n padding-right: @padding-base-horizontal;\n}\n\n.editor-attachment-error-icon {\n float: left;\n width: 50px;\n\n text-align: center;\n\n .material-icon {\n position: relative;\n top: 2px;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n}\n\n.editor-attachment-error-message {\n margin-left: 50px;\n padding: @padding-base-vertical 0px;\n position: relative;\n\n h4,\n p {\n margin: 0px;\n padding: 0px;\n\n font-size: @font-size-base;\n }\n\n p {\n margin-top: @padding-base-vertical / 2;\n font-size: @font-size-small;\n }\n\n .btn {\n position: absolute;\n top: @padding-base-vertical + 3px;\n right: @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n display: block;\n\n margin-top: @line-height-computed / 2;\n\n position: static;\n }\n }\n}\n\n.editor-attachment-progress-bar {\n background: @editor-border;\n overflow: auto;\n}\n\n.editor-attachment-progress {\n background: @brand-primary;\n float: left;\n height: 1px;\n}\n\n.editor-attachment-upload-message {\n margin: 0px;\n padding: @padding-base-vertical @padding-base-horizontal;\n}\n\n// Hide file input outside of viewport\n#editor-upload-field {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}\n\n// Scale avatar in at.js suggestion\n.atwho-view ul li img {\n border-radius: @border-radius-small;\n margin-right: @font-size-base / 3;\n\n width: @line-height-computed;\n height: @line-height-computed;\n}\n","//\n// Thread Participants\n// --------------------------------------------------\n\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user {\n margin-bottom: @line-height-computed;\n\n &,\n &:hover,\n &:focus,\n &:focus:active {\n padding: 0px;\n\n overflow: hidden;\n\n text-align: left;\n }\n\n img {\n background-color: #fff;\n width: 34px;\n height: 34px;\n\n margin-right: 8px;\n }\n}\n\n// Panel copy\n.panel-participants p {\n margin: 0px;\n margin-top: @padding-base-vertical + 1px;\n}\n","//\n// Poll Editor\n// --------------------------------------------------\n\n.poll-choices-control {\n .list-group-item {\n padding: 0px;\n }\n\n .list-group-item .btn {\n background: transparent;\n border: transparent;\n float: left;\n margin: 0px 2px;\n margin-bottom: -29px;\n padding: 0px;\n width: 28px;\n height: 28px;\n\n position: relative;\n top: 3px;\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n }\n\n input {\n &,\n &:focus,\n &:active {\n background: transparent;\n border: none;\n .box-shadow(none);\n outline: none;\n margin-left: 30px;\n padding: @padding-base-vertical @padding-base-horizontal;\n width: 100%;\n }\n }\n}\n","//\n// Posts List\n// --------------------------------------------------\n\n// Remove paddings and margins from items list\n.posts-list {\n margin: 0px;\n padding: 0px;\n clear: both;\n\n li {\n list-style: none;\n margin: 0px;\n padding: 0px;\n }\n}\n","//\n// Posts List Post\n// --------------------------------------------------\n\n@media screen and (min-width: @screen-md-min) {\n .panel-post .panel-body {\n display: flex;\n }\n\n .post-side {\n flex-shrink: 0;\n width: @post-side-width;\n padding-right: @post-side-padding;\n }\n\n .panel-content {\n flex: 1 0;\n }\n}\n\n// Post side\n.post-side {\n font-size: @font-size-small;\n\n .media {\n margin: 0px;\n }\n\n .poster-avatar {\n height: 36px;\n width: 36px;\n\n @media screen and (min-width: @screen-md-min) {\n margin-top: 4px;\n\n height: 82px;\n width: 82px;\n }\n }\n\n .user-status {\n margin-right: 4px;\n }\n\n .media-heading {\n display: block;\n }\n\n .media-heading {\n margin: 0px;\n margin-top: -1px;\n\n font-size: @font-size-base;\n\n .user-status {\n margin-right: 0;\n margin-left: 2px;\n }\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n // Lay user details vertically\n @media screen and (min-width: @screen-md-min) {\n .media-heading {\n margin-top: 3px;\n\n font-size: @font-size-large;\n\n .user-status {\n display: none;\n }\n }\n\n .user-title {\n margin-top: 4px;\n margin-bottom: 5px;\n }\n\n .user-postcount {\n display: block;\n }\n\n .user-status {\n display: block;\n }\n }\n}\n\n// Heading\n.post-heading {\n height: 36px;\n\n @media screen and (max-width: @screen-sm-max) {\n margin-top: @line-height-computed / 2;\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n }\n\n .label {\n margin-top: 6px;\n\n font-size: @font-size-base;\n font-weight: normal;\n }\n\n .label-unread {\n background-color: @brand-success;\n\n color: #fff;\n }\n}\n\n// Move controls up\n@media screen and (min-width: @screen-md-min) {\n .post-side .pull-right {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-sm-max) {\n .post-heading .pull-right {\n display: none;\n }\n}\n\n// Body\n.post-body {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n}\n\n// Status\n.post-status-message {\n overflow: auto;\n\n .material-icon {\n float: left;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n p {\n margin: 0px;\n margin-top: (28px - @line-height-computed) / 2;\n margin-left: 36px;\n }\n}\n\n.post-status-best-answer {\n background-color: @brand-success;\n\n color: #fff;\n}\n\n.post-status-hidden {\n background-color: @brand-danger;\n\n color: #fff;\n}\n\n.post-status-unapproved {\n background-color: @brand-primary;\n\n color: #fff;\n}\n\n.post-status-protected {\n background-color: @gray;\n\n color: #fff;\n}\n\n// Footer\n.post-footer {\n .pull-left {\n margin-right: @padding-large-horizontal;\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n p {\n padding-top: 7px;\n padding-bottom: 6px;\n margin-bottom: 0px;\n }\n}\n\n// Attachments\n.post-attachments {\n @post-preview-width: 40px;\n\n border-top: 1px solid @gray-lighter;\n padding: @padding-base-vertical @padding-large-horizontal;\n\n abbr {\n white-space: nowrap;\n }\n\n .attachment-name {\n word-wrap: break-word;\n }\n\n .row > div {\n margin: @padding-large-vertical 0px;\n }\n\n .post-attachment-preview {\n float: left;\n height: @post-preview-width;\n width: @post-preview-width;\n\n text-align: center;\n }\n\n .post-attachment {\n margin-left: @post-preview-width + 12px;\n }\n\n .post-thumbnail {\n display: block;\n background-size: cover;\n background-position: center;\n border-radius: @border-radius-small;\n width: @post-preview-width;\n height: @post-preview-width;\n }\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n position: relative;\n top: 5px;\n\n font-size: 28px;\n line-height: 28px;\n\n &:link,\n &:active,\n &:visited,\n &:hover,\n &:focus {\n color: @gray-darker;\n text-decoration: none;\n }\n }\n\n .post-attachment-description {\n margin: 0px;\n padding: 0px;\n\n color: @text-muted;\n font-size: @font-size-small;\n }\n}\n","//\n// Post Feed\n// --------------------------------------------------\n\n.post-feed .post-side {\n .media-heading {\n margin: 0px;\n\n font-size: @font-size-base;\n }\n\n .user-title {\n margin: 0px;\n\n font-size: @font-size-small;\n }\n}\n\n.post-feed .post-side .btn {\n display: inline-block;\n}\n\n.post-feed .post-side img {\n margin-top: 0px;\n\n width: 36px;\n height: 36px;\n}\n\n.post-feed .post-heading {\n height: auto;\n margin: @line-height-computed / 2 0px;\n}\n\n.post-feed .post-heading .btn {\n margin-right: @padding-large-horizontal;\n max-width: 100%;\n\n text-align: left;\n white-space: normal;\n word-wrap: break-word;\n}\n","//\n// Posts List Event\n// --------------------------------------------------\n\n// Event style\n.posts-list .event {\n margin-bottom: @line-height-computed;\n\n color: @text-muted;\n}\n\n.posts-list .event .event-body {\n display: flex;\n align-items: flex-start;\n}\n\n// Event label\n.posts-list .event-label {\n margin-left: @event-icon-size + 8px + @post-side-padding;\n\n .label-unread {\n background-color: @brand-success;\n\n color: #fff;\n }\n}\n\n// Event icon\n.posts-list .event .event-icon {\n padding-right: @post-side-padding;\n\n .event-icon-bg {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: @event-icon-size + 8px;\n width: @event-icon-size + 8px;\n\n background: @event-icon-bg;\n border-radius: @border-radius-base;\n color: @event-icon-color;\n }\n\n .material-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n\n font-size: @event-icon-size;\n }\n}\n\n// Event content\n.posts-list .event .event-content {\n flex: 1 0;\n}\n\n// Event first and second rows\n.posts-list .event .event-message {\n margin-bottom: @line-height-computed / 4;\n\n font-size: @font-size-large;\n}\n\n.posts-list .event .event-info {\n margin: 0px;\n\n font-size: @font-size-small;\n\n li {\n margin-right: @padding-base-horizontal;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Event controls\n.posts-list .event .event-controls {\n .btn-link {\n border: 0px;\n margin: 0px;\n margin-right: @padding-base-horizontal;\n padding: 0px;\n\n font-size: @font-size-small;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Mobile tweaks\n@media screen and (max-width: @screen-xs-max) {\n .posts-list .event .event-info {\n margin-top: @line-height-computed / 4;\n }\n\n .posts-list .event .event-controls {\n clear: both;\n margin-top: @line-height-computed / 4;\n\n .btn-link {\n margin-right: @line-height-computed;\n\n font-size: @font-size-base;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n }\n}\n\n@media screen and (min-width: @screen-md-min) {\n .posts-list .event .event-icon {\n display: flex;\n justify-content: flex-end;\n flex-shrink: 0;\n display: flex;\n width: @post-side-width + @panel-body-padding;\n }\n\n .event-content {\n flex: 1 0;\n }\n\n .posts-list .event-label {\n margin-left: @post-side-width + @panel-body-padding;\n }\n}\n","//\n// Post Changelog Modal\n// --------------------------------------------------\n\n.post-changelog-diff {\n padding: 0px;\n margin: 0px;\n\n .list-unstyled {\n padding: 0px;\n margin: @padding-small-vertical 0px;\n }\n\n .diff-item {\n padding: @padding-small-vertical @padding-small-horizontal;\n }\n\n .diff-item-sub {\n color: @brand-danger;\n }\n\n .diff-item-add {\n color: @brand-success;\n }\n}\n\n.post-changelog-toolbar .row {\n margin-left: -12px;\n margin-right: -12px;\n}\n\n.post-changelog-toolbar .post-change-label {\n @media screen and (max-width: @screen-xs-max) {\n text-align: center;\n }\n}\n","//\n// Message Pages\n// --------------------------------------------------\n\n// Small displays\n@media screen and (max-width: @screen-xs-max) {\n .page-message,\n .page-error {\n .message-panel {\n text-align: center;\n }\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n font-size: @message-page-icon-size;\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-sm-min) {\n .page-message,\n .page-error {\n .message-panel {\n margin: @line-height-computed * 3 auto;\n max-width: @screen-md-max * 0.65;\n overflow: auto;\n }\n\n .message-icon {\n float: left;\n\n .material-icon {\n font-size: @message-page-icon-size;\n }\n }\n\n .message-body {\n margin-top: @message-page-icon-size / 5;\n margin-left: @message-page-icon-size + @line-height-computed;\n\n font-size: @font-size-large;\n\n p.lead {\n font-size: @font-size-large * 2;\n }\n }\n }\n}\n","//\n// Threads Lists\n// --------------------------------------------------\n\n.threads-list {\n margin-bottom: @line-height-computed;\n}\n\n// Make list row flexbox row\n.threads-list-item {\n display: flex;\n align-items: center;\n\n img {\n width: @thread-read-block-size;\n height: @thread-read-block-size;\n }\n}\n\n.threads-list-item-top-row {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n}\n\n.threads-list-item-bottom-row {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n// Thread icon\n.threads-list-item-col-icon {\n padding-right: @grid-gutter-width / 2;\n}\n\n.threads-list-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: @thread-read-block-size;\n height: @thread-read-block-size;\n\n border-radius: @border-radius-small;\n font-size: @thread-read-icon-size;\n line-height: @thread-read-icon-size;\n\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n background-color: @thread-read-icon-bg;\n color: @thread-read-icon-color;\n text-decoration: none;\n }\n}\n\n.threads-list-icon-new {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n background-color: @thread-new-icon-bg;\n color: @thread-new-icon-color;\n }\n}\n\n// Thread title\n.threads-list-item-col-title {\n flex: 1;\n}\n\na.threads-list-item-title {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n font-size: @threads-list-title-size;\n\n color: @thread-color;\n overflow-wrap: break-word;\n }\n}\n\na.threads-list-item-title-sm {\n font-size: @threads-list-title-size-sm;\n\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n color: @thread-read-color;\n overflow-wrap: break-word;\n }\n}\n\na.threads-list-item-title-new {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n color: @thread-new-color;\n }\n}\n\n// Thread status flags\n.threads-list-item-col-flags {\n padding-left: @grid-gutter-width / 2;\n}\n\n.threads-list-item .thread-flags {\n opacity: @thread-flag-icon-opacity;\n}\n\n.threads-list-item:hover,\n.threads-list-item:focus {\n .thread-flags {\n opacity: @thread-flag-icon-opacity-hover;\n }\n}\n\n// Thread category\n.threads-list-item-col-category {\n padding-left: @grid-gutter-width / 2;\n\n white-space: nowrap;\n}\n\n.threads-list-category-label {\n padding: 3px 6px;\n\n border-radius: @border-radius-small;\n\n font-size: @font-size-small;\n font-weight: bold;\n\n &,\n &:link,\n &:active,\n &:hover,\n &:focus,\n &:visited {\n color: @category-label-default-color;\n background: @category-label-default-bg;\n text-decoration: none;\n }\n\n &.threads-list-category-label-color {\n &,\n &:link,\n &:active,\n &:hover,\n &:focus,\n &:visited {\n color: #fff;\n background: var(--label-color);\n }\n }\n}\n\n.threads-list-item-parent-category {\n border-radius: @border-radius-small 0 0 @border-radius-small;\n margin-right: 2px;\n}\n\n.threads-list-item-parent-category + .threads-list-category-label {\n border-radius: 0 @border-radius-small @border-radius-small 0;\n}\n\n// Replies\n.threads-list-item-col-replies {\n width: 80px;\n padding-left: @grid-gutter-width / 2;\n}\n\n// Last poster\n.threads-list-item-col-last-poster {\n padding-left: @grid-gutter-width / 2;\n\n img {\n border-radius: @border-radius-small;\n }\n}\n\n// Last activity\n.threads-list-item-col-last-activity {\n width: 120px;\n padding-left: @grid-gutter-width / 2;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n a:link,\n a:hover,\n a:active,\n a:visited,\n a:focus {\n color: @thread-last-activity-color;\n font-size: @thread-last-activity-size;\n }\n}\n\n// Subscription and checkbox\n.threads-list-item-col-checkbox,\n.threads-list-item-col-subscription {\n padding-left: @grid-gutter-width / 2;\n}\n\n// Make list responsive\n.threads-list-item-title-sm,\n.threads-list-item-col-checkbox-sm {\n display: none;\n}\n\n@media screen and (max-width: @screen-xs-max) {\n // Make card full-width\n .threads-list {\n margin-left: @grid-gutter-width * -0.5;\n margin-right: @grid-gutter-width * -0.5;\n\n .list-group,\n .list-group-item {\n border-radius: 0;\n border-left: 0;\n border-right: 0;\n }\n }\n\n // Swap title with sm one\n .threads-list-item-title {\n display: none;\n }\n\n .threads-list-item-title-sm {\n display: inline-block;\n }\n\n // Make thread read icon disappear\n .threads-list-item-col-icon {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-sm-max) {\n // Use two rows per item\n .threads-list-item {\n display: block;\n\n // Make avatar same size as flag icons\n img {\n width: @thread-flag-block-size;\n height: @thread-flag-block-size;\n }\n }\n\n // Insert bottom marin to top row, align itss contents to top\n .threads-list-item-top-row {\n align-items: start;\n margin-bottom: @grid-gutter-width / 4;\n }\n\n // Make all cols in second row auto, align them to right\n .threads-list-item-bottom-row {\n justify-content: end;\n flex: 0;\n\n & > div {\n width: auto;\n padding: 0 0 0 @grid-gutter-width / 2;\n }\n }\n\n // Make thread subscription and checkbox icons disappear\n .threads-list-item-col-subscription,\n .threads-list-item-col-checkbox {\n display: none;\n }\n\n // Reveal checkbox in top row, make it smol\n .threads-list-item-col-checkbox-sm {\n display: block;\n padding-left: @grid-gutter-width / 2;\n\n .btn-icon {\n padding: 4px;\n\n .material-icon {\n font-size: 16px;\n }\n }\n }\n}\n\n// Make thread buttons flash when thread is busy\n.threads-list-item-is-busy .btn-icon {\n opacity: 0.8;\n animation: busy 0.75s linear infinite;\n}\n\n@keyframes busy {\n 50% {\n opacity: 0.5;\n }\n}\n\n// Threads list update prompt\n.threads-list-update-prompt {\n padding: 0;\n}\n\n.threads-list-update-prompt-btn {\n padding: @padding-large-vertical @padding-large-horizontal;\n\n background: @update-threads-prompt-bg;\n color: @update-threads-prompt-color;\n border: none;\n border-radius: @list-group-border-radius @list-group-border-radius 0 0;\n}\n\n.threads-list-update-prompt-btn:hover,\n.threads-list-update-prompt-btn:focus {\n background: @update-threads-prompt-hover-bg;\n color: @update-threads-prompt-hover-color;\n}\n\n.threads-list-update-prompt-btn:active {\n background: @update-threads-prompt-active-bg;\n color: @update-threads-prompt-active-color;\n}\n","//\n// Active posters list\n// --------------------------------------------------\n\n// List layout\n.active-posters {\n li {\n display: block;\n overflow: auto;\n }\n}\n\n// User avatar\n.active-posters .rank-user-avatar {\n float: left;\n\n @media screen and (max-width: @screen-sm-max) {\n height: 42px; // even list item vertically\n\n img {\n width: 36px;\n height: 36px;\n\n position: relative;\n top: 3px;\n }\n }\n}\n\n// User\n.active-posters .rank-user {\n float: left;\n margin-top: 3px;\n\n @media screen and (max-width: @screen-sm-max) {\n margin-left: @line-height-computed * 0.66;\n width: 40%;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n float: none;\n margin-left: 50px;\n width: auto;\n }\n\n @media screen and (min-width: @screen-md-min) {\n margin-left: @line-height-computed * 0.8;\n width: 25%;\n\n .user-name {\n font-size: @font-size-large;\n }\n }\n}\n\n// User details\n.active-posters .user-details {\n overflow: auto;\n\n font-family: Sans-Serif;\n\n .user-status,\n .rank-name,\n .user-title {\n display: block;\n float: left;\n margin-right: 3px;\n\n font-size: @font-size-small;\n\n @media screen and (min-width: @screen-md-min) {\n margin-right: 8px;\n }\n }\n\n .user-title {\n margin-right: 0px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n overflow: visible;\n\n .rank-name,\n .user-title {\n height: 14px;\n overflow: hidden;\n\n position: relative;\n top: 1px;\n\n vertical-align: baseline;\n }\n }\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-base-vertical / 2;\n\n .rank-name,\n .user-title {\n font-weight: normal;\n }\n }\n}\n\n// User status\n.active-posters .user-status {\n overflow: auto;\n\n position: relative;\n top: 1px;\n\n span {\n display: block;\n float: left;\n }\n\n @media screen and (min-width: @screen-md-min) {\n height: 14px;\n overflow: hidden;\n }\n\n .status-icon {\n position: relative;\n\n @media screen and (max-width: @screen-sm-max) {\n top: 0px;\n\n width: 12px;\n height: 12px;\n\n font-size: 12px;\n line-height: 12px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n top: 1px;\n\n margin-right: 3px;\n\n width: 13px;\n height: 13px;\n\n font-size: 13px;\n line-height: 13px;\n }\n }\n}\n\n// User status UI preview\n.active-posters {\n .status-label.ui-preview-text,\n .rank-name .ui-preview-text,\n .user-title .ui-preview-text {\n height: 11px;\n\n position: relative;\n top: 2px;\n\n font-size: 11px;\n line-height: 11px;\n }\n\n // even rank/title preview with status\n .rank-name,\n .user-title {\n .ui-preview-text {\n position: static;\n }\n }\n}\n\n// Rank stats\n.active-posters {\n .rank-position,\n .rank-posts-counted,\n .rank-posts-total {\n strong,\n small {\n display: block;\n }\n\n @media screen and (max-width: @screen-sm-max) {\n overflow: auto;\n\n strong,\n small {\n float: left;\n\n font-size: @font-size-base * 0.75;\n }\n\n strong {\n min-width: 30px;\n margin-right: 3px;\n\n text-align: right;\n }\n\n .ui-preview-text {\n height: 8px;\n\n position: relative;\n top: -1px;\n\n font-size: 8px;\n line-height: 8px;\n }\n }\n\n @media screen and (min-width: @screen-md-min) {\n float: left;\n margin-top: 3px;\n width: 23%;\n\n font-size: @font-size-large;\n text-align: center;\n\n small {\n font-size: @font-size-small;\n font-weight: normal;\n }\n }\n }\n}\n\n.user-compact-stats {\n .rank-position,\n .rank-posts-counted {\n strong,\n small {\n display: inline-block;\n float: none;\n }\n\n strong {\n min-width: auto;\n }\n\n small {\n margin-right: @line-height-computed;\n }\n }\n}\n\n// Tablet displays\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n // Margin top first state so its even with username\n .active-posters .rank-position {\n margin-top: 6px;\n }\n\n // Hide rank-posts-total on small displays (cos it overflows for crazy posters)\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n\n// Mobile displays\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n // Margin top first state so its even with username\n .active-posters .rank-position {\n margin-top: 6px;\n }\n\n // Hide rank-posts-total on small displays (cos it overflows for crazy posters)\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n","//\n// User Profile\n// --------------------------------------------------\n\n.profile-page-header-avatar {\n text-align: center;\n margin: @line-height-computed 0;\n\n .user-avatar {\n border-radius: @border-radius-base;\n }\n}\n\n// Make profile data horizontal and insert space between elements\n.profile-data-list {\n display: block;\n padding: 0;\n margin: 0 (@padding-base-horizontal * -1);\n\n font-size: @font-size-small;\n\n li {\n display: inline-block;\n list-style: none;\n padding: floor(@line-height-computed / 4) @padding-base-horizontal;\n }\n\n .status-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n }\n\n .user-account-disabled {\n color: @brand-danger;\n font-weight: bold;\n }\n}\n\n// On tablets and up make layout horizontal\n@media screen and (min-width: @screen-sm-min) {\n .profile-page-header {\n display: flex;\n align-items: flex-end;\n }\n\n .profile-page-header-avatar {\n margin: 0;\n margin-right: @grid-gutter-width;\n }\n}\n\n// On desktops make avatar overlap on details, make details larger\n@media screen and (min-width: @screen-md-min) {\n .profile-page-header-avatar {\n position: relative;\n top: @profile-header-avatar-offset;\n margin-top: @profile-header-avatar-offset * -1;\n }\n\n .profile-page-header-details {\n padding-left: 128px + @grid-gutter-width;\n }\n\n .profile-data-list {\n font-size: @font-size-base;\n }\n}\n","//\n// Username History\n// --------------------------------------------------\n\n// Change tabular on larger displays\n.username-history li {\n @media screen and (min-width: @screen-md-min) {\n display: block;\n overflow: auto;\n }\n}\n\n// Change avatar\n.username-history .change-avatar {\n float: left;\n\n a,\n span {\n margin-right: @line-height-computed / 2;\n\n img {\n width: 42px;\n height: 42px;\n }\n }\n\n @media screen and (min-width: @screen-md-min) {\n a,\n span {\n img {\n width: 18px;\n height: 18px;\n\n position: relative;\n bottom: 1px;\n }\n }\n }\n}\n\n// Change author\n.username-history .change-author {\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 30%;\n }\n}\n\n// Old to new name change\n.username-history .change {\n min-height: @line-height-computed; // we need that for ui-preview-text\n overflow: auto;\n\n span {\n display: block;\n float: left;\n }\n\n .material-icon {\n margin: 0px @font-size-base / 2;\n\n position: relative;\n top: 4px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 40%;\n }\n}\n\n// Date\n.username-history .change-date {\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 20%;\n }\n}\n","//\n// Search Page\n// --------------------------------------------------\n\n.search-footer p {\n margin-top: @line-height-computed;\n\n color: @gray;\n font-size: @font-size-small;\n text-align: center;\n}\n\n.page-search-form {\n @media screen and (min-width: @screen-sm-min) {\n padding-top: @line-height-computed * 2;\n }\n\n @media screen and (min-width: @screen-md-min) {\n padding-bottom: @line-height-computed * 2;\n\n h1 {\n position: relative;\n top: @padding-small-vertical;\n }\n\n .form-group {\n margin-bottom: 0px;\n }\n }\n}\n","/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #eee; color: black;\n}\n\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n color: #070;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n color: #d14;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-quote,\n.hljs-comment {\n color: #998;\n font-style: italic;\n}\n\n.hljs-section,\n.hljs-title {\n color: #900;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n color: #458;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #336699;\n}\n\n.hljs-bullet {\n color: #997700;\n}\n\n.hljs-meta {\n color: #3344bb;\n}\n\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n color: #099;\n}\n\n.hljs-regexp {\n background-color: #fff0ff;\n color: #880088;\n}\n\n.hljs-symbol {\n color: #990073;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n color: #007700;\n}\n",".atwho-view {\n position:absolute;\n top: 0;\n left: 0;\n display: none;\n margin-top: 18px;\n background: white;\n color: black;\n border: 1px solid #DDD;\n border-radius: 3px;\n box-shadow: 0 0 5px rgba(0,0,0,0.1);\n min-width: 120px;\n z-index: 11110 !important;\n}\n\n.atwho-view .atwho-header {\n padding: 5px;\n margin: 5px;\n cursor: pointer;\n border-bottom: solid 1px #eaeff1;\n color: #6f8092;\n font-size: 11px;\n font-weight: bold;\n}\n\n.atwho-view .atwho-header .small {\n color: #6f8092;\n float: right;\n padding-top: 2px;\n margin-right: -5px;\n font-size: 12px;\n font-weight: normal;\n}\n\n.atwho-view .atwho-header:hover {\n cursor: default;\n}\n\n.atwho-view .cur {\n background: #3366FF;\n color: white;\n}\n.atwho-view .cur small {\n color: white;\n}\n.atwho-view strong {\n color: #3366FF;\n}\n.atwho-view .cur strong {\n color: white;\n font:bold;\n}\n.atwho-view ul {\n /* width: 100px; */\n list-style:none;\n padding:0;\n margin:auto;\n max-height: 200px;\n overflow-y: auto;\n}\n.atwho-view ul li {\n display: block;\n padding: 5px 10px;\n border-bottom: 1px solid #DDD;\n cursor: pointer;\n /* border-top: 1px solid #C8C8C8; */\n}\n.atwho-view small {\n font-size: smaller;\n color: #777;\n font-weight: normal;\n}\n","//\n// Typography Flavor\n// --------------------------------------------------\n\nabbr {\n outline: none;\n text-decoration: none;\n}\n","//\n// Flavor Shadows\n// --------------------------------------------------\n\n.shadow-2dp {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 1px -2px rgba(0, 0, 0, @shadow-key-umbra-opacity),\n 0 1px 5px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity);\n}\n\n.shadow-3dp {\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 3px -2px rgba(0, 0, 0, @shadow-key-umbra-opacity),\n 0 1px 8px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity);\n}\n\n.shadow-4dp {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 1px 10px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 2px 4px -1px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-6dp {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 1px 18px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 3px 5px -1px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-8dp {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 14px 2px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 5px 5px -3px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-16dp {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 6px 30px 5px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 8px 10px -5px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-24dp {\n box-shadow: 0 9px 46px 8px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 11px 15px -7px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 24px 38px 3px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n","//\n// Buttons Flavor\n// --------------------------------------------------\n\n// mixins\n.misago-btn(@color, @bg, @color-hover, @bg-hover, @color-active, @bg-active) {\n &,\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n background: @bg;\n border: 1px solid @bg;\n\n color: @color;\n\n .box-shadow(none);\n }\n\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n .opacity(0.25);\n }\n\n &:hover,\n &:focus {\n background: @bg-hover;\n border: 1px solid @bg-hover;\n\n color: @color-hover;\n\n .box-shadow(none);\n }\n\n &:active:focus,\n &:active,\n .dropdown.open .dropdown-toggle &,\n .dropdown.open .dropdown-toggle &:focus,\n .dropdown.open .dropdown-toggle &:active:focus,\n .dropdown.open .dropdown-toggle &:hover {\n background: @bg-active;\n border: 1px solid @bg-active;\n\n color: @color-active;\n\n .box-shadow(none);\n }\n\n &.btn-loading {\n &,\n &:disabled,\n &:disabled:hover,\n &:hover,\n &:focus,\n &:active:focus,\n &:active {\n color: transparent;\n }\n }\n}\n\n.misago-btn-outline(@color, @bg, @border,\n @color-hover, @bg-hover, @border-hover,\n @color-active, @bg-active, @border-active) {\n &,\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n background: @bg;\n border: 1px solid @border;\n\n color: @color;\n\n .box-shadow(none);\n }\n\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n .opacity(0.25);\n }\n\n &:hover,\n &:focus {\n background: @bg-hover;\n border: 1px solid @border-hover;\n\n color: @color-hover;\n\n .box-shadow(none);\n }\n\n &:active:focus,\n &:active,\n .dropdown.open &,\n .dropdown.open &:focus,\n .dropdown.open &:active:focus,\n .dropdown.open &:hover {\n background: @bg-active;\n border: 1px solid @border-active;\n\n color: @color-active;\n\n .box-shadow(none);\n }\n\n &.btn-loading {\n &,\n &:disabled,\n &:disabled:hover,\n &:hover,\n &:focus,\n &:active:focus,\n &:active {\n background: @bg;\n border: 1px solid @border;\n\n color: transparent;\n\n .box-shadow(none);\n }\n }\n}\n\n// button styles\n.btn-default {\n .misago-btn(\n @btn-default-color,\n @btn-default-bg,\n\n @btn-default-hover-color,\n @btn-default-hover-bg,\n\n @btn-default-active-color,\n @btn-default-active-bg\n );\n}\n\n.btn-primary {\n .misago-btn(\n @btn-primary-color,\n @btn-primary-bg,\n\n @btn-primary-hover-color,\n @btn-primary-hover-bg,\n\n @btn-primary-active-color,\n @btn-primary-active-bg\n );\n}\n\n.btn-success {\n .misago-btn(\n @btn-success-color,\n @btn-success-bg,\n\n @btn-success-hover-color,\n @btn-success-hover-bg,\n\n @btn-success-active-color,\n @btn-success-active-bg\n );\n}\n\n.btn-danger {\n .misago-btn(\n @btn-danger-color,\n @btn-danger-bg,\n\n @btn-danger-hover-color,\n @btn-danger-hover-bg,\n\n @btn-danger-active-color,\n @btn-danger-active-bg\n );\n}\n\n// outlined button styles\n.btn-default.btn-outline {\n .misago-btn-outline(\n @btn-default-outline-color,\n @btn-default-outline-bg,\n @btn-default-outline-border,\n\n @btn-default-outline-hover-color,\n @btn-default-outline-hover-bg,\n @btn-default-outline-hover-border,\n\n @btn-default-outline-active-color,\n @btn-default-outline-active-bg,\n @btn-default-outline-active-border\n );\n}\n\n.btn-primary.btn-outline {\n .misago-btn-outline(\n @btn-primary-outline-color,\n @btn-primary-outline-bg,\n @btn-primary-outline-border,\n\n @btn-primary-outline-hover-color,\n @btn-primary-outline-hover-bg,\n @btn-primary-outline-hover-border,\n\n @btn-primary-outline-active-color,\n @btn-primary-outline-active-bg,\n @btn-primary-outline-active-border\n );\n}\n\n// sign in and register buttons in navbar\n.navbar-misago {\n .btn-sign-in {\n border-radius: @navbar-btn-sign-in-radius;\n\n .misago-btn-outline(\n @navbar-btn-sign-in-color,\n @navbar-btn-sign-in-bg,\n @navbar-btn-sign-in-border,\n\n @navbar-btn-sign-in-hover-color,\n @navbar-btn-sign-in-hover-bg,\n @navbar-btn-sign-in-hover-border,\n\n @navbar-btn-sign-in-active-color,\n @navbar-btn-sign-in-active-bg,\n @navbar-btn-sign-in-active-border\n );\n }\n\n .btn-register {\n border-radius: @navbar-btn-register-radius;\n\n .misago-btn-outline(\n @navbar-btn-register-color,\n @navbar-btn-register-bg,\n @navbar-btn-register-border,\n\n @navbar-btn-register-hover-color,\n @navbar-btn-register-hover-bg,\n @navbar-btn-register-hover-border,\n\n @navbar-btn-register-active-color,\n @navbar-btn-register-active-bg,\n @navbar-btn-register-active-border\n );\n }\n}\n","//\n// Social Buttons Flavor\n// --------------------------------------------------\n\n// Those buttons simply add brand color over the .btn-default\n.misago-social-btn(@color) {\n &,\n &:disabled,\n &:disabled:hover {\n color: @color;\n font-weight: bold;\n }\n}\n\n.btn-social-battlenet,\n.btn-social-battlenet-oauth2 {\n .misago-social-btn(#0e86ca);\n}\n\n.btn-social-bungie {\n .misago-social-btn(#0096db);\n}\n\n.btn-social-facebook,\n.btn-social-facebook-app {\n .misago-social-btn(#3b5998);\n}\n\n.btn-social-github,\n.btn-social-github-team,\n.btn-social-github-enterprise,\n.btn-social-github-enterprise-org,\n.btn-social-github-enterprise-team {\n .misago-social-btn(#000000);\n}\n\n.btn-social-gitlab {\n .misago-social-btn(#fc6d26);\n}\n\n.btn-social-google,\n.btn-social-google-oauth,\n.btn-social-google-oauth2,\n.btn-social-google-plus,\n.btn-social-google-openidconnect {\n .misago-social-btn(#dd4b39);\n}\n\n.btn-social-linkedin {\n .misago-social-btn(#0077b5);\n}\n\n.btn-social-steam {\n .misago-social-btn(#5c7e10);\n}\n\n.btn-social-twitter {\n .misago-social-btn(#1da1f2);\n}\n\n.form-social-auth {\n .row {\n margin-top: @padding-base-vertical * -1;\n margin-bottom: @padding-base-vertical * -1;\n }\n\n .btn {\n margin: @padding-base-vertical 0px;\n }\n}\n","//\n// Inputs Flavor\n// --------------------------------------------------\n\n// default input\ninput.form-control,\ntextarea.form-control {\n border-color: @input-border;\n box-shadow: inset 0px 0px 0px 1px @input-border;\n\n &:focus {\n border-color: @input-border-focus;\n box-shadow: inset 0px 0px 0px 1px @input-border-focus;\n }\n}\n\n.has-error input.form-control {\n border-color: @state-danger-border;\n box-shadow: inset 0px 0px 0px 1px @state-danger-border;\n\n &:focus {\n border-color: lighten(@state-danger-border, 20%);\n box-shadow: inset 0px 0px 0px 1px lighten(@state-danger-border, 20%);\n }\n}\n\n.has-success input.form-control {\n border-color: @state-success-border;\n box-shadow: inset 0px 0px 0px 1px @state-success-border;\n\n &:focus {\n border-color: lighten(@state-success-border, 20%);\n box-shadow: inset 0px 0px 0px 1px lighten(@state-success-border, 20%);\n }\n}\n\n// password strenght marker\n.password-strength {\n margin-top: @line-height-computed / 2;\n\n .text-small {\n margin-top: @line-height-computed / 5;\n\n color: lighten(@text-color, 25%);\n font-size: @font-size-small;\n }\n\n .progress {\n margin: 0px;\n }\n}\n","//\n// Flavor Auth Message\n// --------------------------------------------------\n\n.auth-message {\n background: @auth-message-bg;\n padding: @line-height-computed * 4 0px;\n\n .shadow-8dp();\n\n p {\n color: @auth-message-text-color;\n }\n\n .btn {\n & {\n background: @auth-message-btn-default-bg;\n border-color: @auth-message-btn-default-border;\n\n color: @auth-message-btn-default-color;\n }\n\n &:hover,\n &:focus {\n background: @auth-message-btn-default-hover-bg;\n border-color: @auth-message-btn-default-hover-border;\n\n color: @auth-message-btn-default-hover-color;\n }\n\n &:active {\n background: @auth-message-btn-default-active-bg;\n border-color: @auth-message-btn-default-active-border;\n\n color: @auth-message-btn-default-active-color;\n }\n }\n}\n","//\n// Dropdown Flavor\n// --------------------------------------------------\n\n.dropdown-menu {\n border: none;\n\n .shadow-4dp();\n}\n\n// Navbar dropdown\n.user-dropdown .dropdown-header {\n strong {\n display: block;\n\n color: @text-color;\n font-weight: bold;\n }\n\n .user-stats {\n margin-top: @line-height-computed / 2;\n\n font-size: @font-size-small;\n\n .material-icon {\n margin-right: 3px;\n\n position: relative;\n bottom: 1px;\n\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n }\n }\n}\n\n.user-dropdown .guest-preview {\n padding-bottom: @padding-large-vertical;\n}\n\n.user-dropdown .badge {\n background-color: @brand-danger;\n}\n\n.user-dropdown {\n a:hover,\n a:focus,\n a:active,\n .btn-link:hover,\n .btn-link:focus,\n .btn-link:active {\n .badge {\n background-color: #fff;\n\n color: @brand-danger;\n }\n }\n}\n\n// Mobile dropdown\n.mobile-dropdown.open {\n margin: 0px;\n}\n","//\n// Flavor Navbar\n// --------------------------------------------------\n\n.navbar-misago {\n border-bottom: none;\n box-shadow: 0px 0px 3px @navbar-default-border;\n}\n\n// Round up user's avatar\n.navbar-misago .user-avatar {\n background: #fff;\n border-radius: @border-radius-small;\n}\n\n// Round up brand's icon\n.navbar-misago .brand-link img {\n border-radius: @border-radius-small;\n}\n","//\n// Search Dropdown\n// --------------------------------------------------\n\n.dropdown-search-results {\n border-radius: 0px 0px @border-radius-base @border-radius-base;\n}\n\n.dropdown-search-message {\n border-top: 1px solid @gray-lighter;\n padding: @padding-large-vertical @padding-large-horizontal;\n\n color: @text-muted;\n}\n\n.dropdown-search-loader {\n border-top: 1px solid @gray-lighter;\n padding: @padding-large-vertical @padding-large-horizontal;\n}\n\n.dropdown-search-header {\n border-top: 1px solid @gray-lighter;\n padding: 8px 20px;\n\n color: @text-muted;\n font-weight: bold;\n}\n\n// result\n.dropdown-search-thread,\n.dropdown-search-user {\n small {\n color: @text-muted;\n }\n}\n\n.dropdown-search-thread {\n .dropdown-search-post-content {\n overflow: hidden;\n white-space: normal;\n max-height: 47px;\n }\n\n .dropdown-search-post-footer {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n// footer\n.dropdown-search-footer {\n padding-bottom: @padding-small-vertical;\n\n &:last-child {\n padding-bottom: 0px;\n }\n}\n\n.dropdown-menu > li.dropdown-search-footer > a {\n font-size: small;\n}\n","//\n// Flavor Footer\n// --------------------------------------------------\n\n// Make footer full width\n.misago-footer {\n margin-top: @line-height-computed * 2;\n\n .footer-content {\n border-top: 1px solid @gray-lighter;\n padding-top: @line-height-computed * 1;\n\n color: @page-footer-text-color;\n\n @media screen and (max-width: @screen-xs-max) {\n text-align: center;\n\n .site-footnote {\n clear: both;\n margin-bottom: @line-height-computed * 0.75;\n }\n }\n\n a,\n a:link,\n a:visited {\n color: @page-footer-link-color;\n }\n\n a:hover,\n a:focus {\n color: @page-footer-link-hover-color;\n }\n\n .misago-branding {\n &,\n &:link,\n &:visited {\n color: @page-footer-brand-color;\n }\n\n &:hover,\n &:focus {\n color: @page-footer-brand-hover-color;\n }\n }\n }\n}\n","//\n// List Groups Flavor\n// --------------------------------------------------\n\n.list-group {\n border-radius: @list-group-border-radius;\n\n .list-group-item {\n border-left-color: @list-group-outer-border;\n border-right-color: @list-group-outer-border;\n }\n\n .list-group-item:first-child {\n border-top-color: @list-group-outer-border;\n }\n\n .list-group-item:last-child {\n border-bottom-color: @list-group-outer-border;\n }\n}\n\n.list-group-item.empty-message {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed;\n\n text-align: center;\n\n p {\n margin: @line-height-computed / 2 0px;\n }\n}\n","//\n// Navs Flavor\n// --------------------------------------------------\n\n.nav-side {\n .box-shadow(none);\n}\n\n.nav-side > .list-group-item {\n border-left: none;\n border-right: none;\n margin-bottom: 1px;\n\n &:first-child {\n border-top: none;\n }\n\n &:last-child {\n border-bottom: none;\n }\n\n &,\n &:link,\n &:visited {\n background: @side-nav-bg;\n border: none;\n\n color: @side-nav-color;\n }\n\n &:hover,\n &:focus,\n &:active {\n background: @side-nav-hover-bg;\n\n color: @side-nav-hover-color;\n }\n\n &.active {\n &,\n &:link,\n &:visited,\n &:hover,\n &:focus,\n &:active {\n background: @side-nav-active-bg;\n\n color: @side-nav-active-color;\n font-weight: bold;\n\n .badge {\n background: @side-nav-bg;\n\n color: @side-nav-color;\n }\n }\n }\n}\n","//\n// Username History Flavor\n// --------------------------------------------------\n\n.username-history .user-avatar {\n border-radius: @border-radius-base;\n}\n","//\n// Panels Flavor\n// --------------------------------------------------\n\n.panel {\n border: none;\n border-radius: @border-radius-base;\n\n .panel-heading,\n .panel-footer {\n background: @panel-bg;\n }\n\n .panel-title {\n color: @panel-title-color;\n }\n\n .form-group + .form-group {\n margin-top: @line-height-computed;\n }\n\n .panel-body > .form-group:first-child {\n margin-top: @line-height-computed / 2;\n }\n\n fieldset {\n margin-top: @line-height-computed;\n\n &:first-child {\n margin-top: 0px;\n }\n\n legend {\n border: none;\n\n color: @panel-fieldset-color;\n font-weight: 300;\n }\n }\n}\n\n// use default message icon color for panel messages\n.panel-message-body .message-icon {\n color: @message-icon-color;\n}\n","//\n// Forms Flavor\n// --------------------------------------------------\n\n.panel-form {\n border: 1px solid @panel-form-border;\n box-shadow: none;\n}\n\n.panel-form .panel-heading,\n.panel-form .panel-footer {\n border-color: @panel-form-border;\n}\n\n// remove bottom margin from poll panel\n.poll-form .panel {\n margin: 0px;\n}\n\n// Override help text color\n.help-block,\n.help-block .text-small {\n color: @gray-light;\n}\n","//\n// Categories Lists Flavor\n// --------------------------------------------------\n\n// Make category read status icon visually larger\n.category-main .media-left {\n .read-status {\n background: @category-read-color;\n border-radius: @border-radius-base;\n padding: @padding-small-vertical (@padding-large-vertical - 2px);\n }\n\n .material-icon {\n height: 14px;\n width: 14px;\n\n color: @gray;\n font-size: 14px;\n line-height: 14px;\n }\n\n .read-status.item-new {\n background-color: @category-new-color;\n\n .material-icon {\n color: #fff;\n }\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: @padding-small-vertical 0px;\n }\n}\n\n// Fix category main alignment\n.category-main .media-body {\n padding-left: @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n padding-left: @padding-small-horizontal / 3;\n }\n}\n\n.list-group-category-no-description {\n .category-main .media-heading {\n margin-top: @padding-large-vertical;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-large-vertical / 2;\n }\n }\n}\n\n// Make category name larger\n.category-main .media-heading {\n a,\n a:link,\n a:visited {\n color: @gray-dark;\n }\n\n a:focus,\n a:hover,\n a:active {\n color: @text-color;\n }\n}\n\n// Fade out stats\n.category-stats {\n color: @gray;\n}\n\n// Fade out category description\n.category-main .category-description p {\n font-size: @font-size-small;\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Round last poster's up avatar\n.category-last-thread img {\n background-color: #fff;\n border-radius: @border-radius-base;\n}\n\n// Last thread\n.category-last-thread .media-heading {\n margin-bottom: 2px;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @line-height-computed / 2;\n }\n}\n\n.category-last-thread .list-inline {\n color: @gray-light;\n font-size: @font-size-small;\n\n a,\n a:link,\n a:visited {\n color: @gray-light;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: @gray-dark;\n }\n\n .item-title {\n &,\n &:link,\n &:visited {\n color: @gray-dark;\n }\n\n &:hover,\n &:active,\n &:focus {\n color: @text-color;\n }\n }\n}\n\n// Last thread message\n.category-thread-message {\n color: @gray-light;\n\n .material-icon {\n padding: @padding-base-vertical 0px;\n margin-right: @padding-base-vertical / 2;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n padding-top: @line-height-computed * 0.75;\n\n font-size: @font-size-small;\n\n .material-icon {\n padding: 3px 0px;\n }\n }\n}\n","//\n// Thread Participants Flavor\n// --------------------------------------------------\n\n.panel-participants {\n border: 1px solid @panel-form-border;\n}\n\n.participant-card .btn-user {\n border: 0px !important;\n}\n\n.participant-card .dropdown-header-owner {\n color: @brand-primary;\n\n .material-icon {\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n line-height: 14px;\n }\n\n .icon-text {\n margin-left: 4px;\n\n position: relative;\n top: 2px;\n }\n}\n\n.panel-participants p {\n color: @gray-light;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @line-height-computed / 2;\n\n text-align: center;\n }\n}\n","//\n// Polls Flavor\n// --------------------------------------------------\n\n.panel-poll {\n border: 1px solid @panel-form-border;\n}\n\n// Poll vote form\n.panel-poll .poll-select-choices {\n margin-top: @line-height-computed / -2;\n}\n\n// Poll results styles\n.panel-poll .poll-details {\n margin-bottom: @line-height-computed;\n\n color: @gray-light;\n font-size: @font-size-small;\n}\n\n.panel-poll .progress {\n margin-top: @line-height-computed / 3;\n margin-bottom: @line-height-computed / 4;\n}\n\n.panel-poll .poll-chart {\n color: @gray-light;\n font-size: @font-size-small;\n}\n\n.panel-poll .poll-options {\n margin-top: @line-height-computed;\n}\n","//\n// Posting Form Flavor\n// --------------------------------------------------\n\n#posting-placeholder {\n background-color: #fafbfc;\n}\n\n.posting-message {\n .material-icon {\n color: @message-info-icon-color;\n }\n\n .btn {\n margin-top: @line-height-computed;\n }\n}\n","//\n// Posts Flavor\n// --------------------------------------------------\n\n// Post body\n.panel-post {\n background: @post-bg;\n border: 1px solid @post-border;\n}\n\n// Post side\n.post-side {\n color: @gray-light;\n\n .poster-avatar {\n border-radius: @border-radius-base;\n }\n\n .user-title {\n color: @gray;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @gray;\n }\n }\n}\n\n// Header\n.post-heading {\n .label-unread {\n background-color: @post-unread-label;\n margin-right: @padding-large-horizontal;\n }\n\n .label-protected {\n background-color: transparent;\n margin-left: @padding-base-horizontal * 2;\n\n position: relative;\n top: 1px;\n\n color: @post-protected-icon;\n\n .material-icon {\n margin-right: 2px;\n\n position: relative;\n top: -1px;\n\n font-size: 16px;\n line-height: 16px;\n }\n }\n\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n\n &,\n &:link,\n &:visited {\n color: @gray-light;\n }\n\n &:hover,\n &:focus,\n &:focus:active,\n &:active {\n color: @text-color;\n text-decoration: none;\n }\n }\n\n .btn-see-edits {\n margin-left: @padding-base-horizontal * 2;\n }\n}\n\n// Status\n.post-status-message {\n border-radius: @border-radius-base;\n margin-top: @line-height-computed / 2;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n font-size: @font-size-small;\n\n .material-icon {\n margin-top: 3px;\n }\n\n p {\n margin-top: 0px;\n }\n }\n}\n\n// Post body\n.post-body:last-child {\n padding-bottom: @line-height-computed / 2;\n}\n\n// Attachments\n.post-attachments {\n background-color: @gray-lighter;\n border: none;\n border-radius: @border-radius-base;\n margin-bottom: @line-height-computed * 1.5;\n\n &:last-child {\n margin-bottom: @line-height-computed / 2;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n border-radius: 0px;\n margin: 0px -15px;\n margin-bottom: @line-height-computed;\n }\n}\n\n// Footer\n.post-footer {\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n\n &,\n &:link,\n &:visited {\n color: @gray-light;\n }\n\n &:hover,\n &:focus,\n &:focus:active,\n &:active {\n color: @text-color;\n text-decoration: none;\n }\n }\n\n p {\n color: @gray-light;\n font-size: @font-size-small;\n }\n}\n\n// Hidden and invalid messages\n.post-body-hidden,\n.post-body-invalid {\n padding-top: @line-height-computed / 2;\n padding-bottom: @line-height-computed / 2;\n\n .lead {\n margin-bottom: @line-height-computed / 2;\n }\n\n .text-muted {\n margin-bottom: 0px;\n\n font-size: @font-size-small;\n }\n}\n\n// Fade out hidden posts a little\n.post-hidden {\n .opacity(0.75);\n}\n","//\n// Post Feed Flavor\n// --------------------------------------------------\n\n.post-feed .panel-body {\n padding-bottom: 0px;\n}\n\n.post-feed .post-body {\n position: relative;\n padding-top: 0px;\n padding-bottom: @line-height-computed;\n max-height: 300px;\n overflow-y: hidden;\n\n &:after {\n box-shadow: 0px 0px 16px 16px #ffffff;\n display: block;\n\n position: absolute;\n bottom: 0px;\n\n height: 0px;\n width: 100%;\n\n content: \"-\";\n color: transparent;\n }\n}\n","//\n// Events Flavor\n// --------------------------------------------------\n\n// Style label\n.posts-list .event .event-label {\n margin-bottom: @line-height-computed / 4;\n}\n\n.posts-list .event .label-unread {\n background-color: @post-unread-label;\n\n color: #fff;\n}\n\n// Style info text\n.posts-list .event-info {\n a,\n a:link,\n a:visited,\n .btn-link {\n color: @gray;\n }\n\n a:focus,\n a:active,\n a:focus:active,\n .btn-link:focus,\n .btn-link:active,\n .btn-link:focus:active {\n color: @text-color;\n }\n}\n\n// Fade out hidden event\n.posts-list .event-hidden {\n .opacity(0.33);\n}\n","//\n// User Card Flavor\n// --------------------------------------------------\n\n// Background color\n.user-card {\n background: @user-card-bg;\n}\n\n// Round avatar corners\n.user-card-small-avatar,\n.user-card-avatar {\n img {\n border-radius: @border-radius-base;\n }\n}\n\n// Sizing and spacing on large avatar\n.user-card-avatar {\n margin: @line-height-computed 0px;\n\n img {\n width: 150px;\n height: 150px;\n }\n}\n\n// Upsize the user name\n.user-card-username {\n a,\n a:link,\n a:visited,\n a:hover,\n a:focus,\n a:active {\n color: @text-color;\n font-size: @font-size-large;\n font-weight: bold;\n }\n}\n\n// User title\n.user-card-title {\n span,\n a,\n a:link,\n a:visited {\n color: @gray;\n }\n\n a:focus,\n a:hover,\n a:active {\n color: @text-color;\n }\n}\n\n// User stats\n.user-card-stats {\n @media screen and (min-width: @screen-sm-min) {\n margin-top: @line-height-computed;\n }\n\n ul {\n margin: 0px;\n }\n\n li {\n display: inline-block;\n margin-right: @padding-base-horizontal;\n\n color: @gray-light;\n font-size: @font-size-small;\n\n @media screen and (min-width: @screen-sm-min) {\n margin: 0px @padding-base-horizontal / 2;\n }\n }\n\n li.user-stat-empty {\n display: none;\n }\n}\n\n// Divide stats in two on larger screen\n@media screen and (min-width: @screen-sm-min) {\n li.user-stat-divider {\n display: block;\n margin: 0px;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n li.user-stat-divider {\n display: none;\n }\n}\n\n// Make stats 60px min height on tablets and up\n@media screen and (min-width: @screen-sm-min) {\n .user-card-stats {\n min-height: 60px;\n }\n}\n\n// Reduce gutter on small grid\n@media screen and (max-width: @screen-xs-max) {\n .user-card-left {\n padding-right: 0px;\n }\n}\n","//\n// Progress Bars Flavor\n// --------------------------------------------------\n\n// Make progress bars flat\n.progress,\n.progress .progress-bar {\n .box-shadow(none);\n\n height: 8px;\n}\n","//\n// Markup Flavor\n// --------------------------------------------------\n\n// Round images\n.misago-markup img {\n border-radius: @border-radius-base;\n}\n\n// Quote block\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background-color: #ffecb3;\n border-color: #b3e5fc;\n overflow: hidden;\n\n color: #3e2723;\n\n .quote-heading {\n background-color: #ffe082;\n border: none;\n\n color: #795548;\n\n a,\n a:link,\n a:visited {\n color: #5d4037;\n }\n\n a:hover,\n a:focus,\n a:active {\n color: #3e2723;\n }\n }\n\n hr {\n border-color: #ffca28;\n }\n}\n\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n background: #ffecb3;\n border: none;\n border-radius: @border-radius-base;\n\n .quote-block {\n background: #ffecb3;\n }\n}\n\n.misago-markup .quote-body {\n background: #ffecb3;\n\n & > .quote-block,\n & > blockquote {\n border-color: #ffe082;\n border-radius: @border-radius-base;\n }\n}\n\n// Spoiler block\n.misago-markup .spoiler-block {\n background: repeating-linear-gradient(\n 45deg,\n fadeout(@gray-lighter, 50%),\n fadeout(@gray-lighter, 50%) 10px,\n @post-bg 10px,\n @post-bg 20px\n );\n border: none;\n}\n\n.misago-markup .spoiler-body {\n background: transparent;\n -webkit-filter: blur(5px);\n -moz-filter: blur(5px);\n -o-filter: blur(5px);\n -ms-filter: blur(5px);\n filter: blur(5px);\n color: @text-color;\n}\n\n.misago-markup .spoiler-block.revealed .spoiler-body {\n -webkit-filter: none;\n -moz-filter: none;\n -o-filter: none;\n -ms-filter: none;\n filter: none;\n}\n\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: fadeout(@post-bg, 90%);\n}\n\n.misago-markup .spoiler-reveal {\n .btn-default();\n}\n\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal:hover {\n border-radius: 4px;\n box-shadow: 0px 0px 0px 4px @post-bg;\n padding: @padding-base-vertical @padding-base-horizontal;\n}\n","//\n// Modal Flavor\n// --------------------------------------------------\n\n// Custom header styles\n.modal-header {\n background: @modal-header-bg;\n border-bottom-color: @modal-header-border-color;\n border-radius: @border-radius-large @border-radius-large 0px 0px;\n\n color: @modal-header-color;\n\n .close {\n padding: 0px 6px;\n\n color: @modal-header-color;\n font-size: 24px;\n line-height: 24px;\n text-shadow: none;\n }\n}\n\n// Color message icon\n.modal-message .message-icon {\n color: @message-icon-color;\n}\n\n// Even out space between form fields\n.modal-body > .form-group {\n margin: @line-height-computed 0px;\n\n &:first-child {\n margin-top: 0px;\n }\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Sign in modal\n.modal-sign-in {\n .modal-body {\n padding-top: 0px;\n padding-bottom: 0px;\n\n & > .form-group {\n margin: @line-height-computed 0px;\n }\n }\n}\n\n// Register modal\n.legal-footnote {\n label {\n font-weight: bold;\n }\n\n .help-block {\n margin-left: 20px;\n\n color: @brand-danger;\n }\n}\n\n// Avatar crop\n.modal-avatar-index {\n .avatar-preview {\n background: #fff;\n border-radius: @border-radius-large;\n }\n}\n\n.modal-avatar-crop {\n .cropit-preview {\n background: #fff;\n margin: @line-height-computed 0px;\n }\n\n .cropit-image-zoom-input {\n margin-top: @line-height-computed * 2;\n margin-bottom: @line-height-computed;\n }\n}\n\n// Post likes\n.modal-post-likers {\n .media {\n border-bottom: 1px solid @gray-lighter;\n padding-bottom: 15px; // hardcoded in BS less\n\n img {\n border-radius: @border-radius-base;\n\n width: 40px;\n height: 40px;\n }\n\n &:last-child {\n border: none;\n padding-bottom: 0px;\n }\n }\n}\n","//\n// Well Flavor\n// --------------------------------------------------\n\n.well {\n border: 1px solid @well-border;\n}\n","//\n// Active Posters Flavor\n// --------------------------------------------------\n\n.active-posters .rank-user-avatar img {\n border-radius: @border-radius-base;\n}\n\n.active-posters .user-details {\n color: @gray-light;\n\n a.rank-name {\n &,\n &:link,\n &:visited {\n color: @gray;\n font-weight: normal;\n }\n\n &:focus,\n &:hover,\n &:active {\n color: @text-color;\n }\n }\n\n span.rank-name {\n color: @gray;\n font-weight: normal;\n }\n}\n\n.active-posters small {\n color: @gray-light;\n}\n","//\n// Message Pages Flavor\n// --------------------------------------------------\n\n.page-error .message-icon {\n color: @error-icon-color;\n}\n\n.page-message .message-icon {\n color: @message-icon-color;\n}\n\n.page-message-info .message-icon {\n color: @message-info-icon-color;\n}\n\n.page-message-success .message-icon {\n color: @message-success-icon-color;\n}\n","//\n// User Options Flavor\n// --------------------------------------------------\n\n.page-options .message-line {\n color: @gray-light;\n\n a,\n a:link,\n a:visited {\n color: @gray-light;\n }\n\n a:hover,\n a:focus,\n a:focus:active,\n a:active {\n color: @text-color;\n }\n}\n","//\n// Profile Details\n// --------------------------------------------------\n\n.panel-profile-details-group.panel {\n border: 1px solid @panel-form-border;\n}\n\n.panel-profile-details-group.panel .form-group {\n margin: 0px;\n}\n\n.panel-profile-details-group .form-control-static {\n p:last-child {\n margin-bottom: 0px;\n }\n}\n","//\n// Default flavors for user ranks\n// --------------------------------------------------\n\n.post-rank-flavor(@border, @title) {\n .panel-post {\n border-color: @border;\n }\n\n .user-title {\n color: @title;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @title;\n }\n }\n}\n\n.card-rank-flavor(@border, @title, @color) {\n .panel-body {\n background: @body-bg;\n border: 2px solid @border;\n border-radius: @panel-border-radius;\n padding: @panel-body-padding - 2px;\n }\n\n .user-card-title {\n color: @title;\n\n a.user-title {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n color: @title;\n }\n }\n }\n\n .user-card-stats li {\n color: @color;\n }\n}\n\n.list-group-rank-flavor(@border, @title) {\n border-left: 4px solid @border;\n padding-left: 11px;\n\n span.rank-name {\n color: @title;\n }\n\n a.rank-name {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n color: @title;\n }\n }\n}\n\n.user-profile-rank-flavor(@color) {\n .user-rank {\n color: @color;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @color;\n }\n }\n}\n\n// Posts\n.post-primary {\n .post-rank-flavor(#b388ff, #6200ea);\n}\n\n.post-success {\n .post-rank-flavor(#00c853, #388e3c);\n}\n\n.post-warning {\n .post-rank-flavor(#ffab40, #ff6d00);\n}\n\n.post-danger {\n .post-rank-flavor(#ff8a80, #d50000);\n}\n\n// Cards\n.user-card-primary {\n .card-rank-flavor(#b388ff, #6200ea, #9575cd);\n}\n\n.user-card-success {\n .card-rank-flavor(#00c853, #388e3c, #66bb6a);\n}\n\n.user-card-warning {\n .card-rank-flavor(#ffab40, #ff6d00, #ff6e40);\n}\n\n.user-card-danger {\n .card-rank-flavor(#ff8a80, #d50000, #e57373);\n}\n\n// Posters ranking\n.list-group {\n .list-group-rank-primary {\n .list-group-rank-flavor(#7e57c2, #6200ea);\n }\n\n .list-group-rank-success {\n .list-group-rank-flavor(#9ccc65, #388e3c);\n }\n\n .list-group-rank-warning {\n .list-group-rank-flavor(#ff7043, #ff6d00);\n }\n\n .list-group-rank-danger {\n .list-group-rank-flavor(#f44336, #d50000);\n }\n}\n\n// User profiles\n.page-header-rank-primary {\n .user-profile-rank-flavor(#6200ea);\n}\n\n.page-header-rank-success {\n .user-profile-rank-flavor(#388e3c);\n}\n\n.page-header-rank-warning {\n .user-profile-rank-flavor(#ff6d00);\n}\n\n.page-header-rank-danger {\n .user-profile-rank-flavor(#d50000);\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"../css/misago.css","mappings":"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,COhZA,YAAuB,gBPmZvB,COlZA,aAAuB,iBPqZvB,COpZA,cAAuB,kBPuZvB,COtZA,aAAuB,kBPyZvB,COtZA,gBAAuB,wBPyZvB,COxZA,gBAAuB,wBP2ZvB,CO1ZA,iBAAuB,yBP6ZvB,CO1ZA,YACE,aP4ZF,CO1ZA,cCvGE,aRogBF,CQngBE,0CAEE,aRqgBJ,CO9ZA,cC1GE,aR2gBF,CQ1gBE,0CAEE,aR4gBJ,COlaA,WC7GE,aRkhBF,CQjhBE,oCAEE,aRmhBJ,COtaA,cChHE,aRyhBF,CQxhBE,0CAEE,aR0hBJ,CO1aA,aCnHE,aRgiBF,CQ/hBE,wCAEE,aRiiBJ,CO1aA,YE1HE,yBF6HA,UP2aF,CSviBE,sCAEE,wBTyiBJ,CO5aA,YEhIE,wBT+iBF,CS9iBE,sCAEE,wBTgjBJ,COhbA,SEnIE,wBTsjBF,CSrjBE,gCAEE,wBTujBJ,COpbA,YEtIE,wBT6jBF,CS5jBE,sCAEE,wBT8jBJ,COxbA,WEzIE,wBTokBF,CSnkBE,oCAEE,wBTqkBJ,COvbA,aAGE,gCADA,mBADA,kBP2bF,COjbA,MAGE,mBADA,YPobF,COtbA,wBAMI,ePsbJ,COzaA,4BAJE,eAAgB,CADhB,cPubF,COlbA,aAEE,gBPgbF,COlbA,gBAKI,oBAAqB,CAErB,gBAAiB,CADjB,iBPibJ,CO3aA,GAEE,mBADA,YP8aF,CO3aA,MAEE,sBP6aF,CO3aA,GACE,eP6aF,CO3aA,GACE,aP6aF,COhaE,2CAII,UAAW,CAFX,UAAW,CGrNf,eAAgB,CHwNZ,gBAAiB,CGvNrB,sBAAuB,CACvB,kBAAmB,CHoNf,WPuaJ,CO1aA,kBASI,iBPoaJ,CACF,CO1ZA,sCAEE,WP4ZF,COzZA,YACE,aAAc,CA9IO,wBP0iBvB,COvZA,WAIE,8BADA,iBADA,gBADA,iBP4ZF,COpZI,0EACE,ePwZN,COlaA,qDAsBI,cAHA,aAAc,CACd,aAAc,CACd,sBPqZJ,COlZI,0EACE,qBPsZN,CO9YA,0CAME,aAAc,CADd,+BAFA,cAAe,CADf,kBAAmB,CAEnB,gBPkZF,CO1YI,gNAAW,UPkZf,COjZI,0MACE,qBPwZN,COlZA,QAEE,iBAAkB,CAClB,uBAFA,kBPsZF,CW5rBA,kBAIE,uDX8rBF,CW1rBA,KAIE,yBACA,kBAFA,aX8rBF,CWxrBA,SAPE,aAAc,CADd,eXwsBF,CWhsBA,IAIE,sBACA,kBACA,0CAHA,UX6rBF,CWhsBA,QAYI,eAAgB,CAFhB,cAAe,CACf,eAAgB,CAFhB,SX6rBJ,CWrrBA,IAQE,oBAAqB,CACrB,yBACA,sBACA,kBALA,cALA,aAAc,CAGd,eACA,uBAFA,gBADA,cAKA,oBX2rBF,CWlsBA,SAmBI,4BAA6B,CAC7B,eAAgB,CAHhB,aAAc,CADd,iBAAkB,CADlB,SAAU,CAGV,oBXwrBJ,CWjrBA,gBACE,iBACA,iBXmrBF,CY7uBA,WCAE,gBAAiB,CADjB,iBAAkB,CADlB,kBADA,kBbsvBF,CYhvBE,oCACE,WZmvBF,CACF,CYlvBE,oCACE,WZqvBF,CACF,CYpvBE,qCACE,YZuvBF,CACF,CY9uBA,iBCpBE,gBAAiB,CADjB,iBAAkB,CADlB,kBADA,kBb2wBF,CY3uBA,KCtBE,kBADA,kBbswBF,CY3uBA,gBAEE,aAAc,CADd,cZ8uBF,CY/uBA,8BAMI,cAAe,CADf,eZ8uBJ,Cc7xBC,4eCmBK,cAAe,CAGf,kBADA,mBAJA,iBfi0BN,Ccl1BC,2HCuCK,UfyzBN,Cch2BC,WC+CG,UfozBJ,Ccn2BC,WC+CG,kBfuzBJ,Cct2BC,WC+CG,kBf0zBJ,Ccz2BC,UC+CG,Sf6zBJ,Cc52BC,UC+CG,kBfg0BJ,Cc/2BC,UC+CG,kBfm0BJ,Ccl3BC,UC+CG,Sfs0BJ,Ccr3BC,UC+CG,kBfy0BJ,Ccx3BC,UC+CG,kBf40BJ,Cc33BC,UC+CG,Sf+0BJ,Cc93BC,UC+CG,kBfk1BJ,Ccj4BC,UC+CG,iBfq1BJ,Ccp4BC,gBC8DG,Ufy0BJ,Ccv4BC,gBC8DG,kBf40BJ,Cc14BC,gBC8DG,kBf+0BJ,Cc74BC,eC8DG,Sfk1BJ,Cch5BC,eC8DG,kBfq1BJ,Ccn5BC,eC8DG,kBfw1BJ,Cct5BC,eC8DG,Sf21BJ,Ccz5BC,eC8DG,kBf81BJ,Cc55BC,eC8DG,kBfi2BJ,Cc/5BC,eC8DG,Sfo2BJ,Ccl6BC,eC8DG,kBfu2BJ,Ccr6BC,eC8DG,iBf02BJ,Ccx6BC,eCmEG,Ufw2BJ,Cc36BC,gBCoDG,Sf03BJ,Cc96BC,gBCoDG,iBf63BJ,Ccj7BC,gBCoDG,iBfg4BJ,Ccp7BC,eCoDG,Qfm4BJ,Ccv7BC,eCoDG,iBfs4BJ,Cc17BC,eCoDG,iBfy4BJ,Cc77BC,eCoDG,Qf44BJ,Cch8BC,eCoDG,iBf+4BJ,Ccn8BC,eCoDG,iBfk5BJ,Cct8BC,eCoDG,Qfq5BJ,Ccz8BC,eCoDG,iBfw5BJ,Cc58BC,eCoDG,gBf25BJ,Cc/8BC,eCyDG,Sfy5BJ,Ccl9BC,kBCwEG,gBf64BJ,Ccr9BC,kBCwEG,wBfg5BJ,Ccx9BC,kBCwEG,wBfm5BJ,Cc39BC,iBCwEG,efs5BJ,Cc99BC,iBCwEG,wBfy5BJ,Ccj+BC,iBCwEG,wBf45BJ,Ccp+BC,iBCwEG,ef+5BJ,Ccv+BC,iBCwEG,wBfk6BJ,Cc1+BC,iBCwEG,wBfq6BJ,Cc7+BC,iBCwEG,efw6BJ,Cch/BC,iBCwEG,wBf26BJ,Ccn/BC,iBCwEG,uBf86BJ,Cct/BC,iBCwEG,afi7BJ,CYh7BA,yBEzEC,2HCuCK,Ufi+BJ,CcxgCD,WC+CG,Uf49BF,Cc3gCD,WC+CG,kBf+9BF,Cc9gCD,WC+CG,kBfk+BF,CcjhCD,UC+CG,Sfq+BF,CcphCD,UC+CG,kBfw+BF,CcvhCD,UC+CG,kBf2+BF,Cc1hCD,UC+CG,Sf8+BF,Cc7hCD,UC+CG,kBfi/BF,CchiCD,UC+CG,kBfo/BF,CcniCD,UC+CG,Sfu/BF,CctiCD,UC+CG,kBf0/BF,CcziCD,UC+CG,iBf6/BF,Cc5iCD,gBC8DG,Ufi/BF,Cc/iCD,gBC8DG,kBfo/BF,CcljCD,gBC8DG,kBfu/BF,CcrjCD,eC8DG,Sf0/BF,CcxjCD,eC8DG,kBf6/BF,Cc3jCD,eC8DG,kBfggCF,Cc9jCD,eC8DG,SfmgCF,CcjkCD,eC8DG,kBfsgCF,CcpkCD,eC8DG,kBfygCF,CcvkCD,eC8DG,Sf4gCF,Cc1kCD,eC8DG,kBf+gCF,Cc7kCD,eC8DG,iBfkhCF,CchlCD,eCmEG,UfghCF,CcnlCD,gBCoDG,SfkiCF,CctlCD,gBCoDG,iBfqiCF,CczlCD,gBCoDG,iBfwiCF,Cc5lCD,eCoDG,Qf2iCF,Cc/lCD,eCoDG,iBf8iCF,CclmCD,eCoDG,iBfijCF,CcrmCD,eCoDG,QfojCF,CcxmCD,eCoDG,iBfujCF,Cc3mCD,eCoDG,iBf0jCF,Cc9mCD,eCoDG,Qf6jCF,CcjnCD,eCoDG,iBfgkCF,CcpnCD,eCoDG,gBfmkCF,CcvnCD,eCyDG,SfikCF,Cc1nCD,kBCwEG,gBfqjCF,Cc7nCD,kBCwEG,wBfwjCF,CchoCD,kBCwEG,wBf2jCF,CcnoCD,iBCwEG,ef8jCF,CctoCD,iBCwEG,wBfikCF,CczoCD,iBCwEG,wBfokCF,Cc5oCD,iBCwEG,efukCF,Cc/oCD,iBCwEG,wBf0kCF,CclpCD,iBCwEG,wBf6kCF,CcrpCD,iBCwEG,efglCF,CcxpCD,iBCwEG,wBfmlCF,Cc3pCD,iBCwEG,uBfslCF,Cc9pCD,iBCwEG,afylCF,CACF,CYhlCA,yBElFC,2HCuCK,Uf0oCJ,CcjrCD,WC+CG,UfqoCF,CcprCD,WC+CG,kBfwoCF,CcvrCD,WC+CG,kBf2oCF,Cc1rCD,UC+CG,Sf8oCF,Cc7rCD,UC+CG,kBfipCF,CchsCD,UC+CG,kBfopCF,CcnsCD,UC+CG,SfupCF,CctsCD,UC+CG,kBf0pCF,CczsCD,UC+CG,kBf6pCF,Cc5sCD,UC+CG,SfgqCF,Cc/sCD,UC+CG,kBfmqCF,CcltCD,UC+CG,iBfsqCF,CcrtCD,gBC8DG,Uf0pCF,CcxtCD,gBC8DG,kBf6pCF,Cc3tCD,gBC8DG,kBfgqCF,Cc9tCD,eC8DG,SfmqCF,CcjuCD,eC8DG,kBfsqCF,CcpuCD,eC8DG,kBfyqCF,CcvuCD,eC8DG,Sf4qCF,Cc1uCD,eC8DG,kBf+qCF,Cc7uCD,eC8DG,kBfkrCF,CchvCD,eC8DG,SfqrCF,CcnvCD,eC8DG,kBfwrCF,CctvCD,eC8DG,iBf2rCF,CczvCD,eCmEG,UfyrCF,Cc5vCD,gBCoDG,Sf2sCF,Cc/vCD,gBCoDG,iBf8sCF,CclwCD,gBCoDG,iBfitCF,CcrwCD,eCoDG,QfotCF,CcxwCD,eCoDG,iBfutCF,Cc3wCD,eCoDG,iBf0tCF,Cc9wCD,eCoDG,Qf6tCF,CcjxCD,eCoDG,iBfguCF,CcpxCD,eCoDG,iBfmuCF,CcvxCD,eCoDG,QfsuCF,Cc1xCD,eCoDG,iBfyuCF,Cc7xCD,eCoDG,gBf4uCF,CchyCD,eCyDG,Sf0uCF,CcnyCD,kBCwEG,gBf8tCF,CctyCD,kBCwEG,wBfiuCF,CczyCD,kBCwEG,wBfouCF,Cc5yCD,iBCwEG,efuuCF,Cc/yCD,iBCwEG,wBf0uCF,CclzCD,iBCwEG,wBf6uCF,CcrzCD,iBCwEG,efgvCF,CcxzCD,iBCwEG,wBfmvCF,Cc3zCD,iBCwEG,wBfsvCF,Cc9zCD,iBCwEG,efyvCF,Ccj0CD,iBCwEG,wBf4vCF,Ccp0CD,iBCwEG,uBf+vCF,Ccv0CD,iBCwEG,afkwCF,CACF,CYhvCA,0BE3FC,2HCuCK,UfmzCJ,Cc11CD,WC+CG,Uf8yCF,Cc71CD,WC+CG,kBfizCF,Cch2CD,WC+CG,kBfozCF,Ccn2CD,UC+CG,SfuzCF,Cct2CD,UC+CG,kBf0zCF,Ccz2CD,UC+CG,kBf6zCF,Cc52CD,UC+CG,Sfg0CF,Cc/2CD,UC+CG,kBfm0CF,Ccl3CD,UC+CG,kBfs0CF,Ccr3CD,UC+CG,Sfy0CF,Ccx3CD,UC+CG,kBf40CF,Cc33CD,UC+CG,iBf+0CF,Cc93CD,gBC8DG,Ufm0CF,Ccj4CD,gBC8DG,kBfs0CF,Ccp4CD,gBC8DG,kBfy0CF,Ccv4CD,eC8DG,Sf40CF,Cc14CD,eC8DG,kBf+0CF,Cc74CD,eC8DG,kBfk1CF,Cch5CD,eC8DG,Sfq1CF,Ccn5CD,eC8DG,kBfw1CF,Cct5CD,eC8DG,kBf21CF,Ccz5CD,eC8DG,Sf81CF,Cc55CD,eC8DG,kBfi2CF,Cc/5CD,eC8DG,iBfo2CF,Ccl6CD,eCmEG,Ufk2CF,Ccr6CD,gBCoDG,Sfo3CF,Ccx6CD,gBCoDG,iBfu3CF,Cc36CD,gBCoDG,iBf03CF,Cc96CD,eCoDG,Qf63CF,Ccj7CD,eCoDG,iBfg4CF,Ccp7CD,eCoDG,iBfm4CF,Ccv7CD,eCoDG,Qfs4CF,Cc17CD,eCoDG,iBfy4CF,Cc77CD,eCoDG,iBf44CF,Cch8CD,eCoDG,Qf+4CF,Ccn8CD,eCoDG,iBfk5CF,Cct8CD,eCoDG,gBfq5CF,Ccz8CD,eCyDG,Sfm5CF,Cc58CD,kBCwEG,gBfu4CF,Cc/8CD,kBCwEG,wBf04CF,Ccl9CD,kBCwEG,wBf64CF,Ccr9CD,iBCwEG,efg5CF,Ccx9CD,iBCwEG,wBfm5CF,Cc39CD,iBCwEG,wBfs5CF,Cc99CD,iBCwEG,efy5CF,Ccj+CD,iBCwEG,wBf45CF,Ccp+CD,iBCwEG,wBf+5CF,Ccv+CD,iBCwEG,efk6CF,Cc1+CD,iBCwEG,wBfq6CF,Cc7+CD,iBCwEG,uBfw6CF,Cch/CD,iBCwEG,af26CF,CACF,CgB7+CA,MACE,4BhB++CF,CgBh/CA,uBASI,oBAAqB,CACrB,UAAW,CAFX,ehB6+CJ,CgBt+CI,4CAEE,kBAAmB,CACnB,UAAW,CAFX,ehB2+CN,CgBp+CA,QAGE,cADA,mBADA,ehBy+CF,CgBn+CA,WAHE,ehBy+CF,CgB/9CA,OAGE,mBADA,cAAe,CADf,UhBm+CF,CgBp+CA,kHAcQ,0BAFA,uBADA,YAEA,kBhBk+CR,CgB/+CA,mBAqBI,6BADA,qBhB+9CJ,CgBn/CA,oPA8BQ,YhB69CR,CgB3/CA,mBAoCI,yBhB09CJ,CgB9/CA,cAyCI,qBhBw9CJ,CgBj9CA,8KAOQ,WhBk9CR,CgBv8CA,wLAQQ,qBhB08CR,CgBl9CA,wDAeM,uBhBu8CN,CgB77CA,yCAEI,wBhB87CJ,CiBlkDE,oVAOI,wBjB4kDN,CiBtkDE,4LAMI,wBjBukDN,CiB1lDE,oUAOI,wBjBimDN,CiB3lDE,iMAMI,wBjB4lDN,CiB/mDE,gSAOI,wBjBsnDN,CiBhnDE,kLAMI,wBjBinDN,CiBpoDE,oUAOI,wBjB2oDN,CiBroDE,iMAMI,wBjBsoDN,CiBzpDE,wTAOI,wBjBgqDN,CiB1pDE,4LAMI,wBjB2pDN,CgBvgDA,kBACE,gBACA,ehBygDF,CgBvgDE,sDAIE,2CAA4C,CAC5C,sBAHA,mBACA,iBAAkB,CAFlB,UhB8gDF,CgB/gDA,yBASI,ehBygDJ,CgBlhDA,8NAkBU,kBhBwgDV,CgB1hDA,kCA0BI,QhBmgDJ,CgB7hDA,4VAmCU,ahBkgDV,CgBriDA,sVAuCU,chBsgDV,CgB7iDA,oOAoDU,ehB+/CV,CACF,CkBztDA,SAME,QAAS,CAFT,WlB2tDF,CkBrtDA,gBAHE,QAAS,CAFT,SlBquDF,CkBhuDA,OASE,gCAFA,cANA,aAAc,CAId,eACA,mBAAoB,CAFpB,mBAFA,UlB8tDF,CkBptDA,MACE,oBAAqB,CAGrB,eAAgB,CADhB,iBAAkB,CADlB,clBwtDF,CkB5sDA,mBAUE,uBAAwB,CACxB,eAAgB,CdkBhB,8BACG,2BACK,qBJorDV,CkBpsDA,uCAIE,kBAAmB,CAFnB,cAAe,CACf,gBlBusDF,CkBhsDE,iMAGE,kBlBqsDJ,CkBjsDA,iBACE,alBmsDF,CkB/rDA,kBACE,aAAc,CACd,UlBisDF,CkB7rDA,8BAEE,WlB+rDF,CkB3rDA,0Eb1FE,yCAA0C,CAC1C,mBL0xDF,CkB1rDA,OAEE,elB+rDF,CkBlqDA,qBA1BE,cAJA,aAAc,CAEd,eACA,sBlB+sDF,CkBprDA,cAQE,sBACA,qBAAsB,CACtB,yBACA,kBd3EA,oDACQ,4CckER,YACA,iBdsDA,6EACK,wEACG,qEc1DR,UlBkrDF,CmBlwDE,oBACE,qBfaF,iFACQ,yEebN,SnBswDJ,CIxtDE,gCACE,WACA,SJ0tDJ,CIxtDE,oCAA0B,UJ2tD5B,CI1tDE,yCAAgC,UJ6tDlC,CkB9qDE,0BACE,4BAA6B,CAC7B,QlBgrDJ,CkBxqDE,iFAGE,yBACA,SlB0qDJ,CkBvqDE,yDAEE,kBlByqDJ,CkBrqDE,sBACE,WlBuqDJ,CkBzpDA,qDAKI,mIACE,gBlB0pDJ,CkBvpDE,kQAEE,gBlB+pDJ,CkB5pDE,kQAEE,gBlBoqDJ,CACF,CkB1pDA,YACE,kBlB4pDF,CkBppDA,iBAGE,aAAc,CAEd,kBAAmB,CADnB,eAAgB,CAFhB,iBlBypDF,CkBnpDE,kHAGI,kBlBspDN,CkBjqDA,6BAoBI,cAAe,CADf,eAAgB,CADhB,eAAgB,CAFhB,gBACA,iBlBwpDJ,CkBlpDA,8HAME,iBAAkB,CADlB,gBAAkB,CADlB,iBlBspDF,CkBjpDA,kCAEE,elBmpDF,CkB/oDA,+BAQE,cAAe,CALf,oBAAqB,CAGrB,eAAgB,CADhB,eAAgB,CADhB,iBAAkB,CAFlB,iBAAkB,CAKlB,qBlBkpDF,CkB9oDE,sHAEE,kBlBkpDJ,CkB/oDA,8DAGE,gBAAiB,CADjB,YlBkpDF,CkBxoDA,qBAME,eAAgB,CALhB,gBAGA,mBADA,elB2oDF,CkBtoDE,4DAGE,cAAe,CADf,elByoDJ,CkB3nDA,UCvPE,kBAFA,eAFA,YAGA,gBAFA,gBnB43DF,CmBv3DE,gBACE,YACA,gBnBy3DJ,CmBt3DE,4CAEE,WnBw3DJ,CkBvoDA,6BAMI,kBAFA,eAFA,YAGA,gBAFA,gBlB2oDJ,CkB9oDA,mCASI,YACA,gBlBwoDJ,CkBlpDA,kFAcI,WlBwoDJ,CkBtpDA,oCAoBI,eAHA,YAIA,gBAHA,gBACA,gBlB0oDJ,CkBpoDA,UCnRE,kBAFA,eAFA,YAGA,sBAFA,iBnBi6DF,CmB55DE,gBACE,YACA,gBnB85DJ,CmB35DE,4CAEE,WnB65DJ,CkBhpDA,6BAMI,kBAFA,eAFA,YAGA,sBAFA,iBlBopDJ,CkBvpDA,mCASI,YACA,gBlBipDJ,CkB3pDA,kFAcI,WlBipDJ,CkB/pDA,oCAoBI,eAHA,YAIA,sBAHA,gBACA,iBlBmpDJ,CkBxoDA,cAEE,iBlByoDF,CkB3oDA,4BAMI,oBlBwoDJ,CkBpoDA,uBAKE,aAAc,CAEd,YACA,iBAEA,mBAAoB,CATpB,iBAAkB,CAElB,OAAQ,CAMR,iBAAkB,CAPlB,KAAM,CAIN,WAFA,SlB4oDF,CkBpoDA,4HAIE,YACA,iBAFA,UlBwoDF,CkBpoDA,4HAIE,YACA,iBAFA,UlBwoDF,CkBloDA,iRClZI,anBgiEJ,CkB9oDA,2BC9YI,qBfiDF,oDACQ,2CJ++DV,CmB/hEI,iCACE,qBf8CJ,oEACQ,2DJo/DV,CkBxpDA,gCCnYI,yBACA,qBAFA,anBiiEJ,CkB7pDA,oCC9XI,anB8hEJ,CkB7pDA,iRCrZI,anB8jEJ,CkBzqDA,2BCjZI,qBfiDF,oDACQ,2CJ6gEV,CmB7jEI,iCACE,qBf8CJ,oEACQ,2DJkhEV,CkBnrDA,gCCtYI,yBACA,qBAFA,anB+jEJ,CkBxrDA,oCCjYI,anB4jEJ,CkBxrDA,6PCxZI,anB4lEJ,CkBpsDA,yBCpZI,qBfiDF,oDACQ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FA,0BAqBI,oBAAqB,CACrB,qBlBiwFJ,CkBvxFA,gIA2BM,UlBiwFN,CkB5xFA,wCAiCI,UlB8vFJ,CkB/xFA,4BAqCI,eAAgB,CAChB,qBlB6vFJ,CkBnyFA,2CA6CI,oBAAqB,CAErB,eAAgB,CADhB,YAAa,CAEb,qBlB0vFJ,CkB1yFA,uDAmDM,clB2vFN,CkB9yFA,kFAyDI,aAAc,CADd,iBlB2vFJ,CkBnzFA,kDA8DI,KlBwvFJ,CACF,C6Bj+FI,kDACE,iB7Bo+FJ,C6Bl+FI,oCACE,e7Bo+FN,CACF,C6B59FE,sCAME,QAAS,CzBvPX,wBACQ,gByBqPN,aAAc,CADd,cAAe,CADf,gBAAiB,CADjB,aAAc,CADd,U7Bs+FF,CACF,C6Bz9FA,8BDnUE,yBACA,0BCmUA,Y7B69FF,C6Bz9FA,mDD/TE,4BADA,6BARA,2BACA,4BCwUA,e7B+9FF,C6Br9FA,YC/UE,mBADA,e9ByyGF,C6Bt9FE,mBClVA,mBADA,e9B6yGF,C6Bv9FE,mBCrVA,mBADA,e9BizGF,C6Bj9FA,aC/VE,mBADA,e9BqzGF,C6Bl9FE,sCACE,UAAW,CAEX,iBADA,iB7Bs9FF,C6Bv8FA,aEtWA,oB/BkzGA,C6B38FA,cE1WA,qBAAuB,CF4WrB,kB7B68FF,C6B/8FA,4BAKI,c7B68FJ,CAXF,C6Bx7FA,gBACE,sBACA,oB7Bs8FF,C6Bx8FA,8BAKI,a7Bs8FJ,C6Br8FI,wEAGE,6BADA,a7Bw8FN,C6Bh9FA,6BAcI,U7Bq8FJ,C6Bn9FA,iCAmBM,a7Bm8FN,C6Bj8FM,8EAGE,6BADA,a7Bo8FR,C6B/7FM,8HAIE,yBADA,a7Bk8FR,C6B77FM,oIAIE,6BADA,a7Bg8FR,C6Bx7FM,wHAIE,yBADA,a7B27FR,C6Bt7FI,+EAIM,a7Bs7FR,C6Br7FQ,wHAGE,6BADA,a7Bw7FV,C6Bn7FQ,6LAIE,yBADA,a7Bs7FV,C6Bj7FQ,mMAIE,6BADA,a7Bo7FV,CACF,C6BngGA,+BAuFI,iB7B+6FJ,C6B96FI,0EAEE,qB7Bg7FN,C6B1gGA,yCA6FM,qB7Bg7FN,C6B7gGA,8DAmGI,oB7B86FJ,C6BjhGA,6BA4GI,a7Bw6FJ,C6Bv6FI,mCACE,a7By6FN,C6BvhGA,0BAmHI,a7Bu6FJ,C6Bt6FI,gEAEE,a7Bw6FN,C6Bp6FM,0LAEE,a7Bw6FR,C6Bh6FA,gBACE,sBACA,oB7Bk6FF,C6Bp6FA,8BAKI,a7Bk6FJ,C6Bj6FI,wEAGE,6BADA,U7Bo6FN,C6B56FA,8DAmBM,a7B+5FN,C6B75FM,8EAGE,6BADA,U7Bg6FR,C6B35FM,8HAIE,yBADA,U7B85FR,C6Bz5FM,oIAIE,6BADA,U7B45FR,C6Br5FM,wHAIE,yBADA,U7Bw5FR,C6Bn5FI,2FAIM,oB7Bm5FR,C6Bv5FE,0DAOM,wB7Bm5FR,C6B15FE,sDAUM,a7Bm5FR,C6Bl5FQ,wHAGE,6BADA,U7Bq5FV,C6Bh5FQ,6LAIE,yBADA,U7Bm5FV,C6B94FQ,mMAIE,6BADA,U7Bi5FV,CACF,C6Br+FA,+BA6FI,iB7B24FJ,C6B14FI,0EAEE,qB7B44FN,C6B5+FA,yCAmGM,qB7B44FN,C6B/+FA,8DAyGI,oB7B04FJ,C6Bn/FA,6BA6GI,a7By4FJ,C6Bx4FI,mCACE,U7B04FN,C6Bz/FA,0BAoHI,a7Bw4FJ,C6Bv4FI,gEAEE,U7By4FN,C6Br4FM,0LAEE,U7By4FR,CgC/gHA,YAIE,yBACA,kBAFA,eAAgB,CADhB,mBADA,gBhCqhHF,CgCthHA,eAQI,oBhCihHJ,CgCzhHA,yBAYM,WACA,iBAFA,ahCmhHN,CgC9hHA,oBAkBI,ahC+gHJ,CiC9hHA,OAGE,4BAA6B,CAC7B,kBAFA,mBADA,YjCmiHF,CiCpiHA,UASI,aAAc,CADd,YjCgiHJ,CiCxiHA,mBAcI,ejC6hHJ,CiC3iHA,mBAoBI,ejC2hHJ,CiC/iHA,WAwBI,cjC0hHJ,CiCjhHA,sCAEE,kBjCmhHF,CiCrhHA,oDASI,aAAc,CAHd,iBAAkB,CAElB,WAAY,CADZ,QjCqhHJ,CiC3gHA,eCtDE,yBACA,qBAFA,UlCukHF,CiChhHA,kBClDI,wBlCqkHJ,CiCnhHA,2BC9CI,alCokHJ,CiClhHA,YC1DE,yBACA,qBAFA,UlCklHF,CiCvhHA,eCtDI,wBlCglHJ,CiC1hHA,wBClDI,alC+kHJ,CiCzhHA,eC9DE,yBACA,qBAFA,UlC6lHF,CiC9hHA,kBC1DI,wBlC2lHJ,CiCjiHA,2BCtDI,alC0lHJ,CiChiHA,cClEE,yBACA,qBAFA,UlCwmHF,CiCriHA,iBC9DI,wBlCsmHJ,CiCxiHA,0BC1DI,alCqmHJ,CmC7mHA,OAUE,oBAJA,WALA,cAAe,CAEf,aAAc,CACd,eAAgB,CAChB,aAAc,CAHd,uBAKA,iBAAkB,CAElB,uBAAwB,CADxB,kBnCinHF,CmC3mHI,4BAEE,WAEA,cAAe,CADf,oBnC8mHN,CmCxmHE,aACE,YnC0mHJ,CmCtmHE,YACE,iBAAkB,CAClB,QnCwmHJ,CmCjmHA,eCtCE,wBpC0oHF,CoCvoHI,sDAEE,wBpCyoHN,CmCpmHA,eC1CE,wBpCipHF,CoC9oHI,sDAEE,wBpCgpHN,CmCvmHA,eC9CE,wBpCwpHF,CoCrpHI,sDAEE,wBpCupHN,CmC1mHA,YClDE,wBpC+pHF,CoC5pHI,gDAEE,wBpC8pHN,CmC7mHA,eCtDE,wBpCsqHF,CoCnqHI,sDAEE,wBpCqqHN,CmChnHA,cC1DE,wBpC6qHF,CoC1qHI,oDAEE,wBpC4qHN,CqCzqHA,wCACE,GAAQ,0BrC4qHR,CqC3qHA,GAAQ,uBrC8qHR,CACF,CqC3qHA,gCACE,GAAQ,0BrC8qHR,CqC7qHA,GAAQ,uBrCgrHR,CACF,CqCzqHA,UAIE,yBACA,kBjCsCA,kDACQ,0CiC3CR,YACA,mBACA,erC+qHF,CqCxqHA,cAQE,yBjCyBA,kDACQ,0CiC5BR,WALA,UAAW,CAGX,eADA,WAAY,CAEZ,iBAEA,iBAAkB,CjCoJlB,kCACK,6BACG,0BiC3JR,OrCqrHF,CqCrqHA,sDCDI,8KACA,+KACA,sKDEF,yBrCyqHF,CqClqHA,oDjC5CE,0DACK,qDACG,iDJktHV,CqC/pHA,sBEvEE,wBvCyuHF,CuCtuHE,wCDgDE,8KACA,+KACA,qKtCyrHJ,CqCnqHA,mBE3EE,wBvCivHF,CuC9uHE,qCDgDE,8KACA,+KACA,qKtCisHJ,CqCvqHA,sBE/EE,wBvCyvHF,CuCtvHE,wCDgDE,8KACA,+KACA,qKtCysHJ,CqC3qHA,qBEnFE,wBvCiwHF,CuC9vHE,uCDgDE,8KACA,+KACA,qKtCitHJ,CwClwHA,+BAGE,oBAAqB,CADrB,iBAAkB,CAElB,qBxCowHF,CwCxwHA,yCAOI,UAAW,CADX,iBxCuwHJ,CwCpwHI,wNAIE,SxC0wHN,CwCpwHA,4GAKI,gBxCqwHJ,CwChwHA,aACE,gBxCkwHF,CwCnwHA,oEAOI,UxCiwHJ,CwCxwHA,oEAYI,exCiwHJ,CwC7vHA,yEACE,exC+vHF,CwC3vHA,4BACE,axC6vHF,CwC5vHE,mEZnDA,6BADA,yB5BozHF,CwC3vHA,2FZhDE,4BADA,wB5BizHF,CwC1vHA,sBACE,UxC4vHF,CwC1vHA,8DACE,exC4vHF,CwC1vHA,uIZpEE,6BADA,yB5Bo0HF,CwCzvHA,oEZlEE,4BADA,wB5Bg0HF,CwCxvHA,oEAEE,SxC0vHF,CwCzuHA,iCAEE,gBAAiB,CADjB,iBxC4uHF,CwCzuHA,oCAEE,iBAAkB,CADlB,kBxC4uHF,CwCtuHA,iCpC/CE,oDACQ,2CJwxHV,CwCtuHE,0CpCnDA,wBACQ,eJ4xHV,CwCnuHA,YACE,axCquHF,CwCluHA,eAEE,sBxCouHF,CwCjuHA,uBACE,sBxCmuHF,CwC5tHA,4FAII,aAAc,CACd,UAAW,CAEX,cAAe,CADf,UxC8tHJ,CwCpuHA,oCAcM,UxCytHN,CwCvuHA,gJAuBI,aAAc,CADd,exCwtHJ,CwCltHE,4DACE,exCotHJ,CwCltHE,sDZpKA,4BADA,6BARA,2BACA,2B5Bo4HF,CwCptHE,sDZxKA,8BADA,+BARA,yBACA,yB5B04HF,CwCrtHA,uEACE,exCutHF,CwCrtHA,yJZhLE,4BADA,4B5B24HF,CwCptHA,6EZ/LE,yBACA,yB5Bs5HF,CwChtHA,qBAIE,wBAAyB,CAHzB,aAAc,CAEd,kBAAmB,CADnB,UxCotHF,CwCttHA,0DAOI,kBAAmB,CACnB,UAAW,CACX,QxCmtHJ,CwC5tHA,qCAYI,UxCmtHJ,CwC/tHA,+CAgBI,SxCktHJ,CwCjsHA,gNAMM,kBAAsB,CACtB,mBAAoB,CAFpB,iBxCosHN,CyC56HA,aAGE,wBAAyB,CADzB,aAAc,CADd,iBzCg7HF,CyC36HE,0BACE,UAAW,CAEX,cAAe,CADf,ezC86HJ,CyCt7HA,2BAqBI,UAAW,CAGX,eAAgB,CAThB,iBAAkB,CAQlB,UAAW,CAPX,SzC66HJ,CyCn6HI,iCACE,SzCq6HN,CyC35HA,uGtB4BE,kBAFA,eAFA,YAGA,sBAFA,iBnB24HF,CmBt4HE,yHACE,YACA,gBnB04HJ,CmBv4HE,sRAEE,WnB64HJ,CyC76HA,uGtBuBE,kBAFA,eAFA,YAGA,gBAFA,gBnBk6HF,CmB75HE,yHACE,YACA,gBnBi6HJ,CmB95HE,sRAEE,WnBo6HJ,CyC37HA,+DAGE,kBzC67HF,CyC37HE,wKACE,ezC+7HJ,CyC37HA,oCAIE,qBAAsB,CADtB,kBAAmB,CADnB,QzC+7HF,CyCx7HA,mBAOE,yBACA,yBACA,kBAJA,cAHA,eACA,eAAgB,CAChB,aAAc,CAHd,iBAKA,iBzC67HF,CyCv7HE,4BAGE,kBADA,eADA,gBzC27HJ,CyCv7HE,4BAGE,kBADA,eADA,iBzC27HJ,CyC78HA,6EA0BI,YzCu7HJ,CyCl7HA,wUbrGE,6BADA,yB5BkiIF,CyCn7HA,+BACE,czCq7HF,CyCn7HA,iTbzGE,4BADA,wB5BuiIF,CyCp7HA,8BACE,azCs7HF,CyCj7HA,iBAIE,WAAY,CACZ,kBzCi7HF,CyCt7HA,uCACE,iBzCw7HF,CyCz7HA,2BAYM,gBzCg7HN,CyC76HI,qFAGE,SzC+6HN,CyC16HE,0EAGI,iBzC26HN,CyCx6HE,wEAII,gBAAiB,CADjB,SzC06HN,C0CllIA,OAEE,e1CmlIF,C0CjlIE,mBACE,Y1CmlIJ,C0C/kIA,mBAGE,MAAO,CADP,e1CklIF,C0C9kIA,YACE,a1CglIF,C0C7kIA,cACE,a1C+kIF,C0C5kIE,4BACE,c1C8kIJ,C0C1kIA,gCAEE,iB1C4kIF,C0CzkIA,8BAEE,kB1C2kIF,C0CxkIA,qCAGE,kBAAmB,CACnB,kB1C0kIF,C0CvkIA,cACE,qB1CykIF,C0CtkIA,cACE,qB1CwkIF,C0CpkIA,eAEE,iBAAkB,CADlB,Y1CukIF,C0ChkIA,YAEE,eAAgB,CADhB,c1CmkIF,C2CvnIA,YAGE,kBAAmB,CADnB,c3CynIF,C2ChnIA,iBAME,sBACA,yBALA,aAAc,CAGd,kBAAmB,CAFnB,iBAAkB,CAFlB,iB3CunIF,C2C9mIE,6Bf7BA,2BACA,2B5B8oIF,C2C/mIE,4BfvBA,8BADA,+BeyBE,e3CmnIJ,C2C9mIE,0FAKE,yBAFA,cACA,kB3CinIJ,C2CrnIE,qKASI,a3CinIN,C2C1nIE,4JAYI,a3CmnIN,C2C9mIE,oFAKE,sBACA,qBAFA,cADA,S3CmnIJ,C2CtnIE,ogBAYI,a3CqnIN,C2CjoIE,sJAeI,U3CunIN,C2C5mIA,yCAEE,a3C8mIF,C2ChnIA,2FAKI,U3C+mIJ,C2C3mIE,0GAIE,sBAFA,cACA,oB3CgnIJ,C2C3mIA,uBAEE,eAAgB,CADhB,U3C8mIF,CcptIC,yB8BKG,yBADA,a5CotIJ,C4CjtII,yDAEE,a5CmtIN,C4CrtII,2GAKI,a5CotIR,C4CjtIM,0IAGE,yBADA,a5CstIR,C4CntIM,6OAIE,yBACA,qBAFA,U5C0tIR,CcjvIC,sB8BKG,yBADA,a5CivIJ,C4C9uII,mDAEE,a5CgvIN,C4ClvII,qGAKI,a5CivIR,C4C9uIM,8HAGE,yBADA,a5CmvIR,C4ChvIM,2NAIE,yBACA,qBAFA,U5CuvIR,Cc9wIC,yB8BKG,yBADA,a5C8wIJ,C4C3wII,yDAEE,a5C6wIN,C4C/wII,2GAKI,a5C8wIR,C4C3wIM,0IAGE,yBADA,a5CgxIR,C4C7wIM,6OAIE,yBACA,qBAFA,U5CoxIR,Cc3yIC,wB8BKG,yBADA,a5C2yIJ,C4CxyII,uDAEE,a5C0yIN,C4C5yII,yGAKI,a5C2yIR,C4CxyIM,sIAGE,yBADA,a5C6yIR,C4C1yIM,uOAIE,yBACA,qBAFA,U5CizIR,C2C9sIA,yBAEE,iBAAkB,CADlB,Y3CitIF,C2C9sIA,sBAEE,eAAgB,CADhB,e3CitIF,C6Cx0IA,OAEE,sBACA,4BAA6B,CzC2D7B,6CACQ,qCyC9DR,kB7C+0IF,C6Cv0IA,YACE,Y7Cy0IF,C6Cp0IA,eAEE,mCAAoC,CjBtBpC,2BACA,4BiBoBA,iB7Cy0IF,C6C/zIA,uDALI,a7C60IJ,C6Cx0IA,aAGE,eADA,eAAgB,CADhB,Y7Cu0IF,C6Cx0IA,iGAWI,a7Co0IJ,C6C/zIA,cAEE,sBjBxCA,8BADA,+BiB0CA,6BAFA,iB7Cq0IF,C6CzzIA,sDAGI,e7C0zIJ,C6C7zIA,wFAOM,eAAgB,CADhB,kB7C4zIN,C6CvzII,wIAEI,YAAa,CjBzEnB,2BACA,2B5Bm4IF,C6CrzII,oIAEI,eAAgB,CjBxEtB,8BADA,8B5Bk4IF,C6C90IA,+EjB5DE,yBACA,yB5B64IF,C6C5yIA,kFACE,kB7CizIF,C6CzyIA,4EAII,e7C0yIJ,C6C9yIA,oGAQM,kBADA,kB7C6yIN,C6CpzIA,0XAmBQ,2BACA,2B7C4yIR,C6Ch0IA,wsBAwBU,0B7CkzIV,C6C10IA,gsBA4BU,2B7CwzIV,C6Cp1IA,yWA0CQ,8BADA,8B7CuzIR,C6Ch2IA,4qBA8CU,6B7C4zIV,C6C12IA,oqBAkDU,8B7Ck0IV,C6Cp3IA,8HA2DI,yB7C+zIJ,C6C13IA,oGA+DI,Y7C+zIJ,C6C93IA,gEAmEI,Q7C+zIJ,C6Cl4IA,gqBA0EU,a7Cs0IV,C6Ch5IA,opBA8EU,c7Cg1IV,C6C95IA,w3BAgGU,e7Ck1IV,C6Cl7IA,yBAuGI,QAAS,CADT,e7Cg1IJ,C6Cr0IA,aACE,kB7Cu0IF,C6Cx0IA,oBAMI,kBADA,e7Cu0IJ,C6C50IA,2BASM,c7Cs0IN,C6C/0IA,4BAcI,e7Co0IJ,C6Cl1IA,gHAkBM,4B7Co0IN,C6Ct1IA,2BAuBI,Y7Ck0IJ,C6Cz1IA,uDAyBM,+B7Cm0IN,C6C5zIA,eC5PE,iB9C2jJF,C8CzjJE,8BAEE,sBACA,kBAFA,a9C6jJJ,C8C9jJE,0DAMI,qB9C2jJN,C8CjkJE,qCAUI,yBADA,U9C4jJN,C8CxjJE,yDAEI,wB9CyjJN,C6C30IA,eC/PE,oB9C6kJF,C8C3kJE,8BAEE,yBACA,qBAFA,U9C+kJJ,C8ChlJE,0DAMI,wB9C6kJN,C8CnlJE,qCAUI,sBADA,a9C8kJN,C8C1kJE,yDAEI,2B9C2kJN,C6C11IA,eClQE,oB9C+lJF,C8C7lJE,8BAEE,yBACA,qBAFA,a9CimJJ,C8ClmJE,0DAMI,wB9C+lJN,C8CrmJE,qCAUI,yBADA,a9CgmJN,C8C5lJE,yDAEI,2B9C6lJN,C6Cz2IA,YCrQE,oB9CinJF,C8C/mJE,2BAEE,yBACA,qBAFA,a9CmnJJ,C8CpnJE,uDAMI,wB9CinJN,C8CvnJE,kCAUI,yBADA,a9CknJN,C8C9mJE,sDAEI,2B9C+mJN,C6Cx3IA,eCxQE,oB9CmoJF,C8CjoJE,8BAEE,yBACA,qBAFA,a9CqoJJ,C8CtoJE,0DAMI,wB9CmoJN,C8CzoJE,qCAUI,yBADA,a9CooJN,C8ChoJE,yDAEI,2B9CioJN,C6Cv4IA,cC3QE,oB9CqpJF,C8CnpJE,6BAEE,yBACA,qBAFA,a9CupJJ,C8CxpJE,yDAMI,wB9CqpJN,C8C3pJE,oCAUI,yBADA,a9CspJN,C8ClpJE,wDAEI,2B9CmpJN,C+ClqJA,OAIE,eAAgB,CAFhB,cADA,cAAe,CAEf,iB/CqqJF,C+CxqJA,UAOI,c/CoqJJ,C+C3qJA,2BAYM,sBACA,sBACA,mBAJA,oBAAqB,CACrB,gB/CwqJN,C+CnrJA,oCAoBM,yBADA,oB/CqqJN,C+CxrJA,iCA2BM,W/CiqJN,C+C5rJA,yCAkCM,U/C8pJN,C+ChsJA,2FA6CM,sBAFA,cACA,kB/C4pJN,CgD1sJA,YAIE,kBAHA,oBAAqB,CAErB,cADA,chD8sJF,CgDhtJA,eAOI,chD4sJJ,CgDntJA,qCAiBM,sBACA,sBAHA,cAJA,UAAW,CAGX,uBADA,gBAAiB,CADjB,iBAFA,iBAAkB,CAMlB,oBhD+sJN,CgD3sJM,kGAIE,yBACA,kBAFA,cADA,ShDktJR,CgD5sJI,6DpBfF,8BADA,2BoBmBM,ahD+sJR,CgD3sJI,2DpB9BF,+BADA,2B5B+uJF,CgDtsJI,qKAME,yBACA,qBAHA,WACA,cAAe,CAFf,ShD+sJN,CgD/vJA,iLAiEM,sBACA,kBAHA,cACA,kBhD0sJN,CgD/rJA,2CCvEM,eACA,sBAFA,iBjD6wJN,CiDzwJI,mErBMF,8BADA,0B5BywJF,CiDxwJI,iErBRF,+BADA,2B5BsxJF,CgD1sJA,2CC5EM,eACA,gBAFA,gBjD6xJN,CiDzxJI,mErBMF,8BADA,0B5ByxJF,CiDxxJI,iErBRF,+BADA,2B5BsyJF,CkDzyJA,kBAEE,aAAc,CACd,QA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AU,2B1DmrKV,C0DlrKA,4BACU,4B1DqrKV,Cc9mKA,kBACE,uBdknKF,Cc9mKA,mBACE,wBdknKF,Cc9mKA,yBACE,8BdknKF,CAdF,Cc/lKE,4D4C3FA,uB1D6sKA,C0D5sKA,iBAAU,uB1D+sKV,C0D9sKA,cAAU,2B1DitKV,C0DhtKA,4BACU,4B1DmtKV,CcvnKA,kBACE,uBd2nKF,CcvnKA,mBACE,wBd2nKF,CcvnKA,yBACE,8Bd2nKF,CAdF,CcxmKE,sC4ChHA,uB1D2uKA,C0D1uKA,iBAAU,uB1D6uKV,C0D5uKA,cAAU,2B1D+uKV,C0D9uKA,4BACU,4B1DivKV,CchoKA,kBACE,uBdooKF,CchoKA,mBACE,wBdooKF,CchoKA,yBACE,8BdooKF,CAdF,CcjnKE,oC4C7HA,sB1DiwKA,CACF,CchoKE,0D4ClIA,sB1DswKA,CACF,CchoKE,2D4CvIA,sB1D2wKA,CACF,CchoKE,qC4C5IA,sB1DgxKA,CACF,Cc1nKA,e4CvJE,sB1DoxKF,Cc1nKE,4B4ClKA,uB1DgyKA,C0D/xKA,oBAAU,uB1DkyKV,C0DjyKA,iBAAU,2B1DoyKV,C0DnyKA,kCACU,4B1DsyKV,CACF,CcroKA,qBACE,sBduoKF,CcroKE,kCACE,uBdwoKF,CACF,CctoKA,sBACE,sBdwoKF,CctoKE,mCACE,wBdyoKF,CACF,CcvoKA,4BACE,sBdyoKF,CcvoKE,yCACE,8Bd0oKF,CcroKA,c4CrLA,sB1D+zKA,CAJF,C2Dj0KA,oCACE,UAEE,iB3Dw0KF,CACF,C2Dp0KA,oCACE,kBACE,sB3Ds0KF,CACF,C2Dn0KA,0DACE,eACE,yB3Dq0KF,C2Dl0KA,kBACE,sB3Do0KF,C2Dj0KA,oBACE,0B3Dm0KF,C2Dh0KA,sBACE,wB3Dk0KF,CACF,C2D/zKA,oCACE,eACE,yB3Di0KF,C2D9zKA,oBACE,0B3Dg0KF,CACF,C4Dx2KA,UACE,aAAc,CACd,c5D02KF,C4Dv2KA,kBACE,kBAAmB,CACnB,YAAa,CACb,M5Dy2KF,C4Dt2KA,oCACE,e5Dw2KF,C4Dr2KA,cACE,MAAO,CACP,c5Du2KF,C4Dp2KA,oCACE,UAEE,kBA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m5QJ,CiH94QE,iI3FhBA,yBACA,WtBq6QF,CiH94QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,ajHi5QJ,CiH54QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,ajH+4QJ,CiHz4QI,uOAOE,iBjH24QN,CiHj8QE,8IAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHo8QJ,CiH/7QE,iI3FhBA,yBACA,WtBs9QF,CiH/7QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjHk8QJ,CiH77QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjHg8QJ,CiH17QI,uOAOE,iBjH47QN,CiHl/QE,8IAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHq/QJ,CiHh/QE,iI3FhBA,yBACA,WtBugRF,CiHh/QE,sCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjHm/QJ,CiH9+QE,2PAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjHi/QJ,CiH3+QI,uOAOE,iBjH6+QN,CiHniRE,wIAME,mBACA,yB7GyDF,wBACQ,gB6GxDN,UjHsiRJ,CiHjiRE,4H3FhBA,yBACA,WtBwjRF,CiHjiRE,oCAEE,mBACA,yB7GuCF,wBACQ,gB6GtCN,UjHoiRJ,CiH/hRE,qPAME,mBACA,yB7GyBF,wBACQ,gB6GxBN,UjHkiRJ,CiH5hRI,gOAOE,iBjH8hRN,CiHthRE,sNAME,mBACA,yB7GLF,wBACQ,gB6GMN,ajHyhRJ,CiHphRE,6L3F9EA,yBACA,WtBymRF,CiHphRE,8DAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,ajHuhRJ,CiHlhRE,+PAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,ajHqhRJ,CiH/gRI,2TAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjHkhRN,CiH3kRE,sNAME,mBACA,yB7GLF,wBACQ,gB6GMN,UjH8kRJ,CiHzkRE,6L3F9EA,yBACA,WtB8pRF,CiHzkRE,8DAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,UjH4kRJ,CiHvkRE,+PAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,UjH0kRJ,CiHpkRI,2TAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjHukRN,CiHz+QA,4BAEI,iBjH0+QJ,CiHnoRE,wOAME,uBACA,yB7GLF,wBACQ,gB6GMN,ajHsoRJ,CiHjoRE,4M3F9EA,yBACA,WtBstRF,CiHjoRE,oEAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,ajHooRJ,CiH/nRE,iRAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,ajHkoRJ,CiH5nRI,gVAOE,uBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjH+nRN,CiHjiRA,6BAoBI,iBjHghRJ,CiH3rRE,8OAME,mBACA,yB7GLF,wBACQ,gB6GMN,UjH8rRJ,CiHzrRE,iN3F9EA,yBACA,WtB8wRF,CiHzrRE,sEAEE,mBACA,yB7GvBF,wBACQ,gB6GwBN,UjH4rRJ,CiHvrRE,uRAME,mBACA,yB7GrCF,wBACQ,gB6GsCN,UjH0rRJ,CiHprRI,uVAOE,mBACA,yB7GrDJ,wBACQ,gB6GsDJ,iBjHurRN,CkH9yRE,yMAGE,cACA,elHmzRJ,CkHvzRE,iFAGE,cACA,elHyzRJ,CkH7zRE,0LAGE,cACA,elHk0RJ,CkHt0RE,kiBAGE,WACA,elHo1RJ,CkHx1RE,iFAGE,cACA,elH01RJ,CkH91RE,qfAGE,cACA,elH42RJ,CkHh3RE,uFAGE,cACA,elHk3RJ,CkHt3RE,8EAGE,cACA,elHw3RJ,CkH53RE,oFAGE,cACA,elH83RJ,CkH50RA,uBAGI,mBADA,elH80RJ,CkHh1RA,uBAOI,YlH40RJ,CmH14RA,yCAEE,qBACA,kCnH44RF,CmH14RE,qDACE,qBACA,kCnH64RJ,CmHz4RA,8BACE,qBACA,kCnH24RF,CmHz4RE,oCACE,qBACA,kCnH24RJ,CmHv4RA,gCACE,qBACA,kCnHy4RF,CmHv4RE,sCACE,qBACA,kCnHy4RJ,CmHp4RA,mBACE,enHs4RF,CmHv4RA,+BAMI,cACA,eAHA,cnHw4RJ,CmH54RA,6BAWI,QnHo4RJ,CoHh7RA,cACE,mBJwBA,wGIvBA,cpHm7RF,CoHr7RA,gBAOI,UpHi7RJ,CoHx7RA,mBAYM,mBACA,qBAEA,apH86RN,CoH36RI,kDAEE,mBACA,qBAEA,apH46RN,CoHz6RI,0BACE,mBACA,qBAEA,apH06RN,CqHx8RA,eACE,WAAY,CLYZ,kGhH+7RF,CqHr8RA,uCAII,cAFA,aAAc,CAGd,erHq8RJ,CqH18RA,4CAWI,eAFA,erHq8RJ,CqH98RA,2DAiBM,UAAW,CAKX,cAAe,CAFf,WAAY,CANZ,gBAAiB,CAEjB,iBAAkB,CAGlB,UrHm8RN,CqH37RA,8BACE,mBrH67RF,CqH17RA,sBACE,wBrH47RF,CqHz7RA,8MAQM,qBAAsB,CAEtB,arHw7RN,CqHl7RA,sBACE,QrHo7RF,CsH/+RA,eACE,kBAAmB,CACnB,0BtHi/RF,CsH7+RA,4BACE,eAAgB,CAChB,iBtH++RF,CsH3+RA,+BACE,iBtH6+RF,CuH1/RA,yBACE,yBvH4/RF,CuHz/RA,yBAIE,avH0/RF,CuHv/RA,iDANE,6BACA,iBvHggSF,CuHt/RA,wBACE,6BAGA,cACA,eAAiB,CAHjB,gBvH0/RF,CuHn/RA,0DAGI,avHo/RJ,CuHh/RA,sDAII,eAAgB,CAFhB,eAAgB,CAChB,kBvHk/RJ,CuHr/RA,qDASI,eAAgB,CAChB,sBAAuB,CAFvB,kBvHk/RJ,CuH3+RA,wBACE,kBvH6+RF,CuH3+RE,mCACE,gBvH6+RJ,CuHz+RA,2CACE,evH2+RF,CwHliSA,eACE,exHoiSF,CwHriSA,+BAII,6BAGA,cAFA,gBxHqiSJ,CwHjiSI,mEACE,iBxHoiSJ,CwHriSE,8CAII,UAAW,CACX,kBxHoiSN,CACF,CwHnjSA,gHAqBM,axHmiSN,CwHxjSA,8EA0BM,axHkiSN,CwH9hSM,6JAGE,axHgiSR,CwH7hSM,4GAEE,axH+hSR,CyHtkSA,YACE,iBzHwkSF,CyHzkSA,6BAII,0BACA,0BzHwkSJ,CyH7kSA,yCASI,wBzHukSJ,CyHhlSA,wCAaI,2BzHskSJ,CyHlkSA,+BAEE,oBADA,iBAGA,iBzHmkSF,CyHvkSA,iCAOI,azHmkSJ,C0H3lSA,UtHkEE,wBACQ,eJ4hSV,C0H3lSA,2BACE,gBAAiB,CACjB,iBAAkB,CAClB,iB1H6lSF,C0H3lSE,uCACE,e1H6lSJ,C0H1lSE,sCACE,kB1H4lSJ,C0HzlSE,8FAGE,mBACA,WAAY,CAEZ,a1H0lSJ,C0HvlSE,oGAGE,mBAEA,a1HwlSJ,C0HplSI,4OAME,mBAEA,WACA,e1HqlSN,C0H9lSI,sRAYI,mBAEA,a1HylSR,C2H1oSA,+BACE,iB3H4oSF,C4H7oSA,OACE,WAAY,CACZ,iB5H+oSF,C4HjpSA,2CAMI,e5H+oSJ,C4HrpSA,oBAUI,a5H8oSJ,C4HxpSA,+BAcI,e5H6oSJ,C4H3pSA,2CAkBI,e5H4oSJ,C4H9pSA,gBAsBI,e5H2oSJ,C4HzoSI,4BACE,Y5H2oSN,C4HpqSA,uBA6BM,WAAY,CAEZ,cACA,e5HyoSN,C4HnoSA,kCACE,a5HqoSF,C6H5qSA,YACE,yBACA,e7H8qSF,C6H3qSA,qDAEE,oB7H6qSF,C6HzqSA,kBACE,Q7H2qSF,C6HvqSA,oCAEE,a7HyqSF,C8H1rSA,wCAEI,mBACA,kBACA,e9H2rSJ,C8H/rSA,0CAWI,cACA,cAAe,CAJf,WAAY,CAKZ,gBAAiB,CAJjB,U9H6rSJ,C8HtsSA,iDAiBI,wB9HwrSJ,C8HzsSA,gEAoBM,U9HwrSN,C8HprSE,+DACE,a9HurSF,CACF,C8HnrSA,2BACE,iB9HqrSF,C8HnrSE,+DACE,yB9HsrSF,CACF,C8HnrSA,kEAEI,e9HorSJ,C8HlrSI,sGACE,c9HqrSJ,CACF,C8HhrSA,6GAII,a9HirSJ,C8HrrSA,mHAUI,a9HgrSJ,C8H3qSA,gBACE,a9H6qSF,C8HzqSA,uCACE,c9H2qSF,C8HzqSE,kDACE,e9H2qSJ,C8HtqSA,0BACE,qBAAsB,CACtB,iB9HwqSF,C8HpqSA,qCACE,iB9HsqSF,C8HpqSE,yEACE,e9HuqSF,CACF,C8HpqSA,mCACE,cACA,c9HsqSF,C8HxqSA,4HAOI,a9HsqSJ,C8H5pSI,4RAGE,a9HmqSN,C8HhqSI,gKAGE,a9HkqSN,C8H5pSA,yBACE,a9H8pSF,C8H/pSA,wCAKI,iBADA,a9H+pSJ,C8H3pSE,6DAGE,eAFA,gB9H+pSF,C8HhqSA,wCAMI,a9H6pSJ,CACF,C+HzySA,oBACE,wB/H2ySF,C+HxySA,4BACE,kB/H0ySF,C+HvySA,yCACE,a/HyySF,C+H1ySA,w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E,qBzI62TF,C0I92TA,sCACE,iB1Ig3TF,C0I72TA,8BACE,a1I+2TF,C0I52TI,2IAGE,cACA,e1I82TN,C0I32TI,iJAGE,a1I62TN,C0I33TA,6CAmBI,cACA,e1I22TJ,C0Iv2TA,sBACE,a1Iy2TF,C2It4TA,0BACE,a3Iw4TF,C2Ij4TA,6DACE,a3Is4TF,C2In4TA,oCACE,a3Iq4TF,C4Il5TA,mIAMI,a5Io5TJ,C4I15TA,wJAaI,a5Im5TJ,C6Ih6TA,mCACE,wB7Ik6TF,C6I/5TA,+CACE,Q7Ii6TF,C6I95TA,+DAEI,e7I+5TJ,C8It1TA,0BAjFI,oB9I06TJ,C8Iz1TA,kOArEM,a9Iy6TN,C8Ih2TA,0BArFI,oB9Iw7TJ,C8In2TA,kOAzEM,a9Iu7TN,C8I12TA,0BAzFI,oB9Is8TJ,C8I72TA,kOA7EM,a9Iq8TN,C8Ip3TA,yBA7FI,oB9Io9TJ,C8Iv3TA,2NAjFM,a9Im9TN,C8I73TA,+BA/EI,gBACA,yBACA,kBACA,Y9I+8TJ,C8Ix8TM,0WAME,a9I68TR,C8I94TA,uCAzDI,a9I08TJ,C8I74TA,+BAnFI,gBACA,yBACA,kBACA,Y9Im+TJ,C8I59TM,0WAME,a9Ii+TR,C8I95TA,uCA7DI,a9I89TJ,C8I75TA,+BAvFI,gBACA,yBACA,kBACA,Y9Iu/TJ,C8Ih/TM,0WAME,a9Iq/TR,C8I96TA,uCAjEI,a9Ik/TJ,C8I76TA,8BA3FI,gBACA,yBACA,kBACA,Y9I2gUJ,C8IpgUM,mWAME,a9IygUR,C8I97TA,sCArEI,a9IsgUJ,C8I57TA,qCArEE,8BACA,iB9IogUF,C8I7/TI,0XAME,a9IkgUN,C8I38TA,qCArEE,8BACA,iB9ImhUF,C8I5gUI,0XAME,a9IihUN,C8I19TA,qCArEE,8BACA,iB9IkiUF,C8I3hUI,0XAME,a9IgiUN,C8Iz+TA,oCArEE,8BACA,iB9IijUF,C8I1iUI,mXAME,a9I+iUN,C8Ir+TA,+SA3DM,a9I2iUN,C8I5+TA,+SA/DM,a9IsjUN,C8In/TA,+SAnEM,a9IikUN,C8I1/TA,wSAvEM,a9I4kUN","sources":["webpack://misago/./src/style/index.less","webpack://misago/./node_modules/bootstrap/less/normalize.less","webpack://misago/./node_modules/bootstrap/less/print.less","webpack://misago/./node_modules/bootstrap/less/scaffolding.less","webpack://misago/./node_modules/bootstrap/less/mixins/vendor-prefixes.less","webpack://misago/./node_modules/bootstrap/less/mixins/tab-focus.less","webpack://misago/./node_modules/bootstrap/less/mixins/image.less","webpack://misago/./node_modules/bootstrap/less/type.less","webpack://misago/./node_modules/bootstrap/less/mixins/text-emphasis.less","webpack://misago/./node_modules/bootstrap/less/mixins/background-variant.less","webpack://misago/./node_modules/bootstrap/less/mixins/text-overflow.less","webpack://misago/./node_modules/bootstrap/less/code.less","webpack://misago/./node_modules/bootstrap/less/grid.less","webpack://misago/./node_modules/bootstrap/less/mixins/grid.less","webpack://misago/./node_modules/bootstrap/less/responsive-utilities.less","webpack://misago/./node_modules/bootstrap/less/mixins/grid-framework.less","webpack://misago/./node_modules/bootstrap/less/tables.less","webpack://misago/./node_modules/bootstrap/less/mixins/table-row.less","webpack://misago/./node_modules/bootstrap/less/forms.less","webpack://misago/./node_modules/bootstrap/less/mixins/forms.less","webpack://misago/./node_modules/bootstrap/less/buttons.less","webpack://misago/./node_modules/bootstrap/less/mixins/buttons.less","webpack://misago/./node_modules/bootstrap/less/mixins/opacity.less","webpack://misago/./node_modules/bootstrap/less/component-animations.less","webpack://misago/./node_modules/bootstrap/less/dropdowns.less","webpack://misago/./node_modules/bootstrap/less/mixins/nav-divider.less","webpack://misago/./node_modules/bootstrap/less/mixins/reset-filter.less","webpack://misago/./node_modules/bootstrap/less/navs.less","webpack://misago/./node_modules/bootstrap/less/mixins/border-radius.less","webpack://misago/./node_modules/bootstrap/less/navbar.less","webpack://misago/./node_modules/bootstrap/less/mixins/nav-vertical-align.less","webpack://misago/./node_modules/bootstrap/less/utilities.less","webpack://misago/./node_modules/bootstrap/less/breadcrumbs.less","webpack://misago/./node_modules/bootstrap/less/alerts.less","webpack://misago/./node_modules/bootstrap/less/mixins/alerts.less","webpack://misago/./node_modules/bootstrap/less/labels.less","webpack://misago/./node_modules/bootstrap/less/mixins/labels.less","webpack://misago/./node_modules/bootstrap/less/progress-bars.less","webpack://misago/./node_modules/bootstrap/less/mixins/gradients.less","webpack://misago/./node_modules/bootstrap/less/mixins/progress-bar.less","webpack://misago/./node_modules/bootstrap/less/button-groups.less","webpack://misago/./node_modules/bootstrap/less/input-groups.less","webpack://misago/./node_modules/bootstrap/less/media.less","webpack://misago/./node_modules/bootstrap/less/list-group.less","webpack://misago/./node_modules/bootstrap/less/mixins/list-group.less","webpack://misago/./node_modules/bootstrap/less/panels.less","webpack://misago/./node_modules/bootstrap/less/mixins/panels.less","webpack://misago/./node_modules/bootstrap/less/pager.less","webpack://misago/./node_modules/bootstrap/less/pagination.less","webpack://misago/./node_modules/bootstrap/less/mixins/pagination.less","webpack://misago/./node_modules/bootstrap/less/responsive-embed.less","webpack://misago/./node_modules/bootstrap/less/wells.less","webpack://misago/./node_modules/bootstrap/less/close.less","webpack://misago/./node_modules/bootstrap/less/badges.less","webpack://misago/./node_modules/bootstrap/less/modals.less","webpack://misago/./node_modules/bootstrap/less/mixins/clearfix.less","webpack://misago/./node_modules/bootstrap/less/mixins/center-block.less","webpack://misago/./node_modules/bootstrap/less/mixins/hide-text.less","webpack://misago/./node_modules/bootstrap/less/mixins/responsive-visibility.less","webpack://misago/./src/style/misago/scaffolding.less","webpack://misago/./src/style/misago/flex-row.less","webpack://misago/./src/style/misago/auth-message.less","webpack://misago/./src/style/misago/alerts-snackbar.less","webpack://misago/./src/style/misago/agreement-overlay.less","webpack://misago/./src/style/misago/loaders.less","webpack://misago/./src/style/misago/navbar.less","webpack://misago/./src/style/misago/navs.less","webpack://misago/./src/style/misago/breadcrumbs.less","webpack://misago/./src/style/misago/material-icons.less","webpack://misago/./src/style/misago/modals.less","webpack://misago/./src/style/misago/forms.less","webpack://misago/./src/style/misago/inputs.less","webpack://misago/./src/style/misago/buttons.less","webpack://misago/./src/style/misago/dropdowns.less","webpack://misago/./src/style/misago/category-label.less","webpack://misago/./src/style/misago/thread-flags.less","webpack://misago/./src/style/misago/thread-replies.less","webpack://misago/./src/style/misago/thread-user-card.less","webpack://misago/./src/style/misago/search-dropdown.less","webpack://misago/./src/style/misago/page-header.less","webpack://misago/./src/style/misago/page-container.less","webpack://misago/./src/style/misago/panels.less","webpack://misago/./src/style/misago/footer.less","webpack://misago/./src/style/misago/ui-preview.less","webpack://misago/./src/style/misago/pager.less","webpack://misago/./src/style/misago/pagination.less","webpack://misago/./src/style/misago/poll.less","webpack://misago/./src/style/misago/user-status.less","webpack://misago/./src/style/misago/user-card.less","webpack://misago/./src/style/misago/toolbar.less","webpack://misago/./src/style/misago/type.less","webpack://misago/./src/style/misago/markup.less","webpack://misago/./src/style/misago/change-avatar.less","webpack://misago/./src/style/misago/categories-lists.less","webpack://misago/./src/style/misago/posting.less","webpack://misago/./src/style/misago/editor.less","webpack://misago/./src/style/misago/participants.less","webpack://misago/./src/style/misago/poll-editor.less","webpack://misago/./src/style/misago/posts-list.less","webpack://misago/./src/style/misago/post.less","webpack://misago/./src/style/misago/post-feed.less","webpack://misago/./src/style/misago/event.less","webpack://misago/./src/style/misago/post-changelog.less","webpack://misago/./src/style/misago/message-pages.less","webpack://misago/./src/style/misago/threads-lists.less","webpack://misago/./src/style/misago/active-posters.less","webpack://misago/./src/style/misago/user-profile.less","webpack://misago/./src/style/misago/username-history.less","webpack://misago/./src/style/misago/search.less","webpack://misago/./highlight/styles/foundation.css","webpack://misago/./node_modules/at.js/dist/css/jquery.atwho.css","webpack://misago/./src/style/flavor/typo.less","webpack://misago/./src/style/flavor/shadows.less","webpack://misago/./src/style/flavor/buttons.less","webpack://misago/./src/style/flavor/social-buttons.less","webpack://misago/./src/style/flavor/inputs.less","webpack://misago/./src/style/flavor/auth-message.less","webpack://misago/./src/style/flavor/dropdowns.less","webpack://misago/./src/style/flavor/navbar.less","webpack://misago/./src/style/flavor/search-dropdown.less","webpack://misago/./src/style/flavor/page-footer.less","webpack://misago/./src/style/flavor/list-group.less","webpack://misago/./src/style/flavor/navs.less","webpack://misago/./src/style/flavor/username-history.less","webpack://misago/./src/style/flavor/panels.less","webpack://misago/./src/style/flavor/form.less","webpack://misago/./src/style/flavor/categories-lists.less","webpack://misago/./src/style/flavor/participants.less","webpack://misago/./src/style/flavor/poll.less","webpack://misago/./src/style/flavor/posting.less","webpack://misago/./src/style/flavor/post.less","webpack://misago/./src/style/flavor/post-feed.less","webpack://misago/./src/style/flavor/event.less","webpack://misago/./src/style/flavor/user-card.less","webpack://misago/./src/style/flavor/progress-bars.less","webpack://misago/./src/style/flavor/markup.less","webpack://misago/./src/style/flavor/modals.less","webpack://misago/./src/style/flavor/wells.less","webpack://misago/./src/style/flavor/active-posters.less","webpack://misago/./src/style/flavor/message-pages.less","webpack://misago/./src/style/flavor/user-options.less","webpack://misago/./src/style/flavor/profile-details.less","webpack://misago/./src/style/flavor/ranks-flavors.less"],"sourcesContent":["/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #0065ff;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #0747a6;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #ebecf0;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: 400;\n line-height: 1;\n color: #7a869a;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #7a869a;\n}\n.text-primary {\n color: #0052cc;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #003d99;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #0052cc;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #003d99;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #ebecf0;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 700px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #ebecf0;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #7a869a;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: \"\\2014 \\00A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #ebecf0;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: \"\\00A0 \\2014\";\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #344563;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #7a869a;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #344563;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: 700;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n -webkit-appearance: none;\n appearance: none;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #172b4d;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ced0da;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #ebecf0;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #3462af;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #172b4d;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n opacity: 0.65;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #172b4d;\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #172b4d;\n background-color: #ced0da;\n background-image: none;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #172b4d;\n background-color: #b9bdcb;\n border-color: #8c8c8c;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #ebecf0;\n background-color: #172b4d;\n}\n.btn-primary {\n color: #fff;\n background-color: #6554c0;\n border-color: #5643b7;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #4d3da4;\n border-color: #2a215a;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #4d3da4;\n border-color: #41338a;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #4d3da4;\n background-image: none;\n border-color: #41338a;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #41338a;\n border-color: #2a215a;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #6554c0;\n border-color: #5643b7;\n}\n.btn-primary .badge {\n color: #6554c0;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #00c853;\n border-color: #00af48;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #00953e;\n border-color: #002f14;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #00953e;\n border-color: #00712f;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #00953e;\n background-image: none;\n border-color: #00712f;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #00712f;\n border-color: #002f14;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #00c853;\n border-color: #00af48;\n}\n.btn-success .badge {\n color: #00c853;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #3d5afe;\n border-color: #2444fe;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #0a2ffe;\n border-color: #0119a1;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #0a2ffe;\n border-color: #0123e3;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #0a2ffe;\n background-image: none;\n border-color: #0123e3;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #0123e3;\n border-color: #0119a1;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #3d5afe;\n border-color: #2444fe;\n}\n.btn-info .badge {\n color: #3d5afe;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #ffab00;\n border-color: #e69a00;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #cc8900;\n border-color: #664400;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #cc8900;\n border-color: #a87100;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #cc8900;\n background-image: none;\n border-color: #a87100;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #a87100;\n border-color: #664400;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #ffab00;\n border-color: #e69a00;\n}\n.btn-warning .badge {\n color: #ffab00;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #ef5350;\n border-color: #ed3c39;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #eb2521;\n border-color: #98110e;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #eb2521;\n border-color: #d51713;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #eb2521;\n background-image: none;\n border-color: #d51713;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #d51713;\n border-color: #98110e;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #ef5350;\n border-color: #ed3c39;\n}\n.btn-danger .badge {\n color: #ef5350;\n background-color: #fff;\n}\n.btn-link {\n font-weight: 400;\n color: #0065ff;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #0747a6;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #7a869a;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #ebecf0;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: 1.42857143;\n color: #172b4d;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #172b4d;\n text-decoration: none;\n background-color: #ebecf0;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #172b4d;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #7a869a;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #7a869a;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 700px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #ebecf0;\n}\n.nav > li.disabled > a {\n color: #7a869a;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #7a869a;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #ebecf0;\n border-color: #0065ff;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #ebecf0 #ebecf0 #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #5e6c84;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #0065ff;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 54px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 700px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 700px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 700px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n@media (min-width: 700px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 700px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 700px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-brand {\n float: left;\n height: 54px;\n padding: 17px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 700px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: 15px;\n margin-top: 10px;\n margin-bottom: 10px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 700px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 8.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 699px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 700px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 17px;\n padding-bottom: 17px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-right: -15px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 10px;\n margin-bottom: 10px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 699px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 700px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-sm {\n margin-top: 12px;\n margin-bottom: 12px;\n}\n.navbar-btn.btn-xs {\n margin-top: 16px;\n margin-bottom: 16px;\n}\n.navbar-text {\n margin-top: 17px;\n margin-bottom: 17px;\n}\n@media (min-width: 700px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 700px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #ffffff;\n border-color: #c1c7d0;\n}\n.navbar-default .navbar-brand {\n color: #344563;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #344563;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #8993a4;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #505f79;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #c1c7d0;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n@media (max-width: 699px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #8993a4;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #505f79;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #c1c7d0;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #c1c7d0;\n}\n.navbar-default .navbar-link {\n color: #8993a4;\n}\n.navbar-default .navbar-link:hover {\n color: #505f79;\n}\n.navbar-default .btn-link {\n color: #8993a4;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #505f79;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #c1c7d0;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 699px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #a5aebb;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-link {\n color: #a5aebb;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #a5aebb;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #7a869a;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #fff;\n background-color: #00875a;\n border-color: #00875a;\n}\n.alert-success hr {\n border-top-color: #006e49;\n}\n.alert-success .alert-link {\n color: #e6e6e6;\n}\n.alert-info {\n color: #fff;\n background-color: #448aff;\n border-color: #448aff;\n}\n.alert-info hr {\n border-top-color: #2a7aff;\n}\n.alert-info .alert-link {\n color: #e6e6e6;\n}\n.alert-warning {\n color: #fff;\n background-color: #ff8b00;\n border-color: #ff8b00;\n}\n.alert-warning hr {\n border-top-color: #e67d00;\n}\n.alert-warning .alert-link {\n color: #e6e6e6;\n}\n.alert-danger {\n color: #fff;\n background-color: #de350b;\n border-color: #de350b;\n}\n.alert-danger hr {\n border-top-color: #c62f0a;\n}\n.alert-danger .alert-link {\n color: #e6e6e6;\n}\n.label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #7a869a;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #616d80;\n}\n.label-primary {\n background-color: #0052cc;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #003d99;\n}\n.label-success {\n background-color: #36b37e;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #2a8c62;\n}\n.label-info {\n background-color: #3d5afe;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #0a2ffe;\n}\n.label-warning {\n background-color: #ffab00;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #cc8900;\n}\n.label-danger {\n background-color: #ff5630;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #fc2e00;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #ebecf0;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #6554c0;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #36b37e;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #3d5afe;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #ffab00;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #ff5630;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: 400;\n line-height: 1;\n color: #172b4d;\n text-align: center;\n background-color: #ebecf0;\n border: 1px solid #ced0da;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ebecf0;\n}\n.list-group-item:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #ebecf0;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #7a869a;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #0065ff;\n background-color: #fff;\n border-color: #ebecf0;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #ffffff;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #7a869a;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #172b4d;\n text-decoration: none;\n background-color: #fff;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 14px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 14px 15px;\n background-color: #fff;\n border-top: 1px solid #ebecf0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ebecf0;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ebecf0;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #344563;\n background-color: #fff;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #fff;\n background-color: #344563;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #0052cc;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #0052cc;\n border-color: #0052cc;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #0052cc;\n}\n.panel-primary > .panel-heading .badge {\n color: #0052cc;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #0052cc;\n}\n.panel-success {\n border-color: #36b37e;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #36b37e;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #36b37e;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #36b37e;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ff5630;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ff5630;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ff5630;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ff5630;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #ebecf0;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #fff;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #0065ff;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #0747a6;\n background-color: #ebecf0;\n border-color: #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #0052cc;\n border-color: #0052cc;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #7a869a;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #7a869a;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #0065ff;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #091e42;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #ced0da;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #ced0da;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.panel-body:before,\n.panel-body:after,\n.pager:before,\n.pager:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after,\n.agreement-footer:before,\n.agreement-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.panel-body:after,\n.pager:after,\n.modal-header:after,\n.modal-footer:after,\n.agreement-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n@media screen and (max-width: 991px) {\n html,\n body {\n overflow-x: hidden;\n }\n}\n@media screen and (min-width: 992px) {\n .md-margin-top-no {\n margin-top: 0px !important;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .sm-margin-top {\n margin-top: 20px !important;\n }\n .sm-margin-top-no {\n margin-top: 0px !important;\n }\n .sm-margin-top-half {\n margin-top: 6.6px !important;\n }\n .sm-align-row-buttons {\n margin-top: 5px !important;\n }\n}\n@media screen and (max-width: 767px) {\n .xs-margin-top {\n margin-top: 20px !important;\n }\n .xs-margin-top-half {\n margin-top: 6.6px !important;\n }\n}\n.flex-row {\n display: block;\n margin: 0 -15px;\n}\n.flex-row-section {\n align-items: center;\n display: flex;\n flex: 1;\n}\n.flex-row-section + .flex-row-section {\n margin-top: 20px;\n}\n.flex-row-col {\n flex: 1;\n padding: 0 15px;\n}\n@media screen and (min-width: 768px) {\n .flex-row {\n display: flex;\n align-items: center;\n }\n .flex-row-section + .flex-row-section {\n margin: 0;\n }\n .flex-row-section,\n .flex-row-col {\n flex: 0;\n align-items: center;\n }\n .flex-row-section.flex-row-section-auto,\n .flex-row-section.flex-row-section-auto > .flex-row-col {\n flex: 1;\n }\n}\n.flex-row-col-shrink {\n flex: 0 !important;\n}\n.auth-message {\n background-color: #ebecf0;\n padding: 20px 0px;\n width: 100%;\n position: fixed;\n top: -100%;\n left: 0px;\n z-index: 1070;\n transition: top 300ms ease;\n}\n.auth-message.show {\n top: 0px;\n bottom: auto;\n}\n.auth-message p {\n padding: 5px 0px;\n color: #172b4d;\n}\n@media screen and (max-width: 991px) {\n .auth-message {\n text-align: center;\n }\n .auth-message .btn {\n padding: 10px 16px;\n font-size: 18px;\n }\n}\n.alerts-snackbar {\n position: fixed;\n top: -100%;\n width: 100%;\n z-index: 1060;\n text-align: center;\n font-size: 18px;\n transition: top 300ms ease;\n pointer-events: none;\n}\n.alerts-snackbar.in {\n top: 0px;\n transition: top 200ms ease;\n}\n.alerts-snackbar p {\n display: inline-block;\n border-radius: 0px 0px 4px 4px;\n margin: 0px;\n pointer-events: all;\n}\n.agreement-overlay {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n z-index: 1060;\n background-color: rgba(9, 30, 66, 0.5);\n overflow-x: scroll;\n}\n.agreement-overlay .container {\n max-width: 900px;\n padding: 20px 30px;\n}\n.agreement-content {\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n padding: 10px 16px;\n}\n.agreement-header {\n padding: 10px 0;\n border-bottom: 1px solid #ebecf0;\n}\n.agreement-header h2 {\n margin-top: 0;\n}\n.agreement-header p {\n margin: 0;\n padding: 0;\n}\n.agreement-body {\n padding: 20px 0;\n}\n.agreement-body p.lead {\n margin: 0;\n padding: 0;\n}\n.agreement-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #ced0da;\n padding: 10px 0;\n}\n.agreement-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.agreement-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.agreement-footer .btn-block + .btn-block {\n margin-left: 0;\n}\nbody.agreement-overlay-visible {\n overflow: hidden;\n}\n.loader {\n width: 100%;\n height: 49px;\n text-align: center;\n}\n.loader.loader-spaced {\n margin: 40px 0px;\n}\n.loader-spinning-wheel {\n width: 49px;\n height: 49px;\n margin: 0 auto;\n border: 3px solid #7a869a;\n border-radius: 50%;\n border-left-color: transparent;\n border-right-color: transparent;\n animation: cssload-spin 575ms infinite linear;\n -o-animation: cssload-spin 575ms infinite linear;\n -ms-animation: cssload-spin 575ms infinite linear;\n -webkit-animation: cssload-spin 575ms infinite linear;\n -moz-animation: cssload-spin 575ms infinite linear;\n}\n@keyframes cssload-spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n@-o-keyframes cssload-spin {\n 100% {\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-ms-keyframes cssload-spin {\n 100% {\n -ms-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-webkit-keyframes cssload-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@-moz-keyframes cssload-spin {\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.navbar {\n margin-bottom: 0px;\n}\n.navbar .navbar-full .navbar-brand {\n padding-top: 11px;\n padding-bottom: 11px;\n font-size: 21px;\n}\n.navbar .navbar-full .navbar-brand > * {\n display: inline-block;\n vertical-align: middle;\n}\n.navbar .navbar-full .navbar-brand img {\n height: 32px;\n margin-right: 6px;\n}\n.navbar .navbar-full .navbar-nav > li > a {\n font-size: 16.8px;\n}\n.navbar .navbar-full .navbar-icon {\n display: block;\n height: 54px;\n padding: 10px 15px;\n padding-top: 13px;\n padding-bottom: 13px;\n position: relative;\n color: #8993a4;\n}\n.navbar .navbar-full .navbar-icon:hover,\n.navbar .navbar-full .navbar-icon:focus {\n color: #505f79;\n background-color: transparent;\n}\n.navbar .navbar-full .navbar-icon .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.navbar .navbar-full .navbar-icon .badge {\n background-color: #ff5630;\n position: absolute;\n top: 6px;\n right: 6px;\n font-size: 9px;\n}\n.navbar .navbar-full .open .navbar-icon,\n.navbar .navbar-full .open .navbar-icon:hover,\n.navbar .navbar-full .open .navbar-icon:focus {\n background-color: #dfe1e6;\n color: #6b778c;\n}\n.navbar .navbar-full .nav-guest,\n.navbar .navbar-full .nav-user {\n float: right;\n}\n.navbar .navbar-full .nav-guest .navbar-btn,\n.navbar .navbar-full .nav-user .navbar-btn {\n margin-left: 15px;\n}\n.navbar .navbar-full .nav-user .dropdown-toggle {\n padding: 10px;\n}\n.navbar .navbar-full .nav-user .dropdown-toggle img {\n width: 34px;\n height: 34px;\n}\n.navbar ul.navbar-compact-nav {\n border-collapse: collapse;\n display: table;\n margin: 0px;\n table-layout: fixed;\n width: 100%;\n}\n.navbar ul.navbar-compact-nav > li {\n display: table-cell;\n width: 100%;\n}\n.navbar ul.navbar-compact-nav > li > a,\n.navbar ul.navbar-compact-nav > li > button {\n background: none;\n border: none;\n display: block;\n padding-top: 13px;\n padding-bottom: 13px;\n width: 100%;\n color: #8993a4;\n text-align: center;\n}\n.navbar ul.navbar-compact-nav > li > a.active,\n.navbar ul.navbar-compact-nav > li > button.active,\n.navbar ul.navbar-compact-nav > li > a:hover,\n.navbar ul.navbar-compact-nav > li > button:hover,\n.navbar ul.navbar-compact-nav > li > a:focus,\n.navbar ul.navbar-compact-nav > li > button:focus {\n color: #6b778c;\n background-color: #dfe1e6;\n}\n.navbar ul.navbar-compact-nav > li > a > img,\n.navbar ul.navbar-compact-nav > li > button > img {\n width: 24px;\n height: 24px;\n}\n.navbar ul.navbar-compact-nav > li > button {\n display: inline-block;\n}\n.navbar ul.navbar-compact-nav > li > a > .material-icon {\n font-size: 24px;\n line-height: 24px;\n}\n@media (max-width: 700px) {\n .navbar.navbar-misago {\n min-height: auto;\n }\n}\n.navbar-misago .navbar-desktop-nav {\n display: none;\n}\n@media (min-width: 700px) {\n .navbar-misago ul.navbar-compact-nav {\n display: none;\n }\n .navbar-misago .navbar-desktop-nav {\n display: block;\n }\n}\n.nav-side > a > .material-icon {\n margin: -5px;\n margin-right: 10px;\n position: relative;\n bottom: 1px;\n width: 24px;\n height: 24px;\n font-size: 24px;\n line-height: 24px;\n}\n.nav-side > a .badge {\n position: relative;\n top: 1px;\n}\n.nav-pills > li > a {\n display: flex;\n align-items: center;\n padding: 5px 10px;\n}\n.nav-pills > li > a .material-icon {\n margin-right: 3px;\n}\n.nav-pills > li > a,\n.nav-pills > li > a:link,\n.nav-pills > li > a:visited {\n background-color: #ebecf0;\n color: #344563;\n}\n.nav-pills > li > a:focus,\n.nav-pills > li > a:hover,\n.nav-pills > li > a:active {\n background-color: #dcdee5;\n color: #344563;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:link,\n.nav-pills > li.active > a:visited,\n.nav-pills > li.active > a:focus,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:active {\n background-color: #344563;\n color: #fff;\n}\n.nav-container .btn-block {\n margin-bottom: 20px;\n}\n.nav-container .nav {\n margin-right: -10px;\n margin-bottom: 30px;\n}\n.nav-container li {\n margin-right: 10px;\n margin-bottom: 10px;\n}\n.breadcrumbs {\n display: block;\n padding: 0;\n margin-bottom: 10px;\n}\n.breadcrumbs-item {\n display: inline-block;\n margin-right: 15px;\n margin-bottom: 10px;\n padding: 0;\n list-style: none;\n}\n.breadcrumbs-item a {\n display: flex;\n align-items: center;\n text-decoration: none;\n}\n.breadcrumbs-item a,\n.breadcrumbs-item a:visited {\n color: #5e6c84;\n}\n.breadcrumbs-item a:hover,\n.breadcrumbs-item a:focus {\n color: #172b4d;\n}\n.breadcrumbs-item a:hover .breadcrumbs-item-name,\n.breadcrumbs-item a:focus .breadcrumbs-item-name {\n text-decoration: underline;\n}\n.breadcrumbs-item a:active {\n color: #172b4d;\n}\n.breadcrumbs-item .material-icon {\n margin-right: 4px;\n}\n@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n src: url(./fonts/MaterialIcons-Regular.eot);\n /* For IE6-8 */\n src: local(\"Material Icons\"), local(\"MaterialIcons-Regular\"), url(./fonts/MaterialIcons-Regular.woff2) format(\"woff2\"), url(./fonts/MaterialIcons-Regular.woff) format(\"woff\"), url(./fonts/MaterialIcons-Regular.ttf) format(\"truetype\");\n}\n.material-icon {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 1;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n vertical-align: middle;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n /* Support for IE. */\n font-feature-settings: \"liga\";\n}\n.modal-toolbar {\n background: #ebecf0;\n border-bottom: 1px solid #ced0da;\n overflow: auto;\n padding: 6px 12px;\n}\n.modal-toolbar .pull-left {\n margin-right: 8px;\n}\n.modal-toolbar p {\n padding: 5px 0px;\n margin-bottom: 0px;\n}\n@media screen and (max-width: 991px) {\n .modal-message {\n text-align: center;\n }\n .modal-message .message-icon {\n margin: 30px;\n }\n .modal-message .message-icon .material-icon {\n font-size: 160px;\n }\n}\n@media screen and (min-width: 992px) {\n .modal-message .modal-body {\n padding-top: 20px;\n padding-bottom: 30px;\n }\n .modal-message .message-icon {\n float: left;\n position: relative;\n left: 7px;\n }\n .modal-message .message-icon .material-icon {\n font-size: 50px;\n }\n .modal-message .message-body {\n margin-left: 75px;\n margin-top: 10px;\n }\n .modal-message .message-body p {\n margin-top: 20px;\n }\n .modal-message .message-body .lead {\n margin-top: 0px;\n margin-bottom: 0px;\n }\n}\n.modal-loader {\n padding: 50px 0px;\n}\n.modal-loader .loader {\n width: 100%;\n height: 80px;\n text-align: center;\n}\n.modal-loader .loader-spinning-wheel {\n width: 80px;\n height: 80px;\n}\n.modal-body .form-group {\n min-height: 34px;\n}\n.list-item-errors {\n margin-bottom: 20px;\n}\n.list-errored-items li:last-child .list-item-errors {\n margin-bottom: 0px;\n}\n.modal-post-likers .media-list {\n margin: 0px;\n}\n.modal-post-likers .item-title {\n display: block;\n}\n.has-feedback .material-icon.form-control-feedback {\n top: 6px;\n right: 24px;\n font-size: 1.42857143;\n line-height: 1.42857143;\n}\n.well.well-form.well-done {\n font-size: 18px;\n text-align: center;\n}\n.well.well-form.well-done .message-icon {\n margin-bottom: 10px;\n font-size: 90px;\n line-height: 90px;\n}\n.well.well-form.well-done .message-body {\n margin-bottom: 20px;\n}\n.well.well-form.well-noscript {\n font-size: 18px;\n text-align: center;\n}\n.well.well-form.well-noscript .message-icon {\n margin-bottom: 10px;\n font-size: 90px;\n line-height: 90px;\n}\n.btn.btn-yes-no,\n.btn.btn-select {\n background: transparent;\n border: 1px solid #ced0da;\n}\n.btn.btn-yes-no .material-icon,\n.btn.btn-select .material-icon {\n margin: -4px 0px;\n margin-right: 8px;\n position: relative;\n bottom: 1px;\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n}\n@media screen and (max-width: 767px) {\n .btn.btn-yes-no {\n width: 100%;\n overflow: auto;\n }\n .btn.btn-yes-no .material-icon {\n float: left;\n margin-top: 1px;\n }\n .btn.btn-yes-no .btn-text {\n display: block;\n margin-left: 30px;\n text-align: left;\n white-space: normal;\n }\n}\ninput.hidden-file-upload {\n position: absolute;\n top: -9999px;\n left: -9999px;\n}\n.form-search {\n position: relative;\n}\n.form-search .form-control {\n padding-right: 30px;\n}\n.form-search .material-icon {\n position: absolute;\n top: 5px;\n right: 5px;\n color: #7a869a;\n font-size: 24px;\n line-height: 24px;\n pointer-events: none;\n}\n.btn.btn-loading,\n.btn.btn-loading:link,\n.btn.btn-loading:active,\n.btn.btn-loading:visited,\n.btn.btn-loading:hover,\n.btn.btn-loading:focus {\n color: transparent;\n}\n.btn.btn-loading .loader,\n.btn.btn-loading:link .loader,\n.btn.btn-loading:active .loader,\n.btn.btn-loading:visited .loader,\n.btn.btn-loading:hover .loader,\n.btn.btn-loading:focus .loader {\n height: 20px;\n margin-top: -20px;\n}\n.btn.btn-loading .loader > div,\n.btn.btn-loading:link .loader > div,\n.btn.btn-loading:active .loader > div,\n.btn.btn-loading:visited .loader > div,\n.btn.btn-loading:hover .loader > div,\n.btn.btn-loading:focus .loader > div {\n width: 20px;\n height: 20px;\n}\n.btn.btn-loading.btn-default .loader > div {\n border-top-color: #172b4d;\n border-bottom-color: #172b4d;\n}\n.btn.btn-loading.btn-primary .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-success .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-info .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-warning .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn.btn-loading.btn-danger .loader > div {\n border-top-color: #fff;\n border-bottom-color: #fff;\n}\n.btn .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n.btn-icon .material-icon {\n margin: -1px -4px;\n width: 20px;\n height: 20px;\n font-size: 20px;\n line-height: 20px;\n}\n.btn-icon .btn-text {\n margin-left: 10px;\n}\n.btn-icon .btn-text-left {\n margin-right: 10px;\n}\n.btn-block.btn-icon {\n padding-left: 0px;\n padding-right: 0px;\n}\n.dropdown-menu > li > a,\n.dropdown-menu > li > .btn-link,\n.modal-menu > li > a,\n.modal-menu > li > .btn-link {\n display: block;\n border: none;\n clear: both;\n float: none;\n padding: 6px 20px;\n width: 100%;\n color: #172b4d;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > .btn-link:hover,\n.modal-menu > li > a:hover,\n.modal-menu > li > .btn-link:hover,\n.dropdown-menu > li > a:focus,\n.dropdown-menu > li > .btn-link:focus,\n.modal-menu > li > a:focus,\n.modal-menu > li > .btn-link:focus {\n background-color: #ebecf0;\n color: #172b4d;\n text-decoration: none;\n}\n.dropdown-menu > li > a:active,\n.dropdown-menu > li > .btn-link:active,\n.modal-menu > li > a:active,\n.modal-menu > li > .btn-link:active {\n background-color: #ebecf0;\n color: #172b4d;\n text-decoration: none;\n}\n.dropdown-menu > li > a:disabled,\n.dropdown-menu > li > .btn-link:disabled,\n.modal-menu > li > a:disabled,\n.modal-menu > li > .btn-link:disabled {\n color: rgba(23, 43, 77, 0.5);\n}\n.dropdown-menu > li > a .material-icon,\n.dropdown-menu > li > .btn-link .material-icon,\n.modal-menu > li > a .material-icon,\n.modal-menu > li > .btn-link .material-icon {\n margin: -2px 0px;\n margin-right: 7px;\n position: relative;\n bottom: 1px;\n font-size: 18px;\n}\n.dropdown-menu > li > a .badge,\n.dropdown-menu > li > .btn-link .badge,\n.modal-menu > li > a .badge,\n.modal-menu > li > .btn-link .badge {\n float: right;\n position: relative;\n top: 1px;\n}\n.modal-menu {\n margin: 20px 0px;\n padding: 0px;\n}\n.modal-menu > li {\n margin: 6.66666667px 0px;\n padding: 0px;\n list-style: none;\n}\n.dropdown-menu {\n min-width: 210px;\n}\n.dropdown-menu .dropdown-footer {\n padding: 6px 20px;\n}\n.dropdown-menu .dropdown-buttons {\n padding: 2px 20px;\n padding-bottom: 7px;\n}\n.dropdown-menu .dropdown-buttons .btn {\n margin: 4px 0px;\n}\n.mobile-dropdown {\n position: relative;\n}\n.mobile-dropdown.open > .dropdown-menu,\n.compact-nav.open > .dropdown-menu {\n border: none;\n border-radius: 0;\n display: block;\n margin: 0px;\n width: 100%;\n}\n.user-dropdown .guest-preview {\n text-align: center;\n}\n.user-dropdown .guest-preview .row {\n margin: 0px;\n}\n.navbar .user-dropdown {\n width: 240px;\n}\n.user-dropdown .dropdown-header {\n padding: 6px 20px;\n font-size: 18px;\n}\n.user-dropdown .dropdown-header strong {\n font-weight: normal;\n}\n@media screen and (min-width: 992px) {\n .category-picker .dropdown-menu {\n width: 300px;\n }\n}\n.category-picker .dropdown-menu > li > .btn-link {\n white-space: normal;\n word-wrap: break-word;\n}\n@media screen and (max-width: 767px) {\n .dropdown-menu.stick-to-bottom {\n border-radius: 0px;\n border: none;\n max-height: 300px;\n overflow-y: auto;\n -webkit-box-shadow: 0px 0px 30px #7a869a;\n box-shadow: 0px 0px 30px #7a869a;\n clear: both;\n top: auto;\n width: 100%;\n position: fixed;\n bottom: 0px;\n margin: 0px;\n padding: 0px;\n padding-bottom: 20px;\n }\n .dropdown-menu.stick-to-bottom li {\n float: none;\n margin: 0px;\n clear: both;\n }\n .dropdown-menu.stick-to-bottom li > a,\n .dropdown-menu.stick-to-bottom li > .btn {\n padding-top: 15px;\n padding-bottom: 15px;\n border-bottom: 1px solid #ebecf0;\n }\n}\n.category-label {\n border-radius: 0.25em;\n padding: 0.2em 0.6em 0.3em;\n}\n.category-label-color,\n.category-label-color:link,\n.category-label-color:focus,\n.category-label-color:active,\n.category-label-color:visited,\n.category-label-color:hover {\n color: #fff;\n}\n.category-label-no-color,\n.category-label-no-color:link,\n.category-label-no-color:focus,\n.category-label-no-color:active,\n.category-label-no-color:visited,\n.category-label-no-color:hover {\n background-color: #ebecf0;\n color: #344563;\n}\n.thread-flags {\n display: flex;\n align-items: center;\n opacity: 0.8;\n margin: 0;\n padding: 0;\n}\n.thread-flags li {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 3px;\n list-style-type: none;\n cursor: default;\n}\n.thread-flags li + li {\n margin-left: 7.5px;\n}\n.thread-flags .material-icon {\n font-size: 16px;\n line-height: 16px;\n}\n.thread-flag-pinned-globally {\n color: #2563eb;\n background: #dbeafe;\n}\n.thread-flag-pinned-locally {\n color: #3b82f6;\n background: #dbeafe;\n}\n.thread-flag-answered {\n color: #4d7c0f;\n background: #d9f99d;\n}\n.thread-flag-poll {\n color: #c026d3;\n background: #f5d0fe;\n}\n.thread-flag-unapproved {\n color: #ffffff;\n background: #dc2626;\n}\n.thread-flag-closed {\n color: #dc2626;\n background: #fecaca;\n}\n.thread-flag-hidden {\n color: #ffffff;\n background: #64748b;\n}\n.threads-replies {\n display: flex;\n align-items: center;\n color: #5e6c84;\n font-size: 16px;\n font-weight: bold;\n}\n.threads-replies .material-icon {\n margin-right: 7.5px;\n transform: matrix(-1, 0, 0, 1, 0, 0);\n}\n.thread-user-card {\n display: flex;\n align-items: center;\n}\n.thread-user-card-media {\n flex: 0;\n margin-right: 15px;\n}\n.thread-user-card-media img {\n border-radius: 3px;\n}\n.thread-user-card-body {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.navbar-misago .dropdown-menu.dropdown-search-results {\n margin: 0px;\n padding-top: 0px;\n width: 400px;\n left: auto;\n right: 0px;\n}\n.dropdown-search-results .form-group {\n margin: 0px;\n padding: 12px;\n}\nli.dropdown-search-message {\n text-align: center;\n}\n.dropdown-search-thread {\n width: 100%;\n}\n.dropdown-search-thread h5 {\n margin: 0px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dropdown-search-thread small {\n display: block;\n margin: 0px;\n margin-top: 4px;\n}\n.page-header {\n margin: 0;\n margin-top: 10px;\n}\n.page-header-banner-bg-overlay {\n padding: 20px 0;\n}\n.page-header h1 {\n margin: 0;\n overflow-wrap: break-word;\n}\n.page-container {\n padding-top: 20px;\n}\n@media screen and (max-width: 991px) {\n .panel-message-body {\n text-align: center;\n }\n .panel-message-body .message-icon {\n margin: 30px;\n }\n .panel-message-body .message-icon .material-icon {\n font-size: 160px;\n }\n}\n@media screen and (min-width: 992px) {\n .panel-message-body {\n padding: 20px;\n padding-bottom: 30px;\n }\n .panel-message-body .message-icon {\n float: left;\n }\n .panel-message-body .message-icon .material-icon {\n font-size: 50px;\n }\n .panel-message-body .message-body {\n margin-left: 65px;\n margin-top: 10px;\n }\n .panel-message-body .message-body .lead {\n margin-bottom: 0px;\n }\n .panel-message-body .message-body .help-block {\n margin-top: 13.2px;\n }\n}\n.panel-body-loading {\n padding: 0px;\n text-align: center;\n}\n.misago-footer {\n margin-top: 30px;\n margin-bottom: 50px;\n}\n.misago-footer .footer-content {\n border-top: 1px solid #ebecf0;\n padding-top: 30px;\n}\n.misago-footer .noscript-message .material-icon {\n position: relative;\n bottom: 1px;\n font-size: 18px;\n}\n.ui-preview {\n color: #ebecf0;\n -webkit-animation: ui-preview-animation 1s linear infinite;\n -o-animation: ui-preview-animation 1s linear infinite;\n animation: ui-preview-animation 1s linear infinite;\n}\n@keyframes ui-preview-animation {\n 0% {\n filter: alpha(opacity=100);\n opacity: 1;\n }\n 50% {\n filter: alpha(opacity=10);\n opacity: 0.1;\n }\n 100% {\n filter: alpha(opacity=100);\n opacity: 1;\n }\n}\n.ui-preview-text {\n background: #ebecf0;\n border-radius: 100px;\n display: inline-block;\n height: 14px;\n position: relative;\n top: 3px;\n}\n.ui-preview-paragraph .ui-preview-text {\n margin-right: 6px;\n}\n.ui-preview-paragraph .ui-preview-text:last-child {\n margin-right: 0px;\n}\n.ui-preview-img {\n background: #ebecf0;\n border-radius: 5px;\n}\n.pager-undercontent {\n margin-top: -20px;\n}\n.pager-more {\n text-align: center;\n}\n@media screen and (min-width: 992px) {\n .pager-more .btn {\n padding-left: 20px;\n padding-right: 20px;\n }\n}\n.misago-pagination {\n display: flex;\n}\n.misago-pagination .btn {\n display: block;\n width: 100%;\n}\n.misago-pagination .btn + .btn {\n margin-left: 30px;\n}\n@media screen and (max-width: 767px) {\n .toolbar-item .misago-pagination {\n flex: 1;\n }\n}\n.panel-poll h2 {\n margin-top: 0px;\n}\n.poll-select-choice .btn,\n.poll-select-choice .btn:active,\n.poll-select-choice .btn:focus,\n.poll-select-choice .btn:hover {\n background: transparent;\n border: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n margin: 6px 0px;\n padding: 0px;\n padding-left: 6px;\n outline: none;\n text-align: left;\n}\n.poll-select-choice .btn .material-icon {\n margin-right: 6px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-heigh: 28px;\n color: #ced0da;\n}\n.poll-select-choice .btn.btn-selected .material-icon {\n color: #0052cc;\n}\n.poll-help {\n font-size: 12px;\n}\n.poll-chart-selected .material-icon {\n margin-right: 4px;\n position: relative;\n bottom: 1px;\n height: 14px;\n width: 14px;\n color: #36b37e;\n font-size: 14px;\n line-heigh: 14px;\n}\n.poll-options {\n margin-bottom: 0px;\n}\n@media screen and (max-width: 767px) {\n .poll-options {\n margin-top: -6px;\n }\n .poll-options .btn {\n margin: 6px 0px;\n }\n}\n.user-status.user-banned .status-icon {\n color: #ff5630;\n}\n.user-status.user-online .status-icon {\n color: #36b37e;\n}\n.user-status.user-offline .status-icon {\n color: #7a869a;\n}\n@media screen and (min-width: 768px) {\n .user-card {\n text-align: center;\n }\n}\n.user-card-small-avatar img {\n width: 100%;\n height: auto;\n}\n@media screen and (min-width: 768px) {\n .user-card-small-avatar {\n display: none;\n }\n}\n@media screen and (max-width: 767px) {\n .user-card-avatar {\n display: none;\n }\n}\n.toolbar {\n display: block;\n margin: 0 -15px;\n}\n.toolbar-section {\n justify-items: center;\n display: flex;\n flex: 1;\n margin-bottom: 20px;\n}\n.toolbar-item {\n flex: 1;\n padding: 0 15px;\n}\n.toolbar-item h3,\n.toolbar-item p {\n margin: 0;\n}\n.toolbar-item-shrink {\n flex: 0;\n}\n.toolbar-spacer {\n display: none;\n}\n@media screen and (min-width: 768px) {\n .toolbar {\n display: flex;\n }\n .toolbar-section,\n .toolbar-item {\n flex: 0;\n align-items: center;\n }\n .toolbar-section.toolbar-section-auto,\n .toolbar-section.toolbar-section-auto .toolbar-item {\n flex: 1;\n }\n .toolbar-spacer {\n display: block;\n flex: 1;\n }\n .toolbar-item .form-search {\n width: 250px;\n }\n}\n@media screen and (max-width: 767px) {\n .toolbar-item p {\n text-align: center;\n }\n}\nabbr {\n border: none !important;\n}\n.item-title {\n color: #172b4d;\n font-weight: bold;\n text-decoration: none;\n}\na.item-title:link,\na.item-title:active,\na.item-title:visited,\na.item-title:hover {\n color: #172b4d;\n font-weight: bold;\n}\na.item-title:hover {\n text-decoration: underline;\n}\n.message-line {\n text-align: center;\n}\n.message-line .material-icon {\n margin-right: 6.66666667px;\n font-size: 20px;\n line-height: 20px;\n height: 20px;\n width: 20px;\n}\n.text-ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.misago-markup h1,\n.misago-markup h2,\n.misago-markup h3,\n.misago-markup h4,\n.misago-markup h5,\n.misago-markup h6,\n.misago-markup p {\n word-wrap: break-word;\n}\n.misago-markup h1,\n.misago-markup h2,\n.misago-markup h3,\n.misago-markup h4,\n.misago-markup h5,\n.misago-markup h6 {\n margin-top: 40px;\n}\n.misago-markup > *,\n.misago-markup blockquote > * {\n margin: 20px 0px;\n}\n.misago-markup > *:first-child,\n.misago-markup blockquote > *:first-child {\n margin-top: 0px;\n}\n.misago-markup > *:last-child,\n.misago-markup blockquote > *:last-child {\n margin-bottom: 0px;\n}\n.misago-markup img {\n max-width: 100%;\n max-height: 500px;\n}\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background: #ebecf0;\n border: none;\n font-size: 14px;\n}\n.misago-markup .quote-block .quote-heading,\n.misago-markup blockquote .quote-heading {\n border-bottom: 1px solid #d4d6df;\n padding: 10px 20px;\n font-size: 12px;\n font-weight: bold;\n}\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n border: 1px solid #d4d6df;\n}\n.misago-markup .quote-body {\n background: #fff;\n margin: 0px;\n padding: 20px;\n}\n.misago-markup .quote-body > .quote-block,\n.misago-markup .quote-body > blockquote {\n border: 1px solid #d4d6df;\n}\n.misago-markup .spoiler-block {\n background: #ebecf0;\n border: none;\n font-size: 14px;\n}\n.misago-markup > .spoiler-block {\n border: 1px solid #d4d6df;\n position: relative;\n}\n.misago-markup .spoiler-body {\n background: #fff;\n margin: 0px;\n padding: 20px;\n}\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #fff;\n}\n.misago-markup .spoiler-block.revealed .spoiler-overlay {\n display: none;\n}\n.misago-markup ul {\n list-style-type: square;\n}\n.misago-markup ul li {\n list-style-type: square;\n}\n.misago-markup ol {\n list-style-type: decimal;\n}\n.misago-markup ol li {\n list-style-type: decimal;\n}\n.misago-markup pre {\n background: #eee;\n border: none;\n padding: 10px;\n overflow: hidden;\n color: #000;\n}\n.misago-markup pre code.hljs {\n margin: -10px;\n padding: 9.5px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview {\n border-radius: 6px;\n margin: 0px auto;\n overflow: hidden;\n position: relative;\n width: 200px;\n height: 200px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview .loader {\n display: none;\n position: absolute;\n top: 50px;\n height: 100px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel {\n border-width: 10px;\n border-color: #fff;\n border-left-color: transparent;\n border-right-color: transparent;\n width: 100px;\n height: 100px;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading img {\n filter: alpha(opacity=33);\n opacity: 0.33;\n}\n.modal-change-avatar .modal-avatar-index .avatar-preview.preview-loading .loader {\n display: block;\n}\n@media (max-width: 699px) {\n .modal-change-avatar .modal-avatar-index .avatar-preview {\n margin-bottom: 20px;\n width: 150px;\n height: 150px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview img {\n width: 150px;\n height: 150px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview .loader {\n top: 25px;\n height: 100px;\n }\n .modal-change-avatar .modal-avatar-index .avatar-preview .loader .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n}\n.modal-change-avatar .modal-avatar-index .btn {\n text-align: left;\n}\n.modal-change-avatar .modal-avatar-upload {\n text-align: center;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file {\n background: transparent;\n border: 2px solid #ebecf0;\n border-radius: 6px;\n padding: 10px 24px;\n -webkit-box-shadow: none;\n box-shadow: none;\n color: #7a869a;\n font-size: 18px;\n text-align: center;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file > .material-icon {\n display: block;\n margin: 0px auto;\n margin-bottom: 13.2px;\n font-size: 50px;\n width: 50px;\n height: 50px;\n}\n.modal-change-avatar .modal-avatar-upload .btn-pick-file:hover,\n.modal-change-avatar .modal-avatar-upload .btn-pick-file:active {\n border-color: #0052cc;\n color: #0052cc;\n}\n.modal-change-avatar .modal-avatar-upload .text-muted {\n margin-top: 13.2px;\n}\n.modal-change-avatar .modal-avatar-upload .upload-progress img {\n border-radius: 4px;\n margin-bottom: 20px;\n max-height: 80px;\n width: auto;\n}\n.modal-change-avatar .modal-avatar-upload .upload-progress .progress {\n width: 70%;\n margin: 0px auto;\n}\n.modal-avatar-crop .crop-form {\n margin: 0px auto;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input {\n margin-top: 10px;\n -webkit-appearance: none;\n border: 1px solid white;\n width: 100%;\n /*hide the outline behind the border*/\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n background: #ebecf0;\n border: none;\n border-radius: 3px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n margin-top: -6px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus {\n outline: none;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-webkit-slider-runnable-track {\n background: #ebecf0;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-track {\n width: 100%;\n height: 8px;\n background: #ebecf0;\n border: none;\n border-radius: 4px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-moz-range-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-track {\n width: 100%;\n height: 8px;\n /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */\n background: transparent;\n /*leave room for the larger thumb to overflow with a transparent border */\n border-color: transparent;\n border-width: 8px 0;\n /*remove default tick marks*/\n color: transparent;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-lower {\n background: #ebecf0;\n border-radius: 16px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-fill-upper {\n background: #ebecf0;\n border-radius: 16px;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input::-ms-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: #7a869a;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-lower {\n background: #ebecf0;\n}\n.modal-avatar-crop .crop-form .cropit-image-zoom-input:focus::-ms-fill-upper {\n background: #ebecf0;\n}\n.modal-change-avatar .modal-avatar-gallery {\n padding-bottom: 0px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery {\n margin-bottom: 20px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery h3 {\n margin-top: 0px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .row {\n margin-bottom: 10px;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn {\n border-radius: 6px;\n border: 2px solid #ebecf0;\n background: none;\n padding: 2px;\n position: relative;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:hover,\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:focus {\n border-color: #7a869a;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn.avatar-selected,\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn:active {\n border-color: #0065ff;\n}\n.modal-change-avatar .modal-avatar-gallery .avatars-gallery-images .btn img {\n border-radius: 4px;\n width: 100%;\n height: auto;\n}\n.category-main .read-status .material-icon {\n color: #ebecf0;\n}\n.category-main .read-status.item-new .material-icon {\n color: #0052cc;\n}\n.category-last-thread .media-heading a {\n display: inline-block;\n overflow: hidden;\n white-space: nowrap;\n width: 290px;\n text-overflow: ellipsis;\n vertical-align: top;\n}\n@media screen and (max-width: 991px) {\n .category-last-thread .media-heading a {\n width: 275px;\n }\n}\n@media screen and (max-width: 767px) {\n .category-last-thread .media-heading a {\n width: 260px;\n }\n}\n.category-thread-message .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.category-thread-message p {\n margin: 0px;\n}\n.list-inline.subcategories-list {\n overflow: auto;\n margin-top: -10px;\n}\n.list-inline.subcategories-list li {\n display: block;\n float: left;\n}\n.list-inline.subcategories-list li a,\n.list-inline.subcategories-list li a:link,\n.list-inline.subcategories-list li a:visited,\n.list-inline.subcategories-list li a:active,\n.list-inline.subcategories-list li a:hover,\n.list-inline.subcategories-list li a:focus {\n background-color: #ebecf0;\n border: 1px solid #dcdee5;\n border-radius: 4px;\n display: inline-block;\n margin-top: 10px;\n padding: 6px 12px;\n color: #5e6c84;\n}\n.list-inline.subcategories-list li:focus,\n.list-inline.subcategories-list li a:hover,\n.list-inline.subcategories-list li a:active {\n background-color: #dcdee5;\n color: #172b4d;\n text-decoration: none;\n}\n.row.subcategories-list .btn {\n margin-top: 20px;\n text-align: left;\n}\n#posting-placeholder {\n background-color: #ebecf0;\n display: none;\n margin-top: 30px;\n margin-bottom: -30px;\n padding: 20px 0px;\n transition: height 300ms;\n}\n#posting-placeholder.slide-in {\n display: block;\n}\n#posting-placeholder .first-row {\n margin-bottom: 20px;\n}\n#posting-placeholder .first-row .form-control {\n border: 1px solid #bfc2cf;\n}\n#posting-placeholder .first-row .posting-options .btn {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n#posting-placeholder .first-row .posting-options .btn .btn-text {\n margin-left: 5px;\n position: relative;\n top: 1px;\n}\n#posting-placeholder .first-row .posting-options .material-icon {\n width: 14px;\n height: 24px;\n margin-right: 0px;\n position: relative;\n top: 5px;\n font-size: 14px;\n line-height: 14px;\n text-align: center;\n}\n.posting-ui-preview {\n padding: 20px 0px;\n position: relative;\n}\n.posting-ui-preview .form-control {\n box-shadow: none;\n resize: none;\n}\n.posting-loader {\n text-align: center;\n}\n.posting-loader .loader {\n height: 100px;\n}\n.posting-loader .loader .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n}\n.posting-message {\n text-align: center;\n}\n.posting-message .material-icon {\n margin-right: 6.66666667px;\n position: relative;\n top: -1px;\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.posting-message .message-body p {\n font-size: 18px;\n}\n.editor-border {\n background-color: #fff;\n border: 1px solid #bfc2cf;\n border-radius: 4px;\n}\n.editor-border .form-control {\n border: none;\n resize: none;\n}\n.editor-border .form-control,\n.editor-border .form-control:focus,\n.editor-border .form-control:active {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.editor-footer {\n border-top: 1px solid #bfc2cf;\n padding: 6px 12px;\n overflow: auto;\n}\n.editor-footer .pull-left {\n margin-right: 12px;\n}\n.editor-footer .pull-right {\n margin-left: 12px;\n}\n.editor-footer .btn-icon .material-icon {\n margin-bottom: -2px;\n}\n@media screen and (max-width: 991px) {\n .editor-footer .buttons-list {\n float: none !important;\n margin: 0px;\n margin-bottom: 10px;\n }\n .editor-footer .buttons-list .btn {\n display: inline-block;\n float: none !important;\n margin: 6.66666667px;\n }\n .editor-footer .btn-protect .btn-text {\n margin-left: 10px;\n }\n .editor-footer .btn-protect .material-icon {\n position: relative;\n bottom: 2px;\n width: 14px;\n height: 14px;\n font-size: 14px;\n line-height: 14px;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .buttons-list .btn:first-child {\n margin-left: 0px;\n }\n}\n@media screen and (max-width: 767px) {\n .buttons-list {\n text-align: center;\n }\n .buttons-list .btn-protect {\n display: block;\n float: none !important;\n width: 100%;\n margin: 0px;\n margin-top: 10px;\n }\n}\n.editor-attachments-list {\n margin: 0px;\n padding: 0px;\n}\n.editor-attachments-list li {\n margin: 0px;\n}\n.editor-attachment-complete {\n border-top: 1px solid #bfc2cf;\n padding: 6px 0px;\n padding-right: 12px;\n}\n.editor-attachment-complete .editor-attachment-image {\n float: left;\n width: 50px;\n}\n.editor-attachment-complete .editor-attachment-image a {\n background-size: cover;\n background-position: center;\n border-radius: 3px;\n display: block;\n margin: 0px auto;\n width: 36px;\n height: 36px;\n}\n.editor-attachment-complete .editor-attachment-icon {\n float: left;\n width: 50px;\n text-align: center;\n}\n.editor-attachment-complete .editor-attachment-icon .material-icon {\n position: relative;\n top: 2px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.editor-attachment-complete .editor-attachment-details {\n margin-left: 50px;\n}\n.editor-attachment-complete .editor-attachment-details h4,\n.editor-attachment-complete .editor-attachment-details p {\n margin: 0px;\n padding: 0px;\n font-size: 14px;\n}\n.editor-attachment-complete .editor-attachment-details p {\n margin-top: 3px;\n color: #7a869a;\n font-size: 12px;\n}\n.editor-attachment-complete .editor-attachment-details abbr {\n white-space: nowrap;\n}\n@media screen and (min-width: 768px) {\n .editor-attachment-actions {\n padding-top: 3px;\n }\n}\n@media screen and (max-width: 767px) {\n .editor-attachment-actions {\n padding-left: 12px;\n padding-right: 12px;\n }\n}\n.editor-attachment-error {\n border-top: 1px solid #bfc2cf;\n padding: 6px 0px;\n padding-right: 12px;\n}\n.editor-attachment-error-icon {\n float: left;\n width: 50px;\n text-align: center;\n}\n.editor-attachment-error-icon .material-icon {\n position: relative;\n top: 2px;\n height: 28px;\n width: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.editor-attachment-error-message {\n margin-left: 50px;\n padding: 6px 0px;\n position: relative;\n}\n.editor-attachment-error-message h4,\n.editor-attachment-error-message p {\n margin: 0px;\n padding: 0px;\n font-size: 14px;\n}\n.editor-attachment-error-message p {\n margin-top: 3px;\n font-size: 12px;\n}\n.editor-attachment-error-message .btn {\n position: absolute;\n top: 9px;\n right: 12px;\n}\n@media screen and (max-width: 767px) {\n .editor-attachment-error-message .btn {\n display: block;\n margin-top: 10px;\n position: static;\n }\n}\n.editor-attachment-progress-bar {\n background: #bfc2cf;\n overflow: auto;\n}\n.editor-attachment-progress {\n background: #0052cc;\n float: left;\n height: 1px;\n}\n.editor-attachment-upload-message {\n margin: 0px;\n padding: 6px 12px;\n}\n#editor-upload-field {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}\n.atwho-view ul li img {\n border-radius: 3px;\n margin-right: 4.66666667px;\n width: 20px;\n height: 20px;\n}\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user {\n margin-bottom: 20px;\n}\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user,\n.participant-card .btn-user:hover,\n.participant-card .dropdown.open .btn-user:hover,\n.participant-card .btn-user:focus,\n.participant-card .dropdown.open .btn-user:focus,\n.participant-card .btn-user:focus:active,\n.participant-card .dropdown.open .btn-user:focus:active {\n padding: 0px;\n overflow: hidden;\n text-align: left;\n}\n.participant-card .btn-user img,\n.participant-card .dropdown.open .btn-user img {\n background-color: #fff;\n width: 34px;\n height: 34px;\n margin-right: 8px;\n}\n.panel-participants p {\n margin: 0px;\n margin-top: 7px;\n}\n.poll-choices-control .list-group-item {\n padding: 0px;\n}\n.poll-choices-control .list-group-item .btn {\n background: transparent;\n border: transparent;\n float: left;\n margin: 0px 2px;\n margin-bottom: -29px;\n padding: 0px;\n width: 28px;\n height: 28px;\n position: relative;\n top: 3px;\n}\n.poll-choices-control .list-group-item .btn .material-icon {\n width: 28px;\n height: 28px;\n font-size: 28px;\n line-height: 28px;\n}\n.poll-choices-control input,\n.poll-choices-control input:focus,\n.poll-choices-control input:active {\n background: transparent;\n border: none;\n -webkit-box-shadow: none;\n box-shadow: none;\n outline: none;\n margin-left: 30px;\n padding: 6px 12px;\n width: 100%;\n}\n.posts-list {\n margin: 0px;\n padding: 0px;\n clear: both;\n}\n.posts-list li {\n list-style: none;\n margin: 0px;\n padding: 0px;\n}\n@media screen and (min-width: 992px) {\n .panel-post .panel-body {\n display: flex;\n }\n .post-side {\n flex-shrink: 0;\n width: 260px;\n padding-right: 15px;\n }\n .panel-content {\n flex: 1 0;\n }\n}\n.post-side {\n font-size: 12px;\n}\n.post-side .media {\n margin: 0px;\n}\n.post-side .poster-avatar {\n height: 36px;\n width: 36px;\n}\n@media screen and (min-width: 992px) {\n .post-side .poster-avatar {\n margin-top: 4px;\n height: 82px;\n width: 82px;\n }\n}\n.post-side .user-status {\n margin-right: 4px;\n}\n.post-side .media-heading {\n display: block;\n}\n.post-side .media-heading {\n margin: 0px;\n margin-top: -1px;\n font-size: 14px;\n}\n.post-side .media-heading .user-status {\n margin-right: 0;\n margin-left: 2px;\n}\n.post-side .pull-right {\n margin-left: 16px;\n}\n@media screen and (min-width: 992px) {\n .post-side .media-heading {\n margin-top: 3px;\n font-size: 18px;\n }\n .post-side .media-heading .user-status {\n display: none;\n }\n .post-side .user-title {\n margin-top: 4px;\n margin-bottom: 5px;\n }\n .post-side .user-postcount {\n display: block;\n }\n .post-side .user-status {\n display: block;\n }\n}\n.post-heading {\n height: 36px;\n}\n@media screen and (max-width: 991px) {\n .post-heading {\n margin-top: 10px;\n }\n}\n.post-heading .pull-right {\n margin-left: 16px;\n}\n.post-heading > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-heading .label {\n margin-top: 6px;\n font-size: 14px;\n font-weight: normal;\n}\n.post-heading .label-unread {\n background-color: #36b37e;\n color: #fff;\n}\n@media screen and (min-width: 992px) {\n .post-side .pull-right {\n display: none;\n }\n}\n@media screen and (max-width: 991px) {\n .post-heading .pull-right {\n display: none;\n }\n}\n.post-body {\n padding-top: 20px;\n padding-bottom: 30px;\n}\n.post-status-message {\n overflow: auto;\n}\n.post-status-message .material-icon {\n float: left;\n font-size: 28px;\n line-height: 28px;\n}\n.post-status-message p {\n margin: 0px;\n margin-top: 4px;\n margin-left: 36px;\n}\n.post-status-best-answer {\n background-color: #36b37e;\n color: #fff;\n}\n.post-status-hidden {\n background-color: #ff5630;\n color: #fff;\n}\n.post-status-unapproved {\n background-color: #0052cc;\n color: #fff;\n}\n.post-status-protected {\n background-color: #5e6c84;\n color: #fff;\n}\n.post-footer .pull-left {\n margin-right: 16px;\n}\n.post-footer .pull-right {\n margin-left: 16px;\n}\n.post-footer p {\n padding-top: 7px;\n padding-bottom: 6px;\n margin-bottom: 0px;\n}\n.post-attachments {\n border-top: 1px solid #ebecf0;\n padding: 6px 16px;\n}\n.post-attachments abbr {\n white-space: nowrap;\n}\n.post-attachments .attachment-name {\n word-wrap: break-word;\n}\n.post-attachments .row > div {\n margin: 10px 0px;\n}\n.post-attachments .post-attachment-preview {\n float: left;\n height: 40px;\n width: 40px;\n text-align: center;\n}\n.post-attachments .post-attachment {\n margin-left: 52px;\n}\n.post-attachments .post-thumbnail {\n display: block;\n background-size: cover;\n background-position: center;\n border-radius: 3px;\n width: 40px;\n height: 40px;\n}\n.post-attachments .material-icon {\n width: 28px;\n height: 28px;\n position: relative;\n top: 5px;\n font-size: 28px;\n line-height: 28px;\n}\n.post-attachments .material-icon:link,\n.post-attachments .material-icon:active,\n.post-attachments .material-icon:visited,\n.post-attachments .material-icon:hover,\n.post-attachments .material-icon:focus {\n color: #172b4d;\n text-decoration: none;\n}\n.post-attachments .post-attachment-description {\n margin: 0px;\n padding: 0px;\n color: #7a869a;\n font-size: 12px;\n}\n.post-feed .post-side {\n width: 100%;\n padding-right: 0;\n}\n.post-feed .post-side .media-heading {\n margin: 0px;\n font-size: 14px;\n}\n.post-feed .post-side .user-title {\n margin: 0px;\n font-size: 12px;\n}\n.post-feed .post-side .btn {\n display: inline-block;\n}\n.post-feed .post-side img {\n margin-top: 0px;\n width: 36px;\n height: 36px;\n}\n.post-feed .post-heading {\n height: auto;\n margin: 10px 0px;\n}\n.post-feed .post-heading .btn {\n margin-right: 16px;\n max-width: 100%;\n text-align: left;\n white-space: normal;\n word-wrap: break-word;\n}\n.posts-list .event {\n margin-bottom: 20px;\n color: #7a869a;\n}\n.posts-list .event .event-body {\n display: flex;\n align-items: flex-start;\n}\n.posts-list .event-label {\n margin-left: 51px;\n}\n.posts-list .event-label .label-unread {\n background-color: #36b37e;\n color: #fff;\n}\n.posts-list .event .event-icon {\n padding-right: 15px;\n}\n.posts-list .event .event-icon .event-icon-bg {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 36px;\n width: 36px;\n background: #ebecf0;\n border-radius: 4px;\n color: #5e6c84;\n}\n.posts-list .event .event-icon .material-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 28px;\n}\n.posts-list .event .event-content {\n flex: 1 0;\n}\n.posts-list .event .event-message {\n margin-bottom: 5px;\n font-size: 18px;\n}\n.posts-list .event .event-info {\n margin: 0px;\n font-size: 12px;\n}\n.posts-list .event .event-info li {\n margin-right: 12px;\n}\n.posts-list .event .event-info li:last-child {\n margin-right: 0px;\n}\n.posts-list .event .event-controls .btn-link {\n border: 0px;\n margin: 0px;\n margin-right: 12px;\n padding: 0px;\n font-size: 12px;\n}\n.posts-list .event .event-controls .btn-link:last-child {\n margin-right: 0px;\n}\n@media screen and (max-width: 767px) {\n .posts-list .event .event-info {\n margin-top: 5px;\n }\n .posts-list .event .event-controls {\n clear: both;\n margin-top: 5px;\n }\n .posts-list .event .event-controls .btn-link {\n margin-right: 20px;\n font-size: 14px;\n }\n .posts-list .event .event-controls .btn-link:last-child {\n margin-right: 0px;\n }\n}\n@media screen and (min-width: 992px) {\n .posts-list .event .event-icon {\n justify-content: flex-end;\n flex-shrink: 0;\n display: flex;\n width: 275px;\n }\n .event-content {\n flex: 1 0;\n }\n .posts-list .event-label {\n margin-left: 275px;\n }\n}\n.post-changelog-diff {\n padding: 0px;\n margin: 0px;\n}\n.post-changelog-diff .list-unstyled {\n padding: 0px;\n margin: 5px 0px;\n}\n.post-changelog-diff .diff-item {\n padding: 5px 10px;\n}\n.post-changelog-diff .diff-item-sub {\n color: #ff5630;\n}\n.post-changelog-diff .diff-item-add {\n color: #36b37e;\n}\n.post-changelog-toolbar .row {\n margin-left: -12px;\n margin-right: -12px;\n}\n@media screen and (max-width: 767px) {\n .post-changelog-toolbar .post-change-label {\n text-align: center;\n }\n}\n@media screen and (max-width: 767px) {\n .page-message .message-panel,\n .page-error .message-panel {\n text-align: center;\n }\n .page-message .message-icon,\n .page-error .message-icon {\n margin: 30px;\n font-size: 80px;\n }\n}\n@media screen and (min-width: 768px) {\n .page-message .message-panel,\n .page-error .message-panel {\n margin: 60px auto;\n max-width: 779.35px;\n overflow: auto;\n }\n .page-message .message-icon,\n .page-error .message-icon {\n float: left;\n }\n .page-message .message-icon .material-icon,\n .page-error .message-icon .material-icon {\n font-size: 80px;\n }\n .page-message .message-body,\n .page-error .message-body {\n margin-top: 16px;\n margin-left: 100px;\n font-size: 18px;\n }\n .page-message .message-body p.lead,\n .page-error .message-body p.lead {\n font-size: 36px;\n }\n}\n.threads-list {\n margin-bottom: 20px;\n}\n.threads-list-item {\n display: flex;\n align-items: center;\n}\n.threads-list-item img {\n width: 32px;\n height: 32px;\n}\n.threads-list-item-top-row {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n}\n.threads-list-item-bottom-row {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.threads-list-item-col-icon {\n padding-right: 15px;\n}\n.threads-list-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 3px;\n font-size: 16px;\n line-height: 16px;\n}\n.threads-list-icon:link,\n.threads-list-icon:active,\n.threads-list-icon:focus,\n.threads-list-icon:hover,\n.threads-list-icon:visited {\n background-color: #ebecf0;\n color: #7a869a;\n text-decoration: none;\n}\n.threads-list-icon-new:link,\n.threads-list-icon-new:active,\n.threads-list-icon-new:focus,\n.threads-list-icon-new:hover,\n.threads-list-icon-new:visited {\n background-color: #0052cc;\n color: #fff;\n}\n.threads-list-item-col-title {\n flex: 1;\n}\na.threads-list-item-title:link,\na.threads-list-item-title:active,\na.threads-list-item-title:focus,\na.threads-list-item-title:hover,\na.threads-list-item-title:visited {\n font-size: 16px;\n color: #172b4d;\n overflow-wrap: break-word;\n}\na.threads-list-item-title-sm {\n font-size: 18px;\n}\na.threads-list-item-title-sm:link,\na.threads-list-item-title-sm:active,\na.threads-list-item-title-sm:focus,\na.threads-list-item-title-sm:hover,\na.threads-list-item-title-sm:visited {\n color: #5e6c84;\n overflow-wrap: break-word;\n}\na.threads-list-item-title-new:link,\na.threads-list-item-title-new:active,\na.threads-list-item-title-new:focus,\na.threads-list-item-title-new:hover,\na.threads-list-item-title-new:visited {\n color: #172b4d;\n}\n.threads-list-item-col-flags {\n padding-left: 15px;\n}\n.threads-list-item .thread-flags {\n opacity: 0.8;\n}\n.threads-list-item:hover .thread-flags,\n.threads-list-item:focus .thread-flags {\n opacity: 1;\n}\n.threads-list-item-col-category {\n padding-left: 15px;\n white-space: nowrap;\n}\n.threads-list-category-label {\n padding: 3px 6px;\n border-radius: 3px;\n font-size: 12px;\n font-weight: bold;\n}\n.threads-list-category-label,\n.threads-list-category-label:link,\n.threads-list-category-label:active,\n.threads-list-category-label:hover,\n.threads-list-category-label:focus,\n.threads-list-category-label:visited {\n color: #344563;\n background: #ebecf0;\n text-decoration: none;\n}\n.threads-list-category-label.threads-list-category-label-color,\n.threads-list-category-label.threads-list-category-label-color:link,\n.threads-list-category-label.threads-list-category-label-color:active,\n.threads-list-category-label.threads-list-category-label-color:hover,\n.threads-list-category-label.threads-list-category-label-color:focus,\n.threads-list-category-label.threads-list-category-label-color:visited {\n color: #fff;\n background: var(--label-color);\n}\n.threads-list-item-parent-category {\n border-radius: 3px 0 0 3px;\n margin-right: 2px;\n}\n.threads-list-item-parent-category + .threads-list-category-label {\n border-radius: 0 3px 3px 0;\n}\n.threads-list-item-col-replies {\n width: 80px;\n padding-left: 15px;\n}\n.threads-list-item-col-last-poster {\n padding-left: 15px;\n}\n.threads-list-item-col-last-poster img {\n border-radius: 3px;\n}\n.threads-list-item-col-last-activity {\n width: 120px;\n padding-left: 15px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.threads-list-item-col-last-activity a:link,\n.threads-list-item-col-last-activity a:hover,\n.threads-list-item-col-last-activity a:active,\n.threads-list-item-col-last-activity a:visited,\n.threads-list-item-col-last-activity a:focus {\n color: #344563;\n font-size: 16px;\n}\n.threads-list-item-col-checkbox,\n.threads-list-item-col-subscription {\n padding-left: 15px;\n}\n.threads-list-item-title-sm,\n.threads-list-item-col-checkbox-sm {\n display: none;\n}\n@media screen and (max-width: 767px) {\n .threads-list {\n margin-left: -15px;\n margin-right: -15px;\n }\n .threads-list .list-group,\n .threads-list .list-group-item {\n border-radius: 0;\n border-left: 0;\n border-right: 0;\n }\n .threads-list-item-title {\n display: none;\n }\n .threads-list-item-title-sm {\n display: inline-block;\n }\n .threads-list-item-col-icon {\n display: none;\n }\n}\n@media screen and (max-width: 991px) {\n .threads-list-item {\n display: block;\n }\n .threads-list-item img {\n width: 20px;\n height: 20px;\n }\n .threads-list-item-top-row {\n align-items: start;\n margin-bottom: 7.5px;\n }\n .threads-list-item-bottom-row {\n justify-content: end;\n flex: 0;\n }\n .threads-list-item-bottom-row > div {\n width: auto;\n padding: 0 0 0 15px;\n }\n .threads-list-item-col-subscription,\n .threads-list-item-col-checkbox {\n display: none;\n }\n .threads-list-item-col-checkbox-sm {\n display: block;\n padding-left: 15px;\n }\n .threads-list-item-col-checkbox-sm .btn-icon {\n padding: 4px;\n }\n .threads-list-item-col-checkbox-sm .btn-icon .material-icon {\n font-size: 16px;\n }\n}\n.threads-list-item-is-busy .btn-icon {\n opacity: 0.8;\n animation: busy 0.75s linear infinite;\n}\n@keyframes busy {\n 50% {\n opacity: 0.5;\n }\n}\n.threads-list-update-prompt {\n padding: 0;\n}\n.threads-list-update-prompt-btn {\n padding: 10px 16px;\n background: #d6e7ff;\n color: #003d99;\n border: none;\n border-radius: 3px 3px 0 0;\n}\n.threads-list-update-prompt-btn:hover,\n.threads-list-update-prompt-btn:focus {\n background: #e6f0ff;\n color: #0052cc;\n}\n.threads-list-update-prompt-btn:active {\n background: #b3d1ff;\n color: #0066ff;\n}\n.active-posters li {\n display: block;\n overflow: auto;\n}\n.active-posters .rank-user-avatar {\n float: left;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-user-avatar {\n height: 42px;\n }\n .active-posters .rank-user-avatar img {\n width: 36px;\n height: 36px;\n position: relative;\n top: 3px;\n }\n}\n.active-posters .rank-user {\n float: left;\n margin-top: 3px;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-user {\n margin-left: 13.2px;\n width: 40%;\n }\n}\n@media screen and (max-width: 767px) {\n .active-posters .rank-user {\n float: none;\n margin-left: 50px;\n width: auto;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .rank-user {\n margin-left: 16px;\n width: 25%;\n }\n .active-posters .rank-user .user-name {\n font-size: 18px;\n }\n}\n.active-posters .user-details {\n overflow: auto;\n font-family: Sans-Serif;\n}\n.active-posters .user-details .user-status,\n.active-posters .user-details .rank-name,\n.active-posters .user-details .user-title {\n display: block;\n float: left;\n margin-right: 3px;\n font-size: 12px;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-details .user-status,\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n margin-right: 8px;\n }\n}\n.active-posters .user-details .user-title {\n margin-right: 0px;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-details {\n overflow: visible;\n }\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n height: 14px;\n overflow: hidden;\n position: relative;\n top: 1px;\n vertical-align: baseline;\n }\n}\n@media screen and (max-width: 767px) {\n .active-posters .user-details {\n margin-top: 3px;\n }\n .active-posters .user-details .rank-name,\n .active-posters .user-details .user-title {\n font-weight: normal;\n }\n}\n.active-posters .user-status {\n overflow: auto;\n position: relative;\n top: 1px;\n}\n.active-posters .user-status span {\n display: block;\n float: left;\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-status {\n height: 14px;\n overflow: hidden;\n }\n}\n.active-posters .user-status .status-icon {\n position: relative;\n}\n@media screen and (max-width: 991px) {\n .active-posters .user-status .status-icon {\n top: 0px;\n width: 12px;\n height: 12px;\n font-size: 12px;\n line-height: 12px;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .user-status .status-icon {\n top: 1px;\n margin-right: 3px;\n width: 13px;\n height: 13px;\n font-size: 13px;\n line-height: 13px;\n }\n}\n.active-posters .status-label.ui-preview-text,\n.active-posters .rank-name .ui-preview-text,\n.active-posters .user-title .ui-preview-text {\n height: 11px;\n position: relative;\n top: 2px;\n font-size: 11px;\n line-height: 11px;\n}\n.active-posters .rank-name .ui-preview-text,\n.active-posters .user-title .ui-preview-text {\n position: static;\n}\n.active-posters .rank-position strong,\n.active-posters .rank-posts-counted strong,\n.active-posters .rank-posts-total strong,\n.active-posters .rank-position small,\n.active-posters .rank-posts-counted small,\n.active-posters .rank-posts-total small {\n display: block;\n}\n@media screen and (max-width: 991px) {\n .active-posters .rank-position,\n .active-posters .rank-posts-counted,\n .active-posters .rank-posts-total {\n overflow: auto;\n }\n .active-posters .rank-position strong,\n .active-posters .rank-posts-counted strong,\n .active-posters .rank-posts-total strong,\n .active-posters .rank-position small,\n .active-posters .rank-posts-counted small,\n .active-posters .rank-posts-total small {\n float: left;\n font-size: 10.5px;\n }\n .active-posters .rank-position strong,\n .active-posters .rank-posts-counted strong,\n .active-posters .rank-posts-total strong {\n min-width: 30px;\n margin-right: 3px;\n text-align: right;\n }\n .active-posters .rank-position .ui-preview-text,\n .active-posters .rank-posts-counted .ui-preview-text,\n .active-posters .rank-posts-total .ui-preview-text {\n height: 8px;\n position: relative;\n top: -1px;\n font-size: 8px;\n line-height: 8px;\n }\n}\n@media screen and (min-width: 992px) {\n .active-posters .rank-position,\n .active-posters .rank-posts-counted,\n .active-posters .rank-posts-total {\n float: left;\n margin-top: 3px;\n width: 23%;\n font-size: 18px;\n text-align: center;\n }\n .active-posters .rank-position small,\n .active-posters .rank-posts-counted small,\n .active-posters .rank-posts-total small {\n font-size: 12px;\n font-weight: normal;\n }\n}\n.user-compact-stats .rank-position strong,\n.user-compact-stats .rank-posts-counted strong,\n.user-compact-stats .rank-position small,\n.user-compact-stats .rank-posts-counted small {\n display: inline-block;\n float: none;\n}\n.user-compact-stats .rank-position strong,\n.user-compact-stats .rank-posts-counted strong {\n min-width: auto;\n}\n.user-compact-stats .rank-position small,\n.user-compact-stats .rank-posts-counted small {\n margin-right: 20px;\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .active-posters .rank-position {\n margin-top: 6px;\n }\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n@media screen and (min-width: 768px) and (max-width: 991px) {\n .active-posters .rank-position {\n margin-top: 6px;\n }\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n.profile-page-header-avatar {\n text-align: center;\n margin: 20px 0;\n}\n.profile-page-header-avatar .user-avatar {\n border-radius: 4px;\n}\n.profile-data-list {\n display: block;\n padding: 0;\n margin: 0 -12px;\n font-size: 12px;\n}\n.profile-data-list li {\n display: inline-block;\n list-style: none;\n padding: 5px 12px;\n}\n.profile-data-list .status-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n.profile-data-list .user-account-disabled {\n color: #ff5630;\n font-weight: bold;\n}\n@media screen and (min-width: 768px) {\n .profile-page-header {\n display: flex;\n align-items: flex-end;\n }\n .profile-page-header-avatar {\n margin: 0;\n margin-right: 30px;\n }\n}\n@media screen and (min-width: 992px) {\n .profile-page-header-avatar {\n position: relative;\n top: 54px;\n margin-top: -54px;\n }\n .profile-page-header-details {\n padding-left: 158px;\n }\n .profile-data-list {\n font-size: 14px;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history li {\n display: block;\n overflow: auto;\n }\n}\n.username-history .change-avatar {\n float: left;\n}\n.username-history .change-avatar a,\n.username-history .change-avatar span {\n margin-right: 10px;\n}\n.username-history .change-avatar a img,\n.username-history .change-avatar span img {\n width: 42px;\n height: 42px;\n}\n@media screen and (min-width: 992px) {\n .username-history .change-avatar a img,\n .username-history .change-avatar span img {\n width: 18px;\n height: 18px;\n position: relative;\n bottom: 1px;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history .change-author {\n float: left;\n width: 30%;\n }\n}\n.username-history .change {\n min-height: 20px;\n overflow: auto;\n}\n.username-history .change span {\n display: block;\n float: left;\n}\n.username-history .change .material-icon {\n margin: 0px 7px;\n position: relative;\n top: 4px;\n}\n@media screen and (min-width: 992px) {\n .username-history .change {\n float: left;\n width: 40%;\n }\n}\n@media screen and (min-width: 992px) {\n .username-history .change-date {\n float: left;\n width: 20%;\n }\n}\n.search-footer p {\n margin-top: 20px;\n color: #5e6c84;\n font-size: 12px;\n text-align: center;\n}\n@media screen and (min-width: 768px) {\n .page-search-form {\n padding-top: 40px;\n }\n}\n@media screen and (min-width: 992px) {\n .page-search-form {\n padding-bottom: 40px;\n }\n .page-search-form h1 {\n position: relative;\n top: 5px;\n }\n .page-search-form .form-group {\n margin-bottom: 0px;\n }\n}\n/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #eee;\n color: black;\n}\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n color: #070;\n}\n.hljs-emphasis {\n font-style: italic;\n}\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n color: #d14;\n}\n.hljs-strong {\n font-weight: bold;\n}\n.hljs-quote,\n.hljs-comment {\n color: #998;\n font-style: italic;\n}\n.hljs-section,\n.hljs-title {\n color: #900;\n}\n.hljs-class .hljs-title,\n.hljs-type {\n color: #458;\n}\n.hljs-variable,\n.hljs-template-variable {\n color: #336699;\n}\n.hljs-bullet {\n color: #997700;\n}\n.hljs-meta {\n color: #3344bb;\n}\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n color: #099;\n}\n.hljs-regexp {\n background-color: #fff0ff;\n color: #880088;\n}\n.hljs-symbol {\n color: #990073;\n}\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n color: #007700;\n}\n.atwho-view {\n position: absolute;\n top: 0;\n left: 0;\n display: none;\n margin-top: 18px;\n background: white;\n color: black;\n border: 1px solid #DDD;\n border-radius: 3px;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);\n min-width: 120px;\n z-index: 11110 !important;\n}\n.atwho-view .atwho-header {\n padding: 5px;\n margin: 5px;\n cursor: pointer;\n border-bottom: solid 1px #eaeff1;\n color: #6f8092;\n font-size: 11px;\n font-weight: bold;\n}\n.atwho-view .atwho-header .small {\n color: #6f8092;\n float: right;\n padding-top: 2px;\n margin-right: -5px;\n font-size: 12px;\n font-weight: normal;\n}\n.atwho-view .atwho-header:hover {\n cursor: default;\n}\n.atwho-view .cur {\n background: #3366FF;\n color: white;\n}\n.atwho-view .cur small {\n color: white;\n}\n.atwho-view strong {\n color: #3366FF;\n}\n.atwho-view .cur strong {\n color: white;\n font: bold;\n}\n.atwho-view ul {\n /* width: 100px; */\n list-style: none;\n padding: 0;\n margin: auto;\n max-height: 200px;\n overflow-y: auto;\n}\n.atwho-view ul li {\n display: block;\n padding: 5px 10px;\n border-bottom: 1px solid #DDD;\n cursor: pointer;\n /* border-top: 1px solid #C8C8C8; */\n}\n.atwho-view small {\n font-size: smaller;\n color: #777;\n font-weight: normal;\n}\nabbr {\n outline: none;\n text-decoration: none;\n}\n.shadow-2dp {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.04), 0 3px 1px -2px rgba(0, 0, 0, 0.06), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n}\n.shadow-3dp {\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.04), 0 3px 3px -2px rgba(0, 0, 0, 0.06), 0 1px 8px 0 rgba(0, 0, 0, 0.12);\n}\n.shadow-4dp {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.04), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n.shadow-6dp {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.04), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.06);\n}\n.shadow-8dp {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.06);\n}\n.shadow-16dp {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.04), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.06);\n}\n.shadow-24dp {\n box-shadow: 0 9px 46px 8px rgba(0, 0, 0, 0.04), 0 11px 15px -7px rgba(0, 0, 0, 0.12), 0 24px 38px 3px rgba(0, 0, 0, 0.06);\n}\n.btn-default,\n.btn-default:disabled,\n.btn-default:disabled:hover,\n.btn-default.disabled,\n.btn-default.disabled:hover,\n.btn-default.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default:disabled,\n.btn-default:disabled:hover,\n.btn-default.disabled,\n.btn-default.disabled:hover,\n.btn-default.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-default:hover,\n.btn-default:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default:active:focus,\n.btn-default:active,\n.dropdown.open .dropdown-toggle .btn-default,\n.dropdown.open .dropdown-toggle .btn-default:focus,\n.dropdown.open .dropdown-toggle .btn-default:active:focus,\n.dropdown.open .dropdown-toggle .btn-default:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-loading,\n.btn-default.btn-loading:disabled,\n.btn-default.btn-loading:disabled:hover,\n.btn-default.btn-loading:hover,\n.btn-default.btn-loading:focus,\n.btn-default.btn-loading:active:focus,\n.btn-default.btn-loading:active {\n color: transparent;\n}\n.btn-primary,\n.btn-primary:disabled,\n.btn-primary:disabled:hover,\n.btn-primary.disabled,\n.btn-primary.disabled:hover,\n.btn-primary.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary:disabled,\n.btn-primary:disabled:hover,\n.btn-primary.disabled,\n.btn-primary.disabled:hover,\n.btn-primary.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary:active:focus,\n.btn-primary:active,\n.dropdown.open .dropdown-toggle .btn-primary,\n.dropdown.open .dropdown-toggle .btn-primary:focus,\n.dropdown.open .dropdown-toggle .btn-primary:active:focus,\n.dropdown.open .dropdown-toggle .btn-primary:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-loading,\n.btn-primary.btn-loading:disabled,\n.btn-primary.btn-loading:disabled:hover,\n.btn-primary.btn-loading:hover,\n.btn-primary.btn-loading:focus,\n.btn-primary.btn-loading:active:focus,\n.btn-primary.btn-loading:active {\n color: transparent;\n}\n.btn-success,\n.btn-success:disabled,\n.btn-success:disabled:hover,\n.btn-success.disabled,\n.btn-success.disabled:hover,\n.btn-success.disabled:active {\n background: #00c853;\n border: 1px solid #00c853;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success:disabled,\n.btn-success:disabled:hover,\n.btn-success.disabled,\n.btn-success.disabled:hover,\n.btn-success.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-success:hover,\n.btn-success:focus {\n background: #00af48;\n border: 1px solid #00af48;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success:active:focus,\n.btn-success:active,\n.dropdown.open .dropdown-toggle .btn-success,\n.dropdown.open .dropdown-toggle .btn-success:focus,\n.dropdown.open .dropdown-toggle .btn-success:active:focus,\n.dropdown.open .dropdown-toggle .btn-success:hover {\n background: #007c33;\n border: 1px solid #007c33;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-success.btn-loading,\n.btn-success.btn-loading:disabled,\n.btn-success.btn-loading:disabled:hover,\n.btn-success.btn-loading:hover,\n.btn-success.btn-loading:focus,\n.btn-success.btn-loading:active:focus,\n.btn-success.btn-loading:active {\n color: transparent;\n}\n.btn-danger,\n.btn-danger:disabled,\n.btn-danger:disabled:hover,\n.btn-danger.disabled,\n.btn-danger.disabled:hover,\n.btn-danger.disabled:active {\n background: #ef5350;\n border: 1px solid #ef5350;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger:disabled,\n.btn-danger:disabled:hover,\n.btn-danger.disabled,\n.btn-danger.disabled:hover,\n.btn-danger.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background: #ff8a80;\n border: 1px solid #ff8a80;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger:active:focus,\n.btn-danger:active,\n.dropdown.open .dropdown-toggle .btn-danger,\n.dropdown.open .dropdown-toggle .btn-danger:focus,\n.dropdown.open .dropdown-toggle .btn-danger:active:focus,\n.dropdown.open .dropdown-toggle .btn-danger:hover {\n background: #d32f2f;\n border: 1px solid #d32f2f;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-danger.btn-loading,\n.btn-danger.btn-loading:disabled,\n.btn-danger.btn-loading:disabled:hover,\n.btn-danger.btn-loading:hover,\n.btn-danger.btn-loading:focus,\n.btn-danger.btn-loading:active:focus,\n.btn-danger.btn-loading:active {\n color: transparent;\n}\n.btn-default.btn-outline,\n.btn-default.btn-outline:disabled,\n.btn-default.btn-outline:disabled:hover,\n.btn-default.btn-outline.disabled,\n.btn-default.btn-outline.disabled:hover,\n.btn-default.btn-outline.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline:disabled,\n.btn-default.btn-outline:disabled:hover,\n.btn-default.btn-outline.disabled,\n.btn-default.btn-outline.disabled:hover,\n.btn-default.btn-outline.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-default.btn-outline:hover,\n.btn-default.btn-outline:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline:active:focus,\n.btn-default.btn-outline:active,\n.dropdown.open .btn-default.btn-outline,\n.dropdown.open .btn-default.btn-outline:focus,\n.dropdown.open .btn-default.btn-outline:active:focus,\n.dropdown.open .btn-default.btn-outline:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default.btn-outline.btn-loading,\n.btn-default.btn-outline.btn-loading:disabled,\n.btn-default.btn-outline.btn-loading:disabled:hover,\n.btn-default.btn-outline.btn-loading:hover,\n.btn-default.btn-outline.btn-loading:focus,\n.btn-default.btn-outline.btn-loading:active:focus,\n.btn-default.btn-outline.btn-loading:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline,\n.btn-primary.btn-outline:disabled,\n.btn-primary.btn-outline:disabled:hover,\n.btn-primary.btn-outline.disabled,\n.btn-primary.btn-outline.disabled:hover,\n.btn-primary.btn-outline.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline:disabled,\n.btn-primary.btn-outline:disabled:hover,\n.btn-primary.btn-outline.disabled,\n.btn-primary.btn-outline.disabled:hover,\n.btn-primary.btn-outline.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.btn-primary.btn-outline:hover,\n.btn-primary.btn-outline:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline:active:focus,\n.btn-primary.btn-outline:active,\n.dropdown.open .btn-primary.btn-outline,\n.dropdown.open .btn-primary.btn-outline:focus,\n.dropdown.open .btn-primary.btn-outline:active:focus,\n.dropdown.open .btn-primary.btn-outline:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-primary.btn-outline.btn-loading,\n.btn-primary.btn-outline.btn-loading:disabled,\n.btn-primary.btn-outline.btn-loading:disabled:hover,\n.btn-primary.btn-outline.btn-loading:hover,\n.btn-primary.btn-outline.btn-loading:focus,\n.btn-primary.btn-outline.btn-loading:active:focus,\n.btn-primary.btn-outline.btn-loading:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in {\n border-radius: 4px;\n}\n.navbar-misago .btn-sign-in,\n.navbar-misago .btn-sign-in:disabled,\n.navbar-misago .btn-sign-in:disabled:hover,\n.navbar-misago .btn-sign-in.disabled,\n.navbar-misago .btn-sign-in.disabled:hover,\n.navbar-misago .btn-sign-in.disabled:active {\n background: transparent;\n border: 1px solid #c1c7d0;\n color: #8993a4;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in:disabled,\n.navbar-misago .btn-sign-in:disabled:hover,\n.navbar-misago .btn-sign-in.disabled,\n.navbar-misago .btn-sign-in.disabled:hover,\n.navbar-misago .btn-sign-in.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.navbar-misago .btn-sign-in:hover,\n.navbar-misago .btn-sign-in:focus {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in:active:focus,\n.navbar-misago .btn-sign-in:active,\n.dropdown.open .navbar-misago .btn-sign-in,\n.dropdown.open .navbar-misago .btn-sign-in:focus,\n.dropdown.open .navbar-misago .btn-sign-in:active:focus,\n.dropdown.open .navbar-misago .btn-sign-in:hover {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-sign-in.btn-loading,\n.navbar-misago .btn-sign-in.btn-loading:disabled,\n.navbar-misago .btn-sign-in.btn-loading:disabled:hover,\n.navbar-misago .btn-sign-in.btn-loading:hover,\n.navbar-misago .btn-sign-in.btn-loading:focus,\n.navbar-misago .btn-sign-in.btn-loading:active:focus,\n.navbar-misago .btn-sign-in.btn-loading:active {\n background: transparent;\n border: 1px solid #c1c7d0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register {\n border-radius: 4px;\n}\n.navbar-misago .btn-register,\n.navbar-misago .btn-register:disabled,\n.navbar-misago .btn-register:disabled:hover,\n.navbar-misago .btn-register.disabled,\n.navbar-misago .btn-register.disabled:hover,\n.navbar-misago .btn-register.disabled:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register:disabled,\n.navbar-misago .btn-register:disabled:hover,\n.navbar-misago .btn-register.disabled,\n.navbar-misago .btn-register.disabled:hover,\n.navbar-misago .btn-register.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.navbar-misago .btn-register:hover,\n.navbar-misago .btn-register:focus {\n background: #5243aa;\n border: 1px solid #5243aa;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register:active:focus,\n.navbar-misago .btn-register:active,\n.dropdown.open .navbar-misago .btn-register,\n.dropdown.open .navbar-misago .btn-register:focus,\n.dropdown.open .navbar-misago .btn-register:active:focus,\n.dropdown.open .navbar-misago .btn-register:hover {\n background: #403294;\n border: 1px solid #403294;\n color: #fff;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.navbar-misago .btn-register.btn-loading,\n.navbar-misago .btn-register.btn-loading:disabled,\n.navbar-misago .btn-register.btn-loading:disabled:hover,\n.navbar-misago .btn-register.btn-loading:hover,\n.navbar-misago .btn-register.btn-loading:focus,\n.navbar-misago .btn-register.btn-loading:active:focus,\n.navbar-misago .btn-register.btn-loading:active {\n background: #6554c0;\n border: 1px solid #6554c0;\n color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-social-battlenet,\n.btn-social-battlenet-oauth2,\n.btn-social-battlenet:disabled,\n.btn-social-battlenet-oauth2:disabled,\n.btn-social-battlenet:disabled:hover,\n.btn-social-battlenet-oauth2:disabled:hover {\n color: #0e86ca;\n font-weight: bold;\n}\n.btn-social-bungie,\n.btn-social-bungie:disabled,\n.btn-social-bungie:disabled:hover {\n color: #0096db;\n font-weight: bold;\n}\n.btn-social-facebook,\n.btn-social-facebook-app,\n.btn-social-facebook:disabled,\n.btn-social-facebook-app:disabled,\n.btn-social-facebook:disabled:hover,\n.btn-social-facebook-app:disabled:hover {\n color: #3b5998;\n font-weight: bold;\n}\n.btn-social-github,\n.btn-social-github-team,\n.btn-social-github-enterprise,\n.btn-social-github-enterprise-org,\n.btn-social-github-enterprise-team,\n.btn-social-github:disabled,\n.btn-social-github-team:disabled,\n.btn-social-github-enterprise:disabled,\n.btn-social-github-enterprise-org:disabled,\n.btn-social-github-enterprise-team:disabled,\n.btn-social-github:disabled:hover,\n.btn-social-github-team:disabled:hover,\n.btn-social-github-enterprise:disabled:hover,\n.btn-social-github-enterprise-org:disabled:hover,\n.btn-social-github-enterprise-team:disabled:hover {\n color: #000000;\n font-weight: bold;\n}\n.btn-social-gitlab,\n.btn-social-gitlab:disabled,\n.btn-social-gitlab:disabled:hover {\n color: #fc6d26;\n font-weight: bold;\n}\n.btn-social-google,\n.btn-social-google-oauth,\n.btn-social-google-oauth2,\n.btn-social-google-plus,\n.btn-social-google-openidconnect,\n.btn-social-google:disabled,\n.btn-social-google-oauth:disabled,\n.btn-social-google-oauth2:disabled,\n.btn-social-google-plus:disabled,\n.btn-social-google-openidconnect:disabled,\n.btn-social-google:disabled:hover,\n.btn-social-google-oauth:disabled:hover,\n.btn-social-google-oauth2:disabled:hover,\n.btn-social-google-plus:disabled:hover,\n.btn-social-google-openidconnect:disabled:hover {\n color: #dd4b39;\n font-weight: bold;\n}\n.btn-social-linkedin,\n.btn-social-linkedin:disabled,\n.btn-social-linkedin:disabled:hover {\n color: #0077b5;\n font-weight: bold;\n}\n.btn-social-steam,\n.btn-social-steam:disabled,\n.btn-social-steam:disabled:hover {\n color: #5c7e10;\n font-weight: bold;\n}\n.btn-social-twitter,\n.btn-social-twitter:disabled,\n.btn-social-twitter:disabled:hover {\n color: #1da1f2;\n font-weight: bold;\n}\n.form-social-auth .row {\n margin-top: -6px;\n margin-bottom: -6px;\n}\n.form-social-auth .btn {\n margin: 6px 0px;\n}\ninput.form-control,\ntextarea.form-control {\n border-color: #ced0da;\n box-shadow: inset 0px 0px 0px 1px #ced0da;\n}\ninput.form-control:focus,\ntextarea.form-control:focus {\n border-color: #66afe9;\n box-shadow: inset 0px 0px 0px 1px #66afe9;\n}\n.has-error input.form-control {\n border-color: #ff5630;\n box-shadow: inset 0px 0px 0px 1px #ff5630;\n}\n.has-error input.form-control:focus {\n border-color: #ffa996;\n box-shadow: inset 0px 0px 0px 1px #ffa996;\n}\n.has-success input.form-control {\n border-color: #36b37e;\n box-shadow: inset 0px 0px 0px 1px #36b37e;\n}\n.has-success input.form-control:focus {\n border-color: #79d6af;\n box-shadow: inset 0px 0px 0px 1px #79d6af;\n}\n.password-strength {\n margin-top: 10px;\n}\n.password-strength .text-small {\n margin-top: 4px;\n color: #3462af;\n font-size: 12px;\n}\n.password-strength .progress {\n margin: 0px;\n}\n.auth-message {\n background: #091e42;\n padding: 80px 0px;\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.04), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.06);\n}\n.auth-message p {\n color: #fff;\n}\n.auth-message .btn {\n background: #f4f5f7;\n border-color: #f4f5f7;\n color: #172b4d;\n}\n.auth-message .btn:hover,\n.auth-message .btn:focus {\n background: #dfe1e6;\n border-color: #dfe1e6;\n color: #172b4d;\n}\n.auth-message .btn:active {\n background: #b3bac5;\n border-color: #b3bac5;\n color: #172b4d;\n}\n.dropdown-menu {\n border: none;\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.04), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n}\n.user-dropdown .dropdown-header strong {\n display: block;\n color: #172b4d;\n font-weight: bold;\n}\n.user-dropdown .dropdown-header .user-stats {\n margin-top: 10px;\n font-size: 12px;\n}\n.user-dropdown .dropdown-header .user-stats .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n width: 14px;\n height: 14px;\n font-size: 14px;\n}\n.user-dropdown .guest-preview {\n padding-bottom: 10px;\n}\n.user-dropdown .badge {\n background-color: #ff5630;\n}\n.user-dropdown a:hover .badge,\n.user-dropdown a:focus .badge,\n.user-dropdown a:active .badge,\n.user-dropdown .btn-link:hover .badge,\n.user-dropdown .btn-link:focus .badge,\n.user-dropdown .btn-link:active .badge {\n background-color: #fff;\n color: #ff5630;\n}\n.mobile-dropdown.open {\n margin: 0px;\n}\n.navbar-misago {\n border-bottom: none;\n box-shadow: 0px 0px 3px #c1c7d0;\n}\n.navbar-misago .user-avatar {\n background: #fff;\n border-radius: 3px;\n}\n.navbar-misago .brand-link img {\n border-radius: 3px;\n}\n.dropdown-search-results {\n border-radius: 0px 0px 4px 4px;\n}\n.dropdown-search-message {\n border-top: 1px solid #ebecf0;\n padding: 10px 16px;\n color: #7a869a;\n}\n.dropdown-search-loader {\n border-top: 1px solid #ebecf0;\n padding: 10px 16px;\n}\n.dropdown-search-header {\n border-top: 1px solid #ebecf0;\n padding: 8px 20px;\n color: #7a869a;\n font-weight: bold;\n}\n.dropdown-search-thread small,\n.dropdown-search-user small {\n color: #7a869a;\n}\n.dropdown-search-thread .dropdown-search-post-content {\n overflow: hidden;\n white-space: normal;\n max-height: 47px;\n}\n.dropdown-search-thread .dropdown-search-post-footer {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.dropdown-search-footer {\n padding-bottom: 5px;\n}\n.dropdown-search-footer:last-child {\n padding-bottom: 0px;\n}\n.dropdown-menu > li.dropdown-search-footer > a {\n font-size: small;\n}\n.misago-footer {\n margin-top: 40px;\n}\n.misago-footer .footer-content {\n border-top: 1px solid #ebecf0;\n padding-top: 20px;\n color: #a5adba;\n}\n@media screen and (max-width: 767px) {\n .misago-footer .footer-content {\n text-align: center;\n }\n .misago-footer .footer-content .site-footnote {\n clear: both;\n margin-bottom: 15px;\n }\n}\n.misago-footer .footer-content a,\n.misago-footer .footer-content a:link,\n.misago-footer .footer-content a:visited {\n color: #a5adba;\n}\n.misago-footer .footer-content a:hover,\n.misago-footer .footer-content a:focus {\n color: #7a8699;\n}\n.misago-footer .footer-content .misago-branding,\n.misago-footer .footer-content .misago-branding:link,\n.misago-footer .footer-content .misago-branding:visited {\n color: #a5adba;\n}\n.misago-footer .footer-content .misago-branding:hover,\n.misago-footer .footer-content .misago-branding:focus {\n color: #7a8699;\n}\n.list-group {\n border-radius: 3px;\n}\n.list-group .list-group-item {\n border-left-color: #ebecf0;\n border-right-color: #ebecf0;\n}\n.list-group .list-group-item:first-child {\n border-top-color: #ebecf0;\n}\n.list-group .list-group-item:last-child {\n border-bottom-color: #ebecf0;\n}\n.list-group-item.empty-message {\n padding-top: 20px;\n padding-bottom: 20px;\n text-align: center;\n}\n.list-group-item.empty-message p {\n margin: 10px 0px;\n}\n.nav-side {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.nav-side > .list-group-item {\n border-left: none;\n border-right: none;\n margin-bottom: 1px;\n}\n.nav-side > .list-group-item:first-child {\n border-top: none;\n}\n.nav-side > .list-group-item:last-child {\n border-bottom: none;\n}\n.nav-side > .list-group-item,\n.nav-side > .list-group-item:link,\n.nav-side > .list-group-item:visited {\n background: #f4f5f7;\n border: none;\n color: #172b4d;\n}\n.nav-side > .list-group-item:hover,\n.nav-side > .list-group-item:focus,\n.nav-side > .list-group-item:active {\n background: #ebecf0;\n color: #172b4d;\n}\n.nav-side > .list-group-item.active,\n.nav-side > .list-group-item.active:link,\n.nav-side > .list-group-item.active:visited,\n.nav-side > .list-group-item.active:hover,\n.nav-side > .list-group-item.active:focus,\n.nav-side > .list-group-item.active:active {\n background: #091e42;\n color: #fff;\n font-weight: bold;\n}\n.nav-side > .list-group-item.active .badge,\n.nav-side > .list-group-item.active:link .badge,\n.nav-side > .list-group-item.active:visited .badge,\n.nav-side > .list-group-item.active:hover .badge,\n.nav-side > .list-group-item.active:focus .badge,\n.nav-side > .list-group-item.active:active .badge {\n background: #f4f5f7;\n color: #172b4d;\n}\n.username-history .user-avatar {\n border-radius: 4px;\n}\n.panel {\n border: none;\n border-radius: 4px;\n}\n.panel .panel-heading,\n.panel .panel-footer {\n background: #fff;\n}\n.panel .panel-title {\n color: #5e6c84;\n}\n.panel .form-group + .form-group {\n margin-top: 20px;\n}\n.panel .panel-body > .form-group:first-child {\n margin-top: 10px;\n}\n.panel fieldset {\n margin-top: 20px;\n}\n.panel fieldset:first-child {\n margin-top: 0px;\n}\n.panel fieldset legend {\n border: none;\n color: #5e6c84;\n font-weight: 300;\n}\n.panel-message-body .message-icon {\n color: #9575cd;\n}\n.panel-form {\n border: 1px solid #ebecf0;\n box-shadow: none;\n}\n.panel-form .panel-heading,\n.panel-form .panel-footer {\n border-color: #ebecf0;\n}\n.poll-form .panel {\n margin: 0px;\n}\n.help-block,\n.help-block .text-small {\n color: #7a869a;\n}\n.category-main .media-left .read-status {\n background: #ebecf0;\n border-radius: 4px;\n padding: 5px 8px;\n}\n.category-main .media-left .material-icon {\n height: 14px;\n width: 14px;\n color: #5e6c84;\n font-size: 14px;\n line-height: 14px;\n}\n.category-main .media-left .read-status.item-new {\n background-color: #0052cc;\n}\n.category-main .media-left .read-status.item-new .material-icon {\n color: #fff;\n}\n@media screen and (min-width: 768px) {\n .category-main .media-left {\n padding: 5px 0px;\n }\n}\n.category-main .media-body {\n padding-left: 12px;\n}\n@media screen and (max-width: 767px) {\n .category-main .media-body {\n padding-left: 3.33333333px;\n }\n}\n.list-group-category-no-description .category-main .media-heading {\n margin-top: 10px;\n}\n@media screen and (max-width: 767px) {\n .list-group-category-no-description .category-main .media-heading {\n margin-top: 5px;\n }\n}\n.category-main .media-heading a,\n.category-main .media-heading a:link,\n.category-main .media-heading a:visited {\n color: #344563;\n}\n.category-main .media-heading a:focus,\n.category-main .media-heading a:hover,\n.category-main .media-heading a:active {\n color: #172b4d;\n}\n.category-stats {\n color: #5e6c84;\n}\n.category-main .category-description p {\n font-size: 12px;\n}\n.category-main .category-description p:last-child {\n margin-bottom: 0px;\n}\n.category-last-thread img {\n background-color: #fff;\n border-radius: 4px;\n}\n.category-last-thread .media-heading {\n margin-bottom: 2px;\n}\n@media screen and (max-width: 767px) {\n .category-last-thread .media-heading {\n margin-top: 10px;\n }\n}\n.category-last-thread .list-inline {\n color: #7a869a;\n font-size: 12px;\n}\n.category-last-thread .list-inline a,\n.category-last-thread .list-inline a:link,\n.category-last-thread .list-inline a:visited {\n color: #7a869a;\n}\n.category-last-thread .list-inline a:hover,\n.category-last-thread .list-inline a:active,\n.category-last-thread .list-inline a:focus {\n color: #344563;\n}\n.category-last-thread .list-inline .item-title,\n.category-last-thread .list-inline .item-title:link,\n.category-last-thread .list-inline .item-title:visited {\n color: #344563;\n}\n.category-last-thread .list-inline .item-title:hover,\n.category-last-thread .list-inline .item-title:active,\n.category-last-thread .list-inline .item-title:focus {\n color: #172b4d;\n}\n.category-thread-message {\n color: #7a869a;\n}\n.category-thread-message .material-icon {\n padding: 6px 0px;\n margin-right: 3px;\n}\n@media screen and (max-width: 767px) {\n .category-thread-message {\n padding-top: 15px;\n font-size: 12px;\n }\n .category-thread-message .material-icon {\n padding: 3px 0px;\n }\n}\n.panel-participants {\n border: 1px solid #ebecf0;\n}\n.participant-card .btn-user {\n border: 0px !important;\n}\n.participant-card .dropdown-header-owner {\n color: #0052cc;\n}\n.participant-card .dropdown-header-owner .material-icon {\n width: 14px;\n height: 14px;\n font-size: 14px;\n line-height: 14px;\n}\n.participant-card .dropdown-header-owner .icon-text {\n margin-left: 4px;\n position: relative;\n top: 2px;\n}\n.panel-participants p {\n color: #7a869a;\n}\n@media screen and (max-width: 767px) {\n .panel-participants p {\n margin-top: 10px;\n text-align: center;\n }\n}\n.panel-poll {\n border: 1px solid #ebecf0;\n}\n.panel-poll .poll-select-choices {\n margin-top: -10px;\n}\n.panel-poll .poll-details {\n margin-bottom: 20px;\n color: #7a869a;\n font-size: 12px;\n}\n.panel-poll .progress {\n margin-top: 6.66666667px;\n margin-bottom: 5px;\n}\n.panel-poll .poll-chart {\n color: #7a869a;\n font-size: 12px;\n}\n.panel-poll .poll-options {\n margin-top: 20px;\n}\n#posting-placeholder {\n background-color: #fafbfc;\n}\n.posting-message .material-icon {\n color: #9575cd;\n}\n.posting-message .btn {\n margin-top: 20px;\n}\n.panel-post {\n background: #fff;\n border: 1px solid #ddd;\n}\n.post-side {\n color: #7a869a;\n}\n.post-side .poster-avatar {\n border-radius: 4px;\n}\n.post-side .user-title {\n color: #5e6c84;\n}\n.post-side .user-title a,\n.post-side .user-title a:link,\n.post-side .user-title a:visited,\n.post-side .user-title a:focus,\n.post-side .user-title a:hover,\n.post-side .user-title a:active {\n color: #5e6c84;\n}\n.post-heading .label-unread {\n background-color: #aa00ff;\n margin-right: 16px;\n}\n.post-heading .label-protected {\n background-color: transparent;\n margin-left: 24px;\n position: relative;\n top: 1px;\n color: #bdbdbd;\n}\n.post-heading .label-protected .material-icon {\n margin-right: 2px;\n position: relative;\n top: -1px;\n font-size: 16px;\n line-height: 16px;\n}\n.post-heading > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-heading > .btn-link,\n.post-heading > .btn-link:link,\n.post-heading > .btn-link:visited {\n color: #7a869a;\n}\n.post-heading > .btn-link:hover,\n.post-heading > .btn-link:focus,\n.post-heading > .btn-link:focus:active,\n.post-heading > .btn-link:active {\n color: #172b4d;\n text-decoration: none;\n}\n.post-heading .btn-see-edits {\n margin-left: 24px;\n}\n.post-status-message {\n border-radius: 4px;\n margin-top: 10px;\n padding: 6px 12px;\n}\n@media screen and (max-width: 767px) {\n .post-status-message {\n font-size: 12px;\n }\n .post-status-message .material-icon {\n margin-top: 3px;\n }\n .post-status-message p {\n margin-top: 0px;\n }\n}\n.post-body:last-child {\n padding-bottom: 10px;\n}\n.post-attachments {\n background-color: #ebecf0;\n border: none;\n border-radius: 4px;\n margin-bottom: 30px;\n}\n.post-attachments:last-child {\n margin-bottom: 10px;\n}\n@media screen and (max-width: 767px) {\n .post-attachments {\n border-radius: 0px;\n margin: 0px -15px;\n margin-bottom: 20px;\n }\n}\n.post-footer > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n}\n.post-footer > .btn-link,\n.post-footer > .btn-link:link,\n.post-footer > .btn-link:visited {\n color: #7a869a;\n}\n.post-footer > .btn-link:hover,\n.post-footer > .btn-link:focus,\n.post-footer > .btn-link:focus:active,\n.post-footer > .btn-link:active {\n color: #172b4d;\n text-decoration: none;\n}\n.post-footer p {\n color: #7a869a;\n font-size: 12px;\n}\n.post-body-hidden,\n.post-body-invalid {\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.post-body-hidden .lead,\n.post-body-invalid .lead {\n margin-bottom: 10px;\n}\n.post-body-hidden .text-muted,\n.post-body-invalid .text-muted {\n margin-bottom: 0px;\n font-size: 12px;\n}\n.post-hidden {\n filter: alpha(opacity=75);\n opacity: 0.75;\n}\n.post-feed .panel-body {\n padding-bottom: 0px;\n}\n.post-feed .post-body {\n position: relative;\n padding-top: 0px;\n padding-bottom: 20px;\n max-height: 300px;\n overflow-y: hidden;\n}\n.post-feed .post-body:after {\n box-shadow: 0px 0px 16px 16px #ffffff;\n display: block;\n position: absolute;\n bottom: 0px;\n height: 0px;\n width: 100%;\n content: \"-\";\n color: transparent;\n}\n.posts-list .event .event-label {\n margin-bottom: 5px;\n}\n.posts-list .event .label-unread {\n background-color: #aa00ff;\n color: #fff;\n}\n.posts-list .event-info a,\n.posts-list .event-info a:link,\n.posts-list .event-info a:visited,\n.posts-list .event-info .btn-link {\n color: #5e6c84;\n}\n.posts-list .event-info a:focus,\n.posts-list .event-info a:active,\n.posts-list .event-info a:focus:active,\n.posts-list .event-info .btn-link:focus,\n.posts-list .event-info .btn-link:active,\n.posts-list .event-info .btn-link:focus:active {\n color: #172b4d;\n}\n.posts-list .event-hidden {\n filter: alpha(opacity=33);\n opacity: 0.33;\n}\n.user-card {\n background: #f4f5f7;\n}\n.user-card-small-avatar img,\n.user-card-avatar img {\n border-radius: 4px;\n}\n.user-card-avatar {\n margin: 20px 0px;\n}\n.user-card-avatar img {\n width: 150px;\n height: 150px;\n}\n.user-card-username a,\n.user-card-username a:link,\n.user-card-username a:visited,\n.user-card-username a:hover,\n.user-card-username a:focus,\n.user-card-username a:active {\n color: #172b4d;\n font-size: 18px;\n font-weight: bold;\n}\n.user-card-title span,\n.user-card-title a,\n.user-card-title a:link,\n.user-card-title a:visited {\n color: #5e6c84;\n}\n.user-card-title a:focus,\n.user-card-title a:hover,\n.user-card-title a:active {\n color: #172b4d;\n}\n@media screen and (min-width: 768px) {\n .user-card-stats {\n margin-top: 20px;\n }\n}\n.user-card-stats ul {\n margin: 0px;\n}\n.user-card-stats li {\n display: inline-block;\n margin-right: 12px;\n color: #7a869a;\n font-size: 12px;\n}\n@media screen and (min-width: 768px) {\n .user-card-stats li {\n margin: 0px 6px;\n }\n}\n.user-card-stats li.user-stat-empty {\n display: none;\n}\n@media screen and (min-width: 768px) {\n li.user-stat-divider {\n display: block;\n margin: 0px;\n }\n}\n@media screen and (max-width: 767px) {\n li.user-stat-divider {\n display: none;\n }\n}\n@media screen and (min-width: 768px) {\n .user-card-stats {\n min-height: 60px;\n }\n}\n@media screen and (max-width: 767px) {\n .user-card-left {\n padding-right: 0px;\n }\n}\n.progress,\n.progress .progress-bar {\n -webkit-box-shadow: none;\n box-shadow: none;\n height: 8px;\n}\n.misago-markup img {\n border-radius: 4px;\n}\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background-color: #ffecb3;\n border-color: #b3e5fc;\n overflow: hidden;\n color: #3e2723;\n}\n.misago-markup .quote-block .quote-heading,\n.misago-markup blockquote .quote-heading {\n background-color: #ffe082;\n border: none;\n color: #795548;\n}\n.misago-markup .quote-block .quote-heading a,\n.misago-markup blockquote .quote-heading a,\n.misago-markup .quote-block .quote-heading a:link,\n.misago-markup blockquote .quote-heading a:link,\n.misago-markup .quote-block .quote-heading a:visited,\n.misago-markup blockquote .quote-heading a:visited {\n color: #5d4037;\n}\n.misago-markup .quote-block .quote-heading a:hover,\n.misago-markup blockquote .quote-heading a:hover,\n.misago-markup .quote-block .quote-heading a:focus,\n.misago-markup blockquote .quote-heading a:focus,\n.misago-markup .quote-block .quote-heading a:active,\n.misago-markup blockquote .quote-heading a:active {\n color: #3e2723;\n}\n.misago-markup .quote-block hr,\n.misago-markup blockquote hr {\n border-color: #ffca28;\n}\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n background: #ffecb3;\n border: none;\n border-radius: 4px;\n}\n.misago-markup > .quote-block .quote-block,\n.misago-markup > blockquote .quote-block {\n background: #ffecb3;\n}\n.misago-markup .quote-body {\n background: #ffecb3;\n}\n.misago-markup .quote-body > .quote-block,\n.misago-markup .quote-body > blockquote {\n border-color: #ffe082;\n border-radius: 4px;\n}\n.misago-markup .spoiler-block {\n background: repeating-linear-gradient(45deg, rgba(235, 236, 240, 0.5), rgba(235, 236, 240, 0.5) 10px, #fff 10px, #fff 20px);\n border: none;\n}\n.misago-markup .spoiler-body {\n background: transparent;\n -webkit-filter: blur(5px);\n -moz-filter: blur(5px);\n -o-filter: blur(5px);\n -ms-filter: blur(5px);\n filter: blur(5px);\n color: #172b4d;\n}\n.misago-markup .spoiler-block.revealed .spoiler-body {\n -webkit-filter: none;\n -moz-filter: none;\n -o-filter: none;\n -ms-filter: none;\n filter: none;\n}\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(255, 255, 255, 0.1);\n}\n.misago-markup .spoiler-reveal {\n color: #172b4d;\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal.focus {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #8c8c8c;\n}\n.misago-markup .spoiler-reveal:hover {\n color: #172b4d;\n background-color: #ced0da;\n border-color: #adadad;\n}\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal.active,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal {\n color: #172b4d;\n background-color: #ced0da;\n background-image: none;\n border-color: #adadad;\n}\n.misago-markup .spoiler-reveal:active:hover,\n.misago-markup .spoiler-reveal.active:hover,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal:active:focus,\n.misago-markup .spoiler-reveal.active:focus,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal:active.focus,\n.misago-markup .spoiler-reveal.active.focus,\n.open > .dropdown-toggle.misago-markup .spoiler-reveal.focus {\n color: #172b4d;\n background-color: #b9bdcb;\n border-color: #8c8c8c;\n}\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal[disabled]:hover,\nfieldset[disabled] .misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal.disabled:focus,\n.misago-markup .spoiler-reveal[disabled]:focus,\nfieldset[disabled] .misago-markup .spoiler-reveal:focus,\n.misago-markup .spoiler-reveal.disabled.focus,\n.misago-markup .spoiler-reveal[disabled].focus,\nfieldset[disabled] .misago-markup .spoiler-reveal.focus {\n background-color: #ebecf0;\n border-color: #ccc;\n}\n.misago-markup .spoiler-reveal .badge {\n color: #ebecf0;\n background-color: #172b4d;\n}\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:disabled,\n.misago-markup .spoiler-reveal:disabled:hover,\n.misago-markup .spoiler-reveal.disabled,\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal.disabled:active {\n background: #ebecf0;\n border: 1px solid #ebecf0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal:disabled,\n.misago-markup .spoiler-reveal:disabled:hover,\n.misago-markup .spoiler-reveal.disabled,\n.misago-markup .spoiler-reveal.disabled:hover,\n.misago-markup .spoiler-reveal.disabled:active {\n filter: alpha(opacity=25);\n opacity: 0.25;\n}\n.misago-markup .spoiler-reveal:hover,\n.misago-markup .spoiler-reveal:focus {\n background: #dfe1e6;\n border: 1px solid #dfe1e6;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal:active:focus,\n.misago-markup .spoiler-reveal:active,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:focus,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:active:focus,\n.dropdown.open .dropdown-toggle .misago-markup .spoiler-reveal:hover {\n background: #c1c7d0;\n border: 1px solid #c1c7d0;\n color: #172b4d;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.misago-markup .spoiler-reveal.btn-loading,\n.misago-markup .spoiler-reveal.btn-loading:disabled,\n.misago-markup .spoiler-reveal.btn-loading:disabled:hover,\n.misago-markup .spoiler-reveal.btn-loading:hover,\n.misago-markup .spoiler-reveal.btn-loading:focus,\n.misago-markup .spoiler-reveal.btn-loading:active:focus,\n.misago-markup .spoiler-reveal.btn-loading:active {\n color: transparent;\n}\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal:hover {\n border-radius: 4px;\n box-shadow: 0px 0px 0px 4px #fff;\n padding: 6px 12px;\n}\n.modal-header {\n background: #fff;\n border-bottom-color: #ced0da;\n border-radius: 6px 6px 0px 0px;\n color: #172b4d;\n}\n.modal-header .close {\n padding: 0px 6px;\n color: #172b4d;\n font-size: 24px;\n line-height: 24px;\n text-shadow: none;\n}\n.modal-message .message-icon {\n color: #9575cd;\n}\n.modal-body > .form-group {\n margin: 20px 0px;\n}\n.modal-body > .form-group:first-child {\n margin-top: 0px;\n}\n.modal-body > .form-group:last-child {\n margin-bottom: 0px;\n}\n.modal-sign-in .modal-body {\n padding-top: 0px;\n padding-bottom: 0px;\n}\n.modal-sign-in .modal-body > .form-group {\n margin: 20px 0px;\n}\n.legal-footnote label {\n font-weight: bold;\n}\n.legal-footnote .help-block {\n margin-left: 20px;\n color: #ff5630;\n}\n.modal-avatar-index .avatar-preview {\n background: #fff;\n border-radius: 6px;\n}\n.modal-avatar-crop .cropit-preview {\n background: #fff;\n margin: 20px 0px;\n}\n.modal-avatar-crop .cropit-image-zoom-input {\n margin-top: 40px;\n margin-bottom: 20px;\n}\n.modal-post-likers .media {\n border-bottom: 1px solid #ebecf0;\n padding-bottom: 15px;\n}\n.modal-post-likers .media img {\n border-radius: 4px;\n width: 40px;\n height: 40px;\n}\n.modal-post-likers .media:last-child {\n border: none;\n padding-bottom: 0px;\n}\n.well {\n border: 1px solid #ddd;\n}\n.active-posters .rank-user-avatar img {\n border-radius: 4px;\n}\n.active-posters .user-details {\n color: #7a869a;\n}\n.active-posters .user-details a.rank-name,\n.active-posters .user-details a.rank-name:link,\n.active-posters .user-details a.rank-name:visited {\n color: #5e6c84;\n font-weight: normal;\n}\n.active-posters .user-details a.rank-name:focus,\n.active-posters .user-details a.rank-name:hover,\n.active-posters .user-details a.rank-name:active {\n color: #172b4d;\n}\n.active-posters .user-details span.rank-name {\n color: #5e6c84;\n font-weight: normal;\n}\n.active-posters small {\n color: #7a869a;\n}\n.page-error .message-icon {\n color: #ef5350;\n}\n.page-message .message-icon {\n color: #9575cd;\n}\n.page-message-info .message-icon {\n color: #9575cd;\n}\n.page-message-success .message-icon {\n color: #81c784;\n}\n.page-options .message-line {\n color: #7a869a;\n}\n.page-options .message-line a,\n.page-options .message-line a:link,\n.page-options .message-line a:visited {\n color: #7a869a;\n}\n.page-options .message-line a:hover,\n.page-options .message-line a:focus,\n.page-options .message-line a:focus:active,\n.page-options .message-line a:active {\n color: #172b4d;\n}\n.panel-profile-details-group.panel {\n border: 1px solid #ebecf0;\n}\n.panel-profile-details-group.panel .form-group {\n margin: 0px;\n}\n.panel-profile-details-group .form-control-static p:last-child {\n margin-bottom: 0px;\n}\n.post-primary .panel-post {\n border-color: #b388ff;\n}\n.post-primary .user-title {\n color: #6200ea;\n}\n.post-primary .user-title a,\n.post-primary .user-title a:link,\n.post-primary .user-title a:visited,\n.post-primary .user-title a:focus,\n.post-primary .user-title a:hover,\n.post-primary .user-title a:active {\n color: #6200ea;\n}\n.post-success .panel-post {\n border-color: #00c853;\n}\n.post-success .user-title {\n color: #388e3c;\n}\n.post-success .user-title a,\n.post-success .user-title a:link,\n.post-success .user-title a:visited,\n.post-success .user-title a:focus,\n.post-success .user-title a:hover,\n.post-success .user-title a:active {\n color: #388e3c;\n}\n.post-warning .panel-post {\n border-color: #ffab40;\n}\n.post-warning .user-title {\n color: #ff6d00;\n}\n.post-warning .user-title a,\n.post-warning .user-title a:link,\n.post-warning .user-title a:visited,\n.post-warning .user-title a:focus,\n.post-warning .user-title a:hover,\n.post-warning .user-title a:active {\n color: #ff6d00;\n}\n.post-danger .panel-post {\n border-color: #ff8a80;\n}\n.post-danger .user-title {\n color: #d50000;\n}\n.post-danger .user-title a,\n.post-danger .user-title a:link,\n.post-danger .user-title a:visited,\n.post-danger .user-title a:focus,\n.post-danger .user-title a:hover,\n.post-danger .user-title a:active {\n color: #d50000;\n}\n.user-card-primary .panel-body {\n background: #fff;\n border: 2px solid #b388ff;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-primary .user-card-title {\n color: #6200ea;\n}\n.user-card-primary .user-card-title a.user-title,\n.user-card-primary .user-card-title a.user-title:link,\n.user-card-primary .user-card-title a.user-title:visited,\n.user-card-primary .user-card-title a.user-title:focus,\n.user-card-primary .user-card-title a.user-title:hover,\n.user-card-primary .user-card-title a.user-title:active {\n color: #6200ea;\n}\n.user-card-primary .user-card-stats li {\n color: #9575cd;\n}\n.user-card-success .panel-body {\n background: #fff;\n border: 2px solid #00c853;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-success .user-card-title {\n color: #388e3c;\n}\n.user-card-success .user-card-title a.user-title,\n.user-card-success .user-card-title a.user-title:link,\n.user-card-success .user-card-title a.user-title:visited,\n.user-card-success .user-card-title a.user-title:focus,\n.user-card-success .user-card-title a.user-title:hover,\n.user-card-success .user-card-title a.user-title:active {\n color: #388e3c;\n}\n.user-card-success .user-card-stats li {\n color: #66bb6a;\n}\n.user-card-warning .panel-body {\n background: #fff;\n border: 2px solid #ffab40;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-warning .user-card-title {\n color: #ff6d00;\n}\n.user-card-warning .user-card-title a.user-title,\n.user-card-warning .user-card-title a.user-title:link,\n.user-card-warning .user-card-title a.user-title:visited,\n.user-card-warning .user-card-title a.user-title:focus,\n.user-card-warning .user-card-title a.user-title:hover,\n.user-card-warning .user-card-title a.user-title:active {\n color: #ff6d00;\n}\n.user-card-warning .user-card-stats li {\n color: #ff6e40;\n}\n.user-card-danger .panel-body {\n background: #fff;\n border: 2px solid #ff8a80;\n border-radius: 4px;\n padding: 13px;\n}\n.user-card-danger .user-card-title {\n color: #d50000;\n}\n.user-card-danger .user-card-title a.user-title,\n.user-card-danger .user-card-title a.user-title:link,\n.user-card-danger .user-card-title a.user-title:visited,\n.user-card-danger .user-card-title a.user-title:focus,\n.user-card-danger .user-card-title a.user-title:hover,\n.user-card-danger .user-card-title a.user-title:active {\n color: #d50000;\n}\n.user-card-danger .user-card-stats li {\n color: #e57373;\n}\n.list-group .list-group-rank-primary {\n border-left: 4px solid #7e57c2;\n padding-left: 11px;\n}\n.list-group .list-group-rank-primary span.rank-name {\n color: #6200ea;\n}\n.list-group .list-group-rank-primary a.rank-name,\n.list-group .list-group-rank-primary a.rank-name:link,\n.list-group .list-group-rank-primary a.rank-name:visited,\n.list-group .list-group-rank-primary a.rank-name:focus,\n.list-group .list-group-rank-primary a.rank-name:hover,\n.list-group .list-group-rank-primary a.rank-name:active {\n color: #6200ea;\n}\n.list-group .list-group-rank-success {\n border-left: 4px solid #9ccc65;\n padding-left: 11px;\n}\n.list-group .list-group-rank-success span.rank-name {\n color: #388e3c;\n}\n.list-group .list-group-rank-success a.rank-name,\n.list-group .list-group-rank-success a.rank-name:link,\n.list-group .list-group-rank-success a.rank-name:visited,\n.list-group .list-group-rank-success a.rank-name:focus,\n.list-group .list-group-rank-success a.rank-name:hover,\n.list-group .list-group-rank-success a.rank-name:active {\n color: #388e3c;\n}\n.list-group .list-group-rank-warning {\n border-left: 4px solid #ff7043;\n padding-left: 11px;\n}\n.list-group .list-group-rank-warning span.rank-name {\n color: #ff6d00;\n}\n.list-group .list-group-rank-warning a.rank-name,\n.list-group .list-group-rank-warning a.rank-name:link,\n.list-group .list-group-rank-warning a.rank-name:visited,\n.list-group .list-group-rank-warning a.rank-name:focus,\n.list-group .list-group-rank-warning a.rank-name:hover,\n.list-group .list-group-rank-warning a.rank-name:active {\n color: #ff6d00;\n}\n.list-group .list-group-rank-danger {\n border-left: 4px solid #f44336;\n padding-left: 11px;\n}\n.list-group .list-group-rank-danger span.rank-name {\n color: #d50000;\n}\n.list-group .list-group-rank-danger a.rank-name,\n.list-group .list-group-rank-danger a.rank-name:link,\n.list-group .list-group-rank-danger a.rank-name:visited,\n.list-group .list-group-rank-danger a.rank-name:focus,\n.list-group .list-group-rank-danger a.rank-name:hover,\n.list-group .list-group-rank-danger a.rank-name:active {\n color: #d50000;\n}\n.page-header-rank-primary .user-rank {\n color: #6200ea;\n}\n.page-header-rank-primary .user-rank a,\n.page-header-rank-primary .user-rank a:link,\n.page-header-rank-primary .user-rank a:visited,\n.page-header-rank-primary .user-rank a:focus,\n.page-header-rank-primary .user-rank a:hover,\n.page-header-rank-primary .user-rank a:active {\n color: #6200ea;\n}\n.page-header-rank-success .user-rank {\n color: #388e3c;\n}\n.page-header-rank-success .user-rank a,\n.page-header-rank-success .user-rank a:link,\n.page-header-rank-success .user-rank a:visited,\n.page-header-rank-success .user-rank a:focus,\n.page-header-rank-success .user-rank a:hover,\n.page-header-rank-success .user-rank a:active {\n color: #388e3c;\n}\n.page-header-rank-warning .user-rank {\n color: #ff6d00;\n}\n.page-header-rank-warning .user-rank a,\n.page-header-rank-warning .user-rank a:link,\n.page-header-rank-warning .user-rank a:visited,\n.page-header-rank-warning .user-rank a:focus,\n.page-header-rank-warning .user-rank a:hover,\n.page-header-rank-warning .user-rank a:active {\n color: #ff6d00;\n}\n.page-header-rank-danger .user-rank {\n color: #d50000;\n}\n.page-header-rank-danger .user-rank a,\n.page-header-rank-danger .user-rank a:link,\n.page-header-rank-danger .user-rank a:visited,\n.page-header-rank-danger .user-rank a:focus,\n.page-header-rank-danger .user-rank a:hover,\n.page-header-rank-danger .user-rank a:active {\n color: #d50000;\n}\n","// stylelint-disable\n\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// 1. Remove the bottom border in Chrome 57- and Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n//\n\nabbr[title] {\n border-bottom: none; // 1\n text-decoration: underline; // 2\n text-decoration: underline dotted; // 2\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important; // Black prints faster: h5bp.com/s\n text-shadow: none !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n}\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// https://getbootstrap.com/docs/3.4/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// stylelint-disable indentation, property-no-vendor-prefix, selector-no-vendor-prefix\n\n// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n word-wrap: break-word;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// stylelint-disable media-feature-name-no-vendor-prefix, media-feature-parentheses-space-inside, media-feature-name-no-unknown, indentation, at-rule-name-space-after\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","// stylelint-disable selector-list-comma-newline-after, selector-no-qualifying-type\n\n//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: 400;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n padding: .2em;\n background-color: @state-warning-bg;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: \"\\2014 \\00A0\"; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: \"\"; }\n &:after {\n content: \"\\00A0 \\2014\"; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n color: @pre-color;\n word-break: break-all;\n word-wrap: break-word;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n\n [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n padding-right: ceil((@gutter / 2));\n padding-left: floor((@gutter / 2));\n margin-right: auto;\n margin-left: auto;\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-right: floor((@gutter / -2));\n margin-left: ceil((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-right: (@gutter / 2);\n padding-left: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// stylelint-disable declaration-no-important, at-rule-no-vendor-prefix\n\n//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: https://getbootstrap.com/docs/3.4/getting-started/#support-ie10-width\n// Source: https://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: https://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-right: floor((@grid-gutter-width / 2));\n padding-left: ceil((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-no-qualifying-type\n\n//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n\n // Table cell sizing\n //\n // Reset default table behavior\n\n col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-column;\n float: none;\n }\n\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n display: table-cell;\n float: none;\n }\n }\n}\n\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\n\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n min-height: .01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n overflow-x: auto;\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * .75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type, property-no-vendor-prefix, media-feature-name-no-vendor-prefix\n\n//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: 700;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\ninput[type=\"search\"] {\n // Override content-box in Normalize (* isn't specific enough)\n .box-sizing(border-box);\n\n // Search inputs in iOS\n //\n // This overrides the extra rounded corners on search inputs in iOS so that our\n // `.form-control` class can properly style them. Note that this cannot simply\n // be added to `.form-control` as it's not specific enough. For details, see\n // https://github.com/twbs/bootstrap/issues/11586.\n -webkit-appearance: none;\n appearance: none;\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n\n // Apply same disabled cursor tweak as for inputs\n // Some special care is needed because <label>s don't inherit their parent's `cursor`.\n //\n // Note: Neither radios nor checkboxes can be readonly.\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on `<select>`s in IE10+.\n &::-ms-expand {\n background-color: transparent;\n border: 0;\n }\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 9.3, iOS doesn't support `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n // These are used on elements with <label> descendants\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: 400;\n vertical-align: middle;\n cursor: pointer;\n\n // These are used directly on <label>s\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n min-height: (@line-height-computed + @font-size-base);\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n\n &.input-lg,\n &.input-sm {\n padding-right: 0;\n padding-left: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.input-sm {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n.form-group-sm {\n .form-control {\n height: @input-height-small;\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n border-radius: @input-border-radius-small;\n }\n select.form-control {\n height: @input-height-small;\n line-height: @input-height-small;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-small;\n min-height: (@line-height-computed + @font-size-small);\n padding: (@padding-small-vertical + 1) @padding-small-horizontal;\n font-size: @font-size-small;\n line-height: @line-height-small;\n }\n}\n\n.input-lg {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n.form-group-lg {\n .form-control {\n height: @input-height-large;\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n border-radius: @input-border-radius-large;\n }\n select.form-control {\n height: @input-height-large;\n line-height: @input-height-large;\n }\n textarea.form-control,\n select[multiple].form-control {\n height: auto;\n }\n .form-control-static {\n height: @input-height-large;\n min-height: (@line-height-computed + @font-size-large);\n padding: (@padding-large-vertical + 1) @padding-large-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-large;\n }\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match.\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n margin-top: 0;\n margin-bottom: 0;\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n margin-bottom: 0;\n text-align: right;\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: floor((@grid-gutter-width / 2));\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-large-vertical + 1);\n font-size: @font-size-large;\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n font-size: @font-size-small;\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n background-color: @background-color;\n border-color: @border-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n background-image: none;\n outline: 0;\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `<a>` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n font-weight: 400;\n color: @link-color;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n background-image: none;\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n @opacity-ie: (@opacity * 100); // IE8 filter\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n opacity: @opacity;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n list-style: none;\n background-color: @dropdown-bg;\n background-clip: padding-box;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0, 0, 0, .175));\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: 400;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n\n &:hover,\n &:focus {\n color: @dropdown-link-hover-color;\n text-decoration: none;\n background-color: @dropdown-link-hover-bg;\n }\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n background-color: @dropdown-link-active-bg;\n outline: 0;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n cursor: @cursor-disabled;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n right: 0;\n left: auto; // Reset the default from `.dropdown-menu`\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n content: \"\";\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","// stylelint-disable selector-no-qualifying-type, selector-max-type\n\n//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n padding-left: 0; // Override default ul/ol\n margin-bottom: 0;\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n cursor: @cursor-disabled;\n background-color: transparent;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n cursor: default;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n margin-bottom: 5px;\n text-align: center;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-left-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-top-right-radius: @radius;\n border-bottom-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-top-left-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, selector-max-class, declaration-no-important, selector-no-qualifying-type\n\n//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n overflow-x: visible;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-right: 0;\n padding-left: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n\n // Fix the top/bottom navbars when screen real estate supports it\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n height: @navbar-height;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-right: @navbar-padding-horizontal;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n padding: 10px @navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-right: @navbar-padding-horizontal;\n margin-left: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n\n // Dropdown menu items\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n\n // Dropdowns\n > .open > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n padding: 0 5px;\n color: @breadcrumb-color;\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n color: inherit; // Specified for the h4 to prevent conflicts of changing @headings-color\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n// The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissable,\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n color: @text-color;\n background-color: @background;\n border-color: @border;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: 700;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","// stylelint-disable at-rule-no-vendor-prefix\n\n//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n overflow: hidden;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0, 0, 0, .1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, .15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// stylelint-disable value-no-vendor-prefix, selector-max-id\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down\n background-repeat: repeat-x;\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\", argb(@start-color), argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n background-repeat: no-repeat;\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255, 255, 255, .15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n","// stylelint-disable selector-no-qualifying-type */\n\n//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0, 0, 0, .125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: 400;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n padding-left: 0; // reset padding because ul and ol\n margin-bottom: 20px;\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n background-color: @list-group-disabled-bg;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item,\nbutton.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n color: @list-group-link-hover-color;\n text-decoration: none;\n background-color: @list-group-hover-bg;\n }\n}\n\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a&,\n button& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","// stylelint-disable selector-max-type, selector-max-compound-selectors, selector-max-combinators, no-duplicate-selectors\n\n//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0, 0, 0, .05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a,\n > small,\n > .small,\n > small > a,\n > .small > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n > .panel-heading + .panel-collapse > .list-group {\n .list-group-item:first-child {\n .border-top-radius(0);\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-right: @panel-body-padding;\n padding-left: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n border-bottom-left-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n margin-bottom: 0;\n border: 0;\n }\n}\n\n\n// Collapsible panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n text-align: center;\n list-style: none;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n cursor: @cursor-disabled;\n background-color: @pager-bg;\n }\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n margin-left: -1px;\n line-height: @line-height-base;\n color: @pagination-color;\n text-decoration: none;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n cursor: default;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n cursor: @cursor-disabled;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n}\n\n// Modifier class for 16:9 aspect ratio\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n\n// Modifier class for 4:3 aspect ratio\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0, 0, 0, .05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, .15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","// stylelint-disable property-no-vendor-prefix\n\n//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n appearance: none;\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n line-height: @badge-line-height;\n color: @badge-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0); }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n background-clip: padding-box;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0, 0, 0, .5));\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal-background;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n &:extend(.clearfix all);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n margin-left: 5px;\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0, 0, 0, .5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n display: table; // 2\n content: \" \"; // 1\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n","// stylelint-disable font-family-name-quotes, font-family-no-missing-generic-family-keyword\n\n// CSS image replacement\n//\n// Heads up! v3 launched with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (has been removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","// stylelint-disable declaration-no-important\n\n.responsive-visibility() {\n display: block !important;\n table& { display: table !important; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n","//\n// Misago Global Scaffolding\n// --------------------------------------------------\n\n// Disable horizontal scroll on mobile displays top-most containers\n@media screen and (max-width: @screen-sm-max) {\n html,\n body {\n overflow-x: hidden;\n }\n}\n\n// top margin utils\n@media screen and (min-width: @screen-md-min) {\n .md-margin-top-no {\n margin-top: 0px !important;\n }\n}\n\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .sm-margin-top {\n margin-top: @line-height-computed !important;\n }\n\n .sm-margin-top-no {\n margin-top: 0px !important;\n }\n\n .sm-margin-top-half {\n margin-top: @line-height-computed * 0.33 !important;\n }\n\n .sm-align-row-buttons {\n margin-top: @line-height-computed * 0.25 !important;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .xs-margin-top {\n margin-top: @line-height-computed !important;\n }\n\n .xs-margin-top-half {\n margin-top: @line-height-computed * 0.33 !important;\n }\n}\n","//\n// Simple flex row util, inspired by toolbar\n// --------------------------------------------------\n\n.flex-row {\n display: block;\n margin: 0 floor(@grid-gutter-width * -0.5);\n}\n\n.flex-row-section {\n align-items: center;\n display: flex;\n flex: 1;\n}\n\n.flex-row-section + .flex-row-section {\n margin-top: @line-height-computed;\n}\n\n.flex-row-col {\n flex: 1;\n padding: 0 floor(@grid-gutter-width * 0.5);\n}\n\n@media screen and (min-width: @screen-sm-min) {\n .flex-row {\n display: flex;\n align-items: center;\n }\n\n .flex-row-section + .flex-row-section {\n margin: 0;\n }\n\n .flex-row-section,\n .flex-row-col {\n flex: 0;\n\n align-items: center;\n }\n\n .flex-row-section.flex-row-section-auto,\n .flex-row-section.flex-row-section-auto > .flex-row-col {\n flex: 1;\n }\n}\n\n.flex-row-col-shrink {\n flex: 0 !important;\n}\n","//\n// Auth changed message\n// --------------------------------------------------\n\n.auth-message {\n background-color: @auth-changed-bg;\n padding: @line-height-computed 0px;\n width: 100%;\n\n position: fixed;\n top: -100%;\n left: 0px;\n\n z-index: @zindex-auth-message;\n\n transition: top 300ms ease;\n\n &.show {\n top: 0px;\n bottom: auto;\n }\n\n p {\n padding: @line-height-computed / 4 0px;\n\n color: @auth-changed-color;\n }\n\n // Small displays\n @media screen and (max-width: @screen-sm-max) {\n text-align: center;\n\n .btn {\n padding: @padding-large-vertical @padding-large-horizontal;\n\n font-size: @font-size-large;\n }\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n.alerts-snackbar {\n position: fixed;\n top: -100%;\n width: 100%;\n z-index: @zindex-modal + 10;\n\n text-align: center;\n font-size: @font-size-large;\n\n transition: top 300ms ease;\n\n pointer-events: none;\n\n &.in {\n top: 0px;\n transition: top 200ms ease;\n }\n\n p {\n display: inline-block;\n border-radius: 0px 0px @border-radius-base @border-radius-base;\n margin: 0px;\n\n pointer-events: all;\n }\n}\n","//\n// Agreement overlay\n// --------------------------------------------------\n\n.agreement-overlay {\n position: fixed;\n width: 100%;\n height: 100%;\n top: 0px;\n left: 0px;\n z-index: @zindex-modal + 10;\n\n background-color: fadeOut(@modal-backdrop-bg, @modal-backdrop-opacity * 100);\n overflow-x: scroll;\n\n .container {\n max-width: @modal-lg;\n padding: @line-height-computed @grid-gutter-width;\n }\n}\n\n.agreement-content {\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,0.5));\n background-clip: padding-box;\n outline: 0;\n\n padding: @padding-large-vertical @padding-large-horizontal;\n}\n\n.agreement-header {\n padding: @padding-large-vertical 0;\n\n border-bottom: 1px solid @gray-lighter;\n\n h2 {\n margin-top: 0;\n }\n\n p {\n margin: 0;\n padding: 0;\n }\n}\n\n.agreement-body {\n padding: @line-height-computed 0;\n\n p.lead {\n margin: 0;\n padding: 0;\n }\n}\n\n.agreement-footer {\n .modal-footer();\n\n padding: @padding-large-vertical 0;\n}\n\n// utility class disabling scroll on body\nbody.agreement-overlay-visible {\n overflow: hidden;\n}\n","//\n// Misago Loaders\n// --------------------------------------------------\n\n.loader {\n width: 100%;\n height: 49px;\n text-align: center;\n\n &.loader-spaced {\n margin: @line-height-computed * 2 0px;\n }\n}\n\n.loader-spinning-wheel {\n width: 49px;\n height: 49px;\n margin: 0 auto;\n border: 3px solid @loader-color;\n border-radius: 50%;\n border-left-color: transparent;\n border-right-color: transparent;\n animation: cssload-spin 575ms infinite linear;\n -o-animation: cssload-spin 575ms infinite linear;\n -ms-animation: cssload-spin 575ms infinite linear;\n -webkit-animation: cssload-spin 575ms infinite linear;\n -moz-animation: cssload-spin 575ms infinite linear;\n}\n\n@keyframes cssload-spin {\n 100% {\n transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-o-keyframes cssload-spin {\n 100% {\n -o-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-ms-keyframes cssload-spin {\n 100% {\n -ms-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes cssload-spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@-moz-keyframes cssload-spin {\n 100% {\n -moz-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n","//\n// Misago Navbar\n// --------------------------------------------------\n\n// Remove bottom margin from navbar\n.navbar {\n margin-bottom: 0px;\n}\n\n// Desktop navbar\n.navbar .navbar-full {\n // Brand\n .navbar-brand {\n padding-top: (@navbar-height - @navbar-icon-height) / 2;\n padding-bottom: (@navbar-height - @navbar-icon-height) / 2;\n\n font-size: @font-size-base * 1.5;\n\n & > * {\n display: inline-block;\n vertical-align: middle;\n }\n\n img {\n height: @navbar-icon-height;\n margin-right: @padding-base-horizontal / 2;\n }\n }\n\n .navbar-nav > li > a {\n font-size: @font-size-base * 1.2;\n }\n\n .navbar-icon {\n display: block;\n height: @navbar-height;\n padding: @nav-link-padding;\n padding-top: (@navbar-height - 28px) / 2;\n padding-bottom: (@navbar-height - 28px) / 2;\n position: relative;\n\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n .badge {\n background-color: @brand-danger;\n position: absolute;\n\n top: 6px;\n right: 6px;\n\n font-size: 9px;\n }\n }\n\n .open .navbar-icon {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n\n color: @navbar-default-link-active-color;\n }\n }\n\n // Pull Guest and User menus to right\n .nav-guest,\n .nav-user {\n float: right;\n\n .navbar-btn {\n margin-left: @navbar-padding-horizontal;\n }\n }\n\n // User avatar size\n .nav-user .dropdown-toggle {\n padding: (@navbar-height - @navbar-avatar-size) / 2;\n\n img {\n width: @navbar-avatar-size;\n height: @navbar-avatar-size;\n }\n }\n}\n\n// Compact (mobile) navbar\n.navbar ul.navbar-compact-nav {\n border-collapse: collapse;\n display: table;\n margin: 0px;\n table-layout: fixed;\n width: 100%;\n\n & > li {\n display: table-cell;\n width: 100%;\n }\n\n & > li > a,\n & > li > button {\n background: none;\n border: none;\n display: block;\n padding-top: 13px;\n padding-bottom: 13px;\n\n width: 100%;\n\n color: @navbar-compact-link-color;\n text-align: center;\n\n &.active,\n &:hover,\n &:focus {\n color: @navbar-compact-link-hover-color;\n background-color: @navbar-compact-link-hover-bg;\n }\n\n & > img {\n width: @navbar-compact-item-size;\n height: @navbar-compact-item-size;\n }\n }\n\n & > li > button {\n display: inline-block;\n }\n\n & > li > a > .material-icon {\n font-size: @navbar-compact-item-size;\n line-height: @navbar-compact-item-size;\n }\n}\n\n// Make navbar's height match compact nav\n@media (max-width: @grid-float-breakpoint) {\n .navbar.navbar-misago {\n min-height: auto;\n }\n}\n\n// Hide compact navbar above breakpoint\n.navbar-misago .navbar-desktop-nav {\n display: none;\n}\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-misago ul.navbar-compact-nav {\n display: none;\n }\n\n .navbar-misago .navbar-desktop-nav {\n display: block;\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n.nav-side > a {\n & > .material-icon {\n margin: -5px;\n margin-right: @line-height-computed / 2;\n\n position: relative;\n bottom: 1px;\n\n width: 24px;\n height: 24px;\n\n font-size: 24px;\n line-height: 24px;\n }\n\n .badge {\n position: relative;\n top: 1px;\n }\n}\n\n.nav-pills > li > a {\n display: flex;\n align-items: center;\n padding: @nav-pills-padding-vertical @nav-pills-padding-horizontal;\n\n .material-icon {\n margin-right: 3px;\n }\n\n &,\n &:link,\n &:visited {\n background-color: @nav-pills-bg;\n color: @nav-pills-color;\n }\n\n &:focus,\n &:hover,\n &:active {\n background-color: @nav-pills-hover-bg;\n color: @nav-pills-hover-color;\n }\n}\n\n.nav-pills > li.active > a {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n background-color: @nav-pills-active-bg;\n color: @nav-pills-active-color;\n }\n}\n\n.nav-container {\n .btn-block {\n margin-bottom: @line-height-computed;\n }\n\n .nav {\n margin-right: floor(@line-height-computed / -2);\n margin-bottom: floor(@line-height-computed * 1.5);\n }\n\n li {\n margin-right: floor(@line-height-computed / 2);\n margin-bottom: floor(@line-height-computed / 2);\n }\n}\n","// Breadcrumbs component\n\n.breadcrumbs {\n display: block;\n\n padding: 0;\n margin-bottom: @line-height-computed / 2;\n}\n\n.breadcrumbs-item {\n display: inline-block;\n margin-right: @breadcrumbs-gutter;\n margin-bottom: @line-height-computed / 2;\n padding: 0;\n list-style: none;\n}\n\n.breadcrumbs-item a {\n display: flex;\n align-items: center;\n text-decoration: none;\n\n &,\n &:visited {\n color: @breadcrumbs-color;\n }\n\n &:hover,\n &:focus {\n color: @breadcrumbs-color-hover;\n\n .breadcrumbs-item-name {\n text-decoration: underline;\n }\n }\n\n &:active {\n color: @breadcrumbs-color-active;\n }\n}\n\n.breadcrumbs-item .material-icon {\n margin-right: 4px;\n}\n","//\n// Material Icons\n// --------------------------------------------------\n\n@font-face {\n font-family: \"Material Icons\";\n font-style: normal;\n font-weight: 400;\n src: url(../fonts/MaterialIcons-Regular.eot); /* For IE6-8 */\n src: local(\"Material Icons\"), local(\"MaterialIcons-Regular\"),\n url(../fonts/MaterialIcons-Regular.woff2) format(\"woff2\"),\n url(../fonts/MaterialIcons-Regular.woff) format(\"woff\"),\n url(../fonts/MaterialIcons-Regular.ttf) format(\"truetype\");\n}\n\n.material-icon {\n font-family: \"Material Icons\";\n font-weight: normal;\n font-style: normal;\n display: inline-block;\n width: 1em;\n height: 1em;\n line-height: 1;\n text-align: center;\n text-transform: none;\n letter-spacing: normal;\n vertical-align: middle;\n word-wrap: normal;\n white-space: nowrap;\n direction: ltr;\n\n /* Support for all WebKit browsers. */\n -webkit-font-smoothing: antialiased;\n /* Support for Safari and Chrome. */\n text-rendering: optimizeLegibility;\n\n /* Support for Firefox. */\n -moz-osx-font-smoothing: grayscale;\n\n /* Support for IE. */\n font-feature-settings: \"liga\";\n}\n","//\n// Misago Modals\n// --------------------------------------------------\n\n// Modal toolbar\n.modal-toolbar {\n background: @gray-lighter;\n border-bottom: 1px solid @modal-header-border-color;\n overflow: auto;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n .pull-left {\n margin-right: 8px;\n }\n\n p {\n padding: @padding-small-vertical 0px;\n margin-bottom: 0px;\n }\n}\n\n// Modals displaying messages\n\n// Small displays\n@media screen and (max-width: @screen-sm-max) {\n .modal-message {\n text-align: center;\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n\n .material-icon {\n font-size: @message-page-icon-size * 2;\n }\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-md-min) {\n .modal-message {\n .modal-body {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n }\n\n .message-icon {\n float: left;\n position: relative;\n left: 7px;\n\n .material-icon {\n font-size: @line-height-computed * 2.5;\n }\n }\n\n .message-body {\n margin-left: @line-height-computed * 3.75;\n margin-top: @line-height-computed * 0.6 - 2px;\n\n p {\n margin-top: @line-height-computed;\n }\n\n .lead {\n margin-top: 0px;\n margin-bottom: 0px;\n }\n }\n }\n}\n\n// Modal loader\n.modal-loader {\n padding: @line-height-computed * 2.5 0px;\n\n .loader {\n width: 100%;\n height: @loader-size;\n text-align: center;\n }\n\n .loader-spinning-wheel {\n width: @loader-size;\n height: @loader-size;\n }\n}\n\n// Modal form\n.modal-body .form-group {\n min-height: 34px;\n}\n\n// Errors modal\n.list-item-errors {\n margin-bottom: @line-height-computed;\n}\n\n.list-errored-items li:last-child .list-item-errors {\n margin-bottom: 0px;\n}\n\n// Post likes modal\n.modal-post-likers {\n .media-list {\n margin: 0px;\n }\n\n .item-title {\n display: block;\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n// Material feedback icon\n.has-feedback .material-icon.form-control-feedback {\n top: @padding-base-vertical;\n right: @padding-base-horizontal * 2;\n\n font-size: @line-height-base;\n line-height: @line-height-base;\n}\n\n// Well done\n.well.well-form.well-done {\n font-size: @font-size-large;\n text-align: center;\n\n .message-icon {\n margin-bottom: @line-height-computed / 2;\n\n font-size: @font-size-large * 5;\n line-height: @font-size-large * 5;\n }\n\n .message-body {\n margin-bottom: @line-height-computed;\n }\n}\n\n// Noscript well\n.well.well-form.well-noscript {\n font-size: @font-size-large;\n text-align: center;\n\n .message-icon {\n margin-bottom: @line-height-computed / 2;\n\n font-size: @font-size-large * 5;\n line-height: @font-size-large * 5;\n }\n}\n","//\n// Inputs\n// --------------------------------------------------\n\n// Button-based inputs\n.btn.btn-yes-no,\n.btn.btn-select {\n background: transparent;\n border: 1px solid darken(@gray-lighter, 10%);\n\n .material-icon {\n margin: -4px 0px;\n margin-right: 8px;\n\n position: relative;\n bottom: 1px;\n\n width: 20px;\n height: 20px;\n\n font-size: 20px;\n line-height: 20px;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .btn.btn-yes-no {\n width: 100%;\n overflow: auto;\n\n .material-icon {\n float: left;\n margin-top: 1px;\n }\n\n .btn-text {\n display: block;\n\n margin-left: 30px;\n\n text-align: left;\n white-space: normal;\n }\n }\n}\n\n// Hidden file input\ninput.hidden-file-upload {\n position: absolute;\n top: -9999px;\n left: -9999px;\n}\n\n// Search field\n.form-search {\n position: relative;\n\n .form-control {\n padding-right: 30px;\n }\n\n .material-icon {\n position: absolute;\n top: 5px;\n right: 5px;\n\n color: @gray-light;\n font-size: 24px;\n line-height: 24px;\n\n pointer-events: none;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n// Button loading style\n.btn.btn-loading {\n &,\n &:link,\n &:active,\n &:visited,\n &:hover,\n &:focus {\n // make text transparent, but still take place in button\n color: transparent;\n\n // position loader over the text\n .loader {\n height: 20px;\n margin-top: -20px;\n\n & > div {\n width: 20px;\n height: 20px;\n }\n }\n }\n\n &.btn-default .loader > div {\n border-top-color: @btn-default-color;\n border-bottom-color: @btn-default-color;\n }\n\n &.btn-primary .loader > div {\n border-top-color: @btn-primary-color;\n border-bottom-color: @btn-primary-color;\n }\n\n &.btn-success .loader > div {\n border-top-color: @btn-success-color;\n border-bottom-color: @btn-success-color;\n }\n\n &.btn-info .loader > div {\n border-top-color: @btn-info-color;\n border-bottom-color: @btn-info-color;\n }\n\n &.btn-warning .loader > div {\n border-top-color: @btn-warning-color;\n border-bottom-color: @btn-warning-color;\n }\n\n &.btn-danger .loader > div {\n border-top-color: @btn-danger-color;\n border-bottom-color: @btn-danger-color;\n }\n}\n\n// Icons in buttons\n.btn .material-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n}\n\n// Btn with larger icon\n.btn-icon .material-icon {\n margin: -1px -4px;\n\n width: 20px;\n height: 20px;\n\n font-size: 20px;\n line-height: 20px;\n}\n\n.btn-icon .btn-text {\n margin-left: @padding-small-horizontal;\n}\n\n.btn-icon .btn-text-left {\n margin-right: @padding-small-horizontal;\n}\n\n// Block btn icon\n.btn-block.btn-icon {\n padding-left: 0px;\n padding-right: 0px;\n}\n","//\n// Dropdowns\n// --------------------------------------------------\n\n// Unify .btn-link appearance with anchors\n.dropdown-menu > li > a,\n.dropdown-menu > li > .btn-link,\n.modal-menu > li > a,\n.modal-menu > li > .btn-link {\n display: block;\n border: none;\n clear: both;\n float: none;\n padding: 6px 20px;\n width: 100%;\n\n color: @dropdown-link-color;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n white-space: nowrap;\n\n &:hover,\n &:focus {\n background-color: @dropdown-link-hover-bg;\n\n color: @dropdown-link-hover-color;\n text-decoration: none;\n }\n\n &:active {\n background-color: @dropdown-link-hover-bg;\n\n color: @dropdown-link-hover-color;\n text-decoration: none;\n }\n\n &:disabled {\n color: fadeOut(@dropdown-link-color, 50);\n }\n\n // Set material icons in dropdown menus\n .material-icon {\n margin: -2px 0px;\n margin-right: @line-height-computed * 0.35;\n\n position: relative;\n bottom: 1px;\n\n font-size: 18px;\n }\n\n .badge {\n float: right;\n\n position: relative;\n top: 1px;\n }\n}\n\n// Extra overrides for modal nav\n.modal-menu {\n margin: @line-height-computed 0px;\n padding: 0px;\n}\n\n.modal-menu > li {\n margin: @line-height-computed / 3 0px;\n padding: 0px;\n\n list-style: none;\n}\n\n// Bump min dropdown width to 210px\n.dropdown-menu {\n min-width: 210px;\n}\n\n// Dropdown footer\n.dropdown-menu .dropdown-footer {\n padding: 6px 20px;\n}\n\n// Dropdown buttons container\n.dropdown-menu .dropdown-buttons {\n padding: 2px 20px;\n padding-bottom: 7px;\n\n .btn {\n margin: 4px 0px;\n }\n}\n\n// Navbar's dropdown\n.mobile-dropdown {\n position: relative;\n}\n\n.mobile-dropdown.open > .dropdown-menu,\n.compact-nav.open > .dropdown-menu {\n border: none;\n border-radius: 0;\n\n display: block;\n margin: 0px;\n width: 100%;\n}\n\n// Guest menu\n.user-dropdown .guest-preview {\n text-align: center;\n\n .row {\n margin: 0px;\n }\n}\n\n// User menu\n.navbar .user-dropdown {\n width: 240px;\n}\n\n.user-dropdown .dropdown-header {\n padding: 6px 20px;\n\n font-size: @font-size-large;\n\n strong {\n font-weight: normal;\n }\n}\n\n// Category picker\n.category-picker .dropdown-menu {\n // Make category picker wider on desktops\n @media screen and (min-width: @screen-md-min) {\n width: 300px;\n }\n}\n\n.category-picker .dropdown-menu > li > .btn-link {\n white-space: normal;\n word-wrap: break-word;\n}\n\n// Stick to bottom on mobile\n@media screen and (max-width: @screen-xs-max) {\n .dropdown-menu.stick-to-bottom {\n border-radius: 0px;\n border: none;\n\n max-height: 300px;\n overflow-y: auto;\n\n .box-shadow(0px 0px @line-height-computed * 1.5 @gray-light);\n\n clear: both;\n top: auto;\n width: 100%;\n\n position: fixed;\n bottom: 0px;\n\n margin: 0px;\n padding: 0px;\n\n padding-bottom: @line-height-computed;\n\n li {\n float: none;\n\n margin: 0px;\n\n clear: both;\n\n & > a,\n & > .btn {\n padding-top: @line-height-computed * 0.75;\n padding-bottom: @line-height-computed * 0.75;\n\n border-bottom: 1px solid @dropdown-divider-bg;\n }\n }\n }\n}\n","// Category label is category on threads list\n.category-label {\n border-radius: 0.25em;\n padding: 0.2em 0.6em 0.3em;\n}\n\n.category-label-color,\n.category-label-color:link,\n.category-label-color:focus,\n.category-label-color:active,\n.category-label-color:visited,\n.category-label-color:hover {\n color: @category-label-color;\n}\n\n.category-label-no-color,\n.category-label-no-color:link,\n.category-label-no-color:focus,\n.category-label-no-color:active,\n.category-label-no-color:visited,\n.category-label-no-color:hover {\n background-color: @category-label-default-bg;\n color: @category-label-default-color;\n}\n",".thread-flags {\n display: flex;\n align-items: center;\n\n opacity: @thread-flag-icon-opacity;\n\n margin: 0;\n padding: 0;\n\n li {\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: @thread-flag-block-size;\n height: @thread-flag-block-size;\n\n border-radius: @border-radius-small;\n list-style-type: none;\n\n cursor: default;\n }\n\n li + li {\n margin-left: @grid-gutter-width / 4;\n }\n\n .material-icon {\n font-size: @thread-flag-icon-size;\n line-height: @thread-flag-icon-size;\n }\n}\n\n.thread-flag-pinned-globally {\n color: @thread-flag-pinned-globally-color;\n background: @thread-flag-pinned-globally-bg;\n}\n\n.thread-flag-pinned-locally {\n color: @thread-flag-pinned-locally-color;\n background: @thread-flag-pinned-locally-bg;\n}\n\n.thread-flag-answered {\n color: @thread-flag-answered-color;\n background: @thread-flag-answered-bg;\n}\n\n.thread-flag-poll {\n color: @thread-flag-poll-color;\n background: @thread-flag-poll-bg;\n}\n\n.thread-flag-unapproved {\n color: @thread-flag-unapproved-color;\n background: @thread-flag-unapproved-bg;\n}\n\n.thread-flag-closed {\n color: @thread-flag-closed-color;\n background: @thread-flag-closed-bg;\n}\n\n.thread-flag-hidden {\n color: @thread-flag-hidden-color;\n background: @thread-flag-hidden-bg;\n}\n",".threads-replies {\n display: flex;\n align-items: center;\n\n color: @thread-replies-color;\n font-size: @thread-replies-size;\n font-weight: bold;\n\n .material-icon {\n margin-right: @grid-gutter-width / 4;\n transform: matrix(-1, 0, 0, 1, 0, 0);\n }\n}\n",".thread-user-card {\n display: flex;\n align-items: center;\n}\n\n.thread-user-card-media {\n flex: 0;\n margin-right: floor(@grid-gutter-width * .5;);\n\n img {\n border-radius: @border-radius-small;\n }\n}\n\n.thread-user-card-body {\n flex: 1;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","//\n// Search Dropdown\n// --------------------------------------------------\n\n// Default size and position for search dropdown\n.navbar-misago .dropdown-menu.dropdown-search-results {\n margin: 0px;\n padding-top: 0px;\n width: 400px;\n left: auto;\n right: 0px;\n}\n\n// Search input\n.dropdown-search-results .form-group {\n margin: 0px;\n padding: @padding-base-horizontal;\n}\n\n// Message\nli.dropdown-search-message {\n text-align: center;\n}\n\n// Thread result\n.dropdown-search-thread {\n width: 100%;\n\n h5 {\n margin: 0px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n small {\n display: block;\n margin: 0px;\n margin-top: 4px;\n }\n}\n","//\n// Page Header\n// --------------------------------------------------\n\n// Remove margins from header\n.page-header {\n margin: 0;\n margin-top: floor(@line-height-computed * 0.5);\n}\n\n// Add padding to header's banner and message\n.page-header-banner-bg-overlay {\n padding: @line-height-computed 0;\n}\n\n// Don't rely on header's margins for spacing, force word break\n.page-header h1 {\n margin: 0;\n\n overflow-wrap: break-word;\n}\n","// Page container is .container element for page content (excluding header)\n\n.page-container {\n padding-top: @line-height-computed;\n}\n","//\n// Panels\n// --------------------------------------------------\n\n// Messages\n@media screen and (max-width: @screen-sm-max) {\n .panel-message-body {\n text-align: center;\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n\n .material-icon {\n font-size: @message-page-icon-size * 2;\n }\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-md-min) {\n .panel-message-body {\n padding: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n\n .message-icon {\n float: left;\n\n .material-icon {\n font-size: @line-height-computed * 2.5;\n }\n }\n\n .message-body {\n margin-left: @line-height-computed * 3.25;\n margin-top: @line-height-computed * 0.6 - 2px;\n\n .lead {\n margin-bottom: 0px;\n }\n\n .help-block {\n margin-top: @line-height-computed * 0.66;\n }\n }\n }\n}\n\n// Loading\n.panel-body-loading {\n padding: 0px;\n\n text-align: center;\n}\n","//\n// Forum Footer\n// --------------------------------------------------\n\n// Superbasic spacing and layout for easy overriding\n.misago-footer {\n margin-top: @line-height-computed * 1.5;\n margin-bottom: @line-height-computed * 2.5;\n\n .footer-content {\n border-top: 1px solid @page-header-border-color;\n padding-top: @line-height-computed * 1.5;\n }\n}\n\n// Position \"enable JS!\" message's icon\n.misago-footer .noscript-message .material-icon {\n position: relative;\n bottom: 1px;\n\n font-size: @font-size-large;\n}\n","//\n// UI Preview\n// --------------------------------------------------\n\n// Animation\n.ui-preview {\n color: @ui-preview;\n\n .animation(ui-preview-animation @ui-preview-frequency linear infinite);\n}\n\n@keyframes ui-preview-animation {\n 0% {\n .opacity(@ui-preview-in);\n }\n 50% {\n .opacity(@ui-preview-out);\n }\n 100% {\n .opacity(@ui-preview-in);\n }\n}\n\n// Text\n.ui-preview-text {\n background: @ui-preview;\n border-radius: 100px;\n display: inline-block;\n height: @font-size-base;\n\n position: relative;\n top: (@line-height-computed - @font-size-base) / 2;\n}\n\n.ui-preview-paragraph {\n .ui-preview-text {\n margin-right: 6px;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Image\n.ui-preview-img {\n background: @ui-preview;\n border-radius: @border-radius-base + 1px;\n}\n","//\n// Misago pager\n// --------------------------------------------------\n\n.pager-undercontent {\n margin-top: @line-height-computed * -1;\n}\n\n// \"Load more\" button\n.pager-more {\n text-align: center;\n}\n\n// Large displays\n@media screen and (min-width: @screen-md-min) {\n .pager-more .btn {\n padding-left: @line-height-computed;\n padding-right: @line-height-computed;\n }\n}\n","//\n// Misago pagination\n// --------------------------------------------------\n\n.misago-pagination {\n display: flex;\n\n .btn {\n display: block;\n width: 100%;\n }\n\n .btn + .btn {\n margin-left: @grid-gutter-width;\n }\n}\n\n// Make it full width on small screens (in toolbars)\n@media screen and (max-width: @screen-xs-max) {\n .toolbar-item .misago-pagination {\n flex: 1;\n }\n}\n","//\n// Poll\n// --------------------------------------------------\n\n.panel-poll h2 {\n margin-top: 0px;\n}\n\n.poll-select-choice .btn {\n &,\n &:active,\n &:focus,\n &:hover {\n background: transparent;\n border: transparent;\n .box-shadow(none);\n\n margin: @padding-base-vertical 0px;\n padding: 0px;\n padding-left: @padding-base-vertical;\n\n outline: none;\n\n text-align: left;\n }\n\n .material-icon {\n margin-right: @padding-base-vertical;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-heigh: 28px;\n\n color: darken(@gray-lighter, 10%);\n }\n\n &.btn-selected .material-icon {\n color: @brand-primary;\n }\n}\n\n.poll-help {\n font-size: @font-size-small;\n}\n\n.poll-chart-selected .material-icon {\n margin-right: 4px;\n\n position: relative;\n bottom: 1px;\n\n height: 14px;\n width: 14px;\n\n color: @brand-success;\n font-size: 14px;\n line-heigh: 14px;\n}\n\n.poll-options {\n margin-bottom: 0px;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-base-vertical * -1;\n\n .btn {\n margin: @padding-base-vertical 0px;\n }\n }\n}\n","//\n// Misago User Status\n// --------------------------------------------------\n\n// Colors\n.user-status {\n &.user-banned .status-icon {\n color: @user-status-banned;\n }\n\n &.user-online .status-icon {\n color: @user-status-online;\n }\n\n &.user-offline .status-icon {\n color: @user-status-offline;\n }\n}\n","//\n// User Card\n// --------------------------------------------------\n\n// Center card's content on larger displays\n.user-card {\n @media screen and (min-width: @screen-sm-min) {\n text-align: center;\n }\n}\n\n// Max out small avatar's width\n.user-card-small-avatar img {\n width: 100%;\n height: auto;\n}\n\n// Toggle avatar visibility\n@media screen and (min-width: @screen-sm-min) {\n .user-card-small-avatar {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n .user-card-avatar {\n display: none;\n }\n}\n","//\n// Misago Toolbar\n// --------------------------------------------------\n\n.toolbar {\n display: block;\n margin: 0 floor(@grid-gutter-width * -0.5);\n}\n\n.toolbar-section {\n justify-items: center;\n display: flex;\n flex: 1;\n margin-bottom: @line-height-computed;\n}\n\n.toolbar-item {\n flex: 1;\n padding: 0 floor(@grid-gutter-width * 0.5);\n\n h3,\n p {\n margin: 0;\n }\n}\n\n.toolbar-item-shrink {\n flex: 0;\n}\n\n.toolbar-spacer {\n display: none;\n}\n\n@media screen and (min-width: @screen-sm-min) {\n .toolbar {\n display: flex;\n }\n\n .toolbar-section,\n .toolbar-item {\n flex: 0;\n\n align-items: center;\n }\n\n .toolbar-section.toolbar-section-auto,\n .toolbar-section.toolbar-section-auto .toolbar-item {\n flex: 1;\n }\n\n .toolbar-spacer {\n display: block;\n flex: 1;\n }\n\n .toolbar-item .form-search {\n width: 250px;\n }\n}\n\n// Center paragraph of text on portrait phones\n// Used for pagination messages\n@media screen and (max-width: @screen-xs-max) {\n .toolbar-item p {\n text-align: center;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\nabbr {\n border: none !important;\n}\n\n.item-title {\n color: @text-color;\n font-weight: bold;\n text-decoration: none;\n}\n\na.item-title {\n &:link,\n &:active,\n &:visited,\n &:hover {\n color: @text-color;\n font-weight: bold;\n }\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.message-line {\n text-align: center;\n\n .material-icon {\n margin-right: @line-height-computed / 3;\n\n font-size: 20px;\n line-height: 20px;\n\n height: 20px;\n width: 20px;\n }\n}\n\n.text-ellipsis {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n","//\n// Markup styles\n// --------------------------------------------------\n\n// Force word wrap for user text\n.misago-markup {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n p {\n word-wrap: break-word;\n }\n}\n\n// Add upper margins for headers\n.misago-markup {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: @line-height-computed * 2;\n }\n}\n\n// Even out blocks\n.misago-markup > *,\n.misago-markup blockquote > * {\n margin: @line-height-computed 0px;\n\n &:first-child {\n margin-top: 0px;\n }\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Downscale images so they don't expand area\n.misago-markup img {\n max-width: 100%;\n max-height: 500px;\n}\n\n// Make quotes stand out a little\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background: @gray-lighter;\n border: none;\n\n font-size: @font-size-base;\n\n .quote-heading {\n border-bottom: 1px solid darken(@gray-lighter, 8%);\n padding: (@line-height-computed / 2) @line-height-computed;\n\n font-size: @font-size-small;\n font-weight: bold;\n }\n}\n\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n border: 1px solid darken(@gray-lighter, 8%);\n}\n\n.misago-markup .quote-body {\n background: @body-bg;\n margin: 0px;\n padding: @line-height-computed;\n\n & > .quote-block,\n & > blockquote {\n border: 1px solid darken(@gray-lighter, 8%);\n }\n}\n\n// Style spoilers\n.misago-markup .spoiler-block {\n background: @gray-lighter;\n border: none;\n\n font-size: @font-size-base;\n}\n\n.misago-markup > .spoiler-block {\n border: 1px solid darken(@gray-lighter, 8%);\n position: relative;\n}\n\n.misago-markup .spoiler-body {\n background: @body-bg;\n margin: 0px;\n padding: @line-height-computed;\n}\n\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: @body-bg;\n}\n\n.misago-markup .spoiler-block.revealed .spoiler-overlay {\n display: none;\n}\n\n// Add bullets to lists\n.misago-markup ul {\n list-style-type: square;\n\n li {\n list-style-type: square;\n }\n}\n\n.misago-markup ol {\n list-style-type: decimal;\n\n li {\n list-style-type: decimal;\n }\n}\n\n// Expand code blocks a little\n.misago-markup pre {\n background: #eee;\n border: none;\n padding: @padding-large-vertical;\n overflow: hidden;\n\n color: #000;\n\n code.hljs {\n margin: @padding-large-vertical * -1;\n padding: ((@line-height-computed - 1) / 2);\n }\n}\n","//\n// Change Avatar Modal\n// --------------------------------------------------\n\n// Index\n.modal-change-avatar .modal-avatar-index {\n .avatar-preview {\n border-radius: @border-radius-large;\n margin: 0px auto;\n overflow: hidden;\n position: relative;\n\n width: 200px;\n height: 200px;\n\n .loader {\n display: none;\n\n position: absolute;\n top: 50px;\n height: 100px;\n\n .loader-spinning-wheel {\n border-width: 10px;\n border-color: #fff;\n border-left-color: transparent;\n border-right-color: transparent;\n\n width: 100px;\n height: 100px;\n }\n }\n\n &.preview-loading {\n img {\n .opacity(0.33);\n }\n\n .loader {\n display: block;\n }\n }\n\n @media (max-width: (@grid-float-breakpoint - 1)) {\n margin-bottom: @line-height-computed;\n\n width: 150px;\n height: 150px;\n\n img {\n width: 150px;\n height: 150px;\n }\n\n .loader {\n top: 25px;\n height: 100px;\n\n .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n }\n }\n }\n\n .btn {\n text-align: left;\n }\n}\n\n// Upload\n.modal-change-avatar .modal-avatar-upload {\n text-align: center;\n\n .btn-pick-file {\n background: transparent;\n border: 2px solid @gray-lighter;\n border-radius: @border-radius-large;\n padding: @padding-large-vertical @padding-large-horizontal * 1.5;\n .box-shadow(none);\n\n color: @gray-light;\n font-size: @font-size-large;\n text-align: center;\n\n & > .material-icon {\n display: block;\n margin: 0px auto;\n margin-bottom: @line-height-computed * 0.66;\n\n font-size: @line-height-computed * 2.5;\n width: @line-height-computed * 2.5;\n height: @line-height-computed * 2.5;\n }\n\n &:hover,\n &:active {\n border-color: @brand-primary;\n color: @brand-primary;\n }\n }\n\n .text-muted {\n margin-top: @line-height-computed * 0.66;\n }\n\n .upload-progress {\n img {\n border-radius: @border-radius-base;\n margin-bottom: @line-height-computed;\n\n max-height: 80px;\n width: auto;\n }\n\n .progress {\n width: 70%;\n margin: 0px auto;\n }\n }\n}\n\n// Crop\n.modal-avatar-crop .crop-form {\n margin: 0px auto;\n\n .cropit-image-zoom-input {\n margin-top: @line-height-computed / 2;\n\n // removes default webkit styles\n -webkit-appearance: none;\n\n // fix for FF unable to apply focus style bug\n border: 1px solid white;\n\n // required for proper track sizing in FF\n width: 100%;\n\n &::-webkit-slider-runnable-track {\n width: 100%;\n height: 8px;\n background: @gray-lighter;\n border: none;\n border-radius: 3px;\n }\n\n &::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n margin-top: -6px;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus::-webkit-slider-runnable-track {\n background: @gray-lighter;\n }\n\n &::-moz-range-track {\n width: 100%;\n height: 8px;\n background: @gray-lighter;\n border: none;\n border-radius: 4px;\n }\n\n &::-moz-range-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n }\n\n /*hide the outline behind the border*/\n &:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n }\n\n &::-ms-track {\n width: 100%;\n height: 8px;\n\n /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */\n background: transparent;\n\n /*leave room for the larger thumb to overflow with a transparent border */\n border-color: transparent;\n border-width: 8px 0;\n\n /*remove default tick marks*/\n color: transparent;\n }\n\n &::-ms-fill-lower {\n background: @gray-lighter;\n border-radius: 16px;\n }\n\n &::-ms-fill-upper {\n background: @gray-lighter;\n border-radius: 16px;\n }\n\n &::-ms-thumb {\n border: none;\n height: 20px;\n width: 20px;\n border-radius: 50%;\n background: @gray-light;\n }\n\n &:focus::-ms-fill-lower {\n background: @gray-lighter;\n }\n\n &:focus::-ms-fill-upper {\n background: @gray-lighter;\n }\n }\n}\n\n// Gallery\n.modal-change-avatar .modal-avatar-gallery {\n padding-bottom: 0px;\n\n .avatars-gallery {\n margin-bottom: @line-height-computed;\n\n h3 {\n margin-top: 0px;\n }\n }\n\n .avatars-gallery-images {\n .row {\n margin-bottom: @line-height-computed / 2;\n }\n\n .btn {\n border-radius: @border-radius-base + 2px;\n border: 2px solid @gray-lighter;\n background: none;\n padding: 2px;\n position: relative;\n\n &:hover,\n &:focus {\n border-color: @gray-light;\n }\n\n &.avatar-selected,\n &:active {\n border-color: @link-color;\n }\n\n img {\n border-radius: @border-radius-base;\n width: 100%;\n height: auto;\n }\n }\n }\n}\n","//\n// Categories Lists\n// --------------------------------------------------\n\n// Category Block\n// --------------------------------------------------\n\n// Thread unread state icon\n.category-main .read-status .material-icon {\n color: @category-read-color;\n}\n\n.category-main .read-status.item-new .material-icon {\n color: @category-new-color;\n}\n\n// Last thread\n.category-last-thread .media-heading {\n a {\n display: inline-block;\n overflow: hidden;\n\n white-space: nowrap;\n width: 290px; // md-3 - avatar column\n\n text-overflow: ellipsis;\n vertical-align: top;\n\n @media screen and (max-width: @screen-sm-max) {\n width: 275px; // md-3 - avatar column\n }\n\n @media screen and (max-width: @screen-xs-max) {\n width: 260px; // md-3 - avatar column\n }\n }\n}\n\n// Last thread message\n.category-thread-message {\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n p {\n margin: 0px;\n }\n}\n\n// Subcategories list\n// --------------------------------------------------\n.list-inline.subcategories-list {\n overflow: auto;\n margin-top: @line-height-computed / -2;\n\n li {\n display: block;\n float: left;\n\n a,\n a:link,\n a:visited,\n a:active,\n a:hover,\n a:focus {\n background-color: @gray-lighter;\n border: 1px solid darken(@gray-lighter, 5%);\n border-radius: @border-radius-base;\n display: inline-block;\n margin-top: @line-height-computed / 2;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n color: @gray;\n }\n\n &:focus,\n a:hover,\n a:active {\n background-color: darken(@gray-lighter, 5%);\n\n color: @text-color;\n text-decoration: none;\n }\n }\n}\n\n.row.subcategories-list {\n .btn {\n margin-top: @line-height-computed;\n\n text-align: left;\n }\n}\n","//\n// Posting\n// --------------------------------------------------\n\n// Affix and style placeholder\n#posting-placeholder {\n background-color: @gray-lighter;\n display: none;\n margin-top: @line-height-computed * 1.5;\n margin-bottom: @line-height-computed * -1.5;\n padding: @line-height-computed 0px;\n\n transition: height 300ms;\n\n &.slide-in {\n display: block;\n }\n}\n\n// First row\n#posting-placeholder .first-row {\n margin-bottom: @line-height-computed;\n\n .form-control {\n border: 1px solid darken(@gray-lighter, 15%);\n }\n\n .posting-options {\n .btn {\n padding-top: 4px;\n padding-bottom: 4px;\n\n .btn-text {\n margin-left: @line-height-computed / 4;\n\n position: relative;\n top: 1px;\n }\n }\n\n .material-icon {\n width: 14px;\n height: 24px;\n\n margin-right: 0px;\n\n position: relative;\n top: 5px;\n\n font-size: 14px;\n line-height: 14px;\n text-align: center;\n }\n }\n}\n\n// Posting ui preview\n.posting-ui-preview {\n padding: @line-height-computed 0px;\n position: relative;\n\n .form-control {\n box-shadow: none;\n resize: none;\n }\n}\n\n// Posting Loader\n.posting-loader {\n text-align: center;\n}\n\n.posting-loader .loader {\n height: 100px;\n\n .loader-spinning-wheel {\n width: 100px;\n height: 100px;\n }\n}\n\n// Posting message\n@posting-icon-width: 28px;\n\n.posting-message {\n text-align: center;\n\n .material-icon {\n margin-right: @line-height-computed / 3;\n position: relative;\n top: -1px;\n\n width: @posting-icon-width;\n height: @posting-icon-width;\n\n font-size: @posting-icon-width;\n line-height: @posting-icon-width;\n }\n\n .message-body {\n p {\n font-size: @font-size-large;\n }\n }\n}\n","//\n// Editor\n// --------------------------------------------------\n\n@editor-border: darken(@gray-lighter, 15%);\n\n.editor-border {\n background-color: #fff;\n border: 1px solid @editor-border;\n border-radius: @border-radius-base;\n}\n\n.editor-border .form-control {\n // remove border and resizing\n border: none;\n resize: none;\n\n // remove shadow from control\n &,\n &:focus,\n &:active {\n .box-shadow(none);\n }\n}\n\n// Footer styles\n.editor-footer {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical @padding-base-horizontal;\n overflow: auto;\n\n .pull-left {\n margin-right: @padding-base-horizontal;\n }\n\n .pull-right {\n margin-left: @padding-base-horizontal;\n }\n\n .btn-icon .material-icon {\n margin-bottom: -2px;\n }\n\n // center buttons on small devices\n @media screen and (max-width: @screen-sm-max) {\n .buttons-list {\n float: none !important;\n\n margin: 0px;\n margin-bottom: @line-height-computed / 2;\n\n .btn {\n display: inline-block;\n float: none !important;\n\n margin: @line-height-computed / 3;\n }\n }\n\n .btn-protect {\n .btn-text {\n margin-left: @padding-small-horizontal;\n }\n\n .material-icon {\n position: relative;\n bottom: 2px;\n\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n line-height: 14px;\n }\n }\n }\n}\n\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .buttons-list .btn {\n &:first-child {\n margin-left: 0px;\n }\n }\n}\n\n// make lock button full width\n@media screen and (max-width: @screen-xs-max) {\n .buttons-list {\n text-align: center;\n\n .btn-protect {\n display: block;\n float: none !important;\n\n width: 100%;\n\n margin: 0px;\n margin-top: @line-height-computed / 2;\n }\n }\n}\n\n// Attachments list\n.editor-attachments-list {\n margin: 0px;\n padding: 0px;\n\n li {\n margin: 0px;\n }\n}\n\n.editor-attachment-complete {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical 0px;\n padding-right: @padding-base-horizontal;\n\n .editor-attachment-image {\n float: left;\n width: 50px;\n\n a {\n background-size: cover;\n background-position: center;\n border-radius: @border-radius-small;\n display: block;\n\n margin: 0px auto;\n width: 36px;\n height: 36px;\n }\n }\n\n .editor-attachment-icon {\n float: left;\n width: 50px;\n\n text-align: center;\n\n .material-icon {\n position: relative;\n top: 2px;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n }\n\n .editor-attachment-details {\n margin-left: 50px;\n\n h4,\n p {\n margin: 0px;\n padding: 0px;\n\n font-size: @font-size-base;\n }\n\n p {\n margin-top: @padding-base-vertical / 2;\n\n color: @gray-light;\n font-size: @font-size-small;\n }\n\n abbr {\n white-space: nowrap;\n }\n }\n}\n\n.editor-attachment-actions {\n @media screen and (min-width: @screen-sm-min) {\n padding-top: 3px;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n padding-left: @padding-base-horizontal;\n padding-right: @padding-base-horizontal;\n }\n}\n\n.editor-attachment-error {\n border-top: 1px solid @editor-border;\n padding: @padding-base-vertical 0px;\n padding-right: @padding-base-horizontal;\n}\n\n.editor-attachment-error-icon {\n float: left;\n width: 50px;\n\n text-align: center;\n\n .material-icon {\n position: relative;\n top: 2px;\n\n height: 28px;\n width: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n}\n\n.editor-attachment-error-message {\n margin-left: 50px;\n padding: @padding-base-vertical 0px;\n position: relative;\n\n h4,\n p {\n margin: 0px;\n padding: 0px;\n\n font-size: @font-size-base;\n }\n\n p {\n margin-top: @padding-base-vertical / 2;\n font-size: @font-size-small;\n }\n\n .btn {\n position: absolute;\n top: @padding-base-vertical + 3px;\n right: @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n display: block;\n\n margin-top: @line-height-computed / 2;\n\n position: static;\n }\n }\n}\n\n.editor-attachment-progress-bar {\n background: @editor-border;\n overflow: auto;\n}\n\n.editor-attachment-progress {\n background: @brand-primary;\n float: left;\n height: 1px;\n}\n\n.editor-attachment-upload-message {\n margin: 0px;\n padding: @padding-base-vertical @padding-base-horizontal;\n}\n\n// Hide file input outside of viewport\n#editor-upload-field {\n position: absolute;\n left: -1000px;\n top: -1000px;\n}\n\n// Scale avatar in at.js suggestion\n.atwho-view ul li img {\n border-radius: @border-radius-small;\n margin-right: @font-size-base / 3;\n\n width: @line-height-computed;\n height: @line-height-computed;\n}\n","//\n// Thread Participants\n// --------------------------------------------------\n\n.participant-card .btn-user,\n.participant-card .dropdown.open .btn-user {\n margin-bottom: @line-height-computed;\n\n &,\n &:hover,\n &:focus,\n &:focus:active {\n padding: 0px;\n\n overflow: hidden;\n\n text-align: left;\n }\n\n img {\n background-color: #fff;\n width: 34px;\n height: 34px;\n\n margin-right: 8px;\n }\n}\n\n// Panel copy\n.panel-participants p {\n margin: 0px;\n margin-top: @padding-base-vertical + 1px;\n}\n","//\n// Poll Editor\n// --------------------------------------------------\n\n.poll-choices-control {\n .list-group-item {\n padding: 0px;\n }\n\n .list-group-item .btn {\n background: transparent;\n border: transparent;\n float: left;\n margin: 0px 2px;\n margin-bottom: -29px;\n padding: 0px;\n width: 28px;\n height: 28px;\n\n position: relative;\n top: 3px;\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n font-size: 28px;\n line-height: 28px;\n }\n }\n\n input {\n &,\n &:focus,\n &:active {\n background: transparent;\n border: none;\n .box-shadow(none);\n outline: none;\n margin-left: 30px;\n padding: @padding-base-vertical @padding-base-horizontal;\n width: 100%;\n }\n }\n}\n","//\n// Posts List\n// --------------------------------------------------\n\n// Remove paddings and margins from items list\n.posts-list {\n margin: 0px;\n padding: 0px;\n clear: both;\n\n li {\n list-style: none;\n margin: 0px;\n padding: 0px;\n }\n}\n","//\n// Posts List Post\n// --------------------------------------------------\n\n@media screen and (min-width: @screen-md-min) {\n .panel-post .panel-body {\n display: flex;\n }\n\n .post-side {\n flex-shrink: 0;\n width: @post-side-width;\n padding-right: @post-side-padding;\n }\n\n .panel-content {\n flex: 1 0;\n }\n}\n\n// Post side\n.post-side {\n font-size: @font-size-small;\n\n .media {\n margin: 0px;\n }\n\n .poster-avatar {\n height: 36px;\n width: 36px;\n\n @media screen and (min-width: @screen-md-min) {\n margin-top: 4px;\n\n height: 82px;\n width: 82px;\n }\n }\n\n .user-status {\n margin-right: 4px;\n }\n\n .media-heading {\n display: block;\n }\n\n .media-heading {\n margin: 0px;\n margin-top: -1px;\n\n font-size: @font-size-base;\n\n .user-status {\n margin-right: 0;\n margin-left: 2px;\n }\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n // Lay user details vertically\n @media screen and (min-width: @screen-md-min) {\n .media-heading {\n margin-top: 3px;\n\n font-size: @font-size-large;\n\n .user-status {\n display: none;\n }\n }\n\n .user-title {\n margin-top: 4px;\n margin-bottom: 5px;\n }\n\n .user-postcount {\n display: block;\n }\n\n .user-status {\n display: block;\n }\n }\n}\n\n// Heading\n.post-heading {\n height: 36px;\n\n @media screen and (max-width: @screen-sm-max) {\n margin-top: @line-height-computed / 2;\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n }\n\n .label {\n margin-top: 6px;\n\n font-size: @font-size-base;\n font-weight: normal;\n }\n\n .label-unread {\n background-color: @brand-success;\n\n color: #fff;\n }\n}\n\n// Move controls up\n@media screen and (min-width: @screen-md-min) {\n .post-side .pull-right {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-sm-max) {\n .post-heading .pull-right {\n display: none;\n }\n}\n\n// Body\n.post-body {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed * 1.5;\n}\n\n// Status\n.post-status-message {\n overflow: auto;\n\n .material-icon {\n float: left;\n\n font-size: 28px;\n line-height: 28px;\n }\n\n p {\n margin: 0px;\n margin-top: (28px - @line-height-computed) / 2;\n margin-left: 36px;\n }\n}\n\n.post-status-best-answer {\n background-color: @brand-success;\n\n color: #fff;\n}\n\n.post-status-hidden {\n background-color: @brand-danger;\n\n color: #fff;\n}\n\n.post-status-unapproved {\n background-color: @brand-primary;\n\n color: #fff;\n}\n\n.post-status-protected {\n background-color: @gray;\n\n color: #fff;\n}\n\n// Footer\n.post-footer {\n .pull-left {\n margin-right: @padding-large-horizontal;\n }\n\n .pull-right {\n margin-left: @padding-large-horizontal;\n }\n\n p {\n padding-top: 7px;\n padding-bottom: 6px;\n margin-bottom: 0px;\n }\n}\n\n// Attachments\n.post-attachments {\n @post-preview-width: 40px;\n\n border-top: 1px solid @gray-lighter;\n padding: @padding-base-vertical @padding-large-horizontal;\n\n abbr {\n white-space: nowrap;\n }\n\n .attachment-name {\n word-wrap: break-word;\n }\n\n .row > div {\n margin: @padding-large-vertical 0px;\n }\n\n .post-attachment-preview {\n float: left;\n height: @post-preview-width;\n width: @post-preview-width;\n\n text-align: center;\n }\n\n .post-attachment {\n margin-left: @post-preview-width + 12px;\n }\n\n .post-thumbnail {\n display: block;\n background-size: cover;\n background-position: center;\n border-radius: @border-radius-small;\n width: @post-preview-width;\n height: @post-preview-width;\n }\n\n .material-icon {\n width: 28px;\n height: 28px;\n\n position: relative;\n top: 5px;\n\n font-size: 28px;\n line-height: 28px;\n\n &:link,\n &:active,\n &:visited,\n &:hover,\n &:focus {\n color: @gray-darker;\n text-decoration: none;\n }\n }\n\n .post-attachment-description {\n margin: 0px;\n padding: 0px;\n\n color: @text-muted;\n font-size: @font-size-small;\n }\n}\n","//\n// Post Feed\n// --------------------------------------------------\n\n.post-feed .post-side {\n width: 100%;\n padding-right: 0;\n\n .media-heading {\n margin: 0px;\n\n font-size: @font-size-base;\n }\n\n .user-title {\n margin: 0px;\n\n font-size: @font-size-small;\n }\n}\n\n.post-feed .post-side .btn {\n display: inline-block;\n}\n\n.post-feed .post-side img {\n margin-top: 0px;\n\n width: 36px;\n height: 36px;\n}\n\n.post-feed .post-heading {\n height: auto;\n margin: @line-height-computed / 2 0px;\n}\n\n.post-feed .post-heading .btn {\n margin-right: @padding-large-horizontal;\n max-width: 100%;\n\n text-align: left;\n white-space: normal;\n word-wrap: break-word;\n}\n","//\n// Posts List Event\n// --------------------------------------------------\n\n// Event style\n.posts-list .event {\n margin-bottom: @line-height-computed;\n\n color: @text-muted;\n}\n\n.posts-list .event .event-body {\n display: flex;\n align-items: flex-start;\n}\n\n// Event label\n.posts-list .event-label {\n margin-left: @event-icon-size + 8px + @post-side-padding;\n\n .label-unread {\n background-color: @brand-success;\n\n color: #fff;\n }\n}\n\n// Event icon\n.posts-list .event .event-icon {\n padding-right: @post-side-padding;\n\n .event-icon-bg {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: @event-icon-size + 8px;\n width: @event-icon-size + 8px;\n\n background: @event-icon-bg;\n border-radius: @border-radius-base;\n color: @event-icon-color;\n }\n\n .material-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n\n font-size: @event-icon-size;\n }\n}\n\n// Event content\n.posts-list .event .event-content {\n flex: 1 0;\n}\n\n// Event first and second rows\n.posts-list .event .event-message {\n margin-bottom: @line-height-computed / 4;\n\n font-size: @font-size-large;\n}\n\n.posts-list .event .event-info {\n margin: 0px;\n\n font-size: @font-size-small;\n\n li {\n margin-right: @padding-base-horizontal;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Event controls\n.posts-list .event .event-controls {\n .btn-link {\n border: 0px;\n margin: 0px;\n margin-right: @padding-base-horizontal;\n padding: 0px;\n\n font-size: @font-size-small;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n}\n\n// Mobile tweaks\n@media screen and (max-width: @screen-xs-max) {\n .posts-list .event .event-info {\n margin-top: @line-height-computed / 4;\n }\n\n .posts-list .event .event-controls {\n clear: both;\n margin-top: @line-height-computed / 4;\n\n .btn-link {\n margin-right: @line-height-computed;\n\n font-size: @font-size-base;\n\n &:last-child {\n margin-right: 0px;\n }\n }\n }\n}\n\n@media screen and (min-width: @screen-md-min) {\n .posts-list .event .event-icon {\n display: flex;\n justify-content: flex-end;\n flex-shrink: 0;\n display: flex;\n width: @post-side-width + @panel-body-padding;\n }\n\n .event-content {\n flex: 1 0;\n }\n\n .posts-list .event-label {\n margin-left: @post-side-width + @panel-body-padding;\n }\n}\n","//\n// Post Changelog Modal\n// --------------------------------------------------\n\n.post-changelog-diff {\n padding: 0px;\n margin: 0px;\n\n .list-unstyled {\n padding: 0px;\n margin: @padding-small-vertical 0px;\n }\n\n .diff-item {\n padding: @padding-small-vertical @padding-small-horizontal;\n }\n\n .diff-item-sub {\n color: @brand-danger;\n }\n\n .diff-item-add {\n color: @brand-success;\n }\n}\n\n.post-changelog-toolbar .row {\n margin-left: -12px;\n margin-right: -12px;\n}\n\n.post-changelog-toolbar .post-change-label {\n @media screen and (max-width: @screen-xs-max) {\n text-align: center;\n }\n}\n","//\n// Message Pages\n// --------------------------------------------------\n\n// Small displays\n@media screen and (max-width: @screen-xs-max) {\n .page-message,\n .page-error {\n .message-panel {\n text-align: center;\n }\n\n .message-icon {\n margin: @line-height-computed * 1.5;\n font-size: @message-page-icon-size;\n }\n }\n}\n\n// Full displays\n@media screen and (min-width: @screen-sm-min) {\n .page-message,\n .page-error {\n .message-panel {\n margin: @line-height-computed * 3 auto;\n max-width: @screen-md-max * 0.65;\n overflow: auto;\n }\n\n .message-icon {\n float: left;\n\n .material-icon {\n font-size: @message-page-icon-size;\n }\n }\n\n .message-body {\n margin-top: @message-page-icon-size / 5;\n margin-left: @message-page-icon-size + @line-height-computed;\n\n font-size: @font-size-large;\n\n p.lead {\n font-size: @font-size-large * 2;\n }\n }\n }\n}\n","//\n// Threads Lists\n// --------------------------------------------------\n\n.threads-list {\n margin-bottom: @line-height-computed;\n}\n\n// Make list row flexbox row\n.threads-list-item {\n display: flex;\n align-items: center;\n\n img {\n width: @thread-read-block-size;\n height: @thread-read-block-size;\n }\n}\n\n.threads-list-item-top-row {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n}\n\n.threads-list-item-bottom-row {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n// Thread icon\n.threads-list-item-col-icon {\n padding-right: @grid-gutter-width / 2;\n}\n\n.threads-list-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: @thread-read-block-size;\n height: @thread-read-block-size;\n\n border-radius: @border-radius-small;\n font-size: @thread-read-icon-size;\n line-height: @thread-read-icon-size;\n\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n background-color: @thread-read-icon-bg;\n color: @thread-read-icon-color;\n text-decoration: none;\n }\n}\n\n.threads-list-icon-new {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n background-color: @thread-new-icon-bg;\n color: @thread-new-icon-color;\n }\n}\n\n// Thread title\n.threads-list-item-col-title {\n flex: 1;\n}\n\na.threads-list-item-title {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n font-size: @threads-list-title-size;\n\n color: @thread-color;\n overflow-wrap: break-word;\n }\n}\n\na.threads-list-item-title-sm {\n font-size: @threads-list-title-size-sm;\n\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n color: @thread-read-color;\n overflow-wrap: break-word;\n }\n}\n\na.threads-list-item-title-new {\n &:link,\n &:active,\n &:focus,\n &:hover,\n &:visited {\n color: @thread-new-color;\n }\n}\n\n// Thread status flags\n.threads-list-item-col-flags {\n padding-left: @grid-gutter-width / 2;\n}\n\n.threads-list-item .thread-flags {\n opacity: @thread-flag-icon-opacity;\n}\n\n.threads-list-item:hover,\n.threads-list-item:focus {\n .thread-flags {\n opacity: @thread-flag-icon-opacity-hover;\n }\n}\n\n// Thread category\n.threads-list-item-col-category {\n padding-left: @grid-gutter-width / 2;\n\n white-space: nowrap;\n}\n\n.threads-list-category-label {\n padding: 3px 6px;\n\n border-radius: @border-radius-small;\n\n font-size: @font-size-small;\n font-weight: bold;\n\n &,\n &:link,\n &:active,\n &:hover,\n &:focus,\n &:visited {\n color: @category-label-default-color;\n background: @category-label-default-bg;\n text-decoration: none;\n }\n\n &.threads-list-category-label-color {\n &,\n &:link,\n &:active,\n &:hover,\n &:focus,\n &:visited {\n color: #fff;\n background: var(--label-color);\n }\n }\n}\n\n.threads-list-item-parent-category {\n border-radius: @border-radius-small 0 0 @border-radius-small;\n margin-right: 2px;\n}\n\n.threads-list-item-parent-category + .threads-list-category-label {\n border-radius: 0 @border-radius-small @border-radius-small 0;\n}\n\n// Replies\n.threads-list-item-col-replies {\n width: 80px;\n padding-left: @grid-gutter-width / 2;\n}\n\n// Last poster\n.threads-list-item-col-last-poster {\n padding-left: @grid-gutter-width / 2;\n\n img {\n border-radius: @border-radius-small;\n }\n}\n\n// Last activity\n.threads-list-item-col-last-activity {\n width: 120px;\n padding-left: @grid-gutter-width / 2;\n\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n\n a:link,\n a:hover,\n a:active,\n a:visited,\n a:focus {\n color: @thread-last-activity-color;\n font-size: @thread-last-activity-size;\n }\n}\n\n// Subscription and checkbox\n.threads-list-item-col-checkbox,\n.threads-list-item-col-subscription {\n padding-left: @grid-gutter-width / 2;\n}\n\n// Make list responsive\n.threads-list-item-title-sm,\n.threads-list-item-col-checkbox-sm {\n display: none;\n}\n\n@media screen and (max-width: @screen-xs-max) {\n // Make card full-width\n .threads-list {\n margin-left: @grid-gutter-width * -0.5;\n margin-right: @grid-gutter-width * -0.5;\n\n .list-group,\n .list-group-item {\n border-radius: 0;\n border-left: 0;\n border-right: 0;\n }\n }\n\n // Swap title with sm one\n .threads-list-item-title {\n display: none;\n }\n\n .threads-list-item-title-sm {\n display: inline-block;\n }\n\n // Make thread read icon disappear\n .threads-list-item-col-icon {\n display: none;\n }\n}\n\n@media screen and (max-width: @screen-sm-max) {\n // Use two rows per item\n .threads-list-item {\n display: block;\n\n // Make avatar same size as flag icons\n img {\n width: @thread-flag-block-size;\n height: @thread-flag-block-size;\n }\n }\n\n // Insert bottom marin to top row, align itss contents to top\n .threads-list-item-top-row {\n align-items: start;\n margin-bottom: @grid-gutter-width / 4;\n }\n\n // Make all cols in second row auto, align them to right\n .threads-list-item-bottom-row {\n justify-content: end;\n flex: 0;\n\n & > div {\n width: auto;\n padding: 0 0 0 @grid-gutter-width / 2;\n }\n }\n\n // Make thread subscription and checkbox icons disappear\n .threads-list-item-col-subscription,\n .threads-list-item-col-checkbox {\n display: none;\n }\n\n // Reveal checkbox in top row, make it smol\n .threads-list-item-col-checkbox-sm {\n display: block;\n padding-left: @grid-gutter-width / 2;\n\n .btn-icon {\n padding: 4px;\n\n .material-icon {\n font-size: 16px;\n }\n }\n }\n}\n\n// Make thread buttons flash when thread is busy\n.threads-list-item-is-busy .btn-icon {\n opacity: 0.8;\n animation: busy 0.75s linear infinite;\n}\n\n@keyframes busy {\n 50% {\n opacity: 0.5;\n }\n}\n\n// Threads list update prompt\n.threads-list-update-prompt {\n padding: 0;\n}\n\n.threads-list-update-prompt-btn {\n padding: @padding-large-vertical @padding-large-horizontal;\n\n background: @update-threads-prompt-bg;\n color: @update-threads-prompt-color;\n border: none;\n border-radius: @list-group-border-radius @list-group-border-radius 0 0;\n}\n\n.threads-list-update-prompt-btn:hover,\n.threads-list-update-prompt-btn:focus {\n background: @update-threads-prompt-hover-bg;\n color: @update-threads-prompt-hover-color;\n}\n\n.threads-list-update-prompt-btn:active {\n background: @update-threads-prompt-active-bg;\n color: @update-threads-prompt-active-color;\n}\n","//\n// Active posters list\n// --------------------------------------------------\n\n// List layout\n.active-posters {\n li {\n display: block;\n overflow: auto;\n }\n}\n\n// User avatar\n.active-posters .rank-user-avatar {\n float: left;\n\n @media screen and (max-width: @screen-sm-max) {\n height: 42px; // even list item vertically\n\n img {\n width: 36px;\n height: 36px;\n\n position: relative;\n top: 3px;\n }\n }\n}\n\n// User\n.active-posters .rank-user {\n float: left;\n margin-top: 3px;\n\n @media screen and (max-width: @screen-sm-max) {\n margin-left: @line-height-computed * 0.66;\n width: 40%;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n float: none;\n margin-left: 50px;\n width: auto;\n }\n\n @media screen and (min-width: @screen-md-min) {\n margin-left: @line-height-computed * 0.8;\n width: 25%;\n\n .user-name {\n font-size: @font-size-large;\n }\n }\n}\n\n// User details\n.active-posters .user-details {\n overflow: auto;\n\n font-family: Sans-Serif;\n\n .user-status,\n .rank-name,\n .user-title {\n display: block;\n float: left;\n margin-right: 3px;\n\n font-size: @font-size-small;\n\n @media screen and (min-width: @screen-md-min) {\n margin-right: 8px;\n }\n }\n\n .user-title {\n margin-right: 0px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n overflow: visible;\n\n .rank-name,\n .user-title {\n height: 14px;\n overflow: hidden;\n\n position: relative;\n top: 1px;\n\n vertical-align: baseline;\n }\n }\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-base-vertical / 2;\n\n .rank-name,\n .user-title {\n font-weight: normal;\n }\n }\n}\n\n// User status\n.active-posters .user-status {\n overflow: auto;\n\n position: relative;\n top: 1px;\n\n span {\n display: block;\n float: left;\n }\n\n @media screen and (min-width: @screen-md-min) {\n height: 14px;\n overflow: hidden;\n }\n\n .status-icon {\n position: relative;\n\n @media screen and (max-width: @screen-sm-max) {\n top: 0px;\n\n width: 12px;\n height: 12px;\n\n font-size: 12px;\n line-height: 12px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n top: 1px;\n\n margin-right: 3px;\n\n width: 13px;\n height: 13px;\n\n font-size: 13px;\n line-height: 13px;\n }\n }\n}\n\n// User status UI preview\n.active-posters {\n .status-label.ui-preview-text,\n .rank-name .ui-preview-text,\n .user-title .ui-preview-text {\n height: 11px;\n\n position: relative;\n top: 2px;\n\n font-size: 11px;\n line-height: 11px;\n }\n\n // even rank/title preview with status\n .rank-name,\n .user-title {\n .ui-preview-text {\n position: static;\n }\n }\n}\n\n// Rank stats\n.active-posters {\n .rank-position,\n .rank-posts-counted,\n .rank-posts-total {\n strong,\n small {\n display: block;\n }\n\n @media screen and (max-width: @screen-sm-max) {\n overflow: auto;\n\n strong,\n small {\n float: left;\n\n font-size: @font-size-base * 0.75;\n }\n\n strong {\n min-width: 30px;\n margin-right: 3px;\n\n text-align: right;\n }\n\n .ui-preview-text {\n height: 8px;\n\n position: relative;\n top: -1px;\n\n font-size: 8px;\n line-height: 8px;\n }\n }\n\n @media screen and (min-width: @screen-md-min) {\n float: left;\n margin-top: 3px;\n width: 23%;\n\n font-size: @font-size-large;\n text-align: center;\n\n small {\n font-size: @font-size-small;\n font-weight: normal;\n }\n }\n }\n}\n\n.user-compact-stats {\n .rank-position,\n .rank-posts-counted {\n strong,\n small {\n display: inline-block;\n float: none;\n }\n\n strong {\n min-width: auto;\n }\n\n small {\n margin-right: @line-height-computed;\n }\n }\n}\n\n// Tablet displays\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n // Margin top first state so its even with username\n .active-posters .rank-position {\n margin-top: 6px;\n }\n\n // Hide rank-posts-total on small displays (cos it overflows for crazy posters)\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n\n// Mobile displays\n@media screen and (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n // Margin top first state so its even with username\n .active-posters .rank-position {\n margin-top: 6px;\n }\n\n // Hide rank-posts-total on small displays (cos it overflows for crazy posters)\n .active-posters .rank-posts-total {\n display: none;\n }\n}\n","//\n// User Profile\n// --------------------------------------------------\n\n.profile-page-header-avatar {\n text-align: center;\n margin: @line-height-computed 0;\n\n .user-avatar {\n border-radius: @border-radius-base;\n }\n}\n\n// Make profile data horizontal and insert space between elements\n.profile-data-list {\n display: block;\n padding: 0;\n margin: 0 (@padding-base-horizontal * -1);\n\n font-size: @font-size-small;\n\n li {\n display: inline-block;\n list-style: none;\n padding: floor(@line-height-computed / 4) @padding-base-horizontal;\n }\n\n .status-icon {\n margin-right: 3px;\n position: relative;\n bottom: 1px;\n }\n\n .user-account-disabled {\n color: @brand-danger;\n font-weight: bold;\n }\n}\n\n// On tablets and up make layout horizontal\n@media screen and (min-width: @screen-sm-min) {\n .profile-page-header {\n display: flex;\n align-items: flex-end;\n }\n\n .profile-page-header-avatar {\n margin: 0;\n margin-right: @grid-gutter-width;\n }\n}\n\n// On desktops make avatar overlap on details, make details larger\n@media screen and (min-width: @screen-md-min) {\n .profile-page-header-avatar {\n position: relative;\n top: @profile-header-avatar-offset;\n margin-top: @profile-header-avatar-offset * -1;\n }\n\n .profile-page-header-details {\n padding-left: 128px + @grid-gutter-width;\n }\n\n .profile-data-list {\n font-size: @font-size-base;\n }\n}\n","//\n// Username History\n// --------------------------------------------------\n\n// Change tabular on larger displays\n.username-history li {\n @media screen and (min-width: @screen-md-min) {\n display: block;\n overflow: auto;\n }\n}\n\n// Change avatar\n.username-history .change-avatar {\n float: left;\n\n a,\n span {\n margin-right: @line-height-computed / 2;\n\n img {\n width: 42px;\n height: 42px;\n }\n }\n\n @media screen and (min-width: @screen-md-min) {\n a,\n span {\n img {\n width: 18px;\n height: 18px;\n\n position: relative;\n bottom: 1px;\n }\n }\n }\n}\n\n// Change author\n.username-history .change-author {\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 30%;\n }\n}\n\n// Old to new name change\n.username-history .change {\n min-height: @line-height-computed; // we need that for ui-preview-text\n overflow: auto;\n\n span {\n display: block;\n float: left;\n }\n\n .material-icon {\n margin: 0px @font-size-base / 2;\n\n position: relative;\n top: 4px;\n }\n\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 40%;\n }\n}\n\n// Date\n.username-history .change-date {\n @media screen and (min-width: @screen-md-min) {\n float: left;\n width: 20%;\n }\n}\n","//\n// Search Page\n// --------------------------------------------------\n\n.search-footer p {\n margin-top: @line-height-computed;\n\n color: @gray;\n font-size: @font-size-small;\n text-align: center;\n}\n\n.page-search-form {\n @media screen and (min-width: @screen-sm-min) {\n padding-top: @line-height-computed * 2;\n }\n\n @media screen and (min-width: @screen-md-min) {\n padding-bottom: @line-height-computed * 2;\n\n h1 {\n position: relative;\n top: @padding-small-vertical;\n }\n\n .form-group {\n margin-bottom: 0px;\n }\n }\n}\n","/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #eee; color: black;\n}\n\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n color: #070;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n color: #d14;\n}\n\n.hljs-strong {\n font-weight: bold;\n}\n\n.hljs-quote,\n.hljs-comment {\n color: #998;\n font-style: italic;\n}\n\n.hljs-section,\n.hljs-title {\n color: #900;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n color: #458;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n color: #336699;\n}\n\n.hljs-bullet {\n color: #997700;\n}\n\n.hljs-meta {\n color: #3344bb;\n}\n\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n color: #099;\n}\n\n.hljs-regexp {\n background-color: #fff0ff;\n color: #880088;\n}\n\n.hljs-symbol {\n color: #990073;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n color: #007700;\n}\n",".atwho-view {\n position:absolute;\n top: 0;\n left: 0;\n display: none;\n margin-top: 18px;\n background: white;\n color: black;\n border: 1px solid #DDD;\n border-radius: 3px;\n box-shadow: 0 0 5px rgba(0,0,0,0.1);\n min-width: 120px;\n z-index: 11110 !important;\n}\n\n.atwho-view .atwho-header {\n padding: 5px;\n margin: 5px;\n cursor: pointer;\n border-bottom: solid 1px #eaeff1;\n color: #6f8092;\n font-size: 11px;\n font-weight: bold;\n}\n\n.atwho-view .atwho-header .small {\n color: #6f8092;\n float: right;\n padding-top: 2px;\n margin-right: -5px;\n font-size: 12px;\n font-weight: normal;\n}\n\n.atwho-view .atwho-header:hover {\n cursor: default;\n}\n\n.atwho-view .cur {\n background: #3366FF;\n color: white;\n}\n.atwho-view .cur small {\n color: white;\n}\n.atwho-view strong {\n color: #3366FF;\n}\n.atwho-view .cur strong {\n color: white;\n font:bold;\n}\n.atwho-view ul {\n /* width: 100px; */\n list-style:none;\n padding:0;\n margin:auto;\n max-height: 200px;\n overflow-y: auto;\n}\n.atwho-view ul li {\n display: block;\n padding: 5px 10px;\n border-bottom: 1px solid #DDD;\n cursor: pointer;\n /* border-top: 1px solid #C8C8C8; */\n}\n.atwho-view small {\n font-size: smaller;\n color: #777;\n font-weight: normal;\n}\n","//\n// Typography Flavor\n// --------------------------------------------------\n\nabbr {\n outline: none;\n text-decoration: none;\n}\n","//\n// Flavor Shadows\n// --------------------------------------------------\n\n.shadow-2dp {\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 1px -2px rgba(0, 0, 0, @shadow-key-umbra-opacity),\n 0 1px 5px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity);\n}\n\n.shadow-3dp {\n box-shadow: 0 3px 4px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 3px -2px rgba(0, 0, 0, @shadow-key-umbra-opacity),\n 0 1px 8px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity);\n}\n\n.shadow-4dp {\n box-shadow: 0 4px 5px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 1px 10px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 2px 4px -1px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-6dp {\n box-shadow: 0 6px 10px 0 rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 1px 18px 0 rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 3px 5px -1px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-8dp {\n box-shadow: 0 8px 10px 1px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 3px 14px 2px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 5px 5px -3px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-16dp {\n box-shadow: 0 16px 24px 2px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 6px 30px 5px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 8px 10px -5px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n\n.shadow-24dp {\n box-shadow: 0 9px 46px 8px rgba(0, 0, 0, @shadow-key-penumbra-opacity),\n 0 11px 15px -7px rgba(0, 0, 0, @shadow-ambient-shadow-opacity),\n 0 24px 38px 3px rgba(0, 0, 0, @shadow-key-umbra-opacity);\n}\n","//\n// Buttons Flavor\n// --------------------------------------------------\n\n// mixins\n.misago-btn(@color, @bg, @color-hover, @bg-hover, @color-active, @bg-active) {\n &,\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n background: @bg;\n border: 1px solid @bg;\n\n color: @color;\n\n .box-shadow(none);\n }\n\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n .opacity(0.25);\n }\n\n &:hover,\n &:focus {\n background: @bg-hover;\n border: 1px solid @bg-hover;\n\n color: @color-hover;\n\n .box-shadow(none);\n }\n\n &:active:focus,\n &:active,\n .dropdown.open .dropdown-toggle &,\n .dropdown.open .dropdown-toggle &:focus,\n .dropdown.open .dropdown-toggle &:active:focus,\n .dropdown.open .dropdown-toggle &:hover {\n background: @bg-active;\n border: 1px solid @bg-active;\n\n color: @color-active;\n\n .box-shadow(none);\n }\n\n &.btn-loading {\n &,\n &:disabled,\n &:disabled:hover,\n &:hover,\n &:focus,\n &:active:focus,\n &:active {\n color: transparent;\n }\n }\n}\n\n.misago-btn-outline(@color, @bg, @border,\n @color-hover, @bg-hover, @border-hover,\n @color-active, @bg-active, @border-active) {\n &,\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n background: @bg;\n border: 1px solid @border;\n\n color: @color;\n\n .box-shadow(none);\n }\n\n &:disabled,\n &:disabled:hover,\n &.disabled,\n &.disabled:hover,\n &.disabled:active {\n .opacity(0.25);\n }\n\n &:hover,\n &:focus {\n background: @bg-hover;\n border: 1px solid @border-hover;\n\n color: @color-hover;\n\n .box-shadow(none);\n }\n\n &:active:focus,\n &:active,\n .dropdown.open &,\n .dropdown.open &:focus,\n .dropdown.open &:active:focus,\n .dropdown.open &:hover {\n background: @bg-active;\n border: 1px solid @border-active;\n\n color: @color-active;\n\n .box-shadow(none);\n }\n\n &.btn-loading {\n &,\n &:disabled,\n &:disabled:hover,\n &:hover,\n &:focus,\n &:active:focus,\n &:active {\n background: @bg;\n border: 1px solid @border;\n\n color: transparent;\n\n .box-shadow(none);\n }\n }\n}\n\n// button styles\n.btn-default {\n .misago-btn(\n @btn-default-color,\n @btn-default-bg,\n\n @btn-default-hover-color,\n @btn-default-hover-bg,\n\n @btn-default-active-color,\n @btn-default-active-bg\n );\n}\n\n.btn-primary {\n .misago-btn(\n @btn-primary-color,\n @btn-primary-bg,\n\n @btn-primary-hover-color,\n @btn-primary-hover-bg,\n\n @btn-primary-active-color,\n @btn-primary-active-bg\n );\n}\n\n.btn-success {\n .misago-btn(\n @btn-success-color,\n @btn-success-bg,\n\n @btn-success-hover-color,\n @btn-success-hover-bg,\n\n @btn-success-active-color,\n @btn-success-active-bg\n );\n}\n\n.btn-danger {\n .misago-btn(\n @btn-danger-color,\n @btn-danger-bg,\n\n @btn-danger-hover-color,\n @btn-danger-hover-bg,\n\n @btn-danger-active-color,\n @btn-danger-active-bg\n );\n}\n\n// outlined button styles\n.btn-default.btn-outline {\n .misago-btn-outline(\n @btn-default-outline-color,\n @btn-default-outline-bg,\n @btn-default-outline-border,\n\n @btn-default-outline-hover-color,\n @btn-default-outline-hover-bg,\n @btn-default-outline-hover-border,\n\n @btn-default-outline-active-color,\n @btn-default-outline-active-bg,\n @btn-default-outline-active-border\n );\n}\n\n.btn-primary.btn-outline {\n .misago-btn-outline(\n @btn-primary-outline-color,\n @btn-primary-outline-bg,\n @btn-primary-outline-border,\n\n @btn-primary-outline-hover-color,\n @btn-primary-outline-hover-bg,\n @btn-primary-outline-hover-border,\n\n @btn-primary-outline-active-color,\n @btn-primary-outline-active-bg,\n @btn-primary-outline-active-border\n );\n}\n\n// sign in and register buttons in navbar\n.navbar-misago {\n .btn-sign-in {\n border-radius: @navbar-btn-sign-in-radius;\n\n .misago-btn-outline(\n @navbar-btn-sign-in-color,\n @navbar-btn-sign-in-bg,\n @navbar-btn-sign-in-border,\n\n @navbar-btn-sign-in-hover-color,\n @navbar-btn-sign-in-hover-bg,\n @navbar-btn-sign-in-hover-border,\n\n @navbar-btn-sign-in-active-color,\n @navbar-btn-sign-in-active-bg,\n @navbar-btn-sign-in-active-border\n );\n }\n\n .btn-register {\n border-radius: @navbar-btn-register-radius;\n\n .misago-btn-outline(\n @navbar-btn-register-color,\n @navbar-btn-register-bg,\n @navbar-btn-register-border,\n\n @navbar-btn-register-hover-color,\n @navbar-btn-register-hover-bg,\n @navbar-btn-register-hover-border,\n\n @navbar-btn-register-active-color,\n @navbar-btn-register-active-bg,\n @navbar-btn-register-active-border\n );\n }\n}\n","//\n// Social Buttons Flavor\n// --------------------------------------------------\n\n// Those buttons simply add brand color over the .btn-default\n.misago-social-btn(@color) {\n &,\n &:disabled,\n &:disabled:hover {\n color: @color;\n font-weight: bold;\n }\n}\n\n.btn-social-battlenet,\n.btn-social-battlenet-oauth2 {\n .misago-social-btn(#0e86ca);\n}\n\n.btn-social-bungie {\n .misago-social-btn(#0096db);\n}\n\n.btn-social-facebook,\n.btn-social-facebook-app {\n .misago-social-btn(#3b5998);\n}\n\n.btn-social-github,\n.btn-social-github-team,\n.btn-social-github-enterprise,\n.btn-social-github-enterprise-org,\n.btn-social-github-enterprise-team {\n .misago-social-btn(#000000);\n}\n\n.btn-social-gitlab {\n .misago-social-btn(#fc6d26);\n}\n\n.btn-social-google,\n.btn-social-google-oauth,\n.btn-social-google-oauth2,\n.btn-social-google-plus,\n.btn-social-google-openidconnect {\n .misago-social-btn(#dd4b39);\n}\n\n.btn-social-linkedin {\n .misago-social-btn(#0077b5);\n}\n\n.btn-social-steam {\n .misago-social-btn(#5c7e10);\n}\n\n.btn-social-twitter {\n .misago-social-btn(#1da1f2);\n}\n\n.form-social-auth {\n .row {\n margin-top: @padding-base-vertical * -1;\n margin-bottom: @padding-base-vertical * -1;\n }\n\n .btn {\n margin: @padding-base-vertical 0px;\n }\n}\n","//\n// Inputs Flavor\n// --------------------------------------------------\n\n// default input\ninput.form-control,\ntextarea.form-control {\n border-color: @input-border;\n box-shadow: inset 0px 0px 0px 1px @input-border;\n\n &:focus {\n border-color: @input-border-focus;\n box-shadow: inset 0px 0px 0px 1px @input-border-focus;\n }\n}\n\n.has-error input.form-control {\n border-color: @state-danger-border;\n box-shadow: inset 0px 0px 0px 1px @state-danger-border;\n\n &:focus {\n border-color: lighten(@state-danger-border, 20%);\n box-shadow: inset 0px 0px 0px 1px lighten(@state-danger-border, 20%);\n }\n}\n\n.has-success input.form-control {\n border-color: @state-success-border;\n box-shadow: inset 0px 0px 0px 1px @state-success-border;\n\n &:focus {\n border-color: lighten(@state-success-border, 20%);\n box-shadow: inset 0px 0px 0px 1px lighten(@state-success-border, 20%);\n }\n}\n\n// password strenght marker\n.password-strength {\n margin-top: @line-height-computed / 2;\n\n .text-small {\n margin-top: @line-height-computed / 5;\n\n color: lighten(@text-color, 25%);\n font-size: @font-size-small;\n }\n\n .progress {\n margin: 0px;\n }\n}\n","//\n// Flavor Auth Message\n// --------------------------------------------------\n\n.auth-message {\n background: @auth-message-bg;\n padding: @line-height-computed * 4 0px;\n\n .shadow-8dp();\n\n p {\n color: @auth-message-text-color;\n }\n\n .btn {\n & {\n background: @auth-message-btn-default-bg;\n border-color: @auth-message-btn-default-border;\n\n color: @auth-message-btn-default-color;\n }\n\n &:hover,\n &:focus {\n background: @auth-message-btn-default-hover-bg;\n border-color: @auth-message-btn-default-hover-border;\n\n color: @auth-message-btn-default-hover-color;\n }\n\n &:active {\n background: @auth-message-btn-default-active-bg;\n border-color: @auth-message-btn-default-active-border;\n\n color: @auth-message-btn-default-active-color;\n }\n }\n}\n","//\n// Dropdown Flavor\n// --------------------------------------------------\n\n.dropdown-menu {\n border: none;\n\n .shadow-4dp();\n}\n\n// Navbar dropdown\n.user-dropdown .dropdown-header {\n strong {\n display: block;\n\n color: @text-color;\n font-weight: bold;\n }\n\n .user-stats {\n margin-top: @line-height-computed / 2;\n\n font-size: @font-size-small;\n\n .material-icon {\n margin-right: 3px;\n\n position: relative;\n bottom: 1px;\n\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n }\n }\n}\n\n.user-dropdown .guest-preview {\n padding-bottom: @padding-large-vertical;\n}\n\n.user-dropdown .badge {\n background-color: @brand-danger;\n}\n\n.user-dropdown {\n a:hover,\n a:focus,\n a:active,\n .btn-link:hover,\n .btn-link:focus,\n .btn-link:active {\n .badge {\n background-color: #fff;\n\n color: @brand-danger;\n }\n }\n}\n\n// Mobile dropdown\n.mobile-dropdown.open {\n margin: 0px;\n}\n","//\n// Flavor Navbar\n// --------------------------------------------------\n\n.navbar-misago {\n border-bottom: none;\n box-shadow: 0px 0px 3px @navbar-default-border;\n}\n\n// Round up user's avatar\n.navbar-misago .user-avatar {\n background: #fff;\n border-radius: @border-radius-small;\n}\n\n// Round up brand's icon\n.navbar-misago .brand-link img {\n border-radius: @border-radius-small;\n}\n","//\n// Search Dropdown\n// --------------------------------------------------\n\n.dropdown-search-results {\n border-radius: 0px 0px @border-radius-base @border-radius-base;\n}\n\n.dropdown-search-message {\n border-top: 1px solid @gray-lighter;\n padding: @padding-large-vertical @padding-large-horizontal;\n\n color: @text-muted;\n}\n\n.dropdown-search-loader {\n border-top: 1px solid @gray-lighter;\n padding: @padding-large-vertical @padding-large-horizontal;\n}\n\n.dropdown-search-header {\n border-top: 1px solid @gray-lighter;\n padding: 8px 20px;\n\n color: @text-muted;\n font-weight: bold;\n}\n\n// result\n.dropdown-search-thread,\n.dropdown-search-user {\n small {\n color: @text-muted;\n }\n}\n\n.dropdown-search-thread {\n .dropdown-search-post-content {\n overflow: hidden;\n white-space: normal;\n max-height: 47px;\n }\n\n .dropdown-search-post-footer {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n// footer\n.dropdown-search-footer {\n padding-bottom: @padding-small-vertical;\n\n &:last-child {\n padding-bottom: 0px;\n }\n}\n\n.dropdown-menu > li.dropdown-search-footer > a {\n font-size: small;\n}\n","//\n// Flavor Footer\n// --------------------------------------------------\n\n// Make footer full width\n.misago-footer {\n margin-top: @line-height-computed * 2;\n\n .footer-content {\n border-top: 1px solid @gray-lighter;\n padding-top: @line-height-computed * 1;\n\n color: @page-footer-text-color;\n\n @media screen and (max-width: @screen-xs-max) {\n text-align: center;\n\n .site-footnote {\n clear: both;\n margin-bottom: @line-height-computed * 0.75;\n }\n }\n\n a,\n a:link,\n a:visited {\n color: @page-footer-link-color;\n }\n\n a:hover,\n a:focus {\n color: @page-footer-link-hover-color;\n }\n\n .misago-branding {\n &,\n &:link,\n &:visited {\n color: @page-footer-brand-color;\n }\n\n &:hover,\n &:focus {\n color: @page-footer-brand-hover-color;\n }\n }\n }\n}\n","//\n// List Groups Flavor\n// --------------------------------------------------\n\n.list-group {\n border-radius: @list-group-border-radius;\n\n .list-group-item {\n border-left-color: @list-group-outer-border;\n border-right-color: @list-group-outer-border;\n }\n\n .list-group-item:first-child {\n border-top-color: @list-group-outer-border;\n }\n\n .list-group-item:last-child {\n border-bottom-color: @list-group-outer-border;\n }\n}\n\n.list-group-item.empty-message {\n padding-top: @line-height-computed;\n padding-bottom: @line-height-computed;\n\n text-align: center;\n\n p {\n margin: @line-height-computed / 2 0px;\n }\n}\n","//\n// Navs Flavor\n// --------------------------------------------------\n\n.nav-side {\n .box-shadow(none);\n}\n\n.nav-side > .list-group-item {\n border-left: none;\n border-right: none;\n margin-bottom: 1px;\n\n &:first-child {\n border-top: none;\n }\n\n &:last-child {\n border-bottom: none;\n }\n\n &,\n &:link,\n &:visited {\n background: @side-nav-bg;\n border: none;\n\n color: @side-nav-color;\n }\n\n &:hover,\n &:focus,\n &:active {\n background: @side-nav-hover-bg;\n\n color: @side-nav-hover-color;\n }\n\n &.active {\n &,\n &:link,\n &:visited,\n &:hover,\n &:focus,\n &:active {\n background: @side-nav-active-bg;\n\n color: @side-nav-active-color;\n font-weight: bold;\n\n .badge {\n background: @side-nav-bg;\n\n color: @side-nav-color;\n }\n }\n }\n}\n","//\n// Username History Flavor\n// --------------------------------------------------\n\n.username-history .user-avatar {\n border-radius: @border-radius-base;\n}\n","//\n// Panels Flavor\n// --------------------------------------------------\n\n.panel {\n border: none;\n border-radius: @border-radius-base;\n\n .panel-heading,\n .panel-footer {\n background: @panel-bg;\n }\n\n .panel-title {\n color: @panel-title-color;\n }\n\n .form-group + .form-group {\n margin-top: @line-height-computed;\n }\n\n .panel-body > .form-group:first-child {\n margin-top: @line-height-computed / 2;\n }\n\n fieldset {\n margin-top: @line-height-computed;\n\n &:first-child {\n margin-top: 0px;\n }\n\n legend {\n border: none;\n\n color: @panel-fieldset-color;\n font-weight: 300;\n }\n }\n}\n\n// use default message icon color for panel messages\n.panel-message-body .message-icon {\n color: @message-icon-color;\n}\n","//\n// Forms Flavor\n// --------------------------------------------------\n\n.panel-form {\n border: 1px solid @panel-form-border;\n box-shadow: none;\n}\n\n.panel-form .panel-heading,\n.panel-form .panel-footer {\n border-color: @panel-form-border;\n}\n\n// remove bottom margin from poll panel\n.poll-form .panel {\n margin: 0px;\n}\n\n// Override help text color\n.help-block,\n.help-block .text-small {\n color: @gray-light;\n}\n","//\n// Categories Lists Flavor\n// --------------------------------------------------\n\n// Make category read status icon visually larger\n.category-main .media-left {\n .read-status {\n background: @category-read-color;\n border-radius: @border-radius-base;\n padding: @padding-small-vertical (@padding-large-vertical - 2px);\n }\n\n .material-icon {\n height: 14px;\n width: 14px;\n\n color: @gray;\n font-size: 14px;\n line-height: 14px;\n }\n\n .read-status.item-new {\n background-color: @category-new-color;\n\n .material-icon {\n color: #fff;\n }\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: @padding-small-vertical 0px;\n }\n}\n\n// Fix category main alignment\n.category-main .media-body {\n padding-left: @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n padding-left: @padding-small-horizontal / 3;\n }\n}\n\n.list-group-category-no-description {\n .category-main .media-heading {\n margin-top: @padding-large-vertical;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @padding-large-vertical / 2;\n }\n }\n}\n\n// Make category name larger\n.category-main .media-heading {\n a,\n a:link,\n a:visited {\n color: @gray-dark;\n }\n\n a:focus,\n a:hover,\n a:active {\n color: @text-color;\n }\n}\n\n// Fade out stats\n.category-stats {\n color: @gray;\n}\n\n// Fade out category description\n.category-main .category-description p {\n font-size: @font-size-small;\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Round last poster's up avatar\n.category-last-thread img {\n background-color: #fff;\n border-radius: @border-radius-base;\n}\n\n// Last thread\n.category-last-thread .media-heading {\n margin-bottom: 2px;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @line-height-computed / 2;\n }\n}\n\n.category-last-thread .list-inline {\n color: @gray-light;\n font-size: @font-size-small;\n\n a,\n a:link,\n a:visited {\n color: @gray-light;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: @gray-dark;\n }\n\n .item-title {\n &,\n &:link,\n &:visited {\n color: @gray-dark;\n }\n\n &:hover,\n &:active,\n &:focus {\n color: @text-color;\n }\n }\n}\n\n// Last thread message\n.category-thread-message {\n color: @gray-light;\n\n .material-icon {\n padding: @padding-base-vertical 0px;\n margin-right: @padding-base-vertical / 2;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n padding-top: @line-height-computed * 0.75;\n\n font-size: @font-size-small;\n\n .material-icon {\n padding: 3px 0px;\n }\n }\n}\n","//\n// Thread Participants Flavor\n// --------------------------------------------------\n\n.panel-participants {\n border: 1px solid @panel-form-border;\n}\n\n.participant-card .btn-user {\n border: 0px !important;\n}\n\n.participant-card .dropdown-header-owner {\n color: @brand-primary;\n\n .material-icon {\n width: 14px;\n height: 14px;\n\n font-size: 14px;\n line-height: 14px;\n }\n\n .icon-text {\n margin-left: 4px;\n\n position: relative;\n top: 2px;\n }\n}\n\n.panel-participants p {\n color: @gray-light;\n\n @media screen and (max-width: @screen-xs-max) {\n margin-top: @line-height-computed / 2;\n\n text-align: center;\n }\n}\n","//\n// Polls Flavor\n// --------------------------------------------------\n\n.panel-poll {\n border: 1px solid @panel-form-border;\n}\n\n// Poll vote form\n.panel-poll .poll-select-choices {\n margin-top: @line-height-computed / -2;\n}\n\n// Poll results styles\n.panel-poll .poll-details {\n margin-bottom: @line-height-computed;\n\n color: @gray-light;\n font-size: @font-size-small;\n}\n\n.panel-poll .progress {\n margin-top: @line-height-computed / 3;\n margin-bottom: @line-height-computed / 4;\n}\n\n.panel-poll .poll-chart {\n color: @gray-light;\n font-size: @font-size-small;\n}\n\n.panel-poll .poll-options {\n margin-top: @line-height-computed;\n}\n","//\n// Posting Form Flavor\n// --------------------------------------------------\n\n#posting-placeholder {\n background-color: #fafbfc;\n}\n\n.posting-message {\n .material-icon {\n color: @message-info-icon-color;\n }\n\n .btn {\n margin-top: @line-height-computed;\n }\n}\n","//\n// Posts Flavor\n// --------------------------------------------------\n\n// Post body\n.panel-post {\n background: @post-bg;\n border: 1px solid @post-border;\n}\n\n// Post side\n.post-side {\n color: @gray-light;\n\n .poster-avatar {\n border-radius: @border-radius-base;\n }\n\n .user-title {\n color: @gray;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @gray;\n }\n }\n}\n\n// Header\n.post-heading {\n .label-unread {\n background-color: @post-unread-label;\n margin-right: @padding-large-horizontal;\n }\n\n .label-protected {\n background-color: transparent;\n margin-left: @padding-base-horizontal * 2;\n\n position: relative;\n top: 1px;\n\n color: @post-protected-icon;\n\n .material-icon {\n margin-right: 2px;\n\n position: relative;\n top: -1px;\n\n font-size: 16px;\n line-height: 16px;\n }\n }\n\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n\n &,\n &:link,\n &:visited {\n color: @gray-light;\n }\n\n &:hover,\n &:focus,\n &:focus:active,\n &:active {\n color: @text-color;\n text-decoration: none;\n }\n }\n\n .btn-see-edits {\n margin-left: @padding-base-horizontal * 2;\n }\n}\n\n// Status\n.post-status-message {\n border-radius: @border-radius-base;\n margin-top: @line-height-computed / 2;\n padding: @padding-base-vertical @padding-base-horizontal;\n\n @media screen and (max-width: @screen-xs-max) {\n font-size: @font-size-small;\n\n .material-icon {\n margin-top: 3px;\n }\n\n p {\n margin-top: 0px;\n }\n }\n}\n\n// Post body\n.post-body:last-child {\n padding-bottom: @line-height-computed / 2;\n}\n\n// Attachments\n.post-attachments {\n background-color: @gray-lighter;\n border: none;\n border-radius: @border-radius-base;\n margin-bottom: @line-height-computed * 1.5;\n\n &:last-child {\n margin-bottom: @line-height-computed / 2;\n }\n\n @media screen and (max-width: @screen-xs-max) {\n border-radius: 0px;\n margin: 0px -15px;\n margin-bottom: @line-height-computed;\n }\n}\n\n// Footer\n.post-footer {\n & > .btn-link {\n padding-left: 0px;\n padding-right: 0px;\n\n &,\n &:link,\n &:visited {\n color: @gray-light;\n }\n\n &:hover,\n &:focus,\n &:focus:active,\n &:active {\n color: @text-color;\n text-decoration: none;\n }\n }\n\n p {\n color: @gray-light;\n font-size: @font-size-small;\n }\n}\n\n// Hidden and invalid messages\n.post-body-hidden,\n.post-body-invalid {\n padding-top: @line-height-computed / 2;\n padding-bottom: @line-height-computed / 2;\n\n .lead {\n margin-bottom: @line-height-computed / 2;\n }\n\n .text-muted {\n margin-bottom: 0px;\n\n font-size: @font-size-small;\n }\n}\n\n// Fade out hidden posts a little\n.post-hidden {\n .opacity(0.75);\n}\n","//\n// Post Feed Flavor\n// --------------------------------------------------\n\n.post-feed .panel-body {\n padding-bottom: 0px;\n}\n\n.post-feed .post-body {\n position: relative;\n padding-top: 0px;\n padding-bottom: @line-height-computed;\n max-height: 300px;\n overflow-y: hidden;\n\n &:after {\n box-shadow: 0px 0px 16px 16px #ffffff;\n display: block;\n\n position: absolute;\n bottom: 0px;\n\n height: 0px;\n width: 100%;\n\n content: \"-\";\n color: transparent;\n }\n}\n","//\n// Events Flavor\n// --------------------------------------------------\n\n// Style label\n.posts-list .event .event-label {\n margin-bottom: @line-height-computed / 4;\n}\n\n.posts-list .event .label-unread {\n background-color: @post-unread-label;\n\n color: #fff;\n}\n\n// Style info text\n.posts-list .event-info {\n a,\n a:link,\n a:visited,\n .btn-link {\n color: @gray;\n }\n\n a:focus,\n a:active,\n a:focus:active,\n .btn-link:focus,\n .btn-link:active,\n .btn-link:focus:active {\n color: @text-color;\n }\n}\n\n// Fade out hidden event\n.posts-list .event-hidden {\n .opacity(0.33);\n}\n","//\n// User Card Flavor\n// --------------------------------------------------\n\n// Background color\n.user-card {\n background: @user-card-bg;\n}\n\n// Round avatar corners\n.user-card-small-avatar,\n.user-card-avatar {\n img {\n border-radius: @border-radius-base;\n }\n}\n\n// Sizing and spacing on large avatar\n.user-card-avatar {\n margin: @line-height-computed 0px;\n\n img {\n width: 150px;\n height: 150px;\n }\n}\n\n// Upsize the user name\n.user-card-username {\n a,\n a:link,\n a:visited,\n a:hover,\n a:focus,\n a:active {\n color: @text-color;\n font-size: @font-size-large;\n font-weight: bold;\n }\n}\n\n// User title\n.user-card-title {\n span,\n a,\n a:link,\n a:visited {\n color: @gray;\n }\n\n a:focus,\n a:hover,\n a:active {\n color: @text-color;\n }\n}\n\n// User stats\n.user-card-stats {\n @media screen and (min-width: @screen-sm-min) {\n margin-top: @line-height-computed;\n }\n\n ul {\n margin: 0px;\n }\n\n li {\n display: inline-block;\n margin-right: @padding-base-horizontal;\n\n color: @gray-light;\n font-size: @font-size-small;\n\n @media screen and (min-width: @screen-sm-min) {\n margin: 0px @padding-base-horizontal / 2;\n }\n }\n\n li.user-stat-empty {\n display: none;\n }\n}\n\n// Divide stats in two on larger screen\n@media screen and (min-width: @screen-sm-min) {\n li.user-stat-divider {\n display: block;\n margin: 0px;\n }\n}\n\n@media screen and (max-width: @screen-xs-max) {\n li.user-stat-divider {\n display: none;\n }\n}\n\n// Make stats 60px min height on tablets and up\n@media screen and (min-width: @screen-sm-min) {\n .user-card-stats {\n min-height: 60px;\n }\n}\n\n// Reduce gutter on small grid\n@media screen and (max-width: @screen-xs-max) {\n .user-card-left {\n padding-right: 0px;\n }\n}\n","//\n// Progress Bars Flavor\n// --------------------------------------------------\n\n// Make progress bars flat\n.progress,\n.progress .progress-bar {\n .box-shadow(none);\n\n height: 8px;\n}\n","//\n// Markup Flavor\n// --------------------------------------------------\n\n// Round images\n.misago-markup img {\n border-radius: @border-radius-base;\n}\n\n// Quote block\n.misago-markup .quote-block,\n.misago-markup blockquote {\n background-color: #ffecb3;\n border-color: #b3e5fc;\n overflow: hidden;\n\n color: #3e2723;\n\n .quote-heading {\n background-color: #ffe082;\n border: none;\n\n color: #795548;\n\n a,\n a:link,\n a:visited {\n color: #5d4037;\n }\n\n a:hover,\n a:focus,\n a:active {\n color: #3e2723;\n }\n }\n\n hr {\n border-color: #ffca28;\n }\n}\n\n.misago-markup > .quote-block,\n.misago-markup > blockquote {\n background: #ffecb3;\n border: none;\n border-radius: @border-radius-base;\n\n .quote-block {\n background: #ffecb3;\n }\n}\n\n.misago-markup .quote-body {\n background: #ffecb3;\n\n & > .quote-block,\n & > blockquote {\n border-color: #ffe082;\n border-radius: @border-radius-base;\n }\n}\n\n// Spoiler block\n.misago-markup .spoiler-block {\n background: repeating-linear-gradient(\n 45deg,\n fadeout(@gray-lighter, 50%),\n fadeout(@gray-lighter, 50%) 10px,\n @post-bg 10px,\n @post-bg 20px\n );\n border: none;\n}\n\n.misago-markup .spoiler-body {\n background: transparent;\n -webkit-filter: blur(5px);\n -moz-filter: blur(5px);\n -o-filter: blur(5px);\n -ms-filter: blur(5px);\n filter: blur(5px);\n color: @text-color;\n}\n\n.misago-markup .spoiler-block.revealed .spoiler-body {\n -webkit-filter: none;\n -moz-filter: none;\n -o-filter: none;\n -ms-filter: none;\n filter: none;\n}\n\n.misago-markup .spoiler-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: fadeout(@post-bg, 90%);\n}\n\n.misago-markup .spoiler-reveal {\n .btn-default();\n}\n\n.misago-markup .spoiler-reveal,\n.misago-markup .spoiler-reveal:active,\n.misago-markup .spoiler-reveal:hover {\n border-radius: 4px;\n box-shadow: 0px 0px 0px 4px @post-bg;\n padding: @padding-base-vertical @padding-base-horizontal;\n}\n","//\n// Modal Flavor\n// --------------------------------------------------\n\n// Custom header styles\n.modal-header {\n background: @modal-header-bg;\n border-bottom-color: @modal-header-border-color;\n border-radius: @border-radius-large @border-radius-large 0px 0px;\n\n color: @modal-header-color;\n\n .close {\n padding: 0px 6px;\n\n color: @modal-header-color;\n font-size: 24px;\n line-height: 24px;\n text-shadow: none;\n }\n}\n\n// Color message icon\n.modal-message .message-icon {\n color: @message-icon-color;\n}\n\n// Even out space between form fields\n.modal-body > .form-group {\n margin: @line-height-computed 0px;\n\n &:first-child {\n margin-top: 0px;\n }\n\n &:last-child {\n margin-bottom: 0px;\n }\n}\n\n// Sign in modal\n.modal-sign-in {\n .modal-body {\n padding-top: 0px;\n padding-bottom: 0px;\n\n & > .form-group {\n margin: @line-height-computed 0px;\n }\n }\n}\n\n// Register modal\n.legal-footnote {\n label {\n font-weight: bold;\n }\n\n .help-block {\n margin-left: 20px;\n\n color: @brand-danger;\n }\n}\n\n// Avatar crop\n.modal-avatar-index {\n .avatar-preview {\n background: #fff;\n border-radius: @border-radius-large;\n }\n}\n\n.modal-avatar-crop {\n .cropit-preview {\n background: #fff;\n margin: @line-height-computed 0px;\n }\n\n .cropit-image-zoom-input {\n margin-top: @line-height-computed * 2;\n margin-bottom: @line-height-computed;\n }\n}\n\n// Post likes\n.modal-post-likers {\n .media {\n border-bottom: 1px solid @gray-lighter;\n padding-bottom: 15px; // hardcoded in BS less\n\n img {\n border-radius: @border-radius-base;\n\n width: 40px;\n height: 40px;\n }\n\n &:last-child {\n border: none;\n padding-bottom: 0px;\n }\n }\n}\n","//\n// Well Flavor\n// --------------------------------------------------\n\n.well {\n border: 1px solid @well-border;\n}\n","//\n// Active Posters Flavor\n// --------------------------------------------------\n\n.active-posters .rank-user-avatar img {\n border-radius: @border-radius-base;\n}\n\n.active-posters .user-details {\n color: @gray-light;\n\n a.rank-name {\n &,\n &:link,\n &:visited {\n color: @gray;\n font-weight: normal;\n }\n\n &:focus,\n &:hover,\n &:active {\n color: @text-color;\n }\n }\n\n span.rank-name {\n color: @gray;\n font-weight: normal;\n }\n}\n\n.active-posters small {\n color: @gray-light;\n}\n","//\n// Message Pages Flavor\n// --------------------------------------------------\n\n.page-error .message-icon {\n color: @error-icon-color;\n}\n\n.page-message .message-icon {\n color: @message-icon-color;\n}\n\n.page-message-info .message-icon {\n color: @message-info-icon-color;\n}\n\n.page-message-success .message-icon {\n color: @message-success-icon-color;\n}\n","//\n// User Options Flavor\n// --------------------------------------------------\n\n.page-options .message-line {\n color: @gray-light;\n\n a,\n a:link,\n a:visited {\n color: @gray-light;\n }\n\n a:hover,\n a:focus,\n a:focus:active,\n a:active {\n color: @text-color;\n }\n}\n","//\n// Profile Details\n// --------------------------------------------------\n\n.panel-profile-details-group.panel {\n border: 1px solid @panel-form-border;\n}\n\n.panel-profile-details-group.panel .form-group {\n margin: 0px;\n}\n\n.panel-profile-details-group .form-control-static {\n p:last-child {\n margin-bottom: 0px;\n }\n}\n","//\n// Default flavors for user ranks\n// --------------------------------------------------\n\n.post-rank-flavor(@border, @title) {\n .panel-post {\n border-color: @border;\n }\n\n .user-title {\n color: @title;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @title;\n }\n }\n}\n\n.card-rank-flavor(@border, @title, @color) {\n .panel-body {\n background: @body-bg;\n border: 2px solid @border;\n border-radius: @panel-border-radius;\n padding: @panel-body-padding - 2px;\n }\n\n .user-card-title {\n color: @title;\n\n a.user-title {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n color: @title;\n }\n }\n }\n\n .user-card-stats li {\n color: @color;\n }\n}\n\n.list-group-rank-flavor(@border, @title) {\n border-left: 4px solid @border;\n padding-left: 11px;\n\n span.rank-name {\n color: @title;\n }\n\n a.rank-name {\n &,\n &:link,\n &:visited,\n &:focus,\n &:hover,\n &:active {\n color: @title;\n }\n }\n}\n\n.user-profile-rank-flavor(@color) {\n .user-rank {\n color: @color;\n\n a,\n a:link,\n a:visited,\n a:focus,\n a:hover,\n a:active {\n color: @color;\n }\n }\n}\n\n// Posts\n.post-primary {\n .post-rank-flavor(#b388ff, #6200ea);\n}\n\n.post-success {\n .post-rank-flavor(#00c853, #388e3c);\n}\n\n.post-warning {\n .post-rank-flavor(#ffab40, #ff6d00);\n}\n\n.post-danger {\n .post-rank-flavor(#ff8a80, #d50000);\n}\n\n// Cards\n.user-card-primary {\n .card-rank-flavor(#b388ff, #6200ea, #9575cd);\n}\n\n.user-card-success {\n .card-rank-flavor(#00c853, #388e3c, #66bb6a);\n}\n\n.user-card-warning {\n .card-rank-flavor(#ffab40, #ff6d00, #ff6e40);\n}\n\n.user-card-danger {\n .card-rank-flavor(#ff8a80, #d50000, #e57373);\n}\n\n// Posters ranking\n.list-group {\n .list-group-rank-primary {\n .list-group-rank-flavor(#7e57c2, #6200ea);\n }\n\n .list-group-rank-success {\n .list-group-rank-flavor(#9ccc65, #388e3c);\n }\n\n .list-group-rank-warning {\n .list-group-rank-flavor(#ff7043, #ff6d00);\n }\n\n .list-group-rank-danger {\n .list-group-rank-flavor(#f44336, #d50000);\n }\n}\n\n// User profiles\n.page-header-rank-primary {\n .user-profile-rank-flavor(#6200ea);\n}\n\n.page-header-rank-success {\n .user-profile-rank-flavor(#388e3c);\n}\n\n.page-header-rank-warning {\n .user-profile-rank-flavor(#ff6d00);\n}\n\n.page-header-rank-danger {\n .user-profile-rank-flavor(#d50000);\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/misago/static/misago/js/misago.js b/misago/static/misago/js/misago.js index 538dddd3cd..adb66732f9 100644 --- a/misago/static/misago/js/misago.js +++ b/misago/static/misago/js/misago.js @@ -1,3 +1,3 @@ /*! For license information please see misago.js.LICENSE.txt */ -!function(){var e,t={54116:function(e,t){var n,a;(a="object"==typeof window&&window||"object"==typeof self&&self)&&(a.hljs=function(e){function t(e){return e.replace(/[&<>]/gm,(function(e){return x[e]}))}function n(e){return e.nodeName.toLowerCase()}function a(e,t){var n=e&&e.exec(t);return n&&0===n.index}function s(e){return b.test(e)}function i(e,t){var n,a={};for(n in e)a[n]=e[n];if(t)for(n in t)a[n]=t[n];return a}function o(e){var t=[];return function e(a,s){for(var i=a.firstChild;i;i=i.nextSibling)3===i.nodeType?s+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:s,node:i}),s=e(i,s),n(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:s,node:i}));return s}(e,0),t}function r(e,a,s){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset<a[0].offset?e:a:"start"===a[0].event?e:a:e.length?e:a}function o(e){u+="<"+n(e)+v.map.call(e.attributes,(function(e){return" "+e.nodeName+'="'+t(e.value)+'"'})).join("")+">"}function r(e){u+="</"+n(e)+">"}function l(e){("start"===e.event?o:r)(e.node)}for(var c=0,u="",d=[];e.length||a.length;){var p=i();if(u+=t(s.substring(c,p[0].offset)),c=p[0].offset,p===e){d.reverse().forEach(r);do{l(p.splice(0,1)[0]),p=i()}while(p===e&&p.length&&p[0].offset===c);d.reverse().forEach(o)}else"start"===p[0].event?d.push(p[0].node):d.pop(),l(p.splice(0,1)[0])}return u+t(s.substr(c))}function l(e){function t(e){return e&&e.source||e}function n(n,a){return new RegExp(t(n),"m"+(e.cI?"i":"")+(a?"g":""))}!function a(s,o){if(!s.compiled){if(s.compiled=!0,s.k=s.k||s.bK,s.k){var r={},l=function(t,n){e.cI&&(n=n.toLowerCase()),n.split(" ").forEach((function(e){var n=e.split("|");r[n[0]]=[t,n[1]?Number(n[1]):1]}))};"string"==typeof s.k?l("keyword",s.k):m(s.k).forEach((function(e){l(e,s.k[e])})),s.k=r}s.lR=n(s.l||/\w+/,!0),o&&(s.bK&&(s.b="\\b("+s.bK.split(" ").join("|")+")\\b"),s.b||(s.b=/\B|\b/),s.bR=n(s.b),s.e||s.eW||(s.e=/\B|\b/),s.e&&(s.eR=n(s.e)),s.tE=t(s.e)||"",s.eW&&o.tE&&(s.tE+=(s.e?"|":"")+o.tE)),s.i&&(s.iR=n(s.i)),null==s.r&&(s.r=1),s.c||(s.c=[]);var c=[];s.c.forEach((function(e){e.v?e.v.forEach((function(t){c.push(i(e,t))})):c.push("self"===e?s:e)})),s.c=c,s.c.forEach((function(e){a(e,s)})),s.starts&&a(s.starts,o);var u=s.c.map((function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b})).concat([s.tE,s.i]).map(t).filter(Boolean);s.t=u.length?n(u.join("|"),!0):{exec:function(){return null}}}}(e)}function c(e,n,s,i){function o(e,t){var n,s;for(n=0,s=t.c.length;s>n;n++)if(a(t.c[n].bR,e))return t.c[n]}function r(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?r(e.parent,t):void 0}function d(e,t){return!s&&a(t.iR,e)}function p(e,t){var n=b.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(n)&&e.k[n]}function h(e,t,n,a){var s='<span class="'+(a?"":k.classPrefix);return(s+=e+'">')+t+(n?"":N)}function v(){w+=null!=_.sL?function(){var e="string"==typeof _.sL;if(e&&!Z[_.sL])return t(R);var n=e?c(_.sL,R,!0,x[_.sL]):u(R,_.sL.length?_.sL:void 0);return _.r>0&&(C+=n.r),e&&(x[_.sL]=n.top),h(n.language,n.value,!1,!0)}():function(){var e,n,a,s;if(!_.k)return t(R);for(s="",n=0,_.lR.lastIndex=0,a=_.lR.exec(R);a;)s+=t(R.substring(n,a.index)),(e=p(_,a))?(C+=e[1],s+=h(e[0],t(a[0]))):s+=t(a[0]),n=_.lR.lastIndex,a=_.lR.exec(R);return s+t(R.substr(n))}(),R=""}function m(e){w+=e.cN?h(e.cN,"",!0):"",_=Object.create(e,{parent:{value:_}})}function g(e,t){if(R+=e,null==t)return v(),0;var n=o(t,_);if(n)return n.skip?R+=t:(n.eB&&(R+=t),v(),n.rB||n.eB||(R=t)),m(n),n.rB?0:t.length;var a=r(_,t);if(a){var s=_;s.skip?R+=t:(s.rE||s.eE||(R+=t),v(),s.eE&&(R=t));do{_.cN&&(w+=N),_.skip||(C+=_.r),_=_.parent}while(_!==a.parent);return a.starts&&m(a.starts),s.rE?0:t.length}if(d(t,_))throw new Error('Illegal lexeme "'+t+'" for mode "'+(_.cN||"<unnamed>")+'"');return R+=t,t.length||1}var b=f(e);if(!b)throw new Error('Unknown language: "'+e+'"');l(b);var y,_=i||b,x={},w="";for(y=_;y!==b;y=y.parent)y.cN&&(w=h(y.cN,"",!0)+w);var R="",C=0;try{for(var S,E,L=0;_.t.lastIndex=L,S=_.t.exec(n);)E=g(n.substring(L,S.index),S[0]),L=S.index+E;for(g(n.substr(L)),y=_;y.parent;y=y.parent)y.cN&&(w+=N);return{r:C,value:w,language:e,top:_}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:t(n)};throw e}}function u(e,n){n=n||k.languages||m(Z);var a={r:0,value:t(e)},s=a;return n.filter(f).forEach((function(t){var n=c(t,e,!1);n.language=t,n.r>s.r&&(s=n),n.r>a.r&&(s=a,a=n)})),s.language&&(a.second_best=s),a}function d(e){return k.tabReplace||k.useBR?e.replace(_,(function(e,t){return k.useBR&&"\n"===e?"<br>":k.tabReplace?t.replace(/\t/g,k.tabReplace):void 0})):e}function p(e){var t,n,a,i,l,p=function(e){var t,n,a,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",n=y.exec(o))return f(n[1])?n[1]:"no-highlight";for(t=0,a=(o=o.split(/\s+/)).length;a>t;t++)if(s(i=o[t])||f(i))return i}(e);s(p)||(k.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,l=t.textContent,a=p?c(p,l,!0):u(l),(n=o(t)).length&&((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=r(n,o(i),l)),a.value=d(a.value),e.innerHTML=a.value,e.className=function(e,t,n){var a=t?g[t]:n,s=[e.trim()];return e.match(/\bhljs\b/)||s.push("hljs"),-1===e.indexOf(a)&&s.push(a),s.join(" ").trim()}(e.className,p,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");v.forEach.call(e,p)}}function f(e){return e=(e||"").toLowerCase(),Z[e]||Z[g[e]]}var v=[],m=Object.keys,Z={},g={},b=/^(no-?highlight|plain|text)$/i,y=/\blang(?:uage)?-([\w-]+)\b/i,_=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,N="</span>",k={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={"&":"&","<":"<",">":">"};return e.highlight=c,e.highlightAuto=u,e.fixMarkup=d,e.highlightBlock=p,e.configure=function(e){k=i(k,e)},e.initHighlighting=h,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",h,!1),addEventListener("load",h,!1)},e.registerLanguage=function(t,n){var a=Z[t]=n(e);a.aliases&&a.aliases.forEach((function(e){g[e]=t}))},e.listLanguages=function(){return m(Z)},e.getLanguage=f,e.inherit=i,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,n,a){var s=e.inherit({cN:"comment",b:t,e:n,c:[]},a||{});return s.c.push(e.PWM),s.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),s},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e}({}),void 0===(n=function(){return a.hljs}.apply(t,[]))||(e.exports=n)),hljs.registerLanguage("xml",(function(e){var t={eW:!0,i:/</,r:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[t],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[t],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}})),hljs.registerLanguage("markdown",(function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}})),hljs.registerLanguage("ini",(function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}})),hljs.registerLanguage("python",(function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,n]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)|=>/,c:[t,a,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}})),hljs.registerLanguage("css",(function(e){var t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}})),hljs.registerLanguage("less",(function(e){var t="[\\w-]+",n="("+t+"|@{"+t+"})",a=[],s=[],i=function(e){return{cN:"string",b:"~?"+e+".*?"+e}},o=function(e,t,n){return{cN:e,b:t,r:n}},r={b:"\\(",e:"\\)",c:s,r:0};s.push(e.CLCM,e.CBCM,i("'"),i('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},o("number","#[0-9A-Fa-f]+\\b"),r,o("variable","@@?"+t,10),o("variable","@{"+t+"}"),o("built_in","~?`[^`]*?`"),{cN:"attribute",b:t+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var l=s.concat({b:"{",e:"}",c:a}),c={bK:"when",eW:!0,c:[{bK:"and not"}].concat(s)},u={b:n+"\\s*:",rB:!0,e:"[;}]",r:0,c:[{cN:"attribute",b:n,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",r:0,c:s}}]},d={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:s,r:0}},p={cN:"variable",v:[{b:"@"+t+"\\s*:",r:15},{b:"@"+t}],starts:{e:"[;}]",rE:!0,c:l}},h={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:n,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",r:0,c:[e.CLCM,e.CBCM,c,o("keyword","all\\b"),o("variable","@{"+t+"}"),o("selector-tag",n+"%?",0),o("selector-id","#"+n),o("selector-class","\\."+n,0),o("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:l},{b:"!important"}]};return a.push(e.CLCM,e.CBCM,d,p,u,h),{cI:!0,i:"[=>'/<($\"]",c:a}})),hljs.registerLanguage("scss",(function(e){var t={cN:"variable",b:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={cN:"number",b:"#[0-9A-Fa-f]+"};return e.CSSNM,e.QSM,e.ASM,e.CBCM,{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[t,n,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[t,e.QSM,e.ASM,n,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}})),hljs.registerLanguage("json",(function(e){var t={literal:"true false null"},n=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:n,k:t},s={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return n.splice(n.length,0,s,i),{c:n,k:t,i:"\\S"}})),hljs.registerLanguage("javascript",(function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},s={cN:"subst",b:"\\$\\{",e:"\\}",k:n,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,s]};s.c=[e.ASM,e.QSM,i,a,e.RM];var o=s.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:n,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:n,c:o}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:o}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}})),hljs.registerLanguage("bash",(function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},n={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,n,{cN:"string",b:/'/,e:/'/},t]}}))},98936:function(e,t,n){"use strict";n.d(t,{gq:function(){return o},Z6:function(){return r},kw:function(){return l}});var a=n(22928),s=n(94184),i=n.n(s),o=(n(57588),function(e){var t=e.children,n=e.className;return(0,a.Z)("div",{className:i()("flex-row",n)},void 0,t)}),r=function(e){var t=e.children,n=e.className,s=e.shrink;return(0,a.Z)("div",{className:i()("flex-row-col",n,{"flex-row-col-shrink":s})},void 0,t)},l=function(e){var t=e.auto,n=e.children,s=e.className;return(0,a.Z)("div",{className:i()("flex-row-section",{"flex-row-section-auto":t},s)},void 0,n)}},59131:function(e,t,n){"use strict";var a=n(22928);n(57588),t.Z=function(e){var t=e.children;return(0,a.Z)("div",{className:"container page-container"},void 0,t)}},99755:function(e,t,n){"use strict";n.d(t,{mr:function(){return r},gC:function(){return l},sP:function(){return c},eA:function(){return u},Ql:function(){return d},bM:function(){return p},Iv:function(){return h}});var a,s=n(22928),i=n(94184),o=n.n(i),r=(n(57588),function(e){var t=e.children,n=e.className,i=e.styleName;return(0,s.Z)("div",{className:o()("page-header",n,i&&"page-header-"+i)},void 0,(0,s.Z)("div",{className:"page-header-bg-image"},void 0,(0,s.Z)("div",{className:"page-header-bg-overlay"},void 0,a||(a=(0,s.Z)("div",{className:"page-header-image"})),t)))}),l=function(e){var t=e.children,n=e.className,a=e.styleName;return(0,s.Z)("div",{className:o()("page-header-banner",n,a&&"page-header-banner-"+a)},void 0,(0,s.Z)("div",{className:"page-header-banner-bg-image"},void 0,(0,s.Z)("div",{className:"page-header-banner-bg-overlay"},void 0,t)))},c=function(e){var t=e.children;return(0,s.Z)("div",{className:"container page-header-container"},void 0,t)},u=function(e){var t=e.children,n=e.className;return(0,s.Z)("div",{className:o()("page-header-details",n)},void 0,t)},d=function(e){var t=e.className,n=e.message;return(0,s.Z)("div",{className:o()("page-header-message",t),dangerouslySetInnerHTML:{__html:n}})},p=function(e){var t=e.children,n=e.className;return(0,s.Z)("div",{className:o()("page-header-message",n)},void 0,t)},h=function(e){var t=e.styleName,n=e.header,a=e.message;return(0,s.Z)(c,{},void 0,(0,s.Z)(r,{styleName:t},void 0,(0,s.Z)(l,{styleName:t},void 0,(0,s.Z)("h1",{},void 0,n)),a&&(0,s.Z)(u,{styleName:t},void 0,a)))}},26106:function(e,t,n){"use strict";var a=n(22928),s=(n(57588),n(32233)),i=n(89627),o=function(e){var t=e.agreement,n=e.checked,s=e.errors,o=e.url,r=e.value,l=e.onChange;if(!o)return null;var c=interpolate('<a href="%(url)s" target="_blank">%(agreement)s</a>',{agreement:(0,i.Z)(t),url:(0,i.Z)(o)},!0),u=interpolate(gettext("I have read and accept %(agreement)s."),{agreement:c},!0);return(0,a.Z)("div",{className:"checkbox legal-footnote"},void 0,(0,a.Z)("label",{},void 0,(0,a.Z)("input",{checked:n,type:"checkbox",value:r,onChange:l}),(0,a.Z)("span",{dangerouslySetInnerHTML:{__html:u}})),s&&s.map((function(e,t){return(0,a.Z)("div",{className:"help-block errors"},t,e)})))};t.Z=function(e){var t=e.errors,n=e.privacyPolicy,i=e.termsOfService,r=e.onPrivacyPolicyChange,l=e.onTermsOfServiceChange,c=s.Z.get("TERMS_OF_SERVICE_ID"),u=s.Z.get("TERMS_OF_SERVICE_URL"),d=s.Z.get("PRIVACY_POLICY_ID"),p=s.Z.get("PRIVACY_POLICY_URL");return c||d?(0,a.Z)("div",{},void 0,(0,a.Z)(o,{agreement:gettext("the terms of service"),checked:null!==i,errors:t.termsOfService,url:u,value:c,onChange:l}),(0,a.Z)(o,{agreement:gettext("the privacy policy"),checked:null!==n,errors:t.privacyPolicy,url:p,value:d,onChange:r})):null}},47235:function(e,t,n){"use strict";var a,s=n(22928),i=(n(57588),n(32233)),o=function(e){var t=e.className,n=e.text;return n?(0,s.Z)("h5",{className:t||""},void 0,n):null};t.Z=function(e){var t=e.buttonClassName,n=e.buttonLabel,r=e.formLabel,l=e.header,c=e.labelClassName,u=i.Z.get("SOCIAL_AUTH");return 0===u.length?null:(0,s.Z)("div",{className:"form-group form-social-auth"},void 0,(0,s.Z)(o,{className:c,text:l}),(0,s.Z)("div",{className:"row"},void 0,u.map((function(e){var a=e.id,i=e.name,o=e.button_text,r=e.button_color,l=e.url,c="btn btn-block btn-default btn-social-"+a,u=r?{color:r}:null,d=o||interpolate(n,{site:i},!0);return(0,s.Z)("div",{className:t||"col-xs-12"},a,(0,s.Z)("a",{className:c,style:u,href:l},void 0,d))}))),a||(a=(0,s.Z)("hr",{})),(0,s.Z)(o,{className:c,text:r}))}},50366:function(e,t,n){"use strict";var a,s,i,o,r,l,c,u=n(22928);n(57588),t.Z=function(e){var t=e.thread;return(0,u.Z)("ul",{className:"thread-flags"},void 0,2==t.weight&&(0,u.Z)("li",{className:"thread-flag-pinned-globally",title:gettext("Pinned globally")},void 0,a||(a=(0,u.Z)("span",{className:"material-icon"},void 0,"bookmark"))),1==t.weight&&(0,u.Z)("li",{className:"thread-flag-pinned-locally",title:gettext("Pinned in category")},void 0,s||(s=(0,u.Z)("span",{className:"material-icon"},void 0,"bookmark_outline"))),t.best_answer&&(0,u.Z)("li",{className:"thread-flag-answered",title:gettext("Answered")},void 0,i||(i=(0,u.Z)("span",{className:"material-icon"},void 0,"check_circle"))),t.has_poll&&(0,u.Z)("li",{className:"thread-flag-poll",title:gettext("Poll")},void 0,o||(o=(0,u.Z)("span",{className:"material-icon"},void 0,"poll"))),(t.is_unapproved||t.has_unapproved_posts)&&(0,u.Z)("li",{className:"thread-flag-unapproved",title:t.is_unapproved?gettext("Awaiting approval"):gettext("Has unapproved posts")},void 0,r||(r=(0,u.Z)("span",{className:"material-icon"},void 0,"visibility"))),t.is_closed&&(0,u.Z)("li",{className:"thread-flag-closed",title:gettext("Closed")},void 0,l||(l=(0,u.Z)("span",{className:"material-icon"},void 0,"lock"))),t.is_hidden&&(0,u.Z)("li",{className:"thread-flag-hidden",title:gettext("Hidden")},void 0,c||(c=(0,u.Z)("span",{className:"material-icon"},void 0,"visibility_off"))))}},16768:function(e,t,n){"use strict";var a,s=n(22928);n(57588),t.Z=function(e){var t=e.thread;return(0,s.Z)("span",{className:"threads-replies",title:interpolate(ngettext("%(replies)s reply","%(replies)s replies",t.replies),{replies:t.replies},!0)},void 0,a||(a=(0,s.Z)("span",{className:"material-icon"},void 0,"chat_bubble_outline")),t.replies>980?Math.round(t.replies/1e3)+"K":t.replies)}},92490:function(e,t,n){"use strict";n.d(t,{o8:function(){return s},Eg:function(){return r},Z2:function(){return l},tw:function(){return c}});var a=n(22928),s=(n(57588),function(e){var t=e.children;return(0,a.Z)("nav",{className:"toolbar"},void 0,t)}),i=n(94184),o=n.n(i),r=function(e){var t=e.children,n=e.className,s=e.shrink;return(0,a.Z)("div",{className:o()("toolbar-item",n,{"toolbar-item-shrink":s})},void 0,t)},l=function(e){var t=e.auto,n=e.children,s=e.className;return(0,a.Z)("div",{className:o()("toolbar-section",{"toolbar-section-auto":t},s)},void 0,n)},c=function(e){var t=e.className;return(0,a.Z)("div",{className:o()("toolbar-spacer",t)})}},19605:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i}});var a=n(22928),s=(n(57588),n(32233));function i(e){var t=e.size||100,n=e.size2x||t;return(0,a.Z)("img",{alt:"",className:e.className||"user-avatar",src:o(e.user,t),srcSet:o(e.user,n),width:t,height:t})}function o(e,t){return e&&e.id?function(e,t){var n=e[0];return e.forEach((function(e){e.size>=t&&(n=e)})),n}(e.avatars,t).url:s.Z.get("BLANK_AVATAR_URL")}},82211:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),(0,s.Z)("button",{className:e,disabled:t,onClick:this.props.onClick,type:this.props.onClick?"button":"submit"},void 0,this.props.children,this.props.loading?a||(a=(0,s.Z)(p.Z,{})):null)}}]),d}(d().Component);h.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},57026:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var a=n(22928);function s(e){return(0,a.Z)("select",{className:e.className||"form-control",disabled:e.disabled||!1,id:e.id||null,onChange:e.onChange,value:e.value},void 0,e.choices.map((function(e){return(0,a.Z)("option",{disabled:e.disabled||!1,value:e.value},e.value,"- - ".repeat(e.level)+e.label)})))}n(57588)},21688:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c),d=n(33556);function p(e){return e.display?(0,a.Z)(d.Z,{helpText:gettext("No profile details are editable at this time."),message:gettext("This option is currently unavailable.")}):null}var h,f=n(37848);function v(e){return e.display?h||(h=(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(f.Z,{}))):null}var m=n(97326),Z=n(4942),g=n(60471);var b=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){var e;(0,s.Z)(this,u);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=c.call.apply(c,[this].concat(n)),(0,Z.Z)((0,m.Z)(e),"onChange",(function(t){var n=e.props,a=n.field;(0,n.onChange)(a.fieldname,t.target.value)})),e}return(0,i.Z)(u,[{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.field,s=e.value,i=n.input;return"select"===i.type?(0,a.Z)(g.Z,{choices:i.choices,disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,value:s}):"textarea"===i.type?(0,a.Z)("textarea",{className:"form-control",disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,rows:"4",type:"text",value:s}):"text"===i.type?(0,a.Z)("input",{className:"form-control",disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,type:"text",value:s}):null}}]),u}(u().Component),y=n(96359);function _(e){var t=e.disabled,n=e.errors,s=e.fields,i=e.name,o=e.onChange,r=e.value;return(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,i),s.map((function(e){return(0,a.Z)(y.Z,{for:"id_"+e.fieldname,helpText:e.help_text,label:e.label,validation:n[e.fieldname]},e.fieldname,(0,a.Z)(b,{disabled:t,field:e,onChange:o,value:r[e.fieldname]}))})))}var N=n(82211),k=n(43345),x=n(78657),w=n(53904);var R=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;(0,s.Z)(this,u),t=c.call(this,e),(0,Z.Z)((0,m.Z)(t),"onChange",(function(e,n){t.setState((0,Z.Z)({},e,n))})),t.state={isLoading:!1,errors:{}};for(var n=e.groups.length,a=0;a<n;a++)for(var i=e.groups[a],o=i.fields.length,r=0;r<o;r++){var l=i.fields[r].fieldname,d=i.fields[r].initial;t.state[l]=d}return t}return(0,i.Z)(u,[{key:"send",value:function(){var e=Object.assign({},this.state,{errors:null,isLoading:null});return x.Z.post(this.props.api,e)}},{key:"handleSuccess",value:function(e){this.props.onSuccess(e)}},{key:"handleError",value:function(e){400===e.status?(w.Z.error(gettext("Form contains errors.")),this.setState({errors:e})):w.Z.apiError(e)}},{key:"render",value:function(){var e=this;return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,this.props.groups.map((function(t,n){return(0,a.Z)(_,{disabled:e.state.isLoading,errors:e.state.errors,fields:t.fields,name:t.name,onChange:e.onChange,value:e.state},n)}))),(0,a.Z)("div",{className:"panel-footer text-right"},void 0,(0,a.Z)(C,{disabled:this.state.isLoading,onCancel:this.props.onCancel})," ",(0,a.Z)(N.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes"))))}}]),u}(k.Z);function C(e){var t=e.onCancel,n=e.disabled;return t?(0,a.Z)("button",{className:"btn btn-default",disabled:n,onClick:t,type:"button"},void 0,gettext("Cancel")):null}var S=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={loading:!0,groups:null},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){var e=this;x.Z.get(this.props.api).then((function(t){e.setState({loading:!1,groups:t})}),(function(t){w.Z.apiError(t),e.props.cancel&&e.props.cancel()}))}},{key:"render",value:function(){var e=this.state,t=e.groups,n=e.loading;return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Edit details"))),(0,a.Z)(v,{display:n}),(0,a.Z)(p,{display:!n&&!t.length}),(0,a.Z)(E,{api:this.props.api,display:!n&&t.length,groups:t,onCancel:this.props.onCancel,onSuccess:this.props.onSuccess}))}}]),u}(u().Component);function E(e){var t=e.api,n=e.display,s=e.groups,i=e.onCancel,o=e.onSuccess;return n?(0,a.Z)(R,{api:t,groups:s,onCancel:i,onSuccess:o}):null}},96359:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"isValidated",value:function(){return void 0!==this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",null===this.props.validation?e+=" has-success":e+=" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?(0,a.Z)("div",{className:"help-block errors"},void 0,this.props.validation.map((function(t,n){return(0,a.Z)("p",{},e.props.for+"FeedbackItem"+n,t)}))):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?(0,a.Z)("span",{id:this.props.for+"_status",className:"sr-only"},void 0,this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:this.getClassName()},void 0,(0,a.Z)("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props.for||""},void 0,this.props.label+":"),(0,a.Z)("div",{className:this.props.controlClass||""},void 0,this.props.children,this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),u}(n.n(c)().Component)},43345:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var a=n(15671),s=n(43144),i=n(97326),o=n(79340),r=n(6215),l=n(61120),c=n(4942),u=n(57588),d=n.n(u),p=n(55210),h=n(53904);var f=(0,p.C1)(),v=function(e){(0,o.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function d(){var e;(0,a.Z)(this,d);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=u.call.apply(u,[this].concat(n)),(0,c.Z)((0,i.Z)(e),"bindInput",(function(t){return function(n){e.changeValue(t,n.target.value)}})),(0,c.Z)((0,i.Z)(e),"changeValue",(function(t,n){var a=(0,c.Z)({},t,n),s=e.state.errors||{};s[t]=e.validateField(t,a[t]),a.errors=s,e.setState(a)})),(0,c.Z)((0,i.Z)(e),"handleSubmit",(function(t){if(t&&t.preventDefault(),!e.state.isLoading&&e.clean()){e.setState({isLoading:!0});var n=e.send();n?n.then((function(t){e.setState({isLoading:!1}),e.handleSuccess(t)}),(function(t){e.setState({isLoading:!1}),e.handleError(t)})):e.setState({isLoading:!1})}})),e}return(0,s.Z)(d,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},n=[];for(var a in t.required)t.required.hasOwnProperty(a)&&t.required[a]&&n.push(a);for(var s in t.optional)t.optional.hasOwnProperty(s)&&t.optional[s]&&n.push(s);for(var i in n){var o=n[i],r=this.validateField(o,this.state[o]);null===r?e[o]=null:r&&(e[o]=r)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var n=[];if(!this.state.validators)return n;var a={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},s=f(t)||!1;if(a.required){if(s)n=[s];else for(var i in a.required){var o=a.required[i](t);o&&n.push(o)}return n.length?n:null}if(!1===s&&a.optional){for(var r in a.optional){var l=a.optional[r](t);l&&n.push(l)}return n.length?n:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){h.Z.apiError(e)}}]),d}(d().Component)},94417:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"isActive",value:function(){return this.props.isControlled?this.props.isActive:!!this.props.path&&0===document.location.pathname.indexOf(this.props.path)}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return(0,a.Z)("li",{className:this.getClassName()},void 0,this.props.children)}}]),u}(n.n(c)().Component)},37848:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var a,s=n(22928);function i(e){return(0,s.Z)("div",{className:e.className||"loader"},void 0,a||(a=(0,s.Z)("div",{className:"loader-spinning-wheel"})))}n(57588)},52753:function(e,t,n){"use strict";n.d(t,{ZP:function(){return Z}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=(n(57588),n(82211)),h=n(43345),f=n(96359),v=n(78657),m=n(59801);var Z=function(e){(0,l.Z)(f,e);var t,n,h=(t=f,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function f(e){var t;return(0,i.Z)(this,f),t=h.call(this,e),(0,d.Z)((0,r.Z)(t),"handleSuccess",(function(e){t.props.onSuccess(e),m.Z.hide()})),(0,d.Z)((0,r.Z)(t),"handleError",(function(e){t.props.onError(e)})),(0,d.Z)((0,r.Z)(t),"onBestAnswerChange",(function(e){t.changeValue("bestAnswer",e.target.value)})),(0,d.Z)((0,r.Z)(t),"onPollChange",(function(e){t.changeValue("poll",e.target.value)})),t.state={isLoading:!1,bestAnswer:"0",poll:"0"},t}return(0,o.Z)(f,[{key:"clean",value:function(){return!this.props.polls||"0"!==this.state.poll||window.confirm(gettext("Are you sure you want to delete all polls?"))}},{key:"send",value:function(){var e=Object.assign({},this.props.data,{best_answer:this.state.bestAnswer,poll:this.state.poll});return v.Z.post(this.props.api,e)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,a||(a=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Merge threads"))),(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(g,{choices:this.props.bestAnswers,onChange:this.onBestAnswerChange,value:this.state.bestAnswer}),(0,s.Z)(b,{choices:this.props.polls,onChange:this.onPollChange,value:this.state.poll})),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)(p.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Merge threads"))))))}}]),f}(h.Z);function g(e){var t=e.choices,n=e.onChange,a=e.value;return t?(0,s.Z)(f.Z,{label:gettext("Best answer"),helpText:gettext("Please select the best answer for your newly merged thread. No posts will be deleted during the merge."),for:"id_best_answer"},void 0,(0,s.Z)("select",{className:"form-control",id:"id_best_answer",onChange:n,value:a},void 0,t.map((function(e){return(0,s.Z)("option",{value:e[0]},e[0],e[1])})))):null}function b(e){var t=e.choices,n=e.onChange,a=e.value;return t?(0,s.Z)(f.Z,{label:gettext("Poll"),helpText:gettext("Please select the poll for your newly merged thread. Rejected polls will be permanently deleted and cannot be recovered."),for:"id_poll"},void 0,(0,s.Z)("select",{className:"form-control",id:"id_poll",onChange:n,value:a},void 0,t.map((function(e){return(0,s.Z)("option",{value:e[0]},e[0],e[1])})))):null}},69092:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var a=n(15671),s=n(43144),i=n(79340),o=n(6215),r=n(61120),l=n(57588),c=n.n(l),u=n(4942),d=n(19755),p=new RegExp("^.*(?:(?:youtu.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)??v(?:i)?=|&v(?:i)?=))([^#&?]*).*"),h=new(function(){function e(){var t=this;(0,a.Z)(this,e),(0,u.Z)(this,"render",(function(e){e&&(t.highlightCode(e),t.embedYoutubePlayers(e))})),this._youtube={}}return(0,s.Z)(e,[{key:"highlightCode",value:function(e){for(var t=e.querySelectorAll("pre>code"),n=0;n<t.length;n++){var a=t[n];hljs.highlightBlock(a)}}},{key:"embedYoutubePlayers",value:function(e){for(var t=e.querySelectorAll("p>a"),n=0;n<t.length;n++){var a=t[n],s=1===a.parentNode.childNodes.length;this._youtube[a.href]||(this._youtube[a.href]=f(a.href));var i=this._youtube[a.href];s&&i&&!1!==i.data&&this.swapYoutubePlayer(a,i)}}},{key:"swapYoutubePlayer",value:function(e,t){var n="https://www.youtube.com/embed/";n+=t.video,n+="?rel=0",t.start&&(n+="&start="+t.start);var a=d('<iframe class="embed-responsive-item" src="'+n+'" allowfullscreen></iframe>');d(e).replaceWith(a),a.wrap('<div class="embed-responsive embed-responsive-16by9"></div>')}}]),e}());function f(e){var t=function(e){var t=e;return"https://"===e.substr(0,8)?t=t.substr(8):"http://"===e.substr(0,7)&&(t=t.substr(7)),"www."===t.substr(0,4)&&(t=t.substr(4)),t}(e),n=function(e){if(-1===e.indexOf("youtu"))return null;var t=e.match(p);return t?t[1]:null}(t);if(!n)return null;var a=0;if(t.indexOf("?")>0){var s=t.substr(t.indexOf("?")+1).split("&").filter((function(e){return"t="===e.substr(0,2)}))[0];if(s){var i=s.substr(2).split("m");"s"===i[0].substr(-1)?a+=parseInt(i[0].substr(0,i[0].length-1)):(a+=60*parseInt(i[0]),i[1]&&"s"===i[1].substr(-1)&&(a+=parseInt(i[1].substr(0,i[1].length-1))))}}return{start:a,video:n}}var v=n(19755);var m=function(e){(0,i.Z)(u,e);var t,n,l=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,r.Z)(t);if(n){var s=(0,r.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,o.Z)(this,e)});function u(){return(0,a.Z)(this,u),l.apply(this,arguments)}return(0,s.Z)(u,[{key:"componentDidMount",value:function(){h.render(this.documentNode),v(this.documentNode).find(".spoiler-reveal").click(Z)}},{key:"componentDidUpdate",value:function(e,t){h.render(this.documentNode),v(this.documentNode).find(".spoiler-reveal").click(Z)}},{key:"shouldComponentUpdate",value:function(e,t){return e.markup!==this.props.markup}},{key:"render",value:function(){var e=this;return c().createElement("article",{className:"misago-markup",dangerouslySetInnerHTML:{__html:this.props.markup},ref:function(t){e.documentNode=t}})}}]),u}(c().Component);function Z(e){var t=e.target;v(t).parent().parent().addClass("revealed")}},3784:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){return a||(a=(0,s.Z)("div",{className:"modal-body modal-loader"},void 0,(0,s.Z)(p.Z,{})))}}]),d}(d().Component)},30337:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120);n(57588);var c=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:"modal-body"},void 0,(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.props.icon||"info_outline")),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,this.props.message),this.getHelpText(),(0,a.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}}]),u}(n(33556).Z)},95187:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){return a||(a=(0,s.Z)("div",{className:"panel-body panel-body-loading"},void 0,(0,s.Z)(p.Z,{className:"loader loader-spaced"})))}}]),d}(d().Component)},33556:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:"panel-body panel-message-body"},void 0,(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.props.icon||"info_outline")),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,this.props.message),this.getHelpText()))}}]),u}(n.n(c)().Component)},91876:function(e,t,n){"use strict";n.d(t,{n:function(){return me},y:function(){return ke}});var a,s=n(87462),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(57588),h=n.n(p),f=n(30381),v=n.n(f),m=n(22928);function Z(e){return(0,m.Z)("div",{className:"poll-choices-bars"},void 0,e.poll.choices.map((function(t){return(0,m.Z)(g,{choice:t,poll:e.poll},t.hash)})))}function g(e){var t=0;return e.choice.votes&&e.poll.votes&&(t=Math.ceil(100*e.choice.votes/e.poll.votes)),(0,m.Z)("dl",{className:"dl-horizontal"},void 0,(0,m.Z)("dt",{},void 0,e.choice.label),(0,m.Z)("dd",{},void 0,(0,m.Z)("div",{className:"progress"},void 0,(0,m.Z)("div",{className:"progress-bar",role:"progressbar","aria-valuenow":t,"aria-valuemin":"0","aria-valuemax":"100",style:{width:t+"%"}},void 0,(0,m.Z)("span",{className:"sr-only"},void 0,y(e.votes,e.proc)))),(0,m.Z)("ul",{className:"list-unstyled list-inline poll-chart"},void 0,(0,m.Z)(b,{proc:t,votes:e.choice.votes}),(0,m.Z)(_,{selected:e.choice.selected}))))}function b(e){return(0,m.Z)("li",{className:"poll-chart-votes"},void 0,y(e.votes,e.proc))}function y(e,t){var n=ngettext("%(votes)s vote, %(proc)s% of total.","%(votes)s votes, %(proc)s% of total.",e);return interpolate(n,{votes:e,proc:t},!0)}function _(e){return e.selected?(0,m.Z)("li",{className:"poll-chart-selected"},void 0,a||(a=(0,m.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Your choice.")):null}var N,k,x,w=n(30337),R=n(3784),C=n(78657);var S=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,i.Z)(this,s),(t=a.call(this,e)).state={isLoading:!0,error:null,data:[]},t}return(0,o.Z)(s,[{key:"componentDidMount",value:function(){var e=this;C.Z.get(this.props.poll.api.votes).then((function(t){var n=t.map((function(e){return Object.assign({},e,{voters:e.voters.map((function(e){return Object.assign({},e,{voted_on:v()(e.voted_on)})}))})}));e.setState({isLoading:!1,data:n})}),(function(t){e.setState({isLoading:!1,error:t.detail})}))}},{key:"render",value:function(){return(0,m.Z)("div",{className:"modal-dialog"+(this.state.error?" modal-message":" modal-sm"),role:"document"},void 0,(0,m.Z)("div",{className:"modal-content"},void 0,(0,m.Z)("div",{className:"modal-header"},void 0,(0,m.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,N||(N=(0,m.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,m.Z)("h4",{className:"modal-title"},void 0,gettext("Poll votes"))),(0,m.Z)(E,{data:this.state.data,error:this.state.error,isLoading:this.state.isLoading})))}}]),s}(h().Component);function E(e){return e.isLoading?k||(k=(0,m.Z)(R.Z,{})):e.error?(0,m.Z)(w.Z,{icon:"error_outline",message:e.error}):(0,m.Z)(L,{data:e.data})}function L(e){return(0,m.Z)("div",{className:"modal-body modal-poll-votes"},void 0,(0,m.Z)("ul",{className:"list-unstyled votes-details"},void 0,e.data.map((function(e){return h().createElement(P,(0,s.Z)({key:e.hash},e))}))))}function P(e){return(0,m.Z)("li",{},void 0,(0,m.Z)("h4",{},void 0,e.label),(0,m.Z)(O,{votes:e.votes}),(0,m.Z)(T,{voters:e.voters}),x||(x=(0,m.Z)("hr",{})))}function O(e){var t=ngettext("%(votes)s user has voted for this choice.","%(votes)s users have voted for this choice.",e.votes),n=interpolate(t,{votes:e.votes},!0);return(0,m.Z)("p",{},void 0,n)}function T(e){return e.voters.length?(0,m.Z)("ul",{className:"list-unstyled"},void 0,e.voters.map((function(e){return h().createElement(A,(0,s.Z)({key:e.username},e))}))):null}function A(e){return e.url?(0,m.Z)("li",{},void 0,(0,m.Z)("a",{className:"item-title",href:e.url},void 0,e.username)," ",(0,m.Z)(B,{voted_on:e.voted_on})):(0,m.Z)("li",{},void 0,(0,m.Z)("strong",{},void 0,e.username)," ",(0,m.Z)(B,{voted_on:e.voted_on}))}function B(e){return(0,m.Z)("abbr",{className:"text-muted",title:e.voted_on.format("LLL")},void 0,e.voted_on.fromNow())}var I=n(59752),j=n(7738),D=n(59801),U=n(27950),M=n(53904),z=n(90287);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}function F(e){var t=e.isPollOver,n=e.poll,a=e.showVoting,s=e.thread;if(!function(e,t,n){return n.is_public||t.can_delete||t.can_edit||t.can_see_votes||t.can_vote&&!e&&(!n.hasSelectedChoices||n.allow_revotes)}(t,n.acl,n))return null;var i=[],o=n.acl.can_vote,r=!n.hasSelectedChoices||n.allow_revotes;return o&&r&&i.push(0),(n.is_public||n.acl.can_see_votes)&&i.push(1),n.acl.can_edit&&i.push(2),n.acl.can_delete&&i.push(3),(0,m.Z)("div",{className:"row poll-options"},void 0,(0,m.Z)(Y,{controls:i,isPollOver:t,poll:n,showVoting:a}),(0,m.Z)(V,{controls:i,poll:n}),(0,m.Z)($,{controls:i,poll:n,thread:s}),(0,m.Z)(G,{controls:i,poll:n}))}function q(e,t){var n="col-xs-6";return 1===e.length&&(n="col-xs-12"),3===e.length&&e[0]===t&&(n="col-xs-12"),n+" col-sm-3 col-md-2"}function Y(e){var t=e.poll.acl.can_vote,n=!e.poll.hasSelectedChoices||e.poll.allow_revotes;return t&&n?(0,m.Z)("div",{className:q(e.controls,0)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:e.poll.isBusy,onClick:e.showVoting,type:"button"},void 0,gettext("Vote"))):null}var V=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){D.Z.show((0,m.Z)(S,{poll:e.props.poll}))})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.is_public||this.props.poll.acl.can_see_votes?(0,m.Z)("div",{className:q(this.props.controls,1)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("See votes"))):null}}]),n}(h().Component),$=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){U.Z.open({submit:e.props.poll.api.index,thread:e.props.thread,poll:e.props.poll,mode:"POLL"})})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.acl.can_edit?(0,m.Z)("div",{className:q(this.props.controls,2)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("Edit"))):null}}]),n}(h().Component),G=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){if(!window.confirm(gettext("Are you sure you want to delete this poll? This action is not reversible.")))return!1;z.Z.dispatch(I.n6()),C.Z.delete(e.props.poll.api.index).then(e.handleSuccess,e.handleError)})),(0,d.Z)((0,r.Z)(e),"handleSuccess",(function(e){M.Z.success("Poll has been deleted"),z.Z.dispatch(I.Od()),z.Z.dispatch(j.y8(e))})),(0,d.Z)((0,r.Z)(e),"handleError",(function(e){M.Z.apiError(e),z.Z.dispatch(I.Ar())})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.acl.can_delete?(0,m.Z)("div",{className:q(this.props.controls,3)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("Delete"))):null}}]),n}(h().Component),W=n(89627),K='<abbr title="%(absolute)s">%(relative)s</abbr>';function J(e){return(0,m.Z)("ul",{className:"list-unstyled list-inline poll-details"},void 0,(0,m.Z)(ae,{votes:e.poll.votes}),(0,m.Z)(te,{poll:e.poll}),(0,m.Z)(se,{poll:e.poll}),(0,m.Z)(Q,{poll:e.poll}))}function Q(e){var t=interpolate((0,W.Z)(gettext("Posted by %(poster)s %(posted_on)s.")),{poster:X(e.poll),posted_on:ee(e.poll)},!0);return(0,m.Z)("li",{className:"poll-info-creation",dangerouslySetInnerHTML:{__html:t}})}function X(e){return e.url.poster?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,W.Z)(e.url.poster),user:(0,W.Z)(e.poster_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,W.Z)(e.poster_name)},!0)}function ee(e){return interpolate(K,{absolute:(0,W.Z)(e.posted_on.format("LLL")),relative:(0,W.Z)(e.posted_on.fromNow())},!0)}function te(e){if(!e.poll.length)return null;var t=interpolate((0,W.Z)(gettext("Voting ends %(ends_on)s.")),{ends_on:ne(e.poll)},!0);return(0,m.Z)("li",{className:"poll-info-ends-on",dangerouslySetInnerHTML:{__html:t}})}function ne(e){return interpolate(K,{absolute:(0,W.Z)(e.endsOn.format("LLL")),relative:(0,W.Z)(e.endsOn.fromNow())},!0)}function ae(e){var t=ngettext("%(votes)s vote.","%(votes)s votes.",e.votes),n=interpolate(t,{votes:e.votes},!0);return(0,m.Z)("li",{className:"poll-info-votes"},void 0,n)}function se(e){return e.poll.is_public?(0,m.Z)("li",{className:"poll-info-public"},void 0,gettext("Votes are public.")):null}function ie(e){return(0,m.Z)("div",{className:"panel panel-default panel-poll"},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("h2",{},void 0,e.poll.question),(0,m.Z)(J,{poll:e.poll}),(0,m.Z)(Z,{poll:e.poll}),(0,m.Z)(F,{isPollOver:e.isPollOver,poll:e.poll,showVoting:e.showVoting,thread:e.thread})))}function oe(e){return(0,m.Z)("ul",{className:"list-unstyled list-inline poll-help"},void 0,(0,m.Z)(re,{choicesLeft:e.choicesLeft}),(0,m.Z)(le,{poll:e.poll}))}function re(e){var t=e.choicesLeft;if(0===t)return(0,m.Z)("li",{className:"poll-help-choices-left"},void 0,gettext("You can't select any more choices."));var n=ngettext("You can select %(choices)s more choice.","You can select %(choices)s more choices.",t),a=interpolate(n,{choices:t},!0);return(0,m.Z)("li",{className:"poll-help-choices-left"},void 0,a)}function le(e){return e.poll.allow_revotes?(0,m.Z)("li",{className:"poll-help-allow-revotes"},void 0,gettext("You can change your vote later.")):(0,m.Z)("li",{className:"poll-help-no-revotes"},void 0,gettext("Votes are final."))}function ce(e){return(0,m.Z)("ul",{className:"list-unstyled poll-select-choices"},void 0,e.choices.map((function(t){return(0,m.Z)(ue,{choice:t,toggleChoice:e.toggleChoice},t.hash)})))}var ue=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){var e;(0,i.Z)(this,s);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){e.props.toggleChoice(e.props.choice.hash)})),e}return(0,o.Z)(s,[{key:"render",value:function(){return(0,m.Z)("li",{className:"poll-select-choice"},void 0,(0,m.Z)("button",{className:this.props.choice.selected?"btn btn-selected":"btn",onClick:this.onClick,type:"button"},void 0,(0,m.Z)("span",{className:"material-icon"},void 0,this.props.choice.selected?"check_box":"check_box_outline_blank"),(0,m.Z)("strong",{},void 0,this.props.choice.label)))}}]),s}(h().Component);function de(e,t){var n=[];for(var a in t){var s=t[a];s.selected&&n.push(s)}return e.allowed_choices-n.length}var pe=n(82211),he=n(43345);var fe=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,i.Z)(this,s),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"toggleChoice",(function(e){var n,a=function(e,t){for(var n in e){var a=e[n];if(a.hash===t)return a}return null}(t.state.choices,e);n=a.selected?t.deselectChoice(a,e):t.selectChoice(a,e),t.setState({choices:n,choicesLeft:de(t.props.poll,n)})})),(0,d.Z)((0,r.Z)(t),"selectChoice",(function(e,n){if(!de(t.props.poll,t.state.choices))for(var a in t.state.choices.slice()){var s=t.state.choices[a];if(s.selected&&s.hash!=n){s.selected=!1;break}}return t.state.choices.map((function(e){return Object.assign({},e,{selected:e.hash==n||e.selected})}))})),(0,d.Z)((0,r.Z)(t),"deselectChoice",(function(e,n){return t.state.choices.map((function(e){return Object.assign({},e,{selected:e.hash!=n&&e.selected})}))})),t.state={isLoading:!1,choices:e.poll.choices,choicesLeft:de(e.poll,e.poll.choices)},t}return(0,o.Z)(s,[{key:"clean",value:function(){return this.state.choicesLeft!==this.props.poll.allowed_choices||(M.Z.error(gettext("You need to select at least one choice")),!1)}},{key:"send",value:function(){var e=[];for(var t in this.state.choices.slice()){var n=this.state.choices[t];n.selected&&e.push(n.hash)}return C.Z.post(this.props.poll.api.votes,e)}},{key:"handleSuccess",value:function(e){z.Z.dispatch(I.gx(e)),M.Z.success(gettext("Your vote has been saved.")),this.props.showResults()}},{key:"handleError",value:function(e){400===e.status?M.Z.error(e.detail):M.Z.apiError(e)}},{key:"render",value:function(){var e=[];return this.props.poll.acl.can_vote&&e.push(0),(this.props.poll.is_public||this.props.poll.acl.can_see_votes)&&e.push(1),this.props.poll.acl.can_edit&&e.push(2),this.props.poll.acl.can_delete&&e.push(3),(0,m.Z)("div",{className:"panel panel-default panel-poll"},void 0,(0,m.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("h2",{},void 0,this.props.poll.question),(0,m.Z)(J,{poll:this.props.poll}),(0,m.Z)(ce,{choices:this.state.choices,toggleChoice:this.toggleChoice}),(0,m.Z)(oe,{choicesLeft:this.state.choicesLeft,poll:this.props.poll})),(0,m.Z)("div",{className:"panel-footer"},void 0,(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)("div",{className:q(e,0)},void 0,(0,m.Z)(pe.Z,{className:"btn-primary btn-block btn-sm",loading:this.state.isLoading},void 0,gettext("Save your vote"))),(0,m.Z)("div",{className:q(e,1)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.state.isLoading,onClick:this.props.showResults,type:"button"},void 0,gettext("See results"))),(0,m.Z)($,{controls:e,poll:this.props.poll,thread:this.props.thread}),(0,m.Z)(G,{controls:e,poll:this.props.poll})))))}}]),s}(he.Z);var ve,me=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"showResults",(function(){t.setState({showResults:!0})})),(0,d.Z)((0,r.Z)(t),"showVoting",(function(){t.setState({showResults:!1})}));var n=!0;return e.user.id&&!e.poll.hasSelectedChoices&&(n=!1),t.state={showResults:n},t}return(0,o.Z)(p,[{key:"render",value:function(){if(!this.props.thread.poll)return null;var e=function(e){return!!e.length&&v()().isAfter(e.endsOn)}(this.props.poll);return e||!this.props.poll.acl.can_vote||this.state.showResults?h().createElement(ie,(0,s.Z)({isPollOver:e,showVoting:this.showVoting},this.props)):h().createElement(fe,(0,s.Z)({showResults:this.showResults},this.props))}}]),p}(h().Component);function Ze(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var ge=function(e){(0,l.Z)(n,e);var t=Ze(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onAdd",(function(){var t=e.props.choices.slice();t.push({hash:ye(),label:""}),e.props.setChoices(t)})),(0,d.Z)((0,r.Z)(e),"onChange",(function(t,n){var a=e.props.choices.map((function(e){return e.hash===t&&(e.label=n),e}));e.props.setChoices(a)})),(0,d.Z)((0,r.Z)(e),"onDelete",(function(t){var n=e.props.choices.filter((function(e){return e.hash!==t}));e.props.setChoices(n)})),e}return(0,o.Z)(n,[{key:"render",value:function(){var e=this;return(0,m.Z)("div",{className:"poll-choices-control"},void 0,(0,m.Z)("ul",{className:"list-group"},void 0,this.props.choices.map((function(t){return(0,m.Z)(be,{canDelete:e.props.choices.length>2,choice:t,disabled:e.props.disabled,onChange:e.onChange,onDelete:e.onDelete},t.hash)}))),(0,m.Z)("button",{className:"btn btn-default btn-sm",disabled:this.props.disabled,onClick:this.onAdd,type:"button"},void 0,gettext("Add choice")))}}]),n}(h().Component),be=function(e){(0,l.Z)(n,e);var t=Ze(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onChange",(function(t){e.props.onChange(e.props.choice.hash,t.target.value)})),(0,d.Z)((0,r.Z)(e),"onDelete",(function(){window.confirm(gettext("Are you sure you want to delete this choice?"))&&e.props.onDelete(e.props.choice.hash)})),e}return(0,o.Z)(n,[{key:"render",value:function(){return(0,m.Z)("li",{className:"list-group-item"},void 0,(0,m.Z)("button",{className:"btn",disabled:!this.props.canDelete||this.props.disabled,onClick:this.onDelete,title:gettext("Delete this choice"),type:"button"},void 0,ve||(ve=(0,m.Z)("span",{className:"material-icon"},void 0,"close"))),(0,m.Z)("input",{disabled:this.props.disabled,maxLength:"255",placeholder:gettext("choice label"),type:"text",onChange:this.onChange,value:this.props.choice.label}))}}]),n}(h().Component);function ye(){for(var e="";12!=e.length;)e=Math.random().toString(36).replace(/[^a-zA-Z0-9]+/g,"").substr(1,12);return e}var _e=n(96359),Ne=n(7227);var ke=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;(0,i.Z)(this,s),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"setChoices",(function(e){var n=Object.assign({},n,{choices:null});t.setState({choices:e,errors:n})})),(0,d.Z)((0,r.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard poll?"))&&U.Z.close()}));var n=e.poll||{question:"",choices:[{hash:"choice-10000",label:""},{hash:"choice-20000",label:""}],length:0,allowed_choices:1,allow_revotes:0,is_public:0};return t.state={isLoading:!1,isEdit:!!n.question,question:n.question,choices:n.choices,length:n.length,allowed_choices:n.allowed_choices,allow_revotes:n.allow_revotes,is_public:n.is_public,validators:{question:[],choices:[],length:[],allowed_choices:[]},errors:{}},t}return(0,o.Z)(s,[{key:"send",value:function(){var e={question:this.state.question,choices:this.state.choices,length:this.state.length,allowed_choices:this.state.allowed_choices,allow_revotes:this.state.allow_revotes,is_public:this.state.is_public};return this.state.isEdit?C.Z.put(this.props.poll.api.index,e):C.Z.post(this.props.thread.api.poll,e)}},{key:"handleSuccess",value:function(e){z.Z.dispatch(I.gx(e)),this.state.isEdit?M.Z.success(gettext("Poll has been edited.")):M.Z.success(gettext("Poll has been posted.")),U.Z.close()}},{key:"handleError",value:function(e){400===e.status?(e.non_field_errors&&(e.allowed_choices=e.non_field_errors),this.setState({errors:Object.assign({},e)}),M.Z.error(gettext("Form contains errors."))):M.Z.apiError(e)}},{key:"render",value:function(){return(0,m.Z)("div",{className:"poll-form"},void 0,(0,m.Z)("div",{className:"container"},void 0,(0,m.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,m.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("fieldset",{},void 0,(0,m.Z)("legend",{},void 0,gettext("Question and choices")),(0,m.Z)(_e.Z,{label:gettext("Poll question"),for:"id_questions",validation:this.state.errors.question},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_questions",onChange:this.bindInput("question"),type:"text",maxLength:"255",value:this.state.question})),(0,m.Z)(_e.Z,{label:gettext("Available choices"),validation:this.state.errors.choices},void 0,(0,m.Z)(ge,{choices:this.state.choices,disabled:this.state.isLoading,setChoices:this.setChoices}))),(0,m.Z)("fieldset",{},void 0,(0,m.Z)("legend",{},void 0,gettext("Voting")),(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Poll length"),helpText:gettext("Enter number of days for which voting in this poll should be possible or zero to run this poll indefinitely."),for:"id_length",validation:this.state.errors.length},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_length",onChange:this.bindInput("length"),type:"text",value:this.state.length}))),(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Allowed choices"),for:"id_allowed_choices",validation:this.state.errors.allowed_choices},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_allowed_choices",onChange:this.bindInput("allowed_choices"),type:"text",maxLength:"255",value:this.state.allowed_choices})))),(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)(xe,{bindInput:this.bindInput,disabled:this.state.isLoading,isEdit:this.state.isEdit,value:this.state.is_public}),(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Allow vote changes"),for:"id_allow_revotes"},void 0,(0,m.Z)(Ne.Z,{id:"id_allow_revotes",disabled:this.state.isLoading,iconOn:"check",iconOff:"close",labelOn:gettext("Allow participants to change their vote"),labelOff:gettext("Don't allow participants to change their vote"),onChange:this.bindInput("allow_revotes"),value:this.state.allow_revotes})))))),(0,m.Z)("div",{className:"panel-footer text-right"},void 0,(0,m.Z)("button",{className:"btn btn-default",disabled:this.state.isLoading,onClick:this.onCancel,type:"button"},void 0,gettext("Cancel"))," ",(0,m.Z)(pe.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,this.state.isEdit?gettext("Save changes"):gettext("Post poll")))))))}}]),s}(he.Z);function xe(e){return e.isEdit?null:(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Make voting public"),helpText:gettext("Making voting public will allow everyone to access detailed list of votes, showing which users voted for which choices and at which times. This option can't be changed after poll's creation. Moderators may see voting details for all polls."),for:"id_is_public"},void 0,(0,m.Z)(Ne.Z,{id:"id_is_public",disabled:e.disabled,iconOn:"visibility",iconOff:"visibility_off",labelOn:gettext("Votes are public"),labelOff:gettext("Votes are hidden"),onChange:e.bindInput("is_public"),value:e.value})))}},11005:function(e,t,n){"use strict";n.d(t,{Z:function(){return x}});var a=n(22928),s=n(57588),i=n.n(s),o=n(69092);function r(e){return e.post.content?i().createElement(l,e):i().createElement(c,e)}function l(e){return(0,a.Z)("div",{className:"post-body"},void 0,(0,a.Z)(o.Z,{markup:e.post.content}))}function c(e){return(0,a.Z)("div",{className:"post-body post-body-invalid"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("This post's contents cannot be displayed.")),(0,a.Z)("p",{className:"text-muted"},void 0,gettext("This error is caused by invalid post content manipulation.")))}function u(e){var t=e.post,n=t.category,s=t.thread,i=interpolate(gettext("posted %(posted_on)s"),{posted_on:t.posted_on.format("LL, LT")},!0);return(0,a.Z)("div",{className:"post-heading"},void 0,(0,a.Z)("a",{className:"btn btn-link item-title",href:s.url},void 0,s.title),(0,a.Z)("a",{className:"btn btn-link post-category",href:n.url.index},void 0,n.name),(0,a.Z)("a",{href:t.url.index,className:"btn btn-link posted-on",title:i},void 0,t.posted_on.fromNow()))}n(89627);var d,p,h=n(19605);function f(e){var t=e.post;return(0,a.Z)("a",{className:"btn btn-default btn-icon pull-right",href:t.url.index},void 0,(0,a.Z)("span",{className:"btn-text-left hidden-xs"},void 0,gettext("See post")),d||(d=(0,a.Z)("span",{className:"material-icon"},void 0,"chevron_right")))}function v(e){var t=e.post;return(0,a.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,a.Z)(f,{post:t}),(0,a.Z)("div",{className:"media"},void 0,p||(p=(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("span",{},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50})))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("span",{className:"item-title"},void 0,t.poster_name)),(0,a.Z)("span",{className:"user-title user-title-anonymous"},void 0,gettext("Removed user")))))}function m(e){var t=e.rank,n=e.title||t.title||t.name,s="user-title";return t.css_class&&(s+=" user-title-"+t.css_class),t.is_tab?(0,a.Z)("a",{className:s,href:t.url},void 0,n):(0,a.Z)("span",{className:s},void 0,n)}function Z(e){var t=e.post,n=e.poster;return(0,a.Z)("div",{className:"post-side post-side-registered"},void 0,(0,a.Z)(f,{post:t}),(0,a.Z)("div",{className:"media"},void 0,(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("a",{href:n.url},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50,user:n}))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("a",{className:"item-title",href:n.url},void 0,n.username)),(0,a.Z)(m,{title:n.title,rank:n.rank}))))}function g(e){var t=e.post,n=e.poster;return n&&n.id?(0,a.Z)(Z,{post:t,poster:n}):(0,a.Z)(v,{post:t})}function b(e){var t=e.post,n=e.poster||t.poster,s="post";return n&&n.rank.css_class&&(s+=" post-"+n.rank.css_class),(0,a.Z)("li",{className:s,id:"post-"+t.id},void 0,(0,a.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(g,{post:t,poster:n}),(0,a.Z)(u,{post:t}),(0,a.Z)(r,{post:t}))))}var y,_,N=n(44039);function k(){return(0,a.Z)("ul",{className:"posts-list post-feed ui-preview"},void 0,(0,a.Z)("li",{className:"post"},void 0,(0,a.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,a.Z)("div",{className:"media"},void 0,y||(y=(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("span",{},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50})))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("span",{className:"item-title"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))),(0,a.Z)("span",{className:"user-title user-title-anonymous"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))))),(0,a.Z)("div",{className:"post-heading"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")),(0,a.Z)("div",{className:"post-body"},void 0,(0,a.Z)("article",{className:"misago-markup"},void 0,(0,a.Z)("p",{},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")," ",(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")," ",(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))))))))}function x(e){var t=e.isReady,n=e.posts,s=e.poster;return t?(0,a.Z)("ul",{className:"posts-list post-feed ui-ready"},void 0,n.map((function(e){return(0,a.Z)(b,{post:e,poster:s},e.id)}))):_||(_=(0,a.Z)(k,{}))}},12891:function(e,t,n){"use strict";n.d(t,{Jh:function(){return o},jn:function(){return i}});var a=n(55210),s=n(32233);function i(){return[(0,a.Ei)(s.Z.get("SETTINGS").thread_title_length_min,(function(e,t){var n=ngettext("Thread title should be at least %(limit_value)s character long (it has %(show_value)s).","Thread title should be at least %(limit_value)s characters long (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)})),(0,a.BS)(s.Z.get("SETTINGS").thread_title_length_max,(function(e,t){var n=ngettext("Thread title cannot be longer than %(limit_value)s character (it has %(show_value)s).","Thread title cannot be longer than %(limit_value)s characters (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))]}function o(){return s.Z.get("SETTINGS").post_length_max?[r(),(0,a.BS)(s.Z.get("SETTINGS").post_length_max||1e6,(function(e,t){var n=ngettext("Posted message cannot be longer than %(limit_value)s character (it has %(show_value)s).","Posted message cannot be longer than %(limit_value)s characters (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))]:[r()]}function r(){return(0,a.Ei)(s.Z.get("SETTINGS").post_length_min,(function(e,t){var n=ngettext("Posted message should be at least %(limit_value)s character long (it has %(show_value)s).","Posted message should be at least %(limit_value)s characters long (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))}},60471:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var a=n(22928),s=n(15671),i=n(43144),o=n(97326),r=n(79340),l=n(6215),c=n(61120),u=n(4942),d=n(57588);var p=function(e){(0,r.Z)(p,e);var t,n,d=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function p(){var e;(0,s.Z)(this,p);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=d.call.apply(d,[this].concat(n)),(0,u.Z)((0,o.Z)(e),"change",(function(t){return function(){e.props.onChange({target:{value:t}})}})),e}return(0,i.Z)(p,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map((function(n){n.value===e.props.value&&(t=n)})),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return(0,a.Z)("div",{className:"btn-group btn-select-group"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},void 0,(0,a.Z)(h,{icon:this.getIcon()}),this.getLabel()),(0,a.Z)("ul",{className:"dropdown-menu"},void 0,this.props.choices.map((function(t,n){return(0,a.Z)("li",{},n,(0,a.Z)("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},void 0,(0,a.Z)(h,{icon:t.icon}),t.label))}))))}}]),p}(n.n(d)().Component);function h(e){var t=e.icon;return t?(0,a.Z)("span",{className:"material-icon"},void 0,t):null}},14467:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=(n(57588),n(32233)),d=n(82211),p=n(43345),h=n(47235),f=n(78657),v=n(59801),m=n(53904),Z=n(93051),g=n(19755);var b=function(e){(0,r.Z)(b,e);var t,n,p=(t=b,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function b(e){var t;return(0,i.Z)(this,b),(t=p.call(this,e)).state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},t}return(0,o.Z)(b,[{key:"clean",value:function(){return!!this.isValid()||(m.Z.error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return f.Z.post(u.Z.get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=g("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(f.Z.getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?m.Z.info(e.detail):"inactive_user"===e.code?(m.Z.info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,Z.Z)(e.detail),v.Z.hide()):m.Z.error(e.detail):403===e.status&&e.ban?((0,Z.Z)(e.ban),v.Z.hide()):m.Z.apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?(0,s.Z)("a",{className:"btn btn-success btn-block",href:u.Z.get("REQUEST_ACTIVATION_URL")},void 0,gettext("Activate account")):null}},{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,a||(a=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Sign in"))),(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(h.Z,{buttonLabel:gettext("Sign in with %(site)s"),formLabel:gettext("Or use your forum account:"),labelClassName:"text-center"}),(0,s.Z)("div",{className:"form-group"},void 0,(0,s.Z)("div",{className:"control-input"},void 0,(0,s.Z)("input",{className:"form-control input-lg",disabled:this.state.isLoading,id:"id_username",onChange:this.bindInput("username"),placeholder:gettext("Username or e-mail"),type:"text",value:this.state.username}))),(0,s.Z)("div",{className:"form-group"},void 0,(0,s.Z)("div",{className:"control-input"},void 0,(0,s.Z)("input",{className:"form-control input-lg",disabled:this.state.isLoading,id:"id_password",onChange:this.bindInput("password"),placeholder:gettext("Password"),type:"password",value:this.state.password})))),(0,s.Z)("div",{className:"modal-footer"},void 0,this.getActivationButton(),(0,s.Z)(d.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Sign in")),(0,s.Z)("a",{className:"btn btn-default btn-block",href:u.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Forgot password?"))))))}}]),b}(p.Z)},24678:function(e,t,n){"use strict";n.d(t,{Jj:function(){return h},ZP:function(){return p},pg:function(){return f}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c);function d(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,l.Z)(e);if(t){var s=(0,l.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,r.Z)(this,n)}}var p=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getClass",value:function(){return e=this.props.status,t="",e.is_banned?t="banned":e.is_hidden?t="offline":e.is_online_hidden?t="online":e.is_offline_hidden?t="offline":e.is_online?t="online":e.is_offline&&(t="offline"),"user-status user-"+t;var e,t}},{key:"render",value:function(){return(0,a.Z)("span",{className:this.getClass()},void 0,this.props.children)}}]),n}(u().Component),h=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getIcon",value:function(){return this.props.status.is_banned?"remove_circle_outline":this.props.status.is_hidden?"help_outline":this.props.status.is_online_hidden?"label":this.props.status.is_offline_hidden?"label_outline":this.props.status.is_online?"lens":this.props.status.is_offline?"panorama_fish_eye":void 0}},{key:"render",value:function(){return(0,a.Z)("span",{className:"material-icon status-icon"},void 0,this.getIcon())}}]),n}(u().Component),f=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getHelp",value:function(){return e=this.props.user,(t=this.props.status).is_banned?t.banned_until?interpolate(gettext("%(username)s is banned until %(ban_expires)s"),{username:e.username,ban_expires:t.banned_until.format("LL, LT")},!0):interpolate(gettext("%(username)s is banned"),{username:e.username},!0):t.is_hidden?interpolate(gettext("%(username)s is hiding presence"),{username:e.username},!0):t.is_online_hidden?interpolate(gettext("%(username)s is online (hidden)"),{username:e.username},!0):t.is_offline_hidden?interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"),{username:e.username,last_click:t.last_click.fromNow()},!0):t.is_online?interpolate(gettext("%(username)s is online"),{username:e.username},!0):t.is_offline?interpolate(gettext("%(username)s was last seen %(last_click)s"),{username:e.username,last_click:t.last_click.fromNow()},!0):void 0;var e,t}},{key:"getLabel",value:function(){return this.props.status.is_banned?gettext("Banned"):this.props.status.is_hidden?gettext("Hidden"):this.props.status.is_online_hidden?gettext("Online (hidden)"):this.props.status.is_offline_hidden?gettext("Offline (hidden)"):this.props.status.is_online?gettext("Online"):this.props.status.is_offline?gettext("Offline"):void 0}},{key:"render",value:function(){return(0,a.Z)("span",{className:this.props.className||"status-label",title:this.getHelp()},void 0,this.getLabel())}}]),n}(u().Component)},7850:function(e,t,n){"use strict";n.d(t,{Z:function(){return k}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c);var d,p,h=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getEmptyMessage",value:function(){return this.props.emptyMessage?this.props.emptyMessage:gettext("No name changes have been recorded for your account.")}},{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-ready"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,(0,a.Z)("li",{className:"list-group-item empty-message"},void 0,this.getEmptyMessage())))}}]),u}(u().Component),f=n(19605);var v=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"renderUserAvatar",value:function(){return this.props.change.changed_by?(0,a.Z)("a",{href:this.props.change.changed_by.url,className:"user-avatar-wrapper"},void 0,(0,a.Z)(f.ZP,{user:this.props.change.changed_by,size:"100"})):d||(d=(0,a.Z)("span",{className:"user-avatar-wrapper"},void 0,(0,a.Z)(f.ZP,{size:"100"})))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?(0,a.Z)("a",{href:this.props.change.changed_by.url,className:"item-title"},void 0,this.props.change.changed_by.username):(0,a.Z)("span",{className:"item-title"},void 0,this.props.change.changed_by_username)}},{key:"render",value:function(){return(0,a.Z)("li",{className:"list-group-item"},this.props.change.id,(0,a.Z)("div",{className:"change-avatar"},void 0,this.renderUserAvatar()),(0,a.Z)("div",{className:"change-author"},void 0,this.renderUsername()),(0,a.Z)("div",{className:"change"},void 0,(0,a.Z)("span",{className:"old-username"},void 0,this.props.change.old_username),p||(p=(0,a.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),(0,a.Z)("span",{className:"new-username"},void 0,this.props.change.new_username)),(0,a.Z)("div",{className:"change-date"},void 0,(0,a.Z)("abbr",{title:this.props.change.changed_on.format("LLL")},void 0,this.props.change.changed_on.fromNow())))}}]),u}(u().Component);var m,Z,g=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-ready"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,this.props.changes.map((function(e){return(0,a.Z)(v,{change:e},e.id)}))))}}]),u}(u().Component),b=n(44039);var y=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return(0,a.Z)("li",{className:this.getClassName()},void 0,m||(m=(0,a.Z)("div",{className:"change-avatar"},void 0,(0,a.Z)("span",{className:"user-avatar"},void 0,(0,a.Z)(f.ZP,{size:"100"})))),(0,a.Z)("div",{className:"change-author"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,100)+"px"}},void 0," ")),(0,a.Z)("div",{className:"change"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,70)+"px"}},void 0," "),Z||(Z=(0,a.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,70)+"px"}},void 0," ")),(0,a.Z)("div",{className:"change-date"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(80,140)+"px"}},void 0," ")))}}]),u}(u().Component);var _,N=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-preview"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,[0,1,2].map((function(e){return(0,a.Z)(y,{hiddenOnMobile:e>0},e)}))))}}]),u}(u().Component);var k=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?(0,a.Z)(g,{changes:this.props.changes}):(0,a.Z)(h,{emptyMessage:this.props.emptyMessage}):_||(_=(0,a.Z)(N,{}))}}]),u}(u().Component)},40429:function(e,t,n){"use strict";n.d(t,{Z:function(){return L}});var a,s=n(22928),i=n(57588),o=n.n(i),r=n(19605),l=n(24678);function c(e){var t=e.showStatus,n=e.user;return(0,s.Z)("ul",{className:"list-unstyled"},void 0,(0,s.Z)(u,{showStatus:t,user:n}),(0,s.Z)(d,{user:n}),a||(a=(0,s.Z)("li",{className:"user-stat-divider"})),(0,s.Z)(p,{user:n}),(0,s.Z)(h,{user:n}),(0,s.Z)(f,{user:n}))}function u(e){var t=e.showStatus,n=e.user;return t?(0,s.Z)("li",{className:"user-stat-status"},void 0,(0,s.Z)(l.ZP,{status:n.status},void 0,(0,s.Z)(l.pg,{status:n.status,user:n}))):null}function d(e){var t=e.user.joined_on,n=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:t.format("LL, LT")},!0),a=interpolate(gettext("Joined %(joined_on)s"),{joined_on:t.fromNow()},!0);return(0,s.Z)("li",{className:"user-stat-join-date"},void 0,(0,s.Z)("abbr",{title:n},void 0,a))}function p(e){var t=e.user,n=v("user-stat-posts",t.posts),a=ngettext("%(posts)s post","%(posts)s posts",t.posts);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{posts:t.posts},!0))}function h(e){var t=e.user,n=v("user-stat-threads",t.threads),a=ngettext("%(threads)s thread","%(threads)s threads",t.threads);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{threads:t.threads},!0))}function f(e){var t=e.user,n=v("user-stat-followers",t.followers),a=ngettext("%(followers)s follower","%(followers)s followers",t.followers);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{followers:t.followers},!0))}function v(e,t){return 0===t?e+" user-stat-empty":e}function m(e){var t=e.rank,n=e.title||t.title||t.name,a="user-title";return t.css_class&&(a+=" user-title-"+t.css_class),t.is_tab?(0,s.Z)("a",{className:a,href:t.url},void 0,n):(0,s.Z)("span",{className:a},void 0,n)}function Z(e){var t=e.showStatus,n=e.user,a=n.rank,i="panel user-card";return a.css_class&&(i+=" user-card-"+a.css_class),(0,s.Z)("div",{className:i},void 0,(0,s.Z)("div",{className:"panel-body"},void 0,(0,s.Z)("div",{className:"row"},void 0,(0,s.Z)("div",{className:"col-xs-3 user-card-left"},void 0,(0,s.Z)("div",{className:"user-card-small-avatar"},void 0,(0,s.Z)("a",{href:n.url},void 0,(0,s.Z)(r.ZP,{size:"50",size2x:"80",user:n})))),(0,s.Z)("div",{className:"col-xs-9 col-sm-12 user-card-body"},void 0,(0,s.Z)("div",{className:"user-card-avatar"},void 0,(0,s.Z)("a",{href:n.url},void 0,(0,s.Z)(r.ZP,{size:"150",size2x:"200",user:n}))),(0,s.Z)("div",{className:"user-card-username"},void 0,(0,s.Z)("a",{href:n.url},void 0,n.username)),(0,s.Z)("div",{className:"user-card-title"},void 0,(0,s.Z)(m,{rank:a,title:n.title})),(0,s.Z)("div",{className:"user-card-stats"},void 0,(0,s.Z)(c,{showStatus:t,user:n}))))))}var g,b,y,_=n(15671),N=n(43144),k=n(79340),x=n(6215),w=n(61120),R=n(44039);var C,S=function(e){(0,k.Z)(i,e);var t,n,a=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,w.Z)(t);if(n){var s=(0,w.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,x.Z)(this,e)});function i(){return(0,_.Z)(this,i),a.apply(this,arguments)}return(0,N.Z)(i,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,s.Z)("div",{className:"panel user-card user-card-preview"},void 0,(0,s.Z)("div",{className:"panel-body"},void 0,(0,s.Z)("div",{className:"row"},void 0,g||(g=(0,s.Z)("div",{className:"col-xs-3 user-card-left"},void 0,(0,s.Z)("div",{className:"user-card-small-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(r.ZP,{size:"50",size2x:"80"}))))),(0,s.Z)("div",{className:"col-xs-9 col-sm-12 user-card-body"},void 0,b||(b=(0,s.Z)("div",{className:"user-card-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(r.ZP,{size:"150",size2x:"200"})))),(0,s.Z)("div",{className:"user-card-username"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(60,150)+"px"}},void 0," ")),(0,s.Z)("div",{className:"user-card-title"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(60,150)+"px"}},void 0," ")),(0,s.Z)("div",{className:"user-card-stats"},void 0,(0,s.Z)("ul",{className:"list-unstyled"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),y||(y=(0,s.Z)("li",{className:"user-stat-divider"})),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," "))))))))}}]),i}(o().Component);function E(e){var t=e.colClassName,n=e.cols,a=Array.apply(null,{length:n}).map(Number.call,Number);return(0,s.Z)("div",{className:"users-cards-list ui-preview"},void 0,(0,s.Z)("div",{className:"row"},void 0,a.map((function(e){var n=t;return 0!==e&&(n+=" hidden-xs"),3===e&&(n+=" hidden-sm"),(0,s.Z)("div",{className:n},e,C||(C=(0,s.Z)(S,{})))}))))}function L(e){var t=e.cols,n=e.isReady,a=e.showStatus,i=e.users,o="col-xs-12 col-sm-4";return 4===t&&(o+=" col-md-3"),n?(0,s.Z)("div",{className:"users-cards-list ui-ready"},void 0,(0,s.Z)("div",{className:"row"},void 0,i.map((function(e){return(0,s.Z)("div",{className:o},e.id,(0,s.Z)(Z,{showStatus:a,user:e}))})))):(0,s.Z)(E,{colClassName:o,cols:t})}},82125:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var a=n(15671),s=n(43144),i=n(97326),o=n(79340),r=n(6215),l=n(61120),c=n(4942),u=n(57588);var d=function(e){(0,o.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function d(e){var t;return(0,a.Z)(this,d),t=u.call(this,e),(0,c.Z)((0,i.Z)(t),"toggleNav",(function(){t.setState({dropdown:!t.state.dropdown})})),(0,c.Z)((0,i.Z)(t),"hideNav",(function(){t.setState({dropdown:!1})})),t.state={dropdown:!1},t}return(0,s.Z)(d,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),d}(n.n(u)().Component)},7227:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var a=n(22928),s=n(15671),i=n(43144),o=n(97326),r=n(79340),l=n(6215),c=n(61120),u=n(4942),d=n(57588);var p=function(e){(0,r.Z)(p,e);var t,n,d=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function p(){var e;(0,s.Z)(this,p);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=d.call.apply(d,[this].concat(n)),(0,u.Z)((0,o.Z)(e),"toggle",(function(){e.props.onChange({target:{value:!e.props.value}})})),e}return(0,i.Z)(p,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return(0,a.Z)("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.getIcon()),(0,a.Z)("span",{className:"btn-text"},void 0,this.getLabel()))}}]),p}(n.n(d)().Component)},32233:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var a=n(15671),s=n(43144),i=(n(58294),n(95377),n(68852),n(39737),n(14316),n(43204),n(43511),n(7023),n(54116),function(){function e(t){(0,a.Z)(this,e),this.isOrdered=!1,this._items=t||[]}return(0,s.Z)(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n&&n.after||null,before:n&&n.before||null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function(){for(var e=[],t=0;t<this._items.length;t++)e.push(this._items[t].item);return e}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||void 0===e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){var t=[];e.forEach((function(e){t.push(e.key)}));var n=[],a=[];function s(e){var t=-1;-1===a.indexOf(e.key)&&(e.after?-1!==(t=a.indexOf(e.after))&&(t+=1):e.before&&(t=a.indexOf(e.before)),-1!==t&&(n.splice(t,0,e),a.splice(t,0,e.key)))}e.forEach((function(e){e.after||e.before||(n.push(e),a.push(e.key))})),e.forEach((function(e){"_end"===e.before&&(n.push(e),a.push(e.key))}));for(var i=200;i>0&&t.length!==a.length;)i-=1,e.forEach(s);return n}}]),e}()),o=new(function(){function e(){(0,a.Z)(this,e),this._initializers=[],this._context={}}return(0,s.Z)(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e,new i(this._initializers).orderedValues().forEach((function(e){e(t)}))}},{key:"has",value:function(e){return!!this._context[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}());window.misago=o;var r=o},58339:function(e,t,n){"use strict";var a=n(32233),s=n(78657);a.Z.addInitializer({name:"ajax",initializer:function(){s.Z.init(a.Z.get("CSRF_COOKIE_NAME"))}})},64109:function(e,t,n){"use strict";var a=n(32233),s=n(35486),i=n(78657),o=n(53904),r=n(90287);a.Z.addInitializer({name:"auth-sync",initializer:function(e){e.get("isAuthenticated")&&window.setInterval((function(){i.Z.get(e.get("AUTH_API")).then((function(e){r.Z.dispatch((0,s.r$)(e))}),(function(e){o.Z.apiError(e)}))}),45e3)},after:"auth"})},46226:function(e,t,n){"use strict";var a=n(32233),s=n(98274),i=n(59801),o=n(90287),r=n(62833);a.Z.addInitializer({name:"auth",initializer:function(){s.Z.init(o.Z,r.Z,i.Z)},after:"store"})},93240:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(93825),o=n(96142),r=n(53904);a.Z.addInitializer({name:"captcha",initializer:function(e){i.ZP.init(e,s.Z,o.Z,r.Z)}})},75147:function(e,t,n){"use strict";var a=n(22928),s=n(57588),i=n.n(s),o=n(32233),r=n(15671),l=n(43144),c=n(97326),u=n(79340),d=n(6215),p=n(61120),h=n(4942),f=n(78657);var v=function(e){(0,u.Z)(i,e);var t,n,s=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function i(e){var t;return(0,r.Z)(this,i),t=s.call(this,e),(0,h.Z)((0,c.Z)(t),"handleDecline",(function(){t.state.submiting||window.confirm(gettext("Declining will result in immediate deactivation and deletion of your account. This action is not reversible."))&&(t.setState({submiting:!0}),f.Z.post(t.props.api,{accept:!1}).then((function(){window.location.reload(!0)})))})),(0,h.Z)((0,c.Z)(t),"handleAccept",(function(){t.state.submiting||(t.setState({submiting:!0}),f.Z.post(t.props.api,{accept:!0}).then((function(){window.location.reload(!0)})))})),t.state={submiting:!1},t}return(0,l.Z)(i,[{key:"render",value:function(){return(0,a.Z)("div",{},void 0,(0,a.Z)("button",{className:"btn btn-default",disabled:this.state.submiting,type:"buton",onClick:this.handleDecline},void 0,gettext("Decline")),(0,a.Z)("button",{className:"btn btn-primary",disabled:this.state.submiting,type:"buton",onClick:this.handleAccept},void 0,gettext("Accept and continue")))}}]),i}(i().Component),m=n(4869);o.Z.addInitializer({name:"component:accept-agreement",initializer:function(e){document.getElementById("required-agreement-mount")&&(0,m.Z)((0,a.Z)(v,{api:e.get("REQUIRED_AGREEMENT_API")}),"required-agreement-mount",!1)},after:"store"})},4894:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588);var p=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"render",value:function(){var e="auth-message";return(this.props.signedIn||this.props.signedOut)&&(e+=" show"),(0,i.Z)("div",{className:e},void 0,(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.getMessage()),(0,i.Z)("p",{},void 0,(0,i.Z)("button",{className:"btn btn-default",type:"button",onClick:this.refresh},void 0,gettext("Reload page")),(0,i.Z)("span",{className:"hidden-xs hidden-sm"},void 0," "+gettext("or press F5 key.")))))}}]),s}(n.n(d)().Component);function h(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}var f=n(4869);s.Z.addInitializer({name:"component:auth-message",initializer:function(){(0,f.Z)((0,a.$j)(h)(p),"auth-message-mount")},after:"store"})},29223:function(e,t,n){"use strict";var a=n(32233),s=n(93051);a.Z.addInitializer({name:"component:banmed-page",initializer:function(e){e.has("BAN_MESSAGE")&&(0,s.Z)(e.get("BAN_MESSAGE"),!1)},after:"store"})},3026:function(e,t,n){"use strict";var a=n(37424),s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(30381),h=n.n(p),f=n(57588),v=n.n(f);function m(e){return(0,s.Z)("div",{className:"categories-list"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("No categories exist or you don't have permission to see them.")))))}function Z(e){var t=e.category;return t.description?(0,s.Z)("div",{className:"category-description",dangerouslySetInnerHTML:{__html:t.description.html}}):null}function g(e){var t=e.category;return(0,s.Z)("div",{className:b(t),title:y(t)},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return e.is_closed?e.is_read?"lock_outline":"lock":e.is_read?"chat_bubble_outline":"chat_bubble"}(t)))}function b(e){return e.is_read?"read-status item-read":"read-status item-new"}function y(e){return e.is_closed?e.is_read?gettext("This category has no new posts. (closed)"):gettext("This category has new posts. (closed)"):e.is_read?gettext("This category has no new posts."):gettext("This category has new posts.")}function _(e){var t=e.category;return(0,s.Z)("div",{className:"col-xs-12 col-sm-6 col-md-6 category-main"},void 0,(0,s.Z)("div",{className:"media"},void 0,(0,s.Z)("div",{className:"media-left"},void 0,(0,s.Z)(g,{category:t})),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("h4",{className:"media-heading"},void 0,(0,s.Z)("a",{href:t.url.index},void 0,t.name)),(0,s.Z)(Z,{category:t}))))}var N,k,x,w=n(19605);function R(e){var t=e.category;return(0,s.Z)("div",{className:"col-xs-12 col-sm-6 col-md-4 category-last-thread"},void 0,(0,s.Z)(C,{category:t}),(0,s.Z)(L,{category:t}),(0,s.Z)(P,{category:t}),(0,s.Z)(O,{category:t}))}function C(e){var t=e.category;return t.acl.can_browse&&t.acl.can_see_all_threads&&t.last_thread_title?(0,s.Z)("div",{className:"media"},void 0,(0,s.Z)("div",{className:"media-left hidden-xs"},void 0,(0,s.Z)(S,{category:t})),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("div",{className:"media-heading"},void 0,(0,s.Z)("a",{className:"item-title thread-title",href:t.url.last_thread_new,title:t.last_thread_title},void 0,t.last_thread_title)),(0,s.Z)("ul",{className:"list-inline"},void 0,(0,s.Z)("li",{className:"category-last-thread-poster"},void 0,(0,s.Z)(E,{category:t})),N||(N=(0,s.Z)("li",{className:"divider"},void 0,"—")),(0,s.Z)("li",{className:"category-last-thread-date"},void 0,(0,s.Z)("a",{href:t.url.last_post},void 0,t.last_post_on.fromNow()))))):null}function S(e){var t=e.category;return t.last_poster?(0,s.Z)("a",{className:"last-poster-avatar",href:t.last_poster.url,title:t.last_poster_name},void 0,(0,s.Z)(w.ZP,{className:"media-object",size:40,user:t.last_poster})):(0,s.Z)("span",{className:"last-poster-avatar",title:t.last_poster_name},void 0,k||(k=(0,s.Z)(w.ZP,{className:"media-object",size:40})))}function E(e){var t=e.category;return t.last_poster?(0,s.Z)("a",{className:"item-title",href:t.last_poster.url},void 0,t.last_poster_name):(0,s.Z)("span",{className:"item-title"},void 0,t.last_poster_name)}function L(e){var t=e.category;return t.acl.can_browse&&t.acl.can_see_all_threads?t.last_thread_title?null:(0,s.Z)(T,{message:gettext("This category is empty. No threads were posted within it so far.")}):null}function P(e){var t=e.category;return t.acl.can_browse?t.acl.can_see_all_threads?null:(0,s.Z)(T,{message:gettext("This category is private. You can see only your own threads within it.")}):null}function O(e){return e.category.acl.can_browse?null:(0,s.Z)(T,{message:gettext("This category is protected. You can't browse its contents.")})}function T(e){var t=e.message;return(0,s.Z)("div",{className:"media category-thread-message"},void 0,x||(x=(0,s.Z)("div",{className:"media-left"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("p",{},void 0,t)))}function A(e){var t=e.category;return(0,s.Z)("div",{className:"col-md-2 hidden-xs hidden-sm"},void 0,(0,s.Z)("ul",{className:"list-unstyled category-stats"},void 0,(0,s.Z)(B,{threads:t.threads}),(0,s.Z)(I,{posts:t.posts})))}function B(e){var t=e.threads,n=ngettext("%(threads)s thread","%(threads)s threads",t);return(0,s.Z)("li",{className:"category-stat-threads"},void 0,interpolate(n,{threads:t},!0))}function I(e){var t=e.posts,n=ngettext("%(posts)s post","%(posts)s posts",t);return(0,s.Z)("li",{className:"category-stat-posts"},void 0,interpolate(n,{posts:t},!0))}function j(e){var t=e.category,n="btn btn-default btn-block btn-sm btn-subcategory";return t.is_read||(n+=" btn-subcategory-new"),(0,s.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3"},void 0,(0,s.Z)("a",{className:n,href:t.url.index},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return e.is_closed?e.is_read?"lock_outline":"lock":e.is_read?"chat_bubble_outline":"chat_bubble"}(t)),(0,s.Z)("span",{className:"icon-text"},void 0,t.name)))}function D(e){var t=e.category;return e.isFirst||0===t.subcategories.length?null:(0,s.Z)("div",{className:"row subcategories-list"},void 0,t.subcategories.map((function(e){return(0,s.Z)(j,{category:e},e.id)})))}function U(e){var t=e.category,n=e.isFirst,a="list-group-item";return t.description?a+=" list-group-category-has-description":a+=" list-group-category-no-description",n&&(a+=" list-group-item-first"),t.css_class&&(a+=" list-group-category-has-flavor",a+=" list-group-item-category-"+t.css_class),(0,s.Z)("li",{className:a},void 0,(0,s.Z)("div",{className:"row"},void 0,(0,s.Z)(_,{category:t}),(0,s.Z)(A,{category:t}),(0,s.Z)(R,{category:t})),(0,s.Z)(D,{category:t,isFirst:n}))}function M(e){var t=e.category,n="list-group list-group-category";return t.css_class&&(n+=" list-group-category-has-flavor",n+=" list-group-category-"+t.css_class),(0,s.Z)("ul",{className:n},void 0,(0,s.Z)(U,{category:t,isFirst:!0}),t.subcategories.map((function(e){return(0,s.Z)(U,{category:e,isFirst:!1},e.id)})))}function z(e){var t=e.categories;return(0,s.Z)("div",{className:"categories-list"},void 0,t.map((function(e){return(0,s.Z)(M,{category:e},e.id)})))}var H,F=n(32233),q=n(55547);var Y=function e(t){return Object.assign({},t,{last_post_on:t.last_post_on?h()(t.last_post_on):null,subcategories:t.subcategories.map(e)})},V=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;return(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"update",(function(e){t.setState({categories:e.map(Y)})})),t.state={categories:F.Z.get("CATEGORIES").map(Y)},t.startPolling(F.Z.get("CATEGORIES_API")),t}return(0,o.Z)(p,[{key:"startPolling",value:function(e){q.Z.start({poll:"categories",url:e,frequency:18e4,update:this.update})}},{key:"render",value:function(){var e=this.state.categories;return 0===e.length?H||(H=(0,s.Z)(m,{})):(0,s.Z)(z,{categories:e})}}]),p}(v().Component);function $(e){return{tick:e.tick.tick}}var G=n(4869);F.Z.addInitializer({name:"component:categories",initializer:function(){document.getElementById("categories-mount")&&(0,G.Z)((0,a.$j)($)(V),"categories-mount")},after:"store"})},94795:function(e,t,n){"use strict";var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c),d=n(37424),p=n(69987),h=n(94417);function f(e){return(0,a.Z)("div",{className:"list-group nav-side"},void 0,e.options.map((function(t){return(0,a.Z)(p.rU,{to:e.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active"},t.component,(0,a.Z)("span",{className:"material-icon"},void 0,t.icon),t.name)})))}function v(e){return(0,a.Z)("ul",{className:e.className||"dropdown-menu",role:"menu"},void 0,e.options.map((function(t){return(0,a.Z)(h.Z,{path:e.baseUrl+t.component+"/"},t.component,(0,a.Z)(p.rU,{to:e.baseUrl+t.component+"/",onClick:e.hideNav},void 0,(0,a.Z)("span",{className:"material-icon hidden-sm"},void 0,t.icon),t.name))})))}var m,Z=n(97326),g=n(4942),b=n(82211),y=n(78657),_=n(53328),N=n(53904),k=n(90287),x=n(32233);var w=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"onPasswordChange",(function(e){t.setState({password:e.target.value})})),(0,g.Z)((0,Z.Z)(t),"handleSubmit",(function(e){e.preventDefault();var n=t.state,a=n.isLoading,s=n.password,i=t.props.user;return 0==s.length?(N.Z.error(gettext("Enter your password to confirm account deletion.")),!1):!a&&(t.setState({isLoading:!0}),void y.Z.post(i.api.delete,{password:s}).then((function(e){window.location.href=x.Z.get("MISAGO_PATH")}),(function(e){t.setState({isLoading:!1}),e.password?N.Z.error(e.password[0]):N.Z.apiError(e)})))})),t.state={isLoading:!1,password:""},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Delete account"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-danger panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Delete account"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("You are going to delete your account. This action is nonreversible, and will result in following data being deleted:")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Stored IP addresses associated with content that you have posted will be deleted.")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Your username will become available for other user to rename to or for new user to register their account with.")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Your e-mail will become available for use in new account registration.")),m||(m=(0,a.Z)("hr",{})),(0,a.Z)("p",{},void 0,gettext("All your posted content will NOT be deleted, but username associated with it will be changed to one shared by all deleted accounts."))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)("div",{className:"input-group"},void 0,(0,a.Z)("input",{className:"form-control",disabled:this.state.isLoading,name:"password-confirmation",type:"password",placeholder:gettext("Enter your password to confirm account deletion."),value:this.state.password,onChange:this.onPasswordChange}),(0,a.Z)("span",{className:"input-group-btn"},void 0,(0,a.Z)(b.Z,{className:"btn-danger",loading:this.state.isLoading},void 0,gettext("Delete my account")))))))}}]),u}(u().Component),R=n(21688);var C=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){var e;(0,s.Z)(this,u);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=c.call.apply(c,[this].concat(n)),(0,g.Z)((0,Z.Z)(e),"onSuccess",(function(){N.Z.info(gettext("Your details have been updated."))})),e}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Edit details"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)(R.Z,{api:this.props.user.api.edit_details,onSuccess:this.onSuccess})}}]),u}(u().Component),S=n(30381),E=n.n(S);var L=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"handleLoadDownloads",(function(){y.Z.get(t.props.user.api.data_downloads).then((function(e){t.setState({isLoading:!1,downloads:e})}),(function(e){N.Z.apiError(e)}))})),(0,g.Z)((0,Z.Z)(t),"handleRequestDataDownload",(function(){t.setState({isSubmiting:!0}),y.Z.post(t.props.user.api.request_data_download).then((function(){t.handleLoadDownloads(),N.Z.success(gettext("Your request for data download has been registered.")),t.setState({isSubmiting:!1})}),(function(e){N.Z.apiError(e),t.setState({isSubmiting:!1})}))})),t.state={isLoading:!1,isSubmiting:!1,downloads:[]},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Download your data"),parent:gettext("Change your options")}),this.handleLoadDownloads()}},{key:"render",value:function(){return(0,a.Z)("div",{},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Download your data"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("p",{},void 0,gettext('To download your data from the site, click the "Request data download" button. Depending on amount of data to be archived and number of users wanting to download their data at same time it may take up to few days for your download to be prepared. An e-mail with notification will be sent to you when your data is ready to be downloaded.')),(0,a.Z)("p",{},void 0,gettext("The download will only be available for limited amount of time, after which it will be deleted from the site and marked as expired."))),(0,a.Z)("table",{className:"table"},void 0,(0,a.Z)("thead",{},void 0,(0,a.Z)("tr",{},void 0,(0,a.Z)("th",{},void 0,gettext("Requested on")),(0,a.Z)("th",{className:"col-md-4"},void 0,gettext("Download")))),(0,a.Z)("tbody",{},void 0,this.state.downloads.map((function(e){return(0,a.Z)("tr",{},e.id,(0,a.Z)("td",{style:P},void 0,E()(e.requested_on).fromNow()),(0,a.Z)("td",{},void 0,(0,a.Z)(O,{exportFile:e.file,status:e.status})))})),0==this.state.downloads.length?(0,a.Z)("tr",{},void 0,(0,a.Z)("td",{colSpan:"2"},void 0,gettext("You have no data downloads."))):null)),(0,a.Z)("div",{className:"panel-footer text-right"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isSubmiting,type:"button",onClick:this.handleRequestDataDownload},void 0,gettext("Request data download")))))}}]),u}(u().Component),P={verticalAlign:"middle"},O=function(e){var t=e.exportFile,n=e.status;return 0===n||1===n?(0,a.Z)(b.Z,{className:"btn-info btn-sm btn-block",disabled:!0,type:"button"},void 0,gettext("Download is being prepared")):t?(0,a.Z)("a",{className:"btn btn-success btn-sm btn-block",href:t},void 0,gettext("Download your data")):(0,a.Z)(b.Z,{className:"btn-default btn-sm btn-block",disabled:!0,type:"button"},void 0,gettext("Download is expired"))},T=n(43345),A=n(96359),B=n(60471),I=n(7227),j=n(35486);var D,U=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},t.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],t.subscribeToChoices=[{value:0,icon:"star_border",label:gettext("No")},{value:1,icon:"star_half",label:gettext("Notify")},{value:2,icon:"star",label:gettext("Notify with e-mail")}],t}return(0,i.Z)(u,[{key:"send",value:function(){return y.Z.post(this.props.user.api.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){k.Z.dispatch((0,j.r$)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),N.Z.success(gettext("Your forum options have been changed."))}},{key:"handleError",value:function(e){400===e.status?N.Z.error(gettext("Please reload page and try again.")):N.Z.apiError(e)}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Forum options"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change forum options"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,gettext("Privacy settings")),(0,a.Z)(A.Z,{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),for:"id_is_hiding_presence"},void 0,(0,a.Z)(I.Z,{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility_off",iconOff:"visibility",labelOn:gettext("Hide my presence from other users"),labelOff:gettext("Show my presence to other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),(0,a.Z)(A.Z,{label:gettext("Private thread invitations"),for:"id_limits_private_thread_invites_to"},void 0,(0,a.Z)(B.Z,{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,gettext("Automatic subscriptions")),(0,a.Z)(A.Z,{label:gettext("Threads I start"),for:"id_subscribe_to_started_threads"},void 0,(0,a.Z)(B.Z,{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),(0,a.Z)(A.Z,{label:gettext("Threads I reply to"),for:"id_subscribe_to_replied_threads"},void 0,(0,a.Z)(B.Z,{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes")))))}}]),u}(T.Z),M=n(95187);function z(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),D||(D=(0,a.Z)(M.Z,{})))}var H=n(33556);var F=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.options.next_on?interpolate(gettext("You will be able to change your username %(next_change)s."),{next_change:this.props.options.next_on.fromNow()},!0):gettext("You have used up available name changes.")}},{key:"render",value:function(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),(0,a.Z)(H.Z,{helpText:this.getHelpText(),message:gettext("You can't change your username at the moment.")}))}}]),u}(u().Component),q=n(55210);var Y,V=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={username:"",validators:{username:[q.lG(),q.HR(e.options.length_min),q.gS(e.options.length_max)]},isLoading:!1},t}return(0,i.Z)(u,[{key:"getHelpText",value:function(){var e=[];if(this.props.options.changes_left>0){var t=ngettext("You can change your username %(changes_left)s more time.","You can change your username %(changes_left)s more times.",this.props.options.changes_left);e.push(interpolate(t,{changes_left:this.props.options.changes_left},!0))}if(this.props.user.acl.name_changes_expire>0){var n=ngettext("Used changes become available again after %(name_changes_expire)s day.","Used changes become available again after %(name_changes_expire)s days.",this.props.user.acl.name_changes_expire);e.push(interpolate(n,{name_changes_expire:this.props.user.acl.name_changes_expire},!0))}return e.length?e.join(" "):null}},{key:"clean",value:function(){var e=this.validate();return e.username?(N.Z.error(e.username[0]),!1):this.state.username.trim()!==this.props.user.username||(N.Z.info(gettext("Your new username is same as current one.")),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),this.props.complete(e.username,e.slug,e.options)}},{key:"handleError",value:function(e){N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New username"),for:"id_username",helpText:this.getHelpText()},void 0,(0,a.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change username")))))}}]),u}(T.Z),$=n(7850),G=n(48927),W=n(6935);var K,J=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"onComplete",(function(e,n,a){t.setState({options:a}),k.Z.dispatch((0,G.KP)({username:e,slug:n},t.props.user,t.props.user)),k.Z.dispatch((0,W._S)(t.props.user,e,n)),N.Z.success(gettext("Your username has been changed successfully."))})),t.state={isLoaded:!1,options:null},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){var e=this;_.Z.set({title:gettext("Change username"),parent:gettext("Change your options")}),Promise.all([y.Z.get(this.props.user.api.username),y.Z.get(x.Z.get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then((function(t){k.Z.dispatch((0,G.ZB)(t[1].results)),e.setState({isLoaded:!0,options:{changes_left:t[0].changes_left,length_min:t[0].length_min,length_max:t[0].length_max,next_on:t[0].next_on?E()(t[0].next_on):null}})}))}},{key:"getChangeForm",value:function(){return this.state.isLoaded?0===this.state.options.changes_left?(0,a.Z)(F,{options:this.state.options}):(0,a.Z)(V,{complete:this.onComplete,options:this.state.options,user:this.props.user}):Y||(Y=(0,a.Z)(z,{}))}},{key:"render",value:function(){return(0,a.Z)("div",{},void 0,this.getChangeForm(),(0,a.Z)($.Z,{changes:this.props["username-history"],isLoaded:this.state.isLoaded}))}}]),u}(u().Component);var Q,X=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={new_email:"",password:"",validators:{new_email:[q.Do()],password:[]},isLoading:!1},t}return(0,i.Z)(u,[{key:"clean",value:function(){var e=this.validate();return-1!==[this.state.new_email.trim().length,this.state.password.trim().length].indexOf(0)?(N.Z.error(gettext("Fill out all fields.")),!1):!e.new_email||(N.Z.error(e.new_email[0]),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.change_email,{new_email:this.state.new_email,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_email:"",password:""}),N.Z.success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_email?N.Z.error(e.new_email):N.Z.error(e.password):N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("input",{type:"type",style:{display:"none"}}),(0,a.Z)("input",{type:"password",style:{display:"none"}}),(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change e-mail address"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New e-mail"),for:"id_new_email"},void 0,(0,a.Z)("input",{type:"text",id:"id_new_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_email"),value:this.state.new_email})),K||(K=(0,a.Z)("hr",{})),(0,a.Z)(A.Z,{label:gettext("Your current password"),for:"id_confirm_email"},void 0,(0,a.Z)("input",{type:"password",id:"id_confirm_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change e-mail")))))}}]),u}(T.Z);var ee,te,ne,ae=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={new_password:"",repeat_password:"",password:"",validators:{new_password:[],repeat_password:[],password:[]},isLoading:!1},t}return(0,i.Z)(u,[{key:"clean",value:function(){var e=this.validate();return-1!==[this.state.new_password.trim().length,this.state.repeat_password.trim().length,this.state.password.trim().length].indexOf(0)?(N.Z.error(gettext("Fill out all fields.")),!1):e.new_password?(N.Z.error(e.new_password[0]),!1):this.state.new_password===this.state.repeat_password||(N.Z.error(gettext("New passwords are different.")),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.change_password,{new_password:this.state.new_password,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_password:"",repeat_password:"",password:""}),N.Z.success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_password?N.Z.error(e.new_password):N.Z.error(e.password):N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("input",{type:"type",style:{display:"none"}}),(0,a.Z)("input",{type:"password",style:{display:"none"}}),(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change password"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New password"),for:"id_new_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_new_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_password"),value:this.state.new_password})),(0,a.Z)(A.Z,{label:gettext("Repeat password"),for:"id_repeat_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_repeat_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("repeat_password"),value:this.state.repeat_password})),Q||(Q=(0,a.Z)("hr",{})),(0,a.Z)(A.Z,{label:gettext("Your current password"),for:"id_confirm_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_confirm_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change password")))))}}]),u}(T.Z),se=function(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change email or password"))),(0,a.Z)("div",{className:"panel-body panel-message-body"},void 0,ee||(ee=(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("You need to set a password for your account to be able to change your username or email.")),(0,a.Z)("p",{className:"help-block"},void 0,(0,a.Z)("a",{className:"btn btn-primary",href:x.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Set password"))))))};var ie,oe=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return this.props.user.has_usable_password?(0,a.Z)("div",{},void 0,(0,a.Z)(X,{user:this.props.user}),(0,a.Z)(ae,{user:this.props.user}),(0,a.Z)("p",{className:"message-line"},void 0,ne||(ne=(0,a.Z)("span",{className:"material-icon"},void 0,"warning")),(0,a.Z)("a",{href:x.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Change forgotten password")))):te||(te=(0,a.Z)(se,{}))}}]),u}(u().Component),re=n(82125),le=n(98936),ce=n(59131),ue=n(99755);var de=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){var e=this,t=x.Z.get("USER_OPTIONS").filter((function(t){var n=x.Z.get("USERCP_URL")+t.component+"/";return e.props.location.pathname.substr(0,n.length)===n}))[0];return(0,a.Z)("div",{className:"page page-options"},void 0,(0,a.Z)(ue.sP,{},void 0,(0,a.Z)(ue.mr,{styleName:"options"},void 0,(0,a.Z)(ue.gC,{styleName:"options"},void 0,(0,a.Z)(le.gq,{},void 0,(0,a.Z)(le.kw,{auto:!0},void 0,(0,a.Z)(le.Z6,{auto:!0},void 0,(0,a.Z)("h1",{},void 0,gettext("Change your options"))),(0,a.Z)(le.Z6,{className:"hidden-xs hidden-md hidden-lg",shrink:!0},void 0,(0,a.Z)("div",{className:"dropdown"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Menu"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,ie||(ie=(0,a.Z)("span",{className:"material-icon"},void 0,"menu"))),(0,a.Z)(v,{className:"dropdown-menu dropdown-menu-right",baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})))),(0,a.Z)(le.kw,{className:"hidden-sm hidden-md hidden-lg"},void 0,(0,a.Z)(le.Z6,{},void 0,(0,a.Z)("div",{className:"dropdown"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-block dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,t.icon),t.name),(0,a.Z)(v,{className:"dropdown-menu",baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})))))))),(0,a.Z)(ce.Z,{},void 0,(0,a.Z)("div",{className:"row"},void 0,(0,a.Z)("div",{className:"col-md-3 hidden-xs hidden-sm"},void 0,(0,a.Z)(f,{baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})),(0,a.Z)("div",{className:"col-md-9"},void 0,this.props.children))))}}]),u}(re.Z);function pe(e){return{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function he(){var e=[{path:x.Z.get("USERCP_URL")+"forum-options/",component:(0,d.$j)(pe)(U)},{path:x.Z.get("USERCP_URL")+"edit-details/",component:(0,d.$j)(pe)(C)}],t=x.Z.get("SETTINGS").DELEGATE_AUTH;return t||(e.push({path:x.Z.get("USERCP_URL")+"change-username/",component:(0,d.$j)(pe)(J)}),e.push({path:x.Z.get("USERCP_URL")+"sign-in-credentials/",component:(0,d.$j)(pe)(oe)})),x.Z.get("ENABLE_DOWNLOAD_OWN_DATA")&&e.push({path:x.Z.get("USERCP_URL")+"download-data/",component:(0,d.$j)(pe)(L)}),!t&&x.Z.get("ENABLE_DELETE_OWN_ACCOUNT")&&e.push({path:x.Z.get("USERCP_URL")+"delete-account/",component:(0,d.$j)(pe)(w)}),e}var fe=n(39633);x.Z.addInitializer({name:"component:options",initializer:function(e){e.has("USER_OPTIONS")&&(0,fe.Z)({root:x.Z.get("USERCP_URL"),component:de,paths:he()})},after:"store"})},95563:function(e,t,n){"use strict";var a,s=n(37424),i=n(22928),o=n(15671),r=n(43144),l=n(97326),c=n(79340),u=n(6215),d=n(61120),p=n(4942),h=n(57588),f=n.n(h),v=n(30381),m=n.n(v),Z=n(95187),g=n(33556),b=n(32233),y=n(55547),_=n(53328);var N=function(e){(0,c.Z)(h,e);var t,n,s=(t=h,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function h(e){var t;return(0,o.Z)(this,h),t=s.call(this,e),(0,p.Z)((0,l.Z)(t),"update",(function(e){e.expires_on&&(e.expires_on=m()(e.expires_on)),t.setState({isLoaded:!0,error:null,ban:e})})),(0,p.Z)((0,l.Z)(t),"error",(function(e){t.setState({isLoaded:!0,error:e.detail,ban:null})})),b.Z.has("PROFILE_BAN")?t.initWithPreloadedData(b.Z.pop("PROFILE_BAN")):t.initWithoutPreloadedData(),t.startPolling(e.profile.api.ban),t}return(0,r.Z)(h,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=m()(e.expires_on)),this.state={isLoaded:!0,ban:e}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){y.Z.start({poll:"ban-details",url:e,frequency:9e4,update:this.update,error:this.error})}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Ban details"),parent:this.props.profile.username})}},{key:"componentWillUnmount",value:function(){y.Z.stop("ban-details")}},{key:"getUserMessage",value:function(){return this.state.ban.user_message?(0,i.Z)("div",{className:"panel-body ban-message ban-user-message"},void 0,(0,i.Z)("h4",{},void 0,gettext("User-shown ban message")),(0,i.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.user_message.html}})):null}},{key:"getStaffMessage",value:function(){return this.state.ban.staff_message?(0,i.Z)("div",{className:"panel-body ban-message ban-staff-message"},void 0,(0,i.Z)("h4",{},void 0,gettext("Team-shown ban message")),(0,i.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.staff_message.html}})):null}},{key:"getExpirationMessage",value:function(){if(this.state.ban.expires_on){if(this.state.ban.expires_on.isAfter(m()())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.state.ban.expires_on.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.state.ban.expires_on.fromNow()},!0);return(0,i.Z)("abbr",{title:e},void 0,t)}return gettext("This ban has expired.")}return interpolate(gettext("%(username)s's ban is permanent."),{username:this.props.profile.username},!0)}},{key:"getPanelBody",value:function(){return this.state.ban?Object.keys(this.state.ban).length?(0,i.Z)("div",{},void 0,this.getUserMessage(),this.getStaffMessage(),(0,i.Z)("div",{className:"panel-body ban-expires"},void 0,(0,i.Z)("h4",{},void 0,gettext("Ban expiration")),(0,i.Z)("p",{className:"lead"},void 0,this.getExpirationMessage()))):(0,i.Z)("div",{},void 0,(0,i.Z)(g.Z,{message:gettext("No ban is active at the moment.")})):this.state.error?(0,i.Z)("div",{},void 0,(0,i.Z)(g.Z,{icon:"error_outline",message:this.state.error})):a||(a=(0,i.Z)("div",{},void 0,(0,i.Z)(Z.Z,{})))}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-ban-details"},void 0,(0,i.Z)("div",{className:"panel panel-default"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Ban details"))),this.getPanelBody()))}}]),h}(f().Component),k=n(21688);function x(e){var t=e.api,n=e.display,a=e.onCancel,s=e.onSuccess;return n?(0,i.Z)(k.Z,{api:t,onCancel:a,onSuccess:s}):null}function w(e){var t,n=e.isAuthenticated,a=e.profile;return t=n?gettext("You are not sharing any details with others."):interpolate(gettext("%(username)s is not sharing any details with others."),{username:a.username},!0),(0,i.Z)("div",{className:"panel panel-default"},void 0,(0,i.Z)("div",{className:"panel-body text-center lead"},void 0,t))}function R(e){var t=e.html,n=e.text,a=e.url;return t?(0,i.Z)("div",{className:"form-control-static col-md-9",dangerouslySetInnerHTML:{__html:t}}):(0,i.Z)("div",{className:"form-control-static col-md-9"},void 0,(0,i.Z)(C,{text:n,url:a}))}function C(e){var t=e.text,n=e.url;return n?(0,i.Z)("p",{},void 0,(0,i.Z)("a",{href:n,target:"_blank",rel:"nofollow"},void 0,t||n)):t?(0,i.Z)("p",{},void 0,t):null}function S(e){return(0,i.Z)("div",{className:"form-group"},void 0,(0,i.Z)("strong",{className:"control-label col-md-3"},void 0,e.name,":"),f().createElement(R,e))}function E(e){var t=e.fields,n=e.name;return(0,i.Z)("div",{className:"panel panel-default panel-profile-details-group"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,n)),(0,i.Z)("div",{className:"panel-body"},void 0,(0,i.Z)("div",{className:"form-horizontal"},void 0,t.map((function(e){var t=e.fieldname,n=e.html,a=e.name,s=e.text,o=e.url;return(0,i.Z)(S,{name:a,html:n,text:s,url:o},t)})))))}var L,P=n(37848);function O(e){var t=e.display,n=e.groups,a=e.isAuthenticated,s=e.loading,o=e.profile;return t?s?L||(L=(0,i.Z)(P.Z,{})):n.length?(0,i.Z)("div",{},void 0,n.map((function(e,t){return(0,i.Z)(E,{fields:e.fields,name:e.name},t)}))):(0,i.Z)(w,{isAuthenticated:a,profile:o}):null}var T=n(92490),A=function(e){var t=e.onEdit,n=e.showEditButton;return(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,gettext("Details")))),n&&(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)("button",{className:"btn btn-default btn-outline btn-block",onClick:t,type:"button"},void 0,gettext("Edit")))))},B=n(58598),I=n(78657),j=n(53904);var D=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this.props,t=e.data,n=e.dispatch,a=e.user;t&&t.id===a.id||I.Z.get(this.props.user.api.details).then((function(e){n((0,B.zD)(e))}),(function(e){j.Z.apiError(e)}))}},{key:"render",value:function(){return this.props.children}}]),s}(f().Component);var U=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"onCancel",(function(){t.setState({editing:!1})})),(0,p.Z)((0,l.Z)(t),"onEdit",(function(){t.setState({editing:!0})})),(0,p.Z)((0,l.Z)(t),"onSuccess",(function(e){var n,a=t.props,s=a.dispatch,i=a.isAuthenticated,o=a.profile;n=i?gettext("Your details have been updated."):interpolate(gettext("%(username)s's details have been updated."),{username:o.username},!0),j.Z.info(n),s((0,B.zD)(e)),t.setState({editing:!1})})),t.state={editing:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Details"),parent:this.props.profile.username})}},{key:"render",value:function(){var e=this.props,t=e.dispatch,n=e.isAuthenticated,a=e.profile,s=e.profileDetails,o=s.id!==a.id;return(0,i.Z)(D,{data:s,dispatch:t,user:a},void 0,(0,i.Z)("div",{className:"profile-details"},void 0,(0,i.Z)(A,{onEdit:this.onEdit,showEditButton:!!s.edit&&!this.state.editing}),(0,i.Z)(O,{display:!this.state.editing,groups:s.groups,isAuthenticated:n,loading:o,profile:a}),(0,i.Z)(x,{api:a.api.edit_details,dispatch:t,display:this.state.editing,onCancel:this.onCancel,onSuccess:this.onSuccess})))}}]),s}(f().Component),M=n(87462),z=n(11005),H=n(82211),F=n(21981),q=n(90287);var Y,V=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isLoading:!0}),t.loadItems(t.props.posts.next)})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"loadItems",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;I.Z.get(this.props.api,{start:t||0}).then((function(n){0===t?q.Z.dispatch(F.zD(n)):q.Z.dispatch(F.R3(n)),e.setState({isLoading:!1})}),(function(t){e.setState({isLoading:!1}),j.Z.apiError(t)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:this.props.title,parent:this.props.profile.username}),this.loadItems()}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-feed"},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.props.header)))),f().createElement($,(0,M.Z)({isLoading:this.state.isLoading,loadMore:this.loadMore},this.props)))}}]),s}(f().Component);function $(e){return e.posts.isLoaded&&!e.posts.results.length?(0,i.Z)("p",{className:"lead"},void 0,e.emptyMessage):(0,i.Z)("div",{},void 0,(0,i.Z)(z.Z,{isReady:e.posts.isLoaded,posts:e.posts.results,poster:e.profile}),(0,i.Z)(G,{isLoading:e.isLoading,loadMore:e.loadMore,next:e.posts.next}))}function G(e){return e.next?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:e.isLoading,onClick:e.loadMore},void 0,gettext("Show older activity"))):null}var W=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.className?"form-search "+this.props.className:"form-search"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName()},void 0,(0,i.Z)("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),Y||(Y=(0,i.Z)("span",{className:"material-icon"},void 0,"search")))}}]),s}(f().Component),K=n(40429),J=n(6935);var Q=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadUsers(t.state.page+1,t.state.search)})),(0,p.Z)((0,l.Z)(t),"search",(function(e){t.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),t.loadUsers(1,e.target.value)})),t.setSpecialProps(),b.Z.has(t.PRELOADED_DATA_KEY)?t.initWithPreloadedData(b.Z.pop(t.PRELOADED_DATA_KEY)):t.initWithoutPreloadedData(),t}return(0,r.Z)(s,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWERS",this.TITLE=gettext("Followers"),this.API_FILTER="followers"}},{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},q.Z.dispatch((0,J.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadUsers()}},{key:"loadUsers",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=this.props.profile.api[this.API_FILTER];I.Z.get(a,{search:n,page:t||1},"user-"+this.API_FILTER).then((function(n){1===t?q.Z.dispatch((0,J.ZB)(n.results)):q.Z.dispatch((0,J.R3)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.pages})}),(function(e){j.Z.apiError(e)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:this.TITLE,parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var n=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(n,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You have no followers."):interpolate(gettext("%(username)s has no followers."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy,onClick:this.loadMore},void 0,interpolate(gettext("Show more (%(more)s)"),{more:this.state.more},!0))):null}},{key:"getListBody",value:function(){return this.state.isLoaded&&0===this.state.count?(0,i.Z)("p",{className:"lead"},void 0,this.getEmptyMessage()):(0,i.Z)("div",{},void 0,(0,i.Z)(K.Z,{cols:3,isReady:this.state.isLoaded,users:this.props.users}),this.getMoreButton())}},{key:"getClassName",value:function(){return"profile-"+this.API_FILTER}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName()},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.getLabel()))),(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)(W,{value:this.state.search,onChange:this.search,placeholder:gettext("Search users...")})))),this.getListBody())}}]),s}(f().Component);var X=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWS",this.TITLE=gettext("Follows"),this.API_FILTER="follows"}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var n=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(n,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You are not following any users."):interpolate(gettext("%(username)s is not following any users."),{username:this.props.profile.username},!0)}}]),s}(Q),ee=n(7850),te=n(48927);var ne=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadChanges(t.state.page+1,t.state.search)})),(0,p.Z)((0,l.Z)(t),"search",(function(e){t.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),t.loadChanges(1,e.target.value)})),b.Z.has("PROFILE_NAME_HISTORY")?t.initWithPreloadedData(b.Z.pop("PROFILE_NAME_HISTORY")):t.initWithoutPreloadedData(),t}return(0,r.Z)(s,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},q.Z.dispatch((0,te.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadChanges()}},{key:"loadChanges",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;I.Z.get(b.Z.get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:n,page:t||1},"search-username-history").then((function(n){1===t?q.Z.dispatch((0,te.ZB)(n.results)):q.Z.dispatch((0,te.R3)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.pages})}),(function(e){j.Z.apiError(e)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Username history"),parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(changes)s username change.","Found %(changes)s username changes.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(t,{changes:this.state.count},!0)}var n=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);return interpolate(n,{username:this.props.profile.username,changes:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no username changes matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("No name changes have been recorded for your account."):interpolate(gettext("%(username)s's username was never changed."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy,onClick:this.loadMore},void 0,interpolate(gettext("Show older (%(more)s)"),{more:this.state.more},!0))):null}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-username-history"},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.getLabel()))),(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)(W,{value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})))),(0,i.Z)(ee.Z,{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),s}(f().Component),ae=n(82125),se=n(27519),ie=n(59131),oe=n(19605),re=n(98936),le=n(99755);var ce,ue=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"action",(function(){t.setState({isLoading:!0}),t.props.profile.is_followed?q.Z.dispatch((0,se.r$)({is_followed:!1,followers:t.props.profile.followers-1})):q.Z.dispatch((0,se.r$)({is_followed:!0,followers:t.props.profile.followers+1})),I.Z.post(t.props.profile.api.follow).then((function(e){t.setState({isLoading:!1}),q.Z.dispatch((0,se.r$)(e))}),(function(e){t.setState({isLoading:!1}),j.Z.apiError(e)}))})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.profile.is_followed?this.props.className+" btn-default btn-following":this.props.className+" btn-default btn-follow"}},{key:"getIcon",value:function(){return this.props.profile.is_followed?"favorite":"favorite_border"}},{key:"getLabel",value:function(){return this.props.profile.is_followed?gettext("Following"):gettext("Follow")}},{key:"render",value:function(){return(0,i.Z)(H.Z,{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,this.getIcon()),this.getLabel())}}]),s}(f().Component),de=n(27950);var pe,he,fe=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){var e;(0,o.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,p.Z)((0,l.Z)(e),"onClick",(function(){de.Z.open({mode:"START_PRIVATE",submit:b.Z.get("PRIVATE_THREADS_API"),to:[e.props.profile]})})),e}return(0,r.Z)(s,[{key:"render",value:function(){var e=this.props.user.acl.can_start_private_threads,t=this.props.user.id===this.props.profile.id;return!e||t?null:(0,i.Z)("button",{className:this.props.className,onClick:this.onClick,type:"button"},void 0,ce||(ce=(0,i.Z)("span",{className:"material-icon"},void 0,"comment")),gettext("Message"))}}]),s}(f().Component),ve=n(43345),me=n(96359),Ze=n(3784),ge=n(7227),be=n(30337);var ye,_e,Ne=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e)).state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.moderate_avatar).then((function(t){e.setState({isLoaded:!0,is_avatar_locked:t.is_avatar_locked,avatar_lock_user_message:t.avatar_lock_user_message||"",avatar_lock_staff_message:t.avatar_lock_staff_message||""})}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"clean",value:function(){return!!this.isValid()||(j.Z.error(this.validate().username[0]),!1)}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.moderate_avatar,{is_avatar_locked:this.state.is_avatar_locked,avatar_lock_user_message:this.state.avatar_lock_user_message,avatar_lock_staff_message:this.state.avatar_lock_staff_message})}},{key:"handleSuccess",value:function(e){q.Z.dispatch((0,J.n1)(this.props.profile,e.avatar_hash)),j.Z.success(gettext("Avatar controls have been changed."))}},{key:"getFormBody",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("Lock avatar"),helpText:gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),for:"id_is_avatar_locked"},void 0,(0,i.Z)(ge.Z,{id:"id_is_avatar_locked",disabled:this.state.isLoading,iconOn:"lock_outline",iconOff:"lock_open",labelOn:gettext("Disallow user from changing avatar"),labelOff:gettext("Allow user to change avatar"),onChange:this.bindInput("is_avatar_locked"),value:this.state.is_avatar_locked})),(0,i.Z)(me.Z,{label:gettext("User message"),helpText:gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),for:"id_avatar_lock_user_message"},void 0,(0,i.Z)("textarea",{id:"id_avatar_lock_user_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_user_message"),value:this.state.avatar_lock_user_message})),(0,i.Z)(me.Z,{label:gettext("Staff message"),helpText:gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),for:"id_avatar_lock_staff_message"},void 0,(0,i.Z)("textarea",{id:"id_avatar_lock_staff_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_staff_message"),value:this.state.avatar_lock_staff_message}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},void 0,gettext("Close")),(0,i.Z)(H.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():pe||(pe=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-avatar-controls":"modal-dialog modal-avatar-controls"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,he||(he=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Avatar controls"))),this.getModalBody()))}}]),s}(ve.Z),ke=n(55210);var xe,we,Re,Ce=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e)).state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[ke.lG()]}},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.moderate_username).then((function(){e.setState({isLoaded:!0})}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"clean",value:function(){return!!this.isValid()||(j.Z.error(this.validate().username[0]),!1)}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.moderate_username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),q.Z.dispatch((0,te.KP)(e,this.props.profile,this.props.user)),q.Z.dispatch((0,J._S)(this.props.profile,e.username,e.slug)),j.Z.success(gettext("Username has been changed."))}},{key:"getFormBody",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("New username"),for:"id_username"},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,i.Z)(H.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change username"))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():ye||(ye=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-rename-user":"modal-dialog modal-rename-user"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,_e||(_e=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Change username"))),this.getModalBody()))}}]),s}(ve.Z);var Se,Ee,Le,Pe=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"countdown",(function(){window.setTimeout((function(){t.state.countdown>1?(t.setState({countdown:t.state.countdown-1}),t.countdown()):t.state.confirm||t.setState({confirm:!0})}),1e3)})),t.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.delete).then((function(){e.setState({isLoaded:!0}),e.countdown()}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.delete,{with_content:this.state.with_content})}},{key:"handleSuccess",value:function(){y.Z.stop("user-profile"),this.state.with_content?this.setState({isDeleted:interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."),{username:this.props.profile.username},!0)}):this.setState({isDeleted:interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."),{username:this.props.profile.username},!0)})}},{key:"getButtonLabel",value:function(){return this.state.confirm?interpolate(gettext("Delete %(username)s"),{username:this.props.profile.username},!0):interpolate(gettext("Please wait... (%(countdown)ss)"),{countdown:this.state.countdown},!0)}},{key:"getForm",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("User content"),for:"id_with_content"},void 0,(0,i.Z)(ge.Z,{id:"id_with_content",disabled:this.state.isLoading,labelOn:gettext("Delete together with user's account"),labelOff:gettext("Hide after deleting user's account"),onChange:this.bindInput("with_content"),value:this.state.with_content}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},void 0,gettext("Cancel")),(0,i.Z)(H.Z,{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},void 0,this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return(0,i.Z)("div",{className:"modal-body"},void 0,xe||(xe=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.state.isDeleted),(0,i.Z)("p",{},void 0,(0,i.Z)("a",{href:b.Z.get("USERS_LIST_URL")},void 0,gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():we||(we=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error||this.state.isDeleted?"modal-dialog modal-message modal-delete-account":"modal-dialog modal-delete-account"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,Re||(Re=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Delete user account"))),this.getModalBody()))}}]),s}(ve.Z),Oe=n(59801);var Te,Ae,Be,Ie,je,De=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},Ue=function(e){(0,c.Z)(h,e);var t,n,a=(t=h,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function h(){var e;(0,o.Z)(this,h);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,p.Z)((0,l.Z)(e),"showAvatarDialog",(function(){Oe.Z.show((0,s.$j)(De)(Ne))})),(0,p.Z)((0,l.Z)(e),"showRenameDialog",(function(){Oe.Z.show((0,s.$j)(De)(Ce))})),(0,p.Z)((0,l.Z)(e),"showDeleteDialog",(function(){Oe.Z.show((0,s.$j)(De)(Pe))})),e}return(0,r.Z)(h,[{key:"render",value:function(){var e=this.props.moderation;return(0,i.Z)("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},void 0,!!e.avatar&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showAvatarDialog},void 0,Se||(Se=(0,i.Z)("span",{className:"material-icon"},void 0,"portrait")),gettext("Avatar controls"))),!!e.rename&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showRenameDialog},void 0,Ee||(Ee=(0,i.Z)("span",{className:"material-icon"},void 0,"credit_card")),gettext("Change username"))),!!e.delete&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showDeleteDialog},void 0,Le||(Le=(0,i.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete account"))))}}]),h}(f().Component),Me=n(24678),ze=function(e){var t=e.profile;return(0,i.Z)("ul",{className:"profile-data-list"},void 0,!1===t.is_active&&(0,i.Z)("li",{className:"user-account-disabled"},void 0,(0,i.Z)("abbr",{title:gettext("This user's account has been disabled by administrator.")},void 0,gettext("Account disabled"))),(0,i.Z)("li",{className:"user-status-display"},void 0,(0,i.Z)(Me.ZP,{user:t,status:t.status},void 0,(0,i.Z)(Me.Jj,{user:t,status:t.status}),(0,i.Z)(Me.pg,{user:t,status:t.status,className:"status-label"}))),t.rank.is_tab?(0,i.Z)("li",{className:"user-rank"},void 0,(0,i.Z)("a",{href:t.rank.url,className:"item-title"},void 0,t.rank.name)):(0,i.Z)("li",{className:"user-rank"},void 0,(0,i.Z)("span",{className:"item-title"},void 0,t.rank.name)),(t.title||t.rank.title)&&(0,i.Z)("li",{className:"user-title"},void 0,t.title||t.rank.title),(0,i.Z)("li",{className:"user-joined-on"},void 0,(0,i.Z)("abbr",{title:interpolate(gettext("Joined on %(joined_on)s"),{joined_on:t.joined_on.format("LL, LT")},!0)},void 0,interpolate(gettext("Joined %(joined_on)s"),{joined_on:t.joined_on.fromNow()},!0))),t.email&&(0,i.Z)("li",{className:"user-email"},void 0,(0,i.Z)("a",{href:"mailto:"+t.email,className:"item-title"},void 0,t.email)))},He=function(){return(0,i.Z)("button",{className:"btn btn-default btn-icon btn-outline dropdown-toggle",type:"button",title:gettext("Options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,je||(je=(0,i.Z)("span",{className:"material-icon"},void 0,"settings")))},Fe=function(e){var t=e.profile,n=e.user,a=e.moderation,s=e.message,o=e.follow;return(0,i.Z)(le.sP,{},void 0,(0,i.Z)(le.mr,{styleName:t.rank.css_class?"rank-"+t.rank.css_class:"profile"},void 0,(0,i.Z)(le.gC,{styleName:t.rank.css_class?"rank-"+t.rank.css_class:"profile"},void 0,(0,i.Z)("div",{className:"profile-page-header"},void 0,(0,i.Z)("div",{className:"profile-page-header-avatar"},void 0,(0,i.Z)(oe.ZP,{className:"user-avatar hidden-sm hidden-md hidden-lg",user:t,size:200,size2x:400}),(0,i.Z)(oe.ZP,{className:"user-avatar hidden-xs hidden-md hidden-lg",user:t,size:64,size2x:128}),(0,i.Z)(oe.ZP,{className:"user-avatar hidden-xs hidden-sm",user:t,size:128,size2x:256})),(0,i.Z)("h1",{},void 0,t.username))),(0,i.Z)(le.eA,{className:"profile-page-header-details"},void 0,(0,i.Z)(re.gq,{},void 0,(0,i.Z)(re.kw,{auto:!0},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(ze,{profile:t}))),s&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(fe,{className:"btn btn-default btn-block btn-outline",profile:t,user:n})),a.available&&!o&&(0,i.Z)(re.Z6,{shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Te||(Te=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a})))),o&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(ue,{className:"btn btn-block btn-outline",profile:t})),a.available&&(0,i.Z)(re.Z6,{shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Ae||(Ae=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a})))),a.available&&!o&&!s&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{className:"hidden-xs",shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Be||(Be=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a}))),(0,i.Z)(re.Z6,{className:"hidden-sm hidden-md hidden-lg"},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,Ie||(Ie=(0,i.Z)("span",{className:"material-icon"},void 0,"settings")),gettext("Options")),(0,i.Z)(Ue,{profile:t,moderation:a}))))))))},qe=n(69987),Ye=n(94417),Ve=function(e){var t=e.baseUrl,n=e.page,a=e.pages;return(0,i.Z)("div",{className:"nav-container"},void 0,(0,i.Z)("div",{className:"dropdown hidden-sm hidden-md hidden-lg"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,n.icon),n.name),(0,i.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,a.map((function(e){return(0,i.Z)("li",{},e.component,(0,i.Z)(qe.rU,{to:t+e.component+"/"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name))})))),(0,i.Z)("ul",{className:"nav nav-pills hidden-xs",role:"menu"},void 0,a.map((function(e){return(0,i.Z)(Ye.Z,{path:t+e.component+"/"},e.component,(0,i.Z)(qe.rU,{to:t+e.component+"/"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name))}))))};var $e=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"update",(function(e){q.Z.dispatch((0,se.ZB)(e))})),t.startPolling(e.profile.api.index),t}return(0,r.Z)(s,[{key:"startPolling",value:function(e){y.Z.start({poll:"user-profile",url:e,frequency:9e4,update:this.update})}},{key:"render",value:function(){var e=this,t=b.Z.get("PROFILE").url,n=b.Z.get("PROFILE_PAGES"),a=n.filter((function(n){var a=t+n.component+"/";return e.props.location.pathname===a}))[0],s=this.props,o=s.profile,r=s.user,l=Ge(o,r),c=r.acl.can_start_private_threads&&o.id!==r.id,u=o.acl.can_follow&&o.id!==r.id;return(0,i.Z)("div",{className:"page page-user-profile"},void 0,(0,i.Z)(Fe,{profile:this.props.profile,user:this.props.user,moderation:l,message:c,follow:u}),(0,i.Z)(ie.Z,{},void 0,(0,i.Z)(Ve,{baseUrl:t,page:a,pages:n}),this.props.children))}}]),s}(ae.Z),Ge=function(e,t){var n={available:!1,rename:!1,avatar:!1,delete:!1};return t.is_anonumous||(n.rename=e.acl.can_rename,n.avatar=e.acl.can_moderate_avatar,n.delete=e.acl.can_delete,n.available=n.rename||n.avatar||n.delete),n};function We(e){return{isAuthenticated:e.auth.user.id===e.profile.id,tick:e.tick.tick,user:e.auth.user,users:e.users,posts:e.posts,profile:e.profile,profileDetails:e["profile-details"],"username-history":e["username-history"]}}var Ke={posts:function(e){var t;t=e.user.id===e.profile.id?gettext("You have posted no messages."):interpolate(gettext("%(username)s posted no messages."),{username:e.profile.username},!0);var n=null;if(e.posts.isLoaded)if(e.profile.id===e.user.id){var a=ngettext("You have posted %(posts)s message.","You have posted %(posts)s messages.",e.profile.posts);n=interpolate(a,{posts:e.profile.posts},!0)}else{var s=ngettext("%(username)s has posted %(posts)s message.","%(username)s has posted %(posts)s messages.",e.profile.posts);n=interpolate(s,{username:e.profile.username,posts:e.profile.posts},!0)}else n=gettext("Loading...");return f().createElement(V,(0,M.Z)({api:e.profile.api.posts,emptyMessage:t,header:n,title:gettext("Posts")},e))},threads:function(e){var t;t=e.user.id===e.profile.id?gettext("You have no started threads."):interpolate(gettext("%(username)s started no threads."),{username:e.profile.username},!0);var n=null;if(e.posts.isLoaded)if(e.profile.id===e.user.id){var a=ngettext("You have started %(threads)s thread.","You have started %(threads)s threads.",e.profile.threads);n=interpolate(a,{threads:e.profile.threads},!0)}else{var s=ngettext("%(username)s has started %(threads)s thread.","%(username)s has started %(threads)s threads.",e.profile.threads);n=interpolate(s,{username:e.profile.username,threads:e.profile.threads},!0)}else n=gettext("Loading...");return f().createElement(V,(0,M.Z)({api:e.profile.api.threads,emptyMessage:t,header:n,title:gettext("Threads")},e))},followers:Q,follows:X,details:U,"username-history":ne,"ban-details":N};function Je(){var e=[];return b.Z.get("PROFILE_PAGES").forEach((function(t){e.push(Object.assign({},t,{path:b.Z.get("PROFILE").url+t.component+"/",component:(0,s.$j)(We)(Ke[t.component])}))})),e}var Qe=n(39633);b.Z.addInitializer({name:"component:profile",initializer:function(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,Qe.Z)({root:b.Z.get("PROFILE").url,component:(0,s.$j)(We)($e),paths:Je()})},after:"reducer:profile-hydrate"})},32488:function(e,t,n){"use strict";var a,s=n(32233),i=n(97326),o=n(4942),r=n(22928),l=n(15671),c=n(43144),u=n(79340),d=n(6215),p=n(61120),h=n(57588),f=n.n(h),v=n(82211),m=n(43345),Z=n(78657),g=n(53904),b=n(55210),y=n(93051);function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}var N=function(e){(0,u.Z)(n,e);var t=_(n);function n(e){var a;return(0,l.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,email:"",validators:{email:[b.Do()]}},a}return(0,c.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(g.Z.error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return Z.Z.post(s.Z.get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?g.Z.info(e.detail):403===e.status&&e.ban?(0,y.Z)(e.ban):g.Z.apiError(e)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-request-activation-link"},void 0,(0,r.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,r.Z)("div",{className:"form-group"},void 0,(0,r.Z)("div",{className:"control-input"},void 0,(0,r.Z)("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),(0,r.Z)(v.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Send link"))))}}]),n}(m.Z),k=function(e){(0,u.Z)(n,e);var t=_(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-request-activation-link well-done"},void 0,(0,r.Z)("div",{className:"done-message"},void 0,a||(a=(0,r.Z)("div",{className:"message-icon"},void 0,(0,r.Z)("span",{className:"material-icon"},void 0,"check"))),(0,r.Z)("div",{className:"message-body"},void 0,(0,r.Z)("p",{},void 0,this.getMessage())),(0,r.Z)("button",{className:"btn btn-primary btn-block",type:"button",onClick:this.props.callback},void 0,gettext("Request another link"))))}}]),n}(f().Component),x=function(e){(0,u.Z)(n,e);var t=_(n);function n(e){var a;return(0,l.Z)(this,n),a=t.call(this,e),(0,o.Z)((0,i.Z)(a),"complete",(function(e){a.setState({complete:e})})),(0,o.Z)((0,i.Z)(a),"reset",(function(){a.setState({complete:!1})})),a.state={complete:!1},a}return(0,c.Z)(n,[{key:"render",value:function(){return this.state.complete?(0,r.Z)(k,{user:this.state.complete,callback:this.reset}):(0,r.Z)(N,{callback:this.complete})}}]),n}(f().Component),w=n(4869);s.Z.addInitializer({name:"component:request-activation-link",initializer:function(){document.getElementById("request-activation-link-mount")&&(0,w.Z)(x,"request-activation-link-mount",!1)},after:"store"})},11768:function(e,t,n){"use strict";var a,s,i=n(32233),o=n(97326),r=n(4942),l=n(22928),c=n(15671),u=n(43144),d=n(79340),p=n(6215),h=n(61120),f=n(57588),v=n.n(f),m=n(73935),Z=n.n(m),g=n(82211),b=n(43345),y=n(78657),_=n(53904),N=n(55210),k=n(93051);function x(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,h.Z)(e);if(t){var s=(0,h.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,p.Z)(this,n)}}var w=function(e){(0,d.Z)(n,e);var t=x(n);function n(e){var a;return(0,c.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,email:"",validators:{email:[N.Do()]}},a}return(0,u.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(_.Z.error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return y.Z.post(i.Z.get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,k.Z)(e.ban):_.Z.apiError(e)}},{key:"render",value:function(){return(0,l.Z)("div",{className:"well well-form well-form-request-password-reset"},void 0,(0,l.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,l.Z)("div",{className:"form-group"},void 0,(0,l.Z)("div",{className:"control-input"},void 0,(0,l.Z)("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),(0,l.Z)(g.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Send link"))))}}]),n}(b.Z),R=function(e){(0,d.Z)(n,e);var t=x(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,u.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return(0,l.Z)("div",{className:"well well-form well-form-request-password-reset well-done"},void 0,(0,l.Z)("div",{className:"done-message"},void 0,a||(a=(0,l.Z)("div",{className:"message-icon"},void 0,(0,l.Z)("span",{className:"material-icon"},void 0,"check"))),(0,l.Z)("div",{className:"message-body"},void 0,(0,l.Z)("p",{},void 0,this.getMessage())),(0,l.Z)("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},void 0,gettext("Request another link"))))}}]),n}(v().Component),C=function(e){(0,d.Z)(n,e);var t=x(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,u.Z)(n,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?(0,l.Z)("p",{},void 0,(0,l.Z)("a",{href:i.Z.get("REQUEST_ACTIVATION_URL")},void 0,gettext("Activate your account."))):null}},{key:"render",value:function(){return(0,l.Z)("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},void 0,(0,l.Z)("div",{className:"container"},void 0,(0,l.Z)("div",{className:"message-panel"},void 0,s||(s=(0,l.Z)("div",{className:"message-icon"},void 0,(0,l.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,l.Z)("div",{className:"message-body"},void 0,(0,l.Z)("p",{className:"lead"},void 0,gettext("Your account is inactive.")),(0,l.Z)("p",{},void 0,this.props.message),this.getActivateButton()))))}}]),n}(v().Component),S=function(e){(0,d.Z)(n,e);var t=x(n);function n(e){var a;return(0,c.Z)(this,n),a=t.call(this,e),(0,r.Z)((0,o.Z)(a),"complete",(function(e){a.setState({complete:e})})),(0,r.Z)((0,o.Z)(a),"reset",(function(){a.setState({complete:!1})})),a.state={complete:!1},a}return(0,u.Z)(n,[{key:"showInactivePage",value:function(e){Z().render((0,l.Z)(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?(0,l.Z)(R,{callback:this.reset,user:this.state.complete}):(0,l.Z)(w,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),n}(v().Component),E=n(4869);i.Z.addInitializer({name:"component:request-password-reset",initializer:function(){document.getElementById("request-password-reset-mount")&&(0,E.Z)(S,"request-password-reset-mount",!1)},after:"store"})},61323:function(e,t,n){"use strict";var a,s=n(32233),i=n(97326),o=n(4942),r=n(22928),l=n(15671),c=n(43144),u=n(79340),d=n(6215),p=n(61120),h=n(57588),f=n.n(h),v=n(73935),m=n.n(v),Z=n(82211),g=n(43345),b=n(14467),y=n(78657),_=n(98274),N=n(59801),k=n(53904),x=n(93051),w=n(19755);function R(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}var C=function(e){(0,u.Z)(n,e);var t=R(n);function n(e){var a;return(0,l.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,password:""},a}return(0,c.Z)(n,[{key:"clean",value:function(){return!!this.state.password.trim().length||(k.Z.error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return y.Z.post(s.Z.get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,x.Z)(e.ban):k.Z.apiError(e)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-reset-password"},void 0,(0,r.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,r.Z)("div",{className:"form-group"},void 0,(0,r.Z)("div",{className:"control-input"},void 0,(0,r.Z)("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,r.Z)(Z.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Change password"))))}}]),n}(g.Z),S=function(e){(0,u.Z)(n,e);var t=R(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){N.Z.show(b.Z)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"page page-message page-message-success page-forgotten-password-changed"},void 0,(0,r.Z)("div",{className:"container"},void 0,(0,r.Z)("div",{className:"message-panel"},void 0,a||(a=(0,r.Z)("div",{className:"message-icon"},void 0,(0,r.Z)("span",{className:"material-icon"},void 0,"check"))),(0,r.Z)("div",{className:"message-body"},void 0,(0,r.Z)("p",{className:"lead"},void 0,this.getMessage()),(0,r.Z)("p",{},void 0,gettext("You will have to sign in using new password before continuing.")),(0,r.Z)("p",{},void 0,(0,r.Z)("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},void 0,gettext("Sign in")))))))}}]),n}(f().Component),E=function(e){(0,u.Z)(n,e);var t=R(n);function n(){var e;(0,l.Z)(this,n);for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];return e=t.call.apply(t,[this].concat(s)),(0,o.Z)((0,i.Z)(e),"complete",(function(e){_.Z.softSignOut(),w('#hidden-login-form input[name="redirect_to"]').remove(),m().render((0,r.Z)(S,{user:e}),document.getElementById("page-mount"))})),e}return(0,c.Z)(n,[{key:"render",value:function(){return(0,r.Z)(C,{callback:this.complete})}}]),n}(f().Component),L=n(4869);s.Z.addInitializer({name:"component:reset-password-form",initializer:function(){document.getElementById("reset-password-form-mount")&&(0,L.Z)(E,"reset-password-form-mount",!1)},after:"store"})},15049:function(e,t,n){"use strict";var a,s=n(37424),i=n(22928),o=n(87462),r=n(57588),l=n.n(r),c=n(59131),u=n(15671),d=n(43144),p=n(97326),h=n(79340),f=n(6215),v=n(61120),m=n(4942),Z=n(32233),g=n(43345),b=n(21981),y=n(16427),_=n(6935),N=n(78657),k=n(53904),x=n(90287),w=n(98936),R=n(99755);var C=function(e){(0,h.Z)(o,e);var t,n,s=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function o(e){var t;return(0,u.Z)(this,o),t=s.call(this,e),(0,m.Z)((0,p.Z)(t),"onQueryChange",(function(e){t.changeValue("query",e.target.value)})),t.state={isLoading:!1,query:e.search.query},t}return(0,d.Z)(o,[{key:"componentDidMount",value:function(){this.state.query.length&&this.handleSubmit()}},{key:"clean",value:function(){return!!this.state.query.trim().length||(k.Z.error(gettext("You have to enter search query.")),!1)}},{key:"send",value:function(){x.Z.dispatch((0,y.Vx)({isLoading:!0}));var e=this.state.query.trim(),t=window.location.href,n=t.indexOf("?q=");return n>0&&(t=t.substring(0,n+3)),window.history.pushState({},"",t+encodeURIComponent(e)),N.Z.get(Z.Z.get("SEARCH_API"),{q:e})}},{key:"handleSuccess",value:function(e){x.Z.dispatch((0,y.Vx)({query:this.state.query.trim(),isLoading:!1,providers:e})),e.forEach((function(e){"users"===e.id?x.Z.dispatch((0,_.ZB)(e.results.results)):"threads"===e.id&&x.Z.dispatch((0,b.zD)(e.results))}))}},{key:"handleError",value:function(e){k.Z.apiError(e),x.Z.dispatch((0,y.Vx)({isLoading:!1}))}},{key:"render",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)(R.sP,{},void 0,(0,i.Z)(R.mr,{styleName:"site-search"},void 0,(0,i.Z)(R.gC,{styleName:"site-search"},void 0,(0,i.Z)("h1",{},void 0,gettext("Search"))),(0,i.Z)(R.eA,{className:"page-header-search-form"},void 0,(0,i.Z)(w.gq,{},void 0,(0,i.Z)(w.kw,{auto:!0},void 0,(0,i.Z)(w.Z6,{},void 0,(0,i.Z)("input",{className:"form-control",disabled:this.state.isLoading,type:"text",value:this.state.query,placeholder:gettext("Search"),onChange:this.onQueryChange})),(0,i.Z)(w.Z6,{shrink:!0},void 0,(0,i.Z)("button",{className:"btn btn-secondary btn-icon btn-outline",disabled:this.state.isLoading},void 0,a||(a=(0,i.Z)("span",{className:"material-icon"},void 0,"search"))))))))))}}]),o}(g.Z),S=n(69987);function E(e){return(0,i.Z)("div",{className:"list-group nav-side"},void 0,e.providers.map((function(e){return(0,i.Z)(S.rU,{activeClassName:"active",className:"list-group-item",to:e.url},e.id,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name,(0,i.Z)(L,{results:e.results}))})))}function L(e){if(!e.results)return null;var t=e.results.count;return t>1e6?t=Math.ceil(t/1e6)+"KK":t>1e3&&(t=Math.ceil(t/1e3)+"K"),(0,i.Z)("span",{className:"badge"},void 0,t)}function P(e){return(0,i.Z)("div",{className:"page page-search"},void 0,(0,i.Z)(C,{provider:e.provider,search:e.search}),(0,i.Z)(c.Z,{},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-3"},void 0,(0,i.Z)(E,{providers:e.search.providers})),(0,i.Z)("div",{className:"col-md-9"},void 0,e.children,(0,i.Z)(O,{provider:e.provider,search:e.search})))))}function O(e){var t=null;if(e.search.providers.forEach((function(n){n.id===e.provider.id&&(t=n.time)})),null===t)return null;var n=gettext("Search took %(time)s s to complete");return(0,i.Z)("footer",{className:"search-footer"},void 0,(0,i.Z)("p",{},void 0,interpolate(n,{time:t},!0)))}var T=n(11005),A=n(82211);function B(e){return(0,i.Z)("div",{},void 0,(0,i.Z)(T.Z,{isReady:!0,posts:e.results}),l().createElement(I,e))}n(69092);var I=function(e){(0,h.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function s(){var e;(0,u.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,m.Z)((0,p.Z)(e),"onClick",(function(){x.Z.dispatch((0,b.Vx)({isBusy:!0})),N.Z.get(e.props.provider.api,{q:e.props.query,page:e.props.next}).then((function(e){e.forEach((function(e){"threads"===e.id&&(x.Z.dispatch((0,b.R3)(e.results)),x.Z.dispatch((0,y.P0)(e)))})),x.Z.dispatch((0,b.Vx)({isBusy:!1}))}),(function(e){k.Z.apiError(e),x.Z.dispatch((0,b.Vx)({isBusy:!1}))}))})),e}return(0,d.Z)(s,[{key:"render",value:function(){return this.props.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(A.Z,{className:"btn btn-default btn-outline",loading:this.props.isBusy,onClick:this.onClick},void 0,gettext("Show more"))):null}}]),s}(l().Component);function j(e){var t=e.children,n=e.loading,a=e.posts,s=e.query;return a&&a.count?t:s.length?(0,i.Z)("p",{className:"lead"},void 0,n?gettext("Loading results..."):gettext("No threads matching search query have been found.")):(0,i.Z)("p",{className:"lead"},void 0,gettext("Enter at least two characters to search threads."))}var D=n(40429);function U(e){var t=e.children,n=e.loading,a=e.query;return e.users.length?t:a.length?(0,i.Z)("p",{className:"lead"},void 0,n?gettext("Loading results..."):gettext("No users matching search query have been found.")):(0,i.Z)("p",{className:"lead"},void 0,gettext("Enter at least two characters to search users."))}var M={threads:function(e){return(0,i.Z)(P,{provider:e.route.provider,search:e.search},void 0,(0,i.Z)(j,{loading:e.search.isLoading,query:e.search.query,posts:e.posts},void 0,l().createElement(B,(0,o.Z)({provider:e.route.provider,query:e.search.query},e.posts))))},users:function(e){return(0,i.Z)(P,{provider:e.route.provider,search:e.search},void 0,(0,i.Z)(U,{loading:e.search.isLoading,query:e.search.query,users:e.users},void 0,(0,i.Z)(D.Z,{cols:3,isReady:!e.search.isLoading,users:e.users})))}};function z(e){return{posts:e.posts,search:e.search,tick:e.tick.tick,user:e.auth.user,users:e.users}}var H=n(39633);Z.Z.addInitializer({name:"component:search",initializer:function(e){var t;"misago:search"===e.get("CURRENT_LINK")&&(0,H.Z)({paths:(t=Z.Z.get("SEARCH_PROVIDERS"),t.map((function(e){return{path:e.url,component:(0,s.$j)(z)(M[e.id]),provider:e}})))})},after:"store"})},61814:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588);var p={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"},h=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return this.props.isVisible?e+=" in":e+=" out",e}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getSnackbarClass()},void 0,(0,i.Z)("p",{className:"alert "+p[this.props.type]},void 0,this.props.message))}}]),s}(n.n(d)().Component);function f(e){return e.snackbar}var v=n(4869);s.Z.addInitializer({name:"component:snackbar",initializer:function(){(0,v.Z)((0,a.$j)(f)(h),"snackbar-mount")},after:"snackbar"})},95920:function(e,t,n){"use strict";var a=n(57588),s=n.n(a),i=n(22928),o=n(15671),r=n(43144),l=n(97326),c=n(79340),u=n(6215),d=n(61120),p=n(4942),h=n(32233),f=n(26106),v=n(82211),m=n(43345),Z=n(96359),g=n(78657),b=n(53904),y=n(55210),_=function(e){var t=e.backendName,n=gettext("Sign in with %(backend)s"),a=interpolate(n,{backend:t},!0);return(0,i.Z)("div",{className:"page-header-bg"},void 0,(0,i.Z)("div",{className:"page-header"},void 0,(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("h1",{},void 0,a))))};function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){(0,p.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var x=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"handlePrivacyPolicyChange",(function(e){var n=e.target.value;t.handleToggleAgreement("privacyPolicy",n)})),(0,p.Z)((0,l.Z)(t),"handleTermsOfServiceChange",(function(e){var n=e.target.value;t.handleToggleAgreement("termsOfService",n)})),(0,p.Z)((0,l.Z)(t),"handleToggleAgreement",(function(e,n){t.setState((function(a,s){if(null===a[e]){var i=k(k({},a.errors),{},(0,p.Z)({},e,null));return(0,p.Z)({errors:i},e,n)}var o=t.state.validators[e][0],r=k(k({},a.errors),{},(0,p.Z)({},e,[o(null)]));return(0,p.Z)({errors:r},e,null)}))}));var n={email:[y.Do()],username:[y.lG()]};return h.Z.get("TERMS_OF_SERVICE_ID")&&(n.termsOfService=[y.fT()]),h.Z.get("PRIVACY_POLICY_ID")&&(n.privacyPolicy=[y.jA()]),t.state={email:e.email||"",emailProtected:!!e.email,username:e.username||"",termsOfService:null,privacyPolicy:null,validators:n,errors:{},isLoading:!1},t}return(0,r.Z)(s,[{key:"clean",value:function(){if(this.validate(),-1!==[this.state.email.trim().length,this.state.username.trim().length].indexOf(0))return b.Z.error(gettext("Fill out all fields.")),!1;var e=this.state.validators;return h.Z.get("TERMS_OF_SERVICE_ID")&&null===this.state.termsOfService?(b.Z.error(e.termsOfService[0](null)),!1):!h.Z.get("PRIVACY_POLICY_ID")||null!==this.state.privacyPolicy||(b.Z.error(e.privacyPolicy[0](null)),b.Z.error(gettext("You need to accept the privacy policy.")),!1)}},{key:"send",value:function(){return g.Z.post(this.props.url,{email:this.state.email,username:this.state.username,terms_of_service:this.state.termsOfService,privacy_policy:this.state.privacyPolicy})}},{key:"handleSuccess",value:function(e){(0,this.props.onRegistrationComplete)(e)}},{key:"handleError",value:function(e){if(200===e.status)(0,this.props.onRegistrationComplete)({activation:"active",step:"done",username:this.state.username});else if(400===e.status){var t={errors:e};e.email&&(t.emailProtected=!1),this.setState(t)}else b.Z.apiError(e)}},{key:"render",value:function(){var e=this.props.backend_name,t=this.state,n=t.email,a=t.emailProtected,s=t.username,o=t.isLoading,r=null;if(a){var l=gettext("Your e-mail address has been verified by %(backend)s.");r=interpolate(l,{backend:e},!0)}return(0,i.Z)("div",{className:"page page-social-auth page-social-sauth-register"},void 0,(0,i.Z)(_,{backendName:e}),(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Complete your details"))),(0,i.Z)("div",{className:"panel-body"},void 0,(0,i.Z)(Z.Z,{for:"id_username",label:gettext("Username"),validation:this.state.errors.username},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:o,onChange:this.bindInput("username"),value:s})),(0,i.Z)(Z.Z,{for:"id_email",label:gettext("E-mail address"),helpText:r,validation:a?null:this.state.errors.email},void 0,(0,i.Z)("input",{type:"email",id:"id_email",className:"form-control",disabled:o||a,onChange:this.bindInput("email"),value:n})),(0,i.Z)(f.Z,{errors:this.state.errors,privacyPolicy:this.state.privacyPolicy,termsOfService:this.state.termsOfService,onPrivacyPolicyChange:this.handlePrivacyPolicyChange,onTermsOfServiceChange:this.handleTermsOfServiceChange})),(0,i.Z)("div",{className:"panel-footer"},void 0,(0,i.Z)(v.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Sign in")))))))))}}]),s}(m.Z),w=function(e){var t,n,a=e.activation,s=e.backend_name,o=e.username;return n="user"===a?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===a?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):gettext("%(username)s, your account has been created and you have been signed in to it."),t="active"===a?"check":"info_outline",(0,i.Z)("div",{className:"page page-social-auth page-social-sauth-register"},void 0,(0,i.Z)(_,{backendName:s}),(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Registration completed!"))),(0,i.Z)("div",{className:"panel-body panel-message-body"},void 0,(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,t)),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,interpolate(n,{username:o},!0)),(0,i.Z)("p",{className:"help-block"},void 0,(0,i.Z)("a",{className:"btn btn-default",href:h.Z.get("MISAGO_PATH")},void 0,gettext("Return to forum index"))))))))))};var R=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"handleRegistrationComplete",(function(e){var n=e.activation,a=e.email,s=e.step,i=e.username;t.setState({activation:n,email:a,step:s,username:i})})),t.state={step:e.step,activation:e.activation||"",email:e.email||"",username:e.username||""},t}return(0,r.Z)(s,[{key:"render",value:function(){var e=this.props,t=e.backend_name,n=e.url,a=this.state,s=a.activation,o=a.email,r=a.step,l=a.username;return"register"===r?(0,i.Z)(x,{backend_name:t,email:o,url:n,username:l,onRegistrationComplete:this.handleRegistrationComplete}):(0,i.Z)(w,{activation:s,backend_name:t,email:o,url:n,username:l})}}]),s}(s().Component),C=n(4869);h.Z.addInitializer({name:"component:social-auth",initializer:function(e){if("misago:social-complete"===e.get("CURRENT_LINK")){var t=e.get("SOCIAL_AUTH_FORM");(0,C.Z)(s().createElement(R,t),"page-mount")}},after:"store"})},59203:function(e,t,n){"use strict";var a,s,i=n(37424),o=n(22928),r=n(15671),l=n(43144),c=n(97326),u=n(79340),d=n(6215),p=n(61120),h=n(4942),f=n(57588),v=n.n(f),m=n(87462),Z=n(43345),g=n(96359),b=n(8154),y=n(7738),_=n(78657),N=n(59801),k=n(53904),x=n(90287);var w,R=function(e){(0,u.Z)(i,e);var t,n,s=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function i(e){var t;return(0,r.Z)(this,i),t=s.call(this,e),(0,h.Z)((0,c.Z)(t),"onUsernameChange",(function(e){t.changeValue("username",e.target.value)})),t.state={isLoading:!1,username:""},t}return(0,l.Z)(i,[{key:"clean",value:function(){return!!this.state.username.trim().length||(k.Z.error(gettext("You have to enter user name.")),!1)}},{key:"send",value:function(){return _.Z.patch(this.props.thread.api.index,[{op:"add",path:"participants",value:this.state.username},{op:"add",path:"acl",value:1}])}},{key:"handleSuccess",value:function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants)),k.Z.success(gettext("New participant has been added to thread.")),N.Z.hide()}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog modal-sm",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,a||(a=(0,o.Z)(C,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_username",label:gettext("User to add")},void 0,(0,o.Z)("input",{id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.onUsernameChange,type:"text",value:this.state.username}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-block btn-primary",disabled:this.state.isLoading},void 0,gettext("Add participant")),(0,o.Z)("button",{className:"btn btn-block btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel"))))))}}]),i}(Z.Z);function C(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,s||(s=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Add participant")))}var S=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(R,{thread:e.props.thread}))})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.thread.acl.can_add_participants?(0,o.Z)("div",{className:"col-xs-12 col-sm-3"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-block",onClick:this.onClick,type:"button"},void 0,w||(w=(0,o.Z)("span",{className:"material-icon"},void 0,"person_add")),gettext("Add participant"))):null}}]),s}(v().Component),E=n(32233);var L=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onClick",(function(){var e,n,a=!1;if(t.isUser)a=window.confirm(gettext("Are you sure you want to take over this thread?"));else{var s=gettext("Are you sure you want to change thread owner to %(user)s?");a=window.confirm(interpolate(s,{user:t.props.participant.username},!0))}a&&(e=t.props.thread,n=t.props.participant,_.Z.patch(e.api.index,[{op:"replace",path:"owner",value:n.id},{op:"add",path:"acl",value:1}]).then((function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants));var t=gettext("%(user)s has been made new thread owner.");k.Z.success(interpolate(t,{user:n.username},!0))}),(function(e){k.Z.apiError(e)})))})),t.isUser=e.participant.id===e.user.id,t}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.participant.is_owner?null:this.props.thread.acl.can_change_owner?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,gettext("Make owner"))):null}}]),s}(v().Component);var P,O,T,A=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onClick",(function(){var e,n,a=!1;if(t.isUser)a=window.confirm(gettext("Are you sure you want to leave this thread?"));else{var s=gettext("Are you sure you want to remove %(user)s from this thread?");a=window.confirm(interpolate(s,{user:t.props.participant.username},!0))}a&&(t.isUser?(e=t.props.thread,n=t.props.participant,_.Z.patch(e.api.index,[{op:"remove",path:"participants",value:n.id}]).then((function(){k.Z.success(gettext("You have left this thread.")),window.setTimeout((function(){window.location=E.Z.get("PRIVATE_THREADS_URL")}),3e3)}),(function(e){k.Z.apiError(e)}))):function(e,t){_.Z.patch(e.api.index,[{op:"remove",path:"participants",value:t.id},{op:"add",path:"acl",value:1}]).then((function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants));var n=gettext("%(user)s has been removed from this thread.");k.Z.success(interpolate(n,{user:t.username},!0))}),(function(e){k.Z.apiError(e)}))}(t.props.thread,t.props.participant))})),t.isUser=e.participant.id===e.user.id,t}return(0,l.Z)(s,[{key:"render",value:function(){var e=this.props.user.acl.can_moderate_private_threads;return this.props.userIsOwner||this.isUser||e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,this.isUser?gettext("Leave thread"):gettext("Remove"))):null}}]),s}(v().Component),B=n(19605);function I(e){var t=e.participant,n="btn btn-default";return t.is_owner&&(n="btn btn-primary"),n+=" btn-user btn-block",(0,o.Z)("div",{className:"col-xs-12 col-sm-3 col-md-2 participant-card"},void 0,(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{"aria-haspopup":"true","aria-expanded":"false",className:n,"data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)(B.ZP,{size:"34",user:t}),(0,o.Z)("span",{className:"btn-text"},void 0,t.username)),(0,o.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,(0,o.Z)(j,{isOwner:t.is_owner}),P||(P=(0,o.Z)("li",{className:"dropdown-header"})),(0,o.Z)("li",{},void 0,(0,o.Z)("a",{href:t.url},void 0,gettext("See profile"))),O||(O=(0,o.Z)("li",{role:"separator",className:"divider"})),v().createElement(L,e),v().createElement(A,e))))}function j(e){return e.isOwner?(0,o.Z)("li",{className:"dropdown-header dropdown-header-owner"},void 0,T||(T=(0,o.Z)("span",{className:"material-icon"},void 0,"start")),(0,o.Z)("span",{className:"icon-text"},void 0,gettext("Thread owner"))):null}function D(e){var t=e.participants,n=e.thread,a=e.user,s=e.userIsOwner;return(0,o.Z)("div",{className:"participants-cards"},void 0,(0,o.Z)("div",{className:"row"},void 0,t.map((function(e){return(0,o.Z)(I,{participant:e,thread:n,user:a,userIsOwner:s},e.id)}))))}function U(e){return e.participants.length?(0,o.Z)("div",{className:"panel panel-default panel-participants"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,v().createElement(D,(0,m.Z)({userIsOwner:M(e.user,e.participants)},e)),(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)(S,{thread:e.thread}),(0,o.Z)("div",{className:"col-xs-12 col-sm-9"},void 0,(0,o.Z)("p",{},void 0,function(e){var t=e.length,n=ngettext("This thread has %(users)s participant.","This thread has %(users)s participants.",t);return interpolate(n,{users:t},!0)}(e.participants)))))):null}function M(e,t){return t[0].id===e.id}var z=n(91876),H={changed_title:"edit",pinned_globally:"bookmark",pinned_locally:"bookmark_border",unpinned:"panorama_fish_eye",moved:"arrow_forward",merged:"call_merge",approved:"done",opened:"lock_open",closed:"lock_outline",unhid:"visibility",hid:"visibility_off",changed_owner:"grade",tookover:"grade",added_participant:"person_add",owner_left:"person_outline",participant_left:"person_outline",removed_participant:"remove_circle_outline"},F=function(e){return(0,o.Z)("span",{className:"event-icon-bg"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,H[e.post.event_type]))},q=n(89627),Y=n(30381),V=n.n(Y),$=n(92747);function G(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function W(e){return e.post.acl.can_hide?(0,o.Z)("li",{className:"event-controls"},void 0,v().createElement(K,e),v().createElement(J,e),v().createElement(Q,e)):null}var K=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){x.Z.dispatch($.r$(e.props.post,{is_hidden:!0,hidden_on:V()(),hidden_by_name:e.props.user.username,url:Object.assign(e.props.post.url,{hidden_by:e.props.user.url})})),_.Z.patch(e.props.post.api.index,[{op:"replace",path:"is-hidden",value:!0}]).then((function(t){x.Z.dispatch($.r$(e.props.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{is_hidden:!1}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.is_hidden?null:(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Hide"))}}]),n}(v().Component),J=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){x.Z.dispatch($.r$(e.props.post,{is_hidden:!1})),_.Z.patch(e.props.post.api.index,[{op:"replace",path:"is-hidden",value:!1}]).then((function(t){x.Z.dispatch($.r$(e.props.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{is_hidden:!0}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.is_hidden?(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Unhide")):null}}]),n}(v().Component),Q=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){window.confirm(gettext("Are you sure you wish to delete this event? This action is not reversible!"))&&e.delete()})),(0,h.Z)((0,c.Z)(e),"delete",(function(){x.Z.dispatch($.r$(e.props.post,{isDeleted:!0})),_.Z.delete(e.props.post.api.index).then((function(){k.Z.success(gettext("Event has been deleted."))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{isDeleted:!1}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Delete"))}}]),n}(v().Component),X='<span class="item-title">%(user)s</span>',ee='<a href="%(url)s" class="item-title">%(user)s</a>';function te(e){return(0,o.Z)("ul",{className:"list-inline event-info"},void 0,v().createElement(ne,e),v().createElement(ae,e),v().createElement(W,e))}function ne(e){if(e.post.is_hidden){var t;t=e.post.url.hidden_by?interpolate(ee,{url:(0,q.Z)(e.post.url.hidden_by),user:(0,q.Z)(e.post.hidden_by_name)},!0):interpolate(X,{user:(0,q.Z)(e.post.hidden_by_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.post.hidden_on.format("LLL")),relative:(0,q.Z)(e.post.hidden_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("Hidden by %(event_by)s %(event_on)s.")),{event_by:t,event_on:n},!0);return(0,o.Z)("li",{className:"event-hidden-message",dangerouslySetInnerHTML:{__html:a}})}return null}function ae(e){var t;t=e.post.poster?interpolate(ee,{url:(0,q.Z)(e.post.poster.url),user:(0,q.Z)(e.post.poster_name)},!0):interpolate(X,{user:(0,q.Z)(e.post.poster_name)},!0);var n=interpolate('<a href="%(url)s" title="%(absolute)s">%(relative)s</a>',{url:(0,q.Z)(e.post.url.index),absolute:(0,q.Z)(e.post.posted_on.format("LLL")),relative:(0,q.Z)(e.post.posted_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("By %(event_by)s %(event_on)s.")),{event_by:t,event_on:n},!0);return(0,o.Z)("li",{className:"event-posters",dangerouslySetInnerHTML:{__html:a}})}var se={pinned_globally:gettext("Thread has been pinned globally."),pinned_locally:gettext("Thread has been pinned locally."),unpinned:gettext("Thread has been unpinned."),approved:gettext("Thread has been approved."),opened:gettext("Thread has been opened."),closed:gettext("Thread has been closed."),unhid:gettext("Thread has been revealed."),hid:gettext("Thread has been made hidden."),tookover:gettext("Took thread over."),owner_left:gettext("Owner has left thread. This thread is now closed."),participant_left:gettext("Participant has left thread.")},ie='<a href="%(url)s" class="item-title">%(name)s</a>',oe='<span class="item-title">%(name)s</span>';function re(e){return se[e.post.event_type]?(0,o.Z)("p",{className:"event-message"},void 0,se[e.post.event_type]):"changed_title"===e.post.event_type?v().createElement(le,e):"moved"===e.post.event_type?v().createElement(ce,e):"merged"===e.post.event_type?v().createElement(ue,e):"changed_owner"===e.post.event_type?v().createElement(de,e):"added_participant"===e.post.event_type?v().createElement(pe,e):"removed_participant"===e.post.event_type?v().createElement(he,e):null}function le(e){var t=(0,q.Z)(gettext("Thread title has been changed from %(old_title)s.")),n=interpolate(oe,{name:(0,q.Z)(e.post.event_context.old_title)},!0),a=interpolate(t,{old_title:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function ce(e){var t=(0,q.Z)(gettext("Thread has been moved from %(from_category)s.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.from_category.url),name:(0,q.Z)(e.post.event_context.from_category.name)},!0),a=interpolate(t,{from_category:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function ue(e){var t=(0,q.Z)(gettext("The %(merged_thread)s thread has been merged into this thread.")),n=interpolate(oe,{name:(0,q.Z)(e.post.event_context.merged_thread)},!0),a=interpolate(t,{merged_thread:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function de(e){var t=(0,q.Z)(gettext("Changed thread owner to %(user)s.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function pe(e){var t=(0,q.Z)(gettext("Added %(user)s to thread.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function he(e){var t=(0,q.Z)(gettext("Removed %(user)s from thread.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function fe(e){return e.post.is_read?null:(0,o.Z)("div",{className:"event-label"},void 0,(0,o.Z)("span",{className:"label label-unread"},void 0,gettext("New event")))}var ve=n(19755);var me=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){return(0,r.Z)(this,s),a.apply(this,arguments)}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;this.props.post.is_read||ve(this.element).waypoint({handler:function(t){"down"!==t||e.props.post.is_read||window.setTimeout((function(){var t=e.element.getBoundingClientRect(),n=t.height+t.top,a=document.documentElement.clientHeight;n<5||n>a||(x.Z.dispatch($.r$(e.props.post,{is_read:!0})),_.Z.post(e.props.post.api.read).then((function(t){x.Z.dispatch(y.Vx(e.props.thread,{is_read:t.thread_is_read}))}),(function(e){k.Z.apiError(e)})))}),1e3)},offset:"bottom-in-view"})}},{key:"render",value:function(){var e=this;return v().createElement("div",{className:this.props.className,ref:function(t){t&&(e.element=t)}},this.props.children)}}]),s}(v().Component);function Ze(e){var t="event";return e.post.isDeleted?t="hide":e.post.is_hidden&&(t="event post-hidden"),(0,o.Z)("li",{id:"post-"+e.post.id,className:t},void 0,(0,o.Z)(fe,{post:e.post}),(0,o.Z)("div",{className:"event-body"},void 0,(0,o.Z)("div",{className:"event-icon"},void 0,v().createElement(F,e)),(0,o.Z)(me,{className:"event-content",post:e.post},void 0,v().createElement(re,e),v().createElement(te,e))))}var ge=n(69130),be=n(48772);function ye(e){return(0,o.Z)("div",{className:"col-xs-12 col-md-6"},void 0,v().createElement(_e,e),(0,o.Z)("div",{className:"post-attachment"},void 0,(0,o.Z)("a",{href:e.attachment.url.index,className:"attachment-name item-title"},void 0,e.attachment.filename),v().createElement(xe,e)))}function _e(e){return e.attachment.is_image?(0,o.Z)("div",{className:"post-attachment-preview"},void 0,v().createElement(ke,e)):(0,o.Z)("div",{className:"post-attachment-preview"},void 0,v().createElement(Ne,e))}function Ne(e){return(0,o.Z)("a",{href:e.attachment.url.index,className:"material-icon"},void 0,"insert_drive_file")}function ke(e){var t=e.attachment.url.thumb||e.attachment.url.index;return(0,o.Z)("a",{className:"post-thumbnail",href:e.attachment.url.index,style:{backgroundImage:'url("'+(0,q.Z)(t)+'")'}})}function xe(e){var t;t=e.attachment.url.uploader?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.attachment.url.uploader),user:(0,q.Z)(e.attachment.uploader_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.attachment.uploader_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.attachment.uploaded_on.format("LLL")),relative:(0,q.Z)(e.attachment.uploaded_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.")),{filetype:e.attachment.filetype,size:(0,be.Z)(e.attachment.size),uploader:t,uploaded_on:n},!0);return(0,o.Z)("p",{className:"post-attachment-description",dangerouslySetInnerHTML:{__html:a}})}function we(e){return function(e){return(!e.is_hidden||e.acl.can_see_hidden)&&e.attachments}(e.post)?(0,o.Z)("div",{className:"post-attachments"},void 0,(0,ge.Z)(e.post.attachments,2).map((function(e){var t=e.map((function(e){return e?e.id:0})).join("_");return(0,o.Z)(Re,{row:e},t)}))):null}function Re(e){return(0,o.Z)("div",{className:"row"},void 0,e.row.map((function(e){return(0,o.Z)(ye,{attachment:e},e?e.id:0)})))}var Ce,Se,Ee,Le,Pe=n(69092);function Oe(e){return e.post.is_hidden&&!e.post.acl.can_see_hidden?v().createElement(Ae,e):e.post.content?v().createElement(Te,e):v().createElement(Be,e)}function Te(e){return(0,o.Z)(me,{className:"post-body",post:e.post},void 0,(0,o.Z)(Pe.Z,{markup:e.post.content}))}function Ae(e){var t;t=e.post.hidden_by?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.post.url.hidden_by),user:(0,q.Z)(e.post.hidden_by_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.post.hidden_by_name)},!0);var n=interpolate('<abbr class="last-title" title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.post.hidden_on.format("LLL")),relative:(0,q.Z)(e.post.hidden_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("Hidden by %(hidden_by)s %(hidden_on)s.")),{hidden_by:t,hidden_on:n},!0);return(0,o.Z)(me,{className:"post-body post-body-hidden",post:e.post},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("This post is hidden. You cannot see its contents.")),(0,o.Z)("p",{className:"text-muted",dangerouslySetInnerHTML:{__html:a}}))}function Be(e){return(0,o.Z)(me,{className:"post-body post-body-invalid",post:e.post},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("This post's contents cannot be displayed.")),(0,o.Z)("p",{className:"text-muted"},void 0,gettext("This error is caused by invalid post content manipulation.")))}function Ie(e){var t=e.post,n=e.thread,a=e.user;if(!Me(t)||t.id!==n.best_answer)return null;var s;return s=a.id&&n.best_answer_marked_by===a.id?interpolate(gettext("Marked as best answer by you %(marked_on)s."),{marked_on:n.best_answer_marked_on.fromNow()},!0):interpolate(gettext("Marked as best answer by %(marked_by)s %(marked_on)s."),{marked_by:n.best_answer_marked_by_name,marked_on:n.best_answer_marked_on.fromNow()},!0),(0,o.Z)("div",{className:"post-status-message post-status-best-answer"},void 0,Ce||(Ce=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),(0,o.Z)("p",{},void 0,s))}function je(e){return Me(e.post)&&e.post.is_hidden?(0,o.Z)("div",{className:"post-status-message post-status-hidden"},void 0,Se||(Se=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),(0,o.Z)("p",{},void 0,gettext("This post is hidden. Only users with permission may see its contents."))):null}function De(e){return Me(e.post)&&e.post.is_unapproved?(0,o.Z)("div",{className:"post-status-message post-status-unapproved"},void 0,Ee||(Ee=(0,o.Z)("span",{className:"material-icon"},void 0,"remove_circle_outline")),(0,o.Z)("p",{},void 0,gettext("This post is unapproved. Only users with permission to approve posts and its author may see its contents."))):null}function Ue(e){return Me(e.post)&&e.post.is_protected?(0,o.Z)("div",{className:"post-status-message post-status-protected visible-xs-block"},void 0,Le||(Le=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),(0,o.Z)("p",{},void 0,gettext("This post is protected. Only moderators may change it."))):null}function Me(e){return!e.is_hidden||e.acl.can_see_hidden}function ze(e){x.Z.dispatch($.r$(e.post,{is_unapproved:!1})),Ge(e,[{op:"replace",path:"is-unapproved",value:!1}],{is_unapproved:e.post.is_unapproved})}function He(e){x.Z.dispatch($.r$(e.post,{is_protected:!0})),Ge(e,[{op:"replace",path:"is-protected",value:!0}],{is_protected:e.post.is_protected})}function Fe(e){x.Z.dispatch($.r$(e.post,{is_protected:!1})),Ge(e,[{op:"replace",path:"is-protected",value:!1}],{is_protected:e.post.is_protected})}function qe(e){x.Z.dispatch($.r$(e.post,{is_hidden:!0,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(e.post.url,{hidden_by:e.user.url})})),Ge(e,[{op:"replace",path:"is-hidden",value:!0}],{is_hidden:e.post.is_hidden,hidden_on:e.post.hidden_on,hidden_by_name:e.post.hidden_by_name,url:e.post.url})}function Ye(e){x.Z.dispatch($.r$(e.post,{is_hidden:!1})),Ge(e,[{op:"replace",path:"is-hidden",value:!1}],{is_hidden:e.post.is_hidden})}function Ve(e){var t=e.post.last_likes||[],n=[e.user].concat(t),a=n.length>3?n.slice(0,-1):n;x.Z.dispatch($.r$(e.post,{is_liked:!0,likes:e.post.likes+1,last_likes:a})),Ge(e,[{op:"replace",path:"is-liked",value:!0}],{is_liked:e.post.is_liked,likes:e.post.likes,last_likes:e.post.last_likes})}function $e(e){x.Z.dispatch($.r$(e.post,{is_liked:!1,likes:e.post.likes-1,last_likes:e.post.last_likes.filter((function(t){return!t.id||t.id!==e.user.id}))}));var t={is_liked:e.post.is_liked,likes:e.post.likes,last_likes:e.post.last_likes};Ge(e,[{op:"replace",path:"is-liked",value:!1}],t)}function Ge(e,t,n){_.Z.patch(e.post.api.index,t).then((function(t){x.Z.dispatch($.r$(e.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.post,n))}))}function We(e){window.confirm(gettext("Are you sure you want to delete this post? This action is not reversible!"))&&(x.Z.dispatch($.r$(e.post,{isDeleted:!0})),_.Z.delete(e.post.api.index).then((function(){k.Z.success(gettext("Post has been deleted."))}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),x.Z.dispatch($.r$(e.post,{isDeleted:!1}))})))}function Ke(e){var t=e.post,n=e.user;x.Z.dispatch(y.Vx({best_answer:t.id,best_answer_is_protected:t.is_protected,best_answer_marked_on:V()(),best_answer_marked_by:n.id,best_answer_marked_by_name:n.username,best_answer_marked_by_slug:n.slug})),Qe(e,[{op:"replace",path:"best-answer",value:t.id},{op:"add",path:"acl",value:!0}],{best_answer:e.thread.best_answer,best_answer_is_protected:e.thread.best_answer_is_protected,best_answer_marked_on:e.thread.best_answer_marked_on,best_answer_marked_by:e.thread.best_answer_marked_by,best_answer_marked_by_name:e.thread.best_answer_marked_by_name,best_answer_marked_by_slug:e.thread.best_answer_marked_by_slug})}function Je(e){var t=e.post;x.Z.dispatch(y.Vx({best_answer:null,best_answer_is_protected:!1,best_answer_marked_on:null,best_answer_marked_by:null,best_answer_marked_by_name:null,best_answer_marked_by_slug:null})),Qe(e,[{op:"remove",path:"best-answer",value:t.id},{op:"add",path:"acl",value:!0}],{best_answer:e.thread.best_answer,best_answer_is_protected:e.thread.best_answer_is_protected,best_answer_marked_on:e.thread.best_answer_marked_on,best_answer_marked_by:e.thread.best_answer_marked_by,best_answer_marked_by_name:e.thread.best_answer_marked_by_name,best_answer_marked_by_slug:e.thread.best_answer_marked_by_slug})}function Qe(e,t,n){_.Z.patch(e.thread.api.index,t).then((function(e){e.best_answer_marked_on&&(e.best_answer_marked_on=V()(e.best_answer_marked_on)),x.Z.dispatch(y.Vx(e))}),(function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e),x.Z.dispatch(y.Vx(n))}))}var Xe,et,tt,nt=n(30337),at=n(3784);var st=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),(t=a.call(this,e)).state={isReady:!1,error:null,likes:[]},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(this.props.post.api.likes).then((function(t){e.setState({isReady:!0,likes:t.map(it)})}),(function(t){e.setState({isReady:!0,error:t.detail})}))}},{key:"render",value:function(){return this.state.error?(0,o.Z)(ot,{className:"modal-message"},void 0,(0,o.Z)(nt.Z,{message:this.state.error})):this.state.isReady?this.state.likes.length?(0,o.Z)(ot,{className:"modal-sm",likes:this.state.likes},void 0,(0,o.Z)(rt,{likes:this.state.likes})):(0,o.Z)(ot,{className:"modal-message"},void 0,(0,o.Z)(nt.Z,{message:gettext("No users have liked this post.")})):Xe||(Xe=(0,o.Z)(ot,{className:"modal-sm"},void 0,(0,o.Z)(at.Z,{})))}}]),s}(v().Component);function it(e){return Object.assign({},e,{liked_on:V()(e.liked_on)})}function ot(e){var t=e.className,n=e.children,a=e.likes,s=gettext("Post Likes");if(a){var i=a.length,r=ngettext("%(likes)s like","%(likes)s likes",i);s=interpolate(r,{likes:i},!0)}return(0,o.Z)("div",{className:"modal-dialog "+(t||""),role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,et||(et=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,s)),n))}function rt(e){return(0,o.Z)("div",{className:"modal-body modal-post-likers"},void 0,(0,o.Z)("ul",{className:"media-list"},void 0,e.likes.map((function(e){return v().createElement(lt,(0,m.Z)({key:e.id},e))}))))}function lt(e){if(e.url){var t={id:e.liker_id,avatars:e.avatars};return(0,o.Z)("li",{className:"media"},void 0,(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("a",{className:"user-avatar",href:e.url},void 0,(0,o.Z)(B.ZP,{size:"50",user:t}))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("a",{className:"item-title",href:e.url},void 0,e.username)," ",(0,o.Z)(ct,{likedOn:e.liked_on})))}return(0,o.Z)("li",{className:"media"},void 0,tt||(tt=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{className:"user-avatar"},void 0,(0,o.Z)(B.ZP,{size:"50"})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("strong",{},void 0,e.username)," ",(0,o.Z)(ct,{likedOn:e.liked_on})))}function ct(e){return(0,o.Z)("span",{className:"text-muted",title:e.likedOn.format("LLL")},void 0,e.likedOn.fromNow())}var ut,dt,pt,ht,ft=n(27950);function vt(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function mt(e){return function(e){return(!e.is_hidden||e.acl.can_see_hidden)&&(e.acl.can_reply||e.acl.can_edit||e.acl.can_see_likes&&(e.last_likes||[]).length||e.acl.can_like)}(e.post)?(0,o.Z)("div",{className:"post-footer"},void 0,v().createElement(Zt,e),v().createElement(gt,e),v().createElement(bt,e),v().createElement(yt,(0,m.Z)({lastLikes:e.post.last_likes,likes:e.post.likes},e)),v().createElement(_t,(0,m.Z)({likes:e.post.likes},e)),v().createElement(wt,e),v().createElement(Rt,e)):null}var Zt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("button",{className:"hidden-xs btn btn-default btn-sm pull-left",disabled:this.props.post.isBusy||t.id===n.best_answer,onClick:this.onClick,type:"button"},void 0,ut||(ut=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Best answer")):null}}]),n}(v().Component),gt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("button",{className:"visible-xs-inline-block btn btn-default btn-sm pull-left",disabled:this.props.post.isBusy||t.id===n.best_answer,onClick:this.onClick,type:"button"},void 0,dt||(dt=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box"))):null}}]),n}(v().Component),bt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.post.is_liked?$e(e.props):Ve(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){if(!this.props.post.acl.can_like)return null;var e="btn btn-default btn-sm pull-left";return this.props.post.is_liked&&(e="btn btn-success btn-sm pull-left"),(0,o.Z)("button",{className:e,disabled:this.props.post.isBusy,onClick:this.onClick,type:"button"},void 0,this.props.post.is_liked?gettext("Liked"):gettext("Like"))}}]),n}(v().Component),yt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(st,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=(this.props.post.last_likes||[]).length>0;return this.props.post.acl.can_see_likes&&e?2===this.props.post.acl.can_see_likes?(0,o.Z)("button",{className:"btn btn-link btn-sm pull-left hidden-xs",onClick:this.onClick,type:"button"},void 0,Nt(this.props.likes,this.props.lastLikes)):(0,o.Z)("p",{className:"pull-left hidden-xs"},void 0,Nt(this.props.likes,this.props.lastLikes)):null}}]),n}(v().Component),_t=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,l.Z)(n,[{key:"render",value:function(){var e=(this.props.post.last_likes||[]).length>0;return this.props.post.acl.can_see_likes&&e?2===this.props.post.acl.can_see_likes?(0,o.Z)("button",{className:"btn btn-link btn-sm likes-compact pull-left visible-xs-block",onClick:this.onClick,type:"button"},void 0,pt||(pt=(0,o.Z)("span",{className:"material-icon"},void 0,"favorite")),this.props.likes):(0,o.Z)("p",{className:"likes-compact pull-left visible-xs-block"},void 0,ht||(ht=(0,o.Z)("span",{className:"material-icon"},void 0,"favorite")),this.props.likes):null}}]),n}(yt);function Nt(e,t){var n=t.slice(0,3).map((function(e){return e.username}));if(1==n.length)return interpolate(gettext("%(user)s likes this."),{user:n[0]},!0);var a=e-n.length,s=n.slice(0,-1).join(", "),i=n.slice(-1)[0],o=interpolate(gettext("%(users)s and %(last_user)s"),{users:s,last_user:i},!0);if(0===a)return interpolate(gettext("%(users)s like this."),{users:o},!0);var r=ngettext("%(users)s and %(likes)s other user like this.","%(users)s and %(likes)s other users like this.",a);return interpolate(r,{users:n.join(", "),likes:a},!0)}var kt,xt,wt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"REPLY",config:e.props.thread.api.editor,submit:e.props.thread.api.posts.index,context:{reply:e.props.post.id}})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_reply?(0,o.Z)("button",{className:"btn btn-primary btn-sm pull-right",type:"button",onClick:this.onClick},void 0,gettext("Reply")):null}}]),n}(v().Component),Rt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"EDIT",config:e.props.post.api.editor,submit:e.props.post.api.index})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_edit?(0,o.Z)("button",{className:"hidden-xs btn btn-default btn-sm pull-right",type:"button",onClick:this.onClick},void 0,gettext("Edit")):null}}]),n}(v().Component),Ct=n(82211);var St=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.move,{new_thread:this.state.url,posts:[this.props.post.id]})}},{key:"handleSuccess",value:function(e){x.Z.dispatch($.r$(this.props.post,{isDeleted:!0})),N.Z.hide(),k.Z.success(gettext("Selected post was moved to the other thread."))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail):k.Z.apiError(e)}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,kt||(kt=(0,o.Z)(Et,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to move post to")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading},void 0,gettext("Move post"))))))}}]),s}(Z.Z);function Et(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,xt||(xt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move post")))}function Lt(e){return(0,o.Z)("div",{className:"modal-body post-changelog-diff"},void 0,(0,o.Z)("ul",{className:"list-unstyled"},void 0,e.diff.map((function(e,t){return(0,o.Z)(Pt,{item:e},t)}))))}function Pt(e){return"?"===e.item[0]?null:(0,o.Z)("li",{className:(t=e.item,n="diff-item","-"===t[0]?n+=" diff-item-sub":"+"===t[0]&&(n+=" diff-item-add"),n)},void 0,e.item.substr(2));var t,n}var Ot,Tt,At,Bt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.revertEdit(e.props.edit.id)})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.canRevert?(0,o.Z)("div",{className:"modal-footer visible-xs-block"},void 0,(0,o.Z)(Ct.Z,{className:"btn-default btn-sm btn-block",disabled:this.props.disabled,onClick:this.onClick,title:gettext("Revert post to state from before this edit.")},void 0,gettext("Revert"))):null}}]),s}(v().Component);var It,jt,Dt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"goLast",(function(){e.props.goToEdit()})),(0,h.Z)((0,c.Z)(e),"goForward",(function(){e.props.goToEdit(e.props.edit.next)})),(0,h.Z)((0,c.Z)(e),"goBack",(function(){e.props.goToEdit(e.props.edit.previous)})),(0,h.Z)((0,c.Z)(e),"revertEdit",(function(){e.props.revertEdit(e.props.edit.id)})),e}return(0,l.Z)(s,[{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-toolbar post-changelog-toolbar"},void 0,(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)("div",{className:"col-xs-12 col-sm-4"},void 0,(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(Ut,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goBack})),(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(Mt,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goForward})),(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(zt,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goLast})))),(0,o.Z)("div",{className:"col-xs-12 col-sm-5 xs-margin-top-half post-change-label"},void 0,(0,o.Z)(Ft,{edit:this.props.edit})),(0,o.Z)(Ht,{canRevert:this.props.canRevert,disabled:this.props.disabled,onClick:this.revertEdit})))}}]),s}(v().Component);function Ut(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.previous,onClick:e.onClick,title:gettext("See previous change")},void 0,Ot||(Ot=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left")))}function Mt(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.next,onClick:e.onClick,title:gettext("See next change")},void 0,Tt||(Tt=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right")))}function zt(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.next,onClick:e.onClick,title:gettext("See previous change")},void 0,At||(At=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page")))}function Ht(e){return e.canRevert?(0,o.Z)("div",{className:"col-sm-3 hidden-xs"},void 0,(0,o.Z)(Ct.Z,{className:"btn-default btn-sm btn-block",disabled:e.disabled,onClick:e.onClick,title:gettext("Revert post to state from before this edit.")},void 0,gettext("Revert"))):null}function Ft(e){var t;t=e.edit.url.editor?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.edit.url.editor),user:(0,q.Z)(e.edit.editor_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.edit.editor_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.edit.edited_on.format("LLL")),relative:(0,q.Z)(e.edit.edited_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("By %(edited_by)s %(edited_on)s.")),{edited_by:t,edited_on:n},!0);return(0,o.Z)("p",{dangerouslySetInnerHTML:{__html:a}})}function qt(e){return Object.assign({},e,{edited_on:V()(e.edited_on)})}var Yt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"goToEdit",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;t.setState({isBusy:!0});var n=t.props.post.api.edits;null!==e&&(n+="?edit="+e),_.Z.get(n).then((function(e){t.setState({isReady:!0,isBusy:!1,edit:qt(e)})}),(function(e){t.setState({isReady:!0,isBusy:!1,error:e.detail})}))})),(0,h.Z)((0,c.Z)(t),"revertEdit",(function(e){if(!t.state.isBusy&&window.confirm(gettext("Are you sure you with to revert this post to the state from before this edit?"))){t.setState({isBusy:!0});var n=t.props.post.api.edits+"?edit="+e;_.Z.post(n).then((function(e){var t=$.ZB(e);x.Z.dispatch($.r$(e,t)),k.Z.success(gettext("Post has been reverted to previous state.")),N.Z.hide()}),(function(e){k.Z.apiError(e),t.setState({isBusy:!1})}))}})),t.state={isReady:!1,isBusy:!0,canRevert:e.post.acl.can_edit,error:null,edit:null},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){this.goToEdit()}},{key:"render",value:function(){return this.state.error?(0,o.Z)(Vt,{className:"modal-dialog modal-message"},void 0,(0,o.Z)(nt.Z,{message:this.state.error})):this.state.isReady?(0,o.Z)(Vt,{},void 0,(0,o.Z)(Dt,{canRevert:this.state.canRevert,disabled:this.state.isBusy,edit:this.state.edit,goToEdit:this.goToEdit,revertEdit:this.revertEdit}),(0,o.Z)(Lt,{diff:this.state.edit.diff}),(0,o.Z)(Bt,{canRevert:this.state.canRevert,disabled:this.state.isBusy,edit:this.state.edit,revertEdit:this.revertEdit})):It||(It=(0,o.Z)(Vt,{},void 0,(0,o.Z)(at.Z,{})))}}]),s}(v().Component);function Vt(e){return(0,o.Z)("div",{className:e.className||"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,jt||(jt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Post edits history"))),e.children))}var $t,Gt,Wt,Kt,Jt,Qt,Xt=n(57026),en=n(60471),tn=n(55210);function nn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function an(e){return v().createElement(gn,(0,m.Z)({},e,{Form:bn}))}var sn,on,rn,ln,cn,un,dn,pn,hn,fn,vn,mn,Zn,gn=function(e){(0,u.Z)(n,e);var t=nn(n);function n(e){var a;return(0,r.Z)(this,n),(a=t.call(this,e)).state={isLoaded:!1,isError:!1,categories:[]},a}return(0,l.Z)(n,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(misago.get("THREAD_EDITOR_API")).then((function(t){var n=t.map((function(e){return Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id,post:e.post})}));e.setState({isLoaded:!0,categories:n})}),(function(t){e.setState({isError:t.detail})}))}},{key:"render",value:function(){return this.state.isError?(0,o.Z)(_n,{message:this.state.isError}):this.state.isLoaded?v().createElement(bn,(0,m.Z)({},this.props,{categories:this.state.categories})):$t||($t=(0,o.Z)(yn,{}))}}]),n}(v().Component),bn=function(e){(0,u.Z)(n,e);var t=nn(n);function n(e){var a;return(0,r.Z)(this,n),a=t.call(this,e),(0,h.Z)((0,c.Z)(a),"onCategoryChange",(function(e){var t=e.target.value,n={category:t};a.acl[t].can_pin_threads<n.weight&&(n.weight=0),a.acl[t].can_hide_threads||(n.is_hidden=0),a.acl[t].can_close_threads||(n.is_closed=!1),a.setState(n)})),a.state={isLoading:!1,title:"",category:null,categories:e.categories,weight:0,is_hidden:0,is_closed:!1,validators:{title:[tn.C1()]},errors:{}},a.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],a.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],a.acl={},a.props.categories.forEach((function(e){e.post&&(a.state.category||(a.state.category=e.id),a.acl[e.id]={can_pin_threads:e.post.pin,can_close_threads:e.post.close,can_hide_threads:e.post.hide})})),a}return(0,l.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(k.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.split,{title:this.state.title,category:this.state.category,weight:this.state.weight,is_hidden:this.state.is_hidden,is_closed:this.state.is_closed,posts:[this.props.post.id]})}},{key:"handleSuccess",value:function(e){x.Z.dispatch($.r$(this.props.post,{isDeleted:!0})),N.Z.hide(),k.Z.success(gettext("Selected post was split into new thread."))}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),k.Z.error(gettext("Form contains errors."))):k.Z.apiError(e)}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,o.Z)(g.Z,{label:gettext("Thread weight"),for:"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,o.Z)(g.Z,{label:gettext("Hide thread"),for:"id_is_hidden",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,o.Z)(g.Z,{label:gettext("Close thread"),for:"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"render",value:function(){return(0,o.Z)(Nn,{className:"modal-dialog"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{label:gettext("Thread title"),for:"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},void 0,(0,o.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),Gt||(Gt=(0,o.Z)("div",{className:"clearfix"})),(0,o.Z)(g.Z,{label:gettext("Category"),for:"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},void 0,(0,o.Z)(Xt.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.state.categories})),Wt||(Wt=(0,o.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)(Ct.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Split post")))))}}]),n}(Z.Z);function yn(){return Kt||(Kt=(0,o.Z)(Nn,{className:"modal-dialog"},void 0,(0,o.Z)(at.Z,{})))}function _n(e){return(0,o.Z)(Nn,{className:"modal-dialog modal-message"},void 0,Jt||(Jt=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move this post at the moment.")),(0,o.Z)("p",{},void 0,e.message)))}function Nn(e){return(0,o.Z)("div",{className:e.className,role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Qt||(Qt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Split post into new thread"))),e.children))}function kn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function xn(e){return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,v().createElement(Rn,e),v().createElement(Cn,e),v().createElement(Sn,e),v().createElement(En,e),v().createElement(Ln,e),v().createElement(Pn,e),v().createElement(On,e),v().createElement(Tn,e),v().createElement(An,e),v().createElement(Bn,e),v().createElement(In,e),v().createElement(jn,e),v().createElement(Dn,e))}var wn,Rn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){var t=window.location.protocol+"//";t+=window.location.host,t+=e.props.post.url.index,prompt(gettext("Permament link to this post:"),t)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,sn||(sn=(0,o.Z)("span",{className:"material-icon"},void 0,"link")),gettext("Permament link")))}}]),n}(v().Component),Cn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"EDIT",config:e.props.post.api.editor,submit:e.props.post.api.index})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_edit?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,on||(on=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Edit"))):null}}]),n}(v().Component),Sn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?t.id===n.best_answer||n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,rn||(rn=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Mark as best answer"))):null}}]),n}(v().Component),En=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Je(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id!==n.best_answer?null:n.acl.can_unmark_best_answer?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,ln||(ln=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box_outline_blank")),gettext("Unmark best answer"))):null}}]),n}(v().Component),Ln=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(Yt,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("This post was edited %(edits)s time.","This post was edited %(edits)s times.",this.props.post.edits);return interpolate(n,{edits:this.props.post.edits},!0),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,cn||(cn=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Changes history")))}}]),n}(v().Component),Pn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ze(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_approve&&this.props.post.is_unapproved?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,un||(un=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))):null}}]),n}(v().Component),On=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(St,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_move?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,dn||(dn=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))):null}}]),n}(v().Component),Tn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(an,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_move?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,pn||(pn=(0,o.Z)("span",{className:"material-icon"},void 0,"call_split")),gettext("Split"))):null}}]),n}(v().Component),An=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){He(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_protect?this.props.post.is_protected?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,hn||(hn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Protect"))):null}}]),n}(v().Component),Bn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Fe(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_protect&&this.props.post.is_protected?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,fn||(fn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Remove protection"))):null}}]),n}(v().Component),In=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){qe(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id===n.best_answer?null:t.acl.can_hide?t.is_hidden?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,vn||(vn=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))):null}}]),n}(v().Component),jn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ye(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_unhide&&this.props.post.is_hidden?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,mn||(mn=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))):null}}]),n}(v().Component),Dn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){We(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id===n.best_answer?null:t.acl.can_delete?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,Zn||(Zn=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))):null}}]),n}(v().Component);function Un(e){return(0,o.Z)("div",{className:"pull-right dropdown"},void 0,wn||(wn=(0,o.Z)("button",{"aria-expanded":"true","aria-haspopup":"true",className:"btn btn-default btn-icon dropdown-toggle","data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"expand_more"))),v().createElement(xn,e))}var Mn=n(21981);var zn,Hn=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.post.isSelected?x.Z.dispatch(Mn._H(e.props.post)):x.Z.dispatch(Mn.Ys(e.props.post))})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.thread.acl.can_merge_posts||(e=this.props.post.acl).can_approve||e.can_hide||e.can_protect||e.can_unhide||e.can_delete||e.can_move?(0,o.Z)("div",{className:"pull-right"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-icon",onClick:this.onClick,type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,this.props.post.isSelected?"check_box":"check_box_outline_blank"))):null;var e}}]),s}(v().Component),Fn=n(24678);function qn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function Yn(e){return(0,o.Z)("div",{className:"post-heading"},void 0,v().createElement(Vn,e),v().createElement($n,e),v().createElement(Gn,e),v().createElement(Wn,e),v().createElement(Qn,e),v().createElement(Xn,e),v().createElement(ea,e),v().createElement(Hn,e),v().createElement(Un,e))}function Vn(e){return e.post.is_read?null:(0,o.Z)("span",{className:"label label-unread hidden-xs"},void 0,gettext("New post"))}function $n(e){return e.post.is_read?null:(0,o.Z)("span",{className:"label label-unread visible-xs-inline-block"},void 0,gettext("New"))}function Gn(e){var t=interpolate(gettext("posted %(posted_on)s"),{posted_on:e.post.posted_on.format("LL, LT")},!0);return(0,o.Z)("a",{href:e.post.url.index,className:"btn btn-link posted-on hidden-xs",title:t},void 0,e.post.posted_on.fromNow())}function Wn(e){return(0,o.Z)("a",{href:e.post.url.index,className:"btn btn-link posted-on visible-xs-inline-block"},void 0,e.post.posted_on.fromNow())}var Kn,Jn,Qn=function(e){(0,u.Z)(n,e);var t=qn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(Yt,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("This post was edited %(edits)s time.","This post was edited %(edits)s times.",this.props.post.edits),a=interpolate(n,{edits:this.props.post.edits},!0),s=ngettext("edited %(edits)s time","edited %(edits)s times",this.props.post.edits);return(0,o.Z)("button",{className:"btn btn-link btn-see-edits hidden-xs",onClick:this.onClick,title:a,type:"button"},void 0,interpolate(s,{edits:this.props.post.edits},!0))}}]),n}(v().Component),Xn=function(e){(0,u.Z)(n,e);var t=qn(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("%(edits)s edit","%(edits)s edits",this.props.post.edits);return(0,o.Z)("button",{className:"btn btn-link btn-see-edits visible-xs-inline-block",onClick:this.onClick,type:"button"},void 0,interpolate(n,{edits:this.props.post.edits},!0))}}]),n}(Qn);function ea(e){var t=e.post.poster&&e.post.poster.id===e.user.id,n=e.post.acl.can_protect;return e.user.id&&e.post.is_protected&&(t||n)?(0,o.Z)("span",{className:"label label-protected hidden-xs",title:gettext("This post is protected and may not be edited.")},void 0,zn||(zn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("protected")):null}function ta(e){var t=e.post,n=e.thread;return(0,o.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,o.Z)(Hn,{post:t,thread:n}),(0,o.Z)(Un,{post:t,thread:n}),(0,o.Z)("div",{className:"media"},void 0,Kn||(Kn=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:100})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("span",{className:"media-heading item-title"},void 0,t.poster_name),(0,o.Z)("span",{className:"user-title user-title-anonymous"},void 0,gettext("Removed user")))))}function na(e){var t=e.title,n=e.rank;return n.is_tab||!!t||!!n.title}function aa(e){var t=e.poster,n=ngettext("%(posts)s post","%(posts)s posts",t.posts),a="user-postcount";return na(t)&&(a+=" hidden-xs hidden-sm"),(0,o.Z)("span",{className:a},void 0,interpolate(n,{posts:t.posts},!0))}function sa(e){var t=e.poster,n="hidden-xs";return na(t)&&(n+=" hidden-sm"),(0,o.Z)("span",{className:n},void 0,(0,o.Z)(Fn.ZP,{status:t.status},void 0,(0,o.Z)(Fn.pg,{status:t.status,user:t})))}function ia(e){var t=e.rank,n=e.title||t.title;if(!n&&t.is_tab&&(n=t.name),!n)return null;var a="user-title";return t.css_class&&(a+=" user-title-"+t.css_class),t.is_tab?(0,o.Z)("div",{className:a},void 0,(0,o.Z)("a",{href:t.url},void 0,n)):(0,o.Z)("div",{className:a},void 0,n)}function oa(e){var t=e.post,n=e.thread,a=t.poster;return(0,o.Z)("div",{className:"post-side post-side-registered"},void 0,(0,o.Z)(Hn,{post:t,thread:n}),(0,o.Z)(Un,{post:t,thread:n}),(0,o.Z)("div",{className:"media"},void 0,(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("a",{href:a.url},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:100,user:a}))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("div",{className:"media-heading"},void 0,(0,o.Z)("a",{className:"item-title",href:a.url},void 0,a.username),(0,o.Z)(Fn.ZP,{status:a.status},void 0,(0,o.Z)(Fn.Jj,{status:a.status}))),(0,o.Z)(ia,{rank:a.rank,title:a.title}),(0,o.Z)(sa,{poster:a}),(0,o.Z)(aa,{poster:a}))))}function ra(e){return e.post.poster?v().createElement(oa,e):v().createElement(ta,e)}function la(e){var t="post";return e.post.isDeleted?t="hide":e.post.is_hidden&&!e.post.acl.can_see_hidden&&(t="post post-hidden"),e.post.poster&&e.post.poster.rank.css_class&&(t+=" post-"+e.post.poster.rank.css_class),e.post.is_read||(t+=" post-new"),(0,o.Z)("li",{id:"post-"+e.post.id,className:t},void 0,(0,o.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,v().createElement(ra,e),(0,o.Z)("div",{className:"panel-content"},void 0,v().createElement(Yn,e),v().createElement(Ie,e),v().createElement(De,e),v().createElement(Ue,e),v().createElement(je,e),v().createElement(Oe,e),v().createElement(we,e),v().createElement(mt,e)))))}var ca,ua=function(){return(0,o.Z)("li",{className:"post"},void 0,(0,o.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,(0,o.Z)("div",{className:"post-side post-side-registered"},void 0,(0,o.Z)("div",{className:"media"},void 0,Jn||(Jn=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:"100"})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("span",{className:"media-heading item-title"},void 0,(0,o.Z)("span",{className:"ui-preview-text",style:{width:"80px"}},void 0," ")),(0,o.Z)("span",{className:"user-title user-title-anonymous"},void 0,(0,o.Z)("span",{className:"ui-preview-text",style:{width:"60px"}},void 0," "))))),(0,o.Z)("div",{className:"panel-content"},void 0,(0,o.Z)("div",{className:"post-body"},void 0,(0,o.Z)("article",{className:"misago-markup"},void 0,(0,o.Z)("p",{className:"ui-preview-text",style:{width:"100%"}},void 0," "),(0,o.Z)("p",{className:"ui-preview-text",style:{width:"70%"}},void 0," "),(0,o.Z)("p",{className:"ui-preview-text hidden-xs hidden-sm",style:{width:"85%"}},void 0," ")))))))};function da(e){return e.posts.isLoaded?(0,o.Z)("ul",{className:"posts-list ui-ready"},void 0,e.posts.results.map((function(t){return v().createElement(pa,(0,m.Z)({key:t.id,post:t},e))}))):ca||(ca=(0,o.Z)("ul",{className:"posts-list ui-preview"},void 0,(0,o.Z)(ua,{})))}function pa(e){return e.post.is_event?v().createElement(Ze,e):v().createElement(la,e)}var ha,fa,va,ma=n(59752),Za=n(55547),ga=n(53328),ba=n(59131),ya=n(98936),_a=n(50366),Na=n(16768),ka=function(e){var t=e.thread;return(0,o.Z)("div",{className:"thread-user-card"},void 0,(0,o.Z)("div",{className:"thread-user-card-media"},void 0,t.starter?(0,o.Z)("a",{href:t.url.starter},void 0,(0,o.Z)(B.ZP,{size:40,user:t.starter})):ha||(ha=(0,o.Z)(B.ZP,{size:40}))),(0,o.Z)("div",{className:"thread-user-card-body"},void 0,(0,o.Z)("div",{className:"thread-user-card-header"},void 0,t.starter?(0,o.Z)("a",{className:"item-title",href:t.url.starter,title:gettext("Thread author")},void 0,t.starter.username):(0,o.Z)("span",{className:"item-title",title:gettext("Thread author")},void 0,t.starter_name)),(0,o.Z)("div",{},void 0,(0,o.Z)("span",{className:"text-muted",title:interpolate(gettext("Started on: %(timestamp)s"),{timestamp:t.started_on.format("LLL")},!0)},void 0,t.started_on.fromNow()))))},xa=n(99755),wa=n(12891);var Ra=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"handleSuccess",(function(e){t.handleSuccessUnmounted(e),t.setState({isLoading:!0}),N.Z.hide()})),(0,h.Z)((0,c.Z)(t),"handleSuccessUnmounted",(function(e){x.Z.dispatch(y.Ar()),x.Z.dispatch(y.Vx(e))})),(0,h.Z)((0,c.Z)(t),"handleError",(function(e){x.Z.dispatch(y.Ar()),400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)})),(0,h.Z)((0,c.Z)(t),"onChange",(function(e){t.changeValue("title",e.target.value)})),t.state={isLoading:!1,title:e.thread.title,validators:{title:(0,wa.jn)()},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){if(!this.state.title.trim().length)return k.Z.error(gettext("You have to enter thread title.")),!1;var e=this.validate();return!e.title||(k.Z.error(e.title[0]),!1)}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.patch(this.props.thread.api.index,[{op:"replace",path:"title",value:this.state.title}])}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,fa||(fa=(0,o.Z)(Ca,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_modal_title",label:gettext("Thread title")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_modal_title",onChange:this.onChange,value:this.state.title}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Change title"))))))}}]),s}(Z.Z);function Ca(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,va||(va=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Change title")))}var Sa,Ea,La=n(52753);var Pa,Oa,Ta,Aa,Ba,Ia,ja=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"handleSuccess",(function(e){t.handleSuccessUnmounted(e),t.setState({isLoading:!0})})),(0,h.Z)((0,c.Z)(t),"handleSuccessUnmounted",(function(e){k.Z.success(gettext("Thread has been merged with other one.")),window.location=e.url})),(0,h.Z)((0,c.Z)(t),"handleError",(function(e){x.Z.dispatch(y.Ar()),400===e.status?e.best_answers||e.polls?N.Z.show((0,o.Z)(La.ZP,{api:t.props.thread.api.merge,bestAnswers:e.best_answers,data:{other_thread:t.state.url},polls:e.polls,onError:t.handleError,onSuccess:t.handleSuccessUnmounted})):e.best_answer?k.Z.error(e.best_answer[0]):e.poll?k.Z.error(e.poll[0]):k.Z.error(e.detail):k.Z.apiError(e)})),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.post(this.props.thread.api.merge,{other_thread:this.state.url})}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Sa||(Sa=(0,o.Z)(Da,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to merge with"),help_text:gettext("Merge will delete current thread and move its contents to the thread specified here.")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Merge thread"))))))}}]),s}(Z.Z);function Da(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ea||(Ea=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Merge thread")))}var Ua,Ma,za,Ha,Fa,qa,Ya,Va,$a,Ga,Wa,Ka,Ja=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onCategoryChange",(function(e){t.changeValue("category",e.target.value)})),t.state={isReady:!1,isLoading:!1,isError:!1,category:null,categories:[]},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(E.Z.get("THREAD_EDITOR_API")).then((function(t){var n=null,a=t.map((function(e){return!1===e.post||n||(n=e.id),Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id})}));e.setState({isReady:!0,category:n,categories:a})}),(function(t){e.setState({isError:t.detail})}))}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.patch(this.props.thread.api.index,[{op:"replace",path:"category",value:this.state.category}])}},{key:"handleSuccess",value:function(){_.Z.get(this.props.thread.api.posts.index,{page:this.props.posts.page}).then((function(e){x.Z.dispatch(y.gx(e)),x.Z.dispatch(Mn.zD(e.post_set)),x.Z.dispatch(y.Ar()),k.Z.success(gettext("Thread has been moved.")),N.Z.hide()}),(function(e){x.Z.dispatch(y.Ar()),k.Z.apiError(e)}))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Pa||(Pa=(0,o.Z)(Qa,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_category",label:gettext("New category")},void 0,(0,o.Z)(Xt.Z,{choices:this.state.categories,disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_category",onChange:this.onCategoryChange,value:this.state.category}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Move thread")))))):this.state.isError?(0,o.Z)(es,{message:this.state.isError}):Oa||(Oa=(0,o.Z)(Xa,{}))}}]),s}(Z.Z);function Qa(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ta||(Ta=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move thread")))}function Xa(e){return Aa||(Aa=(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)(Qa,{}),(0,o.Z)(at.Z,{}))))}function es(e){return(0,o.Z)("div",{className:"modal-dialog modal-message",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Ba||(Ba=(0,o.Z)(Qa,{})),Ia||(Ia=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move this thread at the moment.")),(0,o.Z)("p",{},void 0,e.message),(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok")))))}var ts,ns,as,ss,is=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"callApi",(function(t,n){x.Z.dispatch(y.n6()),t.push({op:"add",path:"acl",value:!0}),_.Z.patch(e.props.thread.api.index,t).then((function(e){x.Z.dispatch(y.Vx(e)),x.Z.dispatch(y.Ar()),k.Z.success(n)}),(function(e){x.Z.dispatch(y.Ar()),400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)}))})),(0,h.Z)((0,c.Z)(e),"changeTitle",(function(){N.Z.show((0,o.Z)(Ra,{thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"pinGlobally",(function(){e.callApi([{op:"replace",path:"weight",value:2}],gettext("Thread has been pinned globally."))})),(0,h.Z)((0,c.Z)(e),"pinLocally",(function(){e.callApi([{op:"replace",path:"weight",value:1}],gettext("Thread has been pinned locally."))})),(0,h.Z)((0,c.Z)(e),"unpin",(function(){e.callApi([{op:"replace",path:"weight",value:0}],gettext("Thread has been unpinned."))})),(0,h.Z)((0,c.Z)(e),"approve",(function(){e.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Thread has been approved."))})),(0,h.Z)((0,c.Z)(e),"open",(function(){e.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Thread has been opened."))})),(0,h.Z)((0,c.Z)(e),"close",(function(){e.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Thread has been closed."))})),(0,h.Z)((0,c.Z)(e),"unhide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Thread has been made visible."))})),(0,h.Z)((0,c.Z)(e),"hide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Thread has been made hidden."))})),(0,h.Z)((0,c.Z)(e),"move",(function(){N.Z.show((0,o.Z)(Ja,{posts:e.props.posts,thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"merge",(function(){N.Z.show((0,o.Z)(ja,{thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"delete",(function(){window.confirm(gettext("Are you sure you want to delete this thread?"))&&(x.Z.dispatch(y.n6()),_.Z.delete(e.props.thread.api.index).then((function(t){k.Z.success(gettext("Thread has been deleted.")),window.location=e.props.thread.category.url.index}),(function(e){x.Z.dispatch(y.Ar()),k.Z.apiError(e)})))})),e}return(0,l.Z)(s,[{key:"render",value:function(){var e=this.props.moderation;return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,!!e.edit&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.changeTitle,type:"button"},void 0,Ua||(Ua=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Change title"))),!!e.pinGlobally&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.pinGlobally,type:"button"},void 0,Ma||(Ma=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark")),gettext("Pin globally"))),!!e.pinLocally&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.pinLocally,type:"button"},void 0,za||(za=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark_border")),gettext("Pin locally"))),!!e.unpin&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.unpin,type:"button"},void 0,Ha||(Ha=(0,o.Z)("span",{className:"material-icon"},void 0,"panorama_fish_eye")),gettext("Unpin"))),!!e.move&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.move,type:"button"},void 0,Fa||(Fa=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))),!!e.merge&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.merge,type:"button"},void 0,qa||(qa=(0,o.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge"))),!!e.approve&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.approve,type:"button"},void 0,Ya||(Ya=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))),!!e.open&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.open,type:"button"},void 0,Va||(Va=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Open"))),!!e.close&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.close,type:"button"},void 0,$a||($a=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Close"))),!!e.unhide&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.unhide,type:"button"},void 0,Ga||(Ga=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))),!!e.hide&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.hide,type:"button"},void 0,Wa||(Wa=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))),!!e.delete&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.delete,type:"button"},void 0,Ka||(Ka=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))))}}]),s}(v().Component),os=is,rs=function(e){var t=e.thread,n=e.posts,a=e.moderation;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Thread options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:t.isBusy},void 0,ts||(ts=(0,o.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,o.Z)(os,{thread:t,posts:n,moderation:a}))},ls=n(94184),cs=n.n(ls);function us(e,t,n){var a={subscription:e.subscription};x.Z.dispatch(y.Vx({subscription:t})),_.Z.patch(e.api.index,[{op:"replace",path:"subscription",value:n}]).then((function(e){x.Z.dispatch(y.Vx(e))}),(function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e),x.Z.dispatch(y.Vx(a))}))}var ds,ps,hs,fs,vs,ms,Zs,gs,bs,ys,_s,Ns,ks,xs=function(e){var t,n=e.stickToBottom,a=e.thread;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-outline btn-block","aria-expanded":"true","aria-haspopup":"true","data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,!0===(t=a.subscription)?"star":!1===t?"star_half":"star_border"),function(e){return!0===e?gettext("E-mail"):!1===e?gettext("Enabled"):gettext("Disabled")}(a.subscription)),(0,o.Z)("ul",{className:cs()("dropdown-menu dropdown-menu-right",{"stick-to-bottom":n})},void 0,(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){null!==e.subscription&&us(e,null,"unsubscribe")}(a)}},void 0,ns||(ns=(0,o.Z)("span",{className:"material-icon"},void 0,"star_border")),gettext("Unsubscribe"))),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){!1!==e.subscription&&us(e,!1,"notify")}(a)}},void 0,as||(as=(0,o.Z)("span",{className:"material-icon"},void 0,"star_half")),gettext("Subscribe"))),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){!0!==e.subscription&&us(e,!0,"email")}(a)}},void 0,ss||(ss=(0,o.Z)("span",{className:"material-icon"},void 0,"star")),gettext("Subscribe with e-mail")))))},ws=function(e){var t=e.children,n=e.className;return(0,o.Z)("ul",{className:cs()("breadcrumbs",n)},void 0,t)},Rs=function(e){var t=e.category,n=e.className;return(0,o.Z)("li",{className:cs()("breadcrumbs-item",n)},void 0,(0,o.Z)("a",{href:t.url.index},void 0,(0,o.Z)("span",{className:"material-icon",style:{color:t.color||"inherit"}},void 0,"label"),!!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name hidden-sm hidden-md hidden-lg",title:t.name},void 0,t.short_name),!!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name hidden-xs"},void 0,t.name),!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name"},void 0,t.name)))},Cs=function(e){var t=e.category,n=e.className;return(0,o.Z)("li",{className:cs()("breadcrumbs-item",n)},void 0,(0,o.Z)("a",{href:t.url.index},void 0,ds||(ds=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right")),(0,o.Z)("span",{className:"breadcrumbs-item-name"},void 0,"root_category"===t.special_role?gettext("Threads"):gettext("Private threads"))))},Ss=function(e){var t=e.breadcrumbs;return(0,o.Z)(ws,{},void 0,t.map((function(e){return e.special_role?(0,o.Z)(Cs,{category:e},e.id):(0,o.Z)(Rs,{category:e},e.id)})))},Es=function(e){var t=e.styleName,n=e.thread,a=e.posts,s=e.user,i=e.moderation;return(0,o.Z)(xa.sP,{},void 0,(0,o.Z)(xa.mr,{styleName:t},void 0,(0,o.Z)(xa.gC,{styleName:t},void 0,(0,o.Z)(Ss,{breadcrumbs:n.path}),(0,o.Z)("h1",{},void 0,n.title)),(0,o.Z)(xa.eA,{className:"page-header-thread-details"},void 0,(0,o.Z)(ya.gq,{},void 0,(0,o.Z)(ya.kw,{auto:!0},void 0,(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(ka,{thread:n})),ps||(ps=(0,o.Z)(ya.Z6,{auto:!0})),n.replies>0&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(Na.Z,{thread:n})),function(e){return e.is_closed||e.is_hidden||e.is_unapproved||e.weight>0||e.best_answer||e.has_poll||e.has_unapproved_posts}(n)&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(_a.Z,{thread:n}))),s.is_authenticated&&(0,o.Z)(ya.kw,{},void 0,(0,o.Z)(ya.Z6,{},void 0,(0,o.Z)(xs,{thread:n})),i.enabled&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(rs,{thread:n,posts:a,moderation:i})))))))},Ls=n(92490),Ps=n(69987),Os=function(e){var t=e.baseUrl,n=e.posts;return(0,o.Z)("div",{className:"misago-pagination"},void 0,n.isLoaded&&n.first?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t,title:gettext("Go to first page")},void 0,hs||(hs=(0,o.Z)("span",{className:"material-icon"},void 0,"first_page"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to first page"),type:"button",disabled:!0},void 0,fs||(fs=(0,o.Z)("span",{className:"material-icon"},void 0,"first_page"))),n.isLoaded&&n.previous?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+(n.previous>1?n.previous+"/":""),title:gettext("Go to previous page")},void 0,vs||(vs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to previous page"),type:"button",disabled:!0},void 0,ms||(ms=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left"))),n.isLoaded&&n.next?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.next+"/",title:gettext("Go to next page")},void 0,Zs||(Zs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to next page"),type:"button",disabled:!0},void 0,gs||(gs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right"))),n.isLoaded&&n.last?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.last+"/",title:gettext("Go to last page")},void 0,bs||(bs=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to last page"),type:"button",disabled:!0},void 0,ys||(ys=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page"))))},Ts=function(e){var t=e.posts;return t.more?(0,o.Z)("p",{},void 0,interpolate(ngettext("There is %(more)s more post in this thread.","There are %(more)s more posts in this thread.",t.more),{more:t.more},!0)):(0,o.Z)("p",{},void 0,gettext("There are no more posts in this thread."))};function As(e){var t=e.errors,n=e.posts;return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,_s||(_s=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Moderation"))),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("One or more posts could not be changed:")),(0,o.Z)("ul",{className:"list-unstyled list-errored-items"},void 0,t.map((function(e){return(0,o.Z)(Bs,{errors:e.detail,post:n[e.id]},e.id)}))))))}function Bs(e){var t=e.errors,n=e.post,a=interpolate(gettext("%(username)s on %(posted_on)s"),{posted_on:n.posted_on.format("LL, LT"),username:n.poster_name},!0);return(0,o.Z)("li",{},void 0,(0,o.Z)("h5",{},void 0,a,":"),t.map((function(e,t){return(0,o.Z)("p",{},t,e)})))}function Is(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_unapproved:!1}})),a=t.map((function(e){return{id:e.id,is_unapproved:e.is_unapproved}}));zs(e,[{op:"replace",path:"is-unapproved",value:!1}],n,a)}function js(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_protected:!0}})),a=t.map((function(e){return{id:e.id,is_protected:e.is_protected}}));zs(e,[{op:"replace",path:"is-protected",value:!0}],n,a)}function Ds(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_protected:!1}})),a=t.map((function(e){return{id:e.id,is_protected:e.is_protected}}));zs(e,[{op:"replace",path:"is-protected",value:!1}],n,a)}function Us(e){var t=e.selection,n=t.map((function(t){return{id:t.id,is_hidden:!0,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(t.url,{hidden_by:e.user.url})}})),a=t.map((function(e){return{id:e.id,is_hidden:e.is_hidden,hidden_on:e.hidden_on,hidden_by_name:e.hidden_by_name,url:e.url}}));zs(e,[{op:"replace",path:"is-hidden",value:!0}],n,a)}function Ms(e){var t=e.selection,n=t.map((function(t){return{id:t.id,is_hidden:!1,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(t.url,{hidden_by:e.user.url})}})),a=t.map((function(e){return{id:e.id,is_hidden:e.is_hidden,hidden_on:e.hidden_on,hidden_by_name:e.hidden_by_name,url:e.url}}));zs(e,[{op:"replace",path:"is-hidden",value:!1}],n,a)}function zs(e,t,n,a){var s=e.selection,i=e.thread;n.forEach((function(e){$.r$(e,e)})),x.Z.dispatch(Mn.kR());var r={ops:t,ids:s.map((function(e){return e.id}))};_.Z.patch(i.api.posts.index,r).then((function(e){e.forEach((function(e){x.Z.dispatch($.r$(e,e))}))}),(function(e){if(400!==e.status)return a.forEach((function(e){x.Z.dispatch($.r$(e,e))})),k.Z.apiError(e);var t=[],n=[];e.forEach((function(e){e.detail?(t.push(e),n.push(e.id)):x.Z.dispatch($.r$(e,e)),a.forEach((function(e){-1!==n.indexOf(e)&&x.Z.dispatch($.r$(e,e))}))}));var i={};s.forEach((function(e){i[e.id]=e})),N.Z.show((0,o.Z)(As,{errors:t,posts:i}))}))}function Hs(e){window.confirm(gettext("Are you sure you want to merge selected posts? This action is not reversible!"))&&(e.selection.slice(1).map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),_.Z.post(e.thread.api.posts.merge,{posts:e.selection.map((function(e){return e.id}))}).then((function(e){x.Z.dispatch($.r$(e,$.ZB(e)))}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),e.selection.slice(1).map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!1}))}))})),x.Z.dispatch(Mn.kR()))}function Fs(e){if(window.confirm(gettext("Are you sure you want to delete selected posts? This action is not reversible!"))){e.selection.map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))}));var t=e.selection.map((function(e){return e.id}));_.Z.delete(e.thread.api.posts.index,t).then((function(){}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),e.selection.map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!1}))}))})),x.Z.dispatch(Mn.kR())}}var qs,Ys,Vs,$s,Gs,Ws,Ks=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.move,{new_thread:this.state.url,posts:this.props.selection.map((function(e){return e.id}))})}},{key:"handleSuccess",value:function(e){this.props.selection.forEach((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),N.Z.hide(),k.Z.success(gettext("Selected posts were moved to the other thread."))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail):k.Z.apiError(e)}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Ns||(Ns=(0,o.Z)(Js,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to move posts to")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading},void 0,gettext("Move posts"))))))}}]),s}(Z.Z);function Js(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,ks||(ks=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move posts")))}function Qs(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function Xs(e){return v().createElement(ci,(0,m.Z)({},e,{Form:ui}))}var ei,ti,ni,ai,si,ii,oi,ri,li,ci=function(e){(0,u.Z)(n,e);var t=Qs(n);function n(e){var a;return(0,r.Z)(this,n),(a=t.call(this,e)).state={isLoaded:!1,isError:!1,categories:[]},a}return(0,l.Z)(n,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(misago.get("THREAD_EDITOR_API")).then((function(t){var n=t.map((function(e){return Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id,post:e.post})}));e.setState({isLoaded:!0,categories:n})}),(function(t){e.setState({isError:t.detail})}))}},{key:"render",value:function(){return this.state.isError?(0,o.Z)(pi,{message:this.state.isError}):this.state.isLoaded?v().createElement(ui,(0,m.Z)({},this.props,{categories:this.state.categories})):qs||(qs=(0,o.Z)(di,{}))}}]),n}(v().Component),ui=function(e){(0,u.Z)(n,e);var t=Qs(n);function n(e){var a;return(0,r.Z)(this,n),a=t.call(this,e),(0,h.Z)((0,c.Z)(a),"onCategoryChange",(function(e){var t=e.target.value,n={category:t};a.acl[t].can_pin_threads<n.weight&&(n.weight=0),a.acl[t].can_hide_threads||(n.is_hidden=0),a.acl[t].can_close_threads||(n.is_closed=!1),a.setState(n)})),a.state={isLoading:!1,title:"",category:null,categories:e.categories,weight:0,is_hidden:0,is_closed:!1,validators:{title:[tn.C1()]},errors:{}},a.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],a.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],a.acl={},a.props.categories.forEach((function(e){e.post&&(a.state.category||(a.state.category=e.id),a.acl[e.id]={can_pin_threads:e.post.pin,can_close_threads:e.post.close,can_hide_threads:e.post.hide})})),a}return(0,l.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(k.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.split,{title:this.state.title,category:this.state.category,weight:this.state.weight,is_hidden:this.state.is_hidden,is_closed:this.state.is_closed,posts:this.props.selection.map((function(e){return e.id}))})}},{key:"handleSuccess",value:function(e){this.props.selection.forEach((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),N.Z.hide(),k.Z.success(gettext("Selected posts were split into new thread."))}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),k.Z.error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?N.Z.show((0,o.Z)(As,{errors:e})):k.Z.apiError(e)}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,o.Z)(g.Z,{label:gettext("Thread weight"),for:"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,o.Z)(g.Z,{label:gettext("Hide thread"),for:"id_is_hidden",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,o.Z)(g.Z,{label:gettext("Close thread"),for:"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"render",value:function(){return(0,o.Z)(hi,{className:"modal-dialog"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{label:gettext("Thread title"),for:"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},void 0,(0,o.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),Ys||(Ys=(0,o.Z)("div",{className:"clearfix"})),(0,o.Z)(g.Z,{label:gettext("Category"),for:"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},void 0,(0,o.Z)(Xt.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.state.categories})),Vs||(Vs=(0,o.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)(Ct.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Split posts")))))}}]),n}(Z.Z);function di(){return $s||($s=(0,o.Z)(hi,{className:"modal-dialog"},void 0,(0,o.Z)(at.Z,{})))}function pi(e){return(0,o.Z)(hi,{className:"modal-dialog modal-message"},void 0,Gs||(Gs=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move selected posts at the moment.")),(0,o.Z)("p",{},void 0,e.message),(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}function hi(e){return(0,o.Z)("div",{className:e.className,role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ws||(Ws=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Split posts into new thread"))),e.children))}function fi(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function vi(e){return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,v().createElement(Ri,e),v().createElement(Ci,e),v().createElement(Si,e),v().createElement(Ei,e),v().createElement(Li,e),v().createElement(Pi,e),v().createElement(Ti,e),v().createElement(Oi,e),v().createElement(Ai,e))}var mi,Zi,gi,bi,yi,_i,Ni,ki,xi,wi,Ri=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Is(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_approve&&e.is_unapproved}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ei||(ei=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))):null}}]),n}(v().Component),Ci=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Hs(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.length>1&&this.props.selection.find((function(e){return e.acl.can_merge}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ti||(ti=(0,o.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge"))):null}}]),n}(v().Component),Si=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(Ks,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_move}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ni||(ni=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))):null}}]),n}(v().Component),Ei=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(Xs,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_move}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ai||(ai=(0,o.Z)("span",{className:"material-icon"},void 0,"call_split")),gettext("Split"))):null}}]),n}(v().Component),Li=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){js(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return!e.is_protected&&e.acl.can_protect}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,si||(si=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Protect"))):null}}]),n}(v().Component),Pi=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ds(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.is_protected&&e.acl.can_protect}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ii||(ii=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Unprotect"))):null}}]),n}(v().Component),Oi=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Us(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_hide&&!e.is_hidden}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,oi||(oi=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))):null}}]),n}(v().Component),Ti=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ms(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_unhide&&e.is_hidden}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ri||(ri=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))):null}}]),n}(v().Component),Ai=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Fs(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_delete}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,li||(li=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))):null}}]),n}(v().Component),Bi=function(e){var t=e.thread,n=e.user,a=e.selection,s=e.dropup;return(0,o.Z)("div",{className:s?"dropup":"dropdown"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Posts options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:0===a.length},void 0,mi||(mi=(0,o.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,o.Z)(vi,{thread:t,user:n,selection:a}))},Ii=function(e){var t=e.onClick;return(0,o.Z)("button",{className:"btn btn-primary btn-outline btn-block",type:"button",onClick:t},void 0,Zi||(Zi=(0,o.Z)("span",{className:"material-icon"},void 0,"chat")),gettext("Reply"))},ji=function(e){var t=e.thread,n=e.posts,a=e.user,s=e.selection,i=e.moderation,r=e.onReply;return(0,o.Z)(Ls.o8,{},void 0,(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Os,{baseUrl:t.url.index,posts:n})),(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s,dropup:!0}))),(0,o.Z)(Ls.Z2,{className:"hidden-xs hidden-sm",auto:!0},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ts,{posts:n}))),gi||(gi=(0,o.Z)(Ls.tw,{className:"hidden-md hidden-lg"})),a.is_authenticated&&(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(xs,{thread:t})),t.acl.can_reply&&(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ii,{onClick:r})),i.enabled&&(0,o.Z)(Ls.Eg,{className:"hidden-xs",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s,dropup:!0}))))},Di=function(e){var t=e.compact,n=e.onClick;return(0,o.Z)("button",{className:cs()("btn btn-default btn-outline",{"btn-block":!t,"btn-icon":t}),type:"button",title:t?gettext("Add poll"):null,onClick:n},void 0,bi||(bi=(0,o.Z)("span",{className:"material-icon"},void 0,"poll")),!t&&gettext("Add poll"))},Ui=function(e){var t=e.user,n=e.thread;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Shortcuts"),"aria-expanded":"true","aria-haspopup":"true","data-toggle":"dropdown",type:"button"},void 0,yi||(yi=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark"))),(0,o.Z)("ul",{className:"dropdown-menu"},void 0,t.is_authenticated&&n.is_new&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.new_post},void 0,_i||(_i=(0,o.Z)("span",{className:"material-icon"},void 0,"comment")),gettext("Go to new post"))),n.best_answer&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.best_answer},void 0,Ni||(Ni=(0,o.Z)("span",{className:"material-icon"},void 0,"check_circle")),gettext("Go to best answer"))),n.has_unapproved_posts&&n.acl.can_approve&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.unapproved_post},void 0,ki||(ki=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Go to unapproved post"))),(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.last_post},void 0,xi||(xi=(0,o.Z)("span",{className:"material-icon"},void 0,"reply")),gettext("Go to last post")))))},Mi=function(e){var t=e.thread,n=e.posts,a=e.user,s=e.selection,i=e.moderation,r=e.onPoll,l=e.onReply;return(0,o.Z)(Ls.o8,{},void 0,(0,o.Z)(Ls.Z2,{className:"hidden-xs"},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ui,{thread:t,user:a})),(0,o.Z)(Ls.Eg,{className:"hidden-xs hidden-sm"},void 0,(0,o.Z)(Os,{baseUrl:t.url.index,posts:n}))),wi||(wi=(0,o.Z)(Ls.tw,{})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Z2,{className:"hidden-xs"},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Di,{onClick:r}))),t.acl.can_reply?(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Ui,{thread:t,user:a})),(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ii,{onClick:l})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Di,{onClick:r,compact:!0})),i.enabled&&(0,o.Z)(Ls.Eg,{className:"hidden-xs",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s}))):(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Ui,{thread:t,user:a})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Di,{onClick:r})),i.enabled&&(0,o.Z)(Ls.Eg,{shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s}))))};var zi=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"update",(function(t){x.Z.dispatch(y.gx(t)),x.Z.dispatch(Mn.zD(t.post_set)),t.participants&&x.Z.dispatch(b.gx(t.participants)),t.poll&&x.Z.dispatch(ma.gx(t.poll)),e.setPageTitle()})),(0,h.Z)((0,c.Z)(e),"openPollForm",(function(){ft.Z.open({mode:"POLL",submit:e.props.thread.api.poll,thread:e.props.thread,poll:null})})),(0,h.Z)((0,c.Z)(e),"openReplyForm",(function(){ft.Z.open({mode:"REPLY",config:e.props.thread.api.editor,submit:e.props.thread.api.posts.index})})),e}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){this.shouldFetchData()&&(this.fetchData(),this.setPageTitle()),this.startPollingApi()}},{key:"componentDidUpdate",value:function(){this.shouldFetchData()&&(this.fetchData(),this.startPollingApi(),this.setPageTitle())}},{key:"componentWillUnmount",value:function(){this.stopPollingApi()}},{key:"shouldFetchData",value:function(){return!!this.props.posts.isLoaded&&1*(this.props.params.page||1)!=this.props.posts.page}},{key:"fetchData",value:function(){var e=this;x.Z.dispatch(Mn.Rz()),_.Z.get(this.props.thread.api.posts.index,{page:this.props.params.page||1},"posts").then((function(t){e.update(t)}),(function(e){k.Z.apiError(e)}))}},{key:"startPollingApi",value:function(){Za.Z.start({poll:"thread-posts",url:this.props.thread.api.posts.index,data:{page:this.props.params.page||1},update:this.update,frequency:12e4,delayed:!0})}},{key:"stopPollingApi",value:function(){Za.Z.stop("thread-posts")}},{key:"setPageTitle",value:function(){ga.Z.set({title:this.props.thread.title,parent:this.props.thread.category.name,page:1*(this.props.params.page||1)})}},{key:"render",value:function(){var e=this.props.thread.category,t="page page-thread";e.css_class&&(t+=" page-thread-"+e.css_class);var n="private_threads"===e.special_role?"private-threads":e.css_class||"category-threads",a=Hi(this.props.thread,this.props.user),s=Fi(this.props.posts.results,this.props.user),i=this.props.posts.results.filter((function(e){return e.isSelected}));return(0,o.Z)("div",{className:t},void 0,(0,o.Z)(Es,{styleName:n,thread:this.props.thread,posts:this.props.posts,user:this.props.user,moderation:a}),(0,o.Z)(ba.Z,{},void 0,(0,o.Z)(U,{participants:this.props.participants,thread:this.props.thread,user:this.props.user}),(0,o.Z)(Mi,{thread:this.props.thread,posts:this.props.posts,user:this.props.user,selection:i,moderation:s,onPoll:this.openPollForm,onReply:this.openReplyForm}),(0,o.Z)(z.n,{poll:this.props.poll,thread:this.props.thread,user:this.props.user}),v().createElement(da,this.props),(0,o.Z)(ji,{thread:this.props.thread,posts:this.props.posts,user:this.props.user,selection:i,moderation:s,onReply:this.openReplyForm})))}}]),s}(v().Component),Hi=function(e,t){var n={enabled:!1,edit:!1,approve:!1,close:!1,open:!1,hide:!1,unhide:!1,move:!1,merge:!1,pinGlobally:!1,pinLocally:!1,unpin:!1,delete:!1};return t.is_authenticated?(n.edit=e.acl.can_edit,n.approve=e.acl.can_approve&&e.is_unapproved,n.close=e.acl.can_close&&!e.is_closed,n.open=e.acl.can_close&&e.is_closed,n.hide=e.acl.can_hide&&!e.is_hidden,n.unhide=e.acl.can_unhide&&e.is_hidden,n.move=e.acl.can_move,n.merge=e.acl.can_merge,n.pinGlobally=e.acl.can_pin_globally&&e.weight<2,n.pinLocally=e.acl.can_pin&&1!==e.weight,n.unpin=e.acl.can_pin&&1===e.weight||e.acl.can_pin_globally&&2===e.weight,n.delete=e.acl.can_delete,n.enabled=n.edit||n.approve||n.close||n.open||n.hide||n.unhide||n.move||n.merge||n.pinGlobally||n.pinLocally||n.unpin||n.delete,n):n},Fi=function(e,t){var n={enabled:!1,approve:!1,move:!1,merge:!1,protect:!1,hide:!1,delete:!1};return t.is_authenticated?(e.forEach((function(e){e.is_event||(e.acl.can_approve&&e.is_unapproved&&(n.approve=!0),e.acl.can_move&&(n.move=!0),e.acl.can_merge&&(n.merge=!0),(e.acl.can_protect||e.acl.can_unprotect)&&(n.protect=!0),(e.acl.can_hide||e.acl.can_unhide)&&(n.hide=!0),e.acl.can_delete&&(n.delete=!0),(n.approve||n.move||n.merge||n.protect||n.hide||n.delete)&&(n.enabled=!0))})),n):n};function qi(e){return{participants:e.participants,poll:e.poll,posts:e.posts,thread:e.thread,tick:e.tick.tick,user:e.auth.user}}var Yi=n(39633);E.Z.addInitializer({name:"component:thread",initializer:function(e){var t,n;e.has("THREAD")&&e.has("POSTS")&&(0,Yi.Z)({paths:(t=E.Z.get("THREAD"),n=t.url.index.replace(t.slug+"-"+t.pk,":slug"),[{path:n,component:(0,i.$j)(qi)(zi)},{path:n+":page/",component:(0,i.$j)(qi)(zi)}])})},after:"store"})},72168:function(e,t,n){"use strict";var a=n(37424),s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(57588),h=n.n(p),f=n(82211);function v(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0}function m(e,t){return 2===e.weight&&e.weight>t.weight?-1:2===t.weight&&e.weight<t.weight?1:v(e,t)}function Z(e,t){return e.weight>t.weight?-1:e.weight<t.weight?1:v(e,t)}var g,b,y=n(59131),_=n(27950),N=n(92490),k=n(69987),x=function(e){var t=e.allItems,n=e.parentUrl,a=e.category,i=e.categories,o=e.list;return(0,s.Z)("div",{className:"dropdown threads-category-picker"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline dropdown-toggle btn-block text-ellipsis","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,a&&(0,s.Z)("span",{className:"material-icon",style:{color:a.color||"inherit"}},void 0,"label"),a&&a.short_name&&(0,s.Z)("span",{className:a.short_name&&"hidden-md hidden-lg"},void 0,a.short_name),a?(0,s.Z)("span",{className:a.short_name&&"hidden-xs hidden-sm"},void 0,a.name):t),(0,s.Z)("ul",{className:"dropdown-menu"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)(k.rU,{to:n+o.path},void 0,t)),g||(g=(0,s.Z)("li",{role:"separator",className:"divider"})),i.map((function(e){return(0,s.Z)("li",{},e.id,(0,s.Z)(k.rU,{to:e.url.index+o.path},void 0,(0,s.Z)("span",{className:"material-icon",style:{color:e.color||"inherit"}},void 0,"label"),e.name))}))))},w=function(e){var t=e.baseUrl,n=e.list,a=e.lists;return(0,s.Z)("div",{className:"dropdown threads-list-picker"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline dropdown-toggle btn-block","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,n.longName),(0,s.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,a.map((function(e){return(0,s.Z)("li",{},e.type,(0,s.Z)(k.rU,{to:t+e.path},void 0,e.longName))}))))};var R=function(e){(0,l.Z)(r,e);var t,n,a=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function r(){return(0,i.Z)(this,r),a.apply(this,arguments)}return(0,o.Z)(r,[{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,b||(b=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Threads moderation"))),(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("One or more threads could not be deleted:")),(0,s.Z)("ul",{className:"list-unstyled list-errored-items"},void 0,this.props.errors.map((function(e){return(0,s.Z)(C,{errors:e.errors,thread:e.thread},e.thread.id)}))))))}}]),r}(h().Component);function C(e){var t=e.errors,n=e.thread;return(0,s.Z)("li",{},void 0,(0,s.Z)("h5",{},void 0,n.title),t.map((function(e,t){return(0,s.Z)("p",{},void 0,e)})))}var S,E,L,P,O=n(43345),T=n(96359),A=n(57026),B=n(60471),I=n(32233),j=n(61340),D=n(77751),U=n(52753),M=n(78657),z=n(59801),H=n(53904),F=n(90287),q=n(55210);var Y,V,$=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;for(var n in(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"getFormdata",(function(){return{threads:t.props.threads.map((function(e){return e.id})),title:t.state.title,category:t.state.category,weight:t.state.weight,is_hidden:t.state.is_hidden,is_closed:t.state.is_closed}})),(0,d.Z)((0,r.Z)(t),"handleSuccess",(function(e){t.props.threads.forEach((function(e){t.props.freezeThread(e.id),t.props.deleteThread(e)})),F.Z.dispatch(D.YP()),t.props.addThreads([e]),F.Z.dispatch((0,j.V8)(t.props.route.category,t.props.categoriesMap)),z.Z.hide()})),(0,d.Z)((0,r.Z)(t),"handleError",(function(e){400===e.status?e.best_answers||e.polls?z.Z.show((0,s.Z)(U.ZP,{api:I.Z.get("MERGE_THREADS_API"),bestAnswers:e.best_answers,data:t.getFormdata(),polls:e.polls,onError:t.handleError,onSuccess:t.handleSuccess})):(t.setState({errors:Object.assign({},t.state.errors,e)}),H.Z.error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?z.Z.show((0,s.Z)(R,{errors:e})):e.best_answer?H.Z.error(e.best_answer[0]):e.poll?H.Z.error(e.poll[0]):H.Z.apiError(e)})),(0,d.Z)((0,r.Z)(t),"onCategoryChange",(function(e){var n=e.target.value,a={category:n};t.acl[n].can_pin_threads<a.weight&&(a.weight=0),t.acl[n].can_hide_threads||(a.is_hidden=0),t.acl[n].can_close_threads||(a.is_closed=!1),t.setState(a)})),t.state={isLoading:!1,title:"",category:null,weight:0,is_hidden:0,is_closed:!1,validators:{title:[q.C1()]},errors:{}},t.acl={},e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(n)){var o=e.user.acl.categories[n];t.acl[o.id]=o}return t.categoryChoices=[],e.categories.forEach((function(e){if(e.level>0){var n=t.acl[e.id],a=!n.can_start_threads||e.is_closed&&!n.can_close_threads;t.categoryChoices.push({value:e.id,disabled:a,level:e.level-1,label:e.name}),a||t.state.category||(t.state.category=e.id)}})),t.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],t.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],t}return(0,o.Z)(p,[{key:"clean",value:function(){return!!this.isValid()||(H.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return M.Z.post(I.Z.get("MERGE_THREADS_API"),this.getFormdata())}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,s.Z)(T.Z,{label:gettext("Thread weight"),for:"id_weight"},void 0,(0,s.Z)(B.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,s.Z)(T.Z,{label:gettext("Hide thread"),for:"id_is_hidden"},void 0,(0,s.Z)(B.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,s.Z)(T.Z,{label:gettext("Close thread"),for:"id_is_closed"},void 0,(0,s.Z)(B.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"renderForm",value:function(){return(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(T.Z,{label:gettext("Thread title"),for:"id_title",validation:this.state.errors.title},void 0,(0,s.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),S||(S=(0,s.Z)("div",{className:"clearfix"})),(0,s.Z)(T.Z,{label:gettext("Category"),for:"id_category",validation:this.state.errors.category},void 0,(0,s.Z)(A.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.categoryChoices})),E||(E=(0,s.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)(f.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Merge threads"))))}},{key:"renderCantMergeMessage",value:function(){return(0,s.Z)("div",{className:"modal-body"},void 0,L||(L=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"message-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("You can't move threads because there are no categories you are allowed to move them to.")),(0,s.Z)("p",{},void 0,gettext("You need permission to start threads in category to be able to merge threads to it.")),(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}},{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,P||(P=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Merge threads"))),this.state.category?this.renderForm():this.renderCantMergeMessage()))}}]),p}(O.Z);var G,W,K,J,Q,X,ee,te,ne,ae,se,ie,oe,re,le=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"handleSubmit",(function(e){e.preventDefault(),z.Z.hide(),t.props.callApi([{op:"replace",path:"category",value:t.state.category},{op:"replace",path:"flatten-categories",value:null},{op:"add",path:"acl",value:!0}],gettext("Selected threads were moved."),(function(){F.Z.dispatch((0,j.V8)(t.props.route.category,t.props.categoriesMap));var e=F.Z.getState(),n=e.threads.map((function(e){return e.id}));F.Z.dispatch(D.$6(e.selection.filter((function(e){return-1!==n.indexOf(e)}))))}))})),t.state={category:null};var n={};for(var s in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(s)){var o=e.user.acl.categories[s];n[o.id]=o}return t.categoryChoices=[],e.categories.forEach((function(e){if(e.level>0){var a=n[e.id],s=!a.can_start_threads||e.is_closed&&!a.can_close_threads;t.categoryChoices.push({value:e.id,disabled:s,level:e.level-1,label:e.name}),s||t.state.category||(t.state.category=e.id)}})),t}return(0,o.Z)(p,[{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"renderForm",value:function(){return(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(T.Z,{label:gettext("New category"),for:"id_new_category"},void 0,(0,s.Z)(A.Z,{id:"id_new_category",onChange:this.bindInput("category"),value:this.state.category,choices:this.categoryChoices}))),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)("button",{className:"btn btn-primary"},void 0,gettext("Move threads"))))}},{key:"renderCantMoveMessage",value:function(){return(0,s.Z)("div",{className:"modal-body"},void 0,Y||(Y=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"message-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("You can't move threads because there are no categories you are allowed to move them to.")),(0,s.Z)("p",{},void 0,gettext("You need permission to start threads in category to be able to move threads to it.")),(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,V||(V=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Move threads"))),this.state.category?this.renderForm():this.renderCantMoveMessage()))}}]),p}(O.Z);var ce,ue,de,pe=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(){var e;(0,i.Z)(this,p);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,d.Z)((0,r.Z)(e),"callApi",(function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;e.props.threads.forEach((function(t){e.props.freezeThread(t.id)}));var i=e.props.threads.map((function(e){return e.id}));t.push({op:"add",path:"acl",value:!0}),M.Z.patch(e.props.api,{ids:i,ops:t}).then((function(t){e.props.threads.forEach((function(t){e.props.freezeThread(t.id)})),t.forEach((function(t){e.props.updateThread(t)})),H.Z.success(n),a&&a()}),(function(t){if(e.props.threads.forEach((function(t){e.props.freezeThread(t.id)})),400!==t.status)return H.Z.apiError(t);var n=[],a={};e.props.threads.forEach((function(e){a[e.id]=e})),t.forEach((function(e){var t=e.id,s=e.detail;void 0!==a[t]&&n.push({errors:s,thread:a[t]})})),z.Z.show((0,s.Z)(R,{errors:n}))}))})),(0,d.Z)((0,r.Z)(e),"pinGlobally",(function(){e.callApi([{op:"replace",path:"weight",value:2}],gettext("Selected threads were pinned globally."))})),(0,d.Z)((0,r.Z)(e),"pinLocally",(function(){e.callApi([{op:"replace",path:"weight",value:1}],gettext("Selected threads were pinned locally."))})),(0,d.Z)((0,r.Z)(e),"unpin",(function(){e.callApi([{op:"replace",path:"weight",value:0}],gettext("Selected threads were unpinned."))})),(0,d.Z)((0,r.Z)(e),"approve",(function(){e.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Selected threads were approved."))})),(0,d.Z)((0,r.Z)(e),"open",(function(){e.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Selected threads were opened."))})),(0,d.Z)((0,r.Z)(e),"close",(function(){e.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Selected threads were closed."))})),(0,d.Z)((0,r.Z)(e),"unhide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Selected threads were unhidden."))})),(0,d.Z)((0,r.Z)(e),"hide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Selected threads were hidden."))})),(0,d.Z)((0,r.Z)(e),"move",(function(){z.Z.show((0,s.Z)(le,{callApi:e.callApi,categories:e.props.categories,categoriesMap:e.props.categoriesMap,route:e.props.route,user:e.props.user}))})),(0,d.Z)((0,r.Z)(e),"merge",(function(){var t=[];if(e.props.threads.forEach((function(e){e.acl.can_merge||t.append({id:e.id,title:e.title,errors:[gettext("You don't have permission to merge this thread with others.")]})})),e.props.threads.length<2)H.Z.info(gettext("You have to select at least two threads to merge."));else{if(t.length)return void z.Z.show((0,s.Z)(R,{errors:t}));z.Z.show(h().createElement($,e.props))}})),(0,d.Z)((0,r.Z)(e),"delete",(function(){if(window.confirm(gettext("Are you sure you want to delete selected threads?"))){e.props.threads.map((function(t){e.props.freezeThread(t.id)}));var t=e.props.threads.map((function(e){return e.id}));M.Z.delete(e.props.api,t).then((function(){e.props.threads.map((function(t){e.props.freezeThread(t.id),e.props.deleteThread(t)})),H.Z.success(gettext("Selected threads were deleted."))}),(function(t){if(400===t.status){var n=t.map((function(e){return e.id}));e.props.threads.map((function(t){e.props.freezeThread(t.id),-1===n.indexOf(t.id)&&e.props.deleteThread(t)})),z.Z.show((0,s.Z)(R,{errors:t}))}else H.Z.apiError(t)}))}})),e}return(0,o.Z)(p,[{key:"render",value:function(){var e=this.props,t=e.moderation,n=e.threads,a=0==this.props.selection.length;return(0,s.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",onClick:function(){return F.Z.dispatch(D.$6(n.map((function(e){return e.id}))))}},void 0,G||(G=(0,s.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Select all"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:function(){return F.Z.dispatch(D.YP())}},void 0,W||(W=(0,s.Z)("span",{className:"material-icon"},void 0,"check_box_outline_blank")),gettext("Select none"))),K||(K=(0,s.Z)("li",{role:"separator",className:"divider"})),!!t.can_pin_globally&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.pinGlobally},void 0,J||(J=(0,s.Z)("span",{className:"material-icon"},void 0,"bookmark")),gettext("Pin threads globally"))),!!t.can_pin&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.pinLocally},void 0,Q||(Q=(0,s.Z)("span",{className:"material-icon"},void 0,"bookmark_border")),gettext("Pin threads locally"))),!!t.can_pin&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.unpin},void 0,X||(X=(0,s.Z)("span",{className:"material-icon"},void 0,"panorama_fish_eye")),gettext("Unpin threads"))),!!t.can_move&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.move},void 0,ee||(ee=(0,s.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move threads"))),!!t.can_merge&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.merge},void 0,te||(te=(0,s.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge threads"))),!!t.can_approve&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.approve},void 0,ne||(ne=(0,s.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve threads"))),!!t.can_close&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.open},void 0,ae||(ae=(0,s.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Open threads"))),!!t.can_close&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.close},void 0,se||(se=(0,s.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Close threads"))),!!t.can_unhide&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.unhide},void 0,ie||(ie=(0,s.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide threads"))),!!t.can_hide&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.hide},void 0,oe||(oe=(0,s.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide threads"))),!!t.can_delete&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.delete},void 0,re||(re=(0,s.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete threads"))))}}]),p}(h().Component),he=function(e){var t=e.api,n=e.categoriesMap,a=e.categories,i=e.threads,o=e.addThreads,r=e.freezeThread,l=e.updateThread,c=e.deleteThread,u=e.selection,d=e.moderation,p=e.route,h=e.user,f=e.disabled;return(0,s.Z)("div",{className:"dropdown threads-moderation"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Moderation"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:f},void 0,ce||(ce=(0,s.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,s.Z)(pe,{api:t,categories:a,categoriesMap:n,threads:i,addThreads:o,freezeThread:r,updateThread:l,deleteThread:c,selection:u,moderation:d,route:p,user:h,disabled:f}))},fe=function(e){var t=e.api,n=e.baseUrl,a=e.category,i=e.categories,o=e.categoriesMap,r=e.topCategory,l=e.topCategories,c=e.subCategory,u=e.subCategories,d=e.list,p=e.lists,h=e.threads,v=e.addThreads,m=e.startThread,Z=e.freezeThread,g=e.updateThread,b=e.deleteThread,y=e.selection,k=e.moderation,R=e.route,C=e.user,S=e.disabled;return(0,s.Z)(N.o8,{},void 0,l.length>0&&(0,s.Z)(N.Z2,{},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(x,{allItems:gettext("All categories"),parentUrl:d.path,category:r,categories:l,list:d})),r&&u.length>0&&(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(x,{allItems:gettext("All subcategories"),parentUrl:r.url.index,category:c,categories:u,list:d}))),p.length>1&&(0,s.Z)(N.Z2,{className:"hidden-xs"},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(w,{baseUrl:n,list:d,lists:p}))),ue||(ue=(0,s.Z)(N.tw,{})),!!C.id&&(0,s.Z)(N.Z2,{},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(f.Z,{className:"btn-primary btn-outline btn-block",disabled:S,onClick:function(){_.Z.open(m||{mode:"START",config:misago.get("THREAD_EDITOR_API"),submit:misago.get("THREADS_API"),category:a.id})}},void 0,de||(de=(0,s.Z)("span",{className:"material-icon"},void 0,"chat")),gettext("Start thread"))),!!k.allow&&(0,s.Z)(N.Eg,{shrink:!0},void 0,(0,s.Z)(he,{api:t,categories:i,categoriesMap:o,threads:h.filter((function(e){return-1!==y.indexOf(e.id)})),addThreads:v,freezeThread:Z,updateThread:g,deleteThread:b,selection:y,moderation:k,route:R,user:C,disabled:S}))))};var ve=function(e){(0,l.Z)(r,e);var t,n,a=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function r(){return(0,i.Z)(this,r),a.apply(this,arguments)}return(0,o.Z)(r,[{key:"render",value:function(){var e=this.props.root,t=this.props.route,n=t.category,a=t.categories,i=t.categoriesMap,o=me(e,n,i);return(0,s.Z)(y.Z,{},void 0,(0,s.Z)(fe,{api:this.props.api,baseUrl:n.url.index,category:n,categories:a,categoriesMap:i,topCategory:o,topCategories:a.filter((function(t){return t.parent===e.id})),subCategories:o?a.filter((function(e){return e.parent===o.id})):[],subCategory:2===n.level?n:null,subcategories:this.props.subcategories,list:this.props.route.list,lists:this.props.route.lists,threads:this.props.threads,addThreads:this.props.addThreads,startThread:this.props.startThread,freezeThread:this.props.freezeThread,deleteThread:this.props.deleteThread,updateThread:this.props.updateThread,selection:this.props.selection,moderation:this.props.moderation,route:this.props.route,user:this.props.user,disabled:!this.props.isLoaded||this.props.isBusy||this.props.busyThreads.length}),this.props.children)}}]),r}(h().Component),me=function(e,t,n){return t.parent?t.parent===e.id?t:n[t.parent]:null};function Ze(e){var t={allow:!1,can_approve:0,can_close:0,can_delete:0,can_hide:0,can_merge:0,can_move:0,can_pin:0,can_pin_globally:0,can_unhide:0};return e.forEach((function(e){e.is_unapproved&&e.acl.can_approve>t.can_approve&&(t.can_approve=e.acl.can_approve),e.acl.can_close>t.can_close&&(t.can_close=e.acl.can_close),e.acl.can_delete>t.can_delete&&(t.can_delete=e.acl.can_delete),e.acl.can_hide>t.can_hide&&(t.can_hide=e.acl.can_hide),e.acl.can_merge>t.can_merge&&(t.can_merge=e.acl.can_merge),e.acl.can_move>t.can_move&&(t.can_move=e.acl.can_move),e.acl.can_pin>t.can_pin&&(t.can_pin=e.acl.can_pin),e.acl.can_pin_globally>t.can_pin_globally&&(t.can_pin_globally=e.acl.can_pin_globally),e.is_hidden&&e.acl.can_unhide>t.can_unhide&&(t.can_unhide=e.acl.can_unhide),t.allow=t.can_approve||t.can_close||t.can_delete||t.can_hide||t.can_merge||t.can_move||t.can_pin||t.can_pin_globally||t.can_unhide})),t}var ge,be,ye,_e,Ne=function(e){var t=e.category,n=e.list,a=e.message;return"all"===n.type?a?(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,a),(0,s.Z)("p",{},void 0,gettext("Why not start one yourself?"))):(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,t.special_role?gettext("There are no threads on this forum... yet!"):gettext("There are no threads in this category.")),(0,s.Z)("p",{},void 0,gettext("Why not start one yourself?"))):(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("No threads matching specified criteria were found.")))},ke=n(50366),xe=n(16768),we=function(e){var t=e.thread;return(0,s.Z)("a",{href:t.url.last_post,className:"threads-list-item-last-activity",title:interpolate(gettext("Last activity: %(timestamp)s"),{timestamp:t.last_post_on.format("LLL")},!0)},void 0,t.last_post_on.fromNow(!0))},Re=function(e){var t="threads-list-item-category threads-list-category-label";return e.color&&(t+=" threads-list-category-label-color"),t},Ce=function(e){var t=e.parent,n=e.category;return(0,s.Z)("span",{},void 0,t&&(0,s.Z)("a",{href:t.url.index,className:Re(t)+" threads-list-item-parent-category",style:t.color?{"--label-color":t.color}:null,title:t.short_name?t.name:null},void 0,t.short_name||t.name),(0,s.Z)("a",{href:n.url.index,className:Re(n),style:n.color?{"--label-color":n.color}:null,title:n.short_name?n.name:null},void 0,n.short_name||n.name))},Se=function(e){var t=e.checked,n=e.disabled,a=e.thread;return(0,s.Z)("button",{className:"btn btn-default btn-icon",type:"button",disabled:n,onClick:function(){return F.Z.dispatch(D.wc(a.id))}},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,t?"check_box":"check_box_outline_blank"))},Ee=function(e){var t=e.thread,n="threads-list-icon";return t.is_read||(n+=" threads-list-icon-new"),(0,s.Z)("a",{title:t.is_read?gettext("No new posts"):gettext("New posts"),href:t.is_read?t.url.last_post:t.url.new_post,className:n},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,t.is_read?"chat_bubble_outline":"chat_bubble"))},Le=n(19605),Pe=function(e){var t=e.thread;return t.last_poster?(0,s.Z)("a",{href:t.url.last_poster,className:"threads-list-item-last-poster",title:interpolate(gettext("Last post by: %(poster)s"),{poster:t.last_poster.username},!0)},void 0,(0,s.Z)(Le.ZP,{size:32,user:t.last_poster})):(0,s.Z)("span",{className:"threads-list-item-last-poster",title:interpolate(gettext("Last post by: %(poster)s"),{poster:t.last_poster_name},!0)},void 0,ge||(ge=(0,s.Z)(Le.ZP,{size:32})))};var Oe,Te,Ae,Be,Ie,je,De,Ue,Me,ze,He={unsubscribe:null,notify:!1,email:!0},Fe=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;return(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"update",(function(e){var n=t.props.thread;t.setState({loading:!0}),F.Z.dispatch((0,j.r$)(n,{subscription:He[e]})),M.Z.patch(n.api.index,[{op:"replace",path:"subscription",value:e}]).then((function(){}),(function(e){F.Z.dispatch((0,j.r$)(n,{subscription:He[n.subscription]})),H.Z.apiError(e)})).then((function(){return t.setState({loading:!1})}))})),(0,d.Z)((0,r.Z)(t),"render",(function(){var e=t.state.loading,n=t.props,a=n.disabled,i=n.thread;return(0,s.Z)("ul",{className:"dropdown-menu dropdown-menu-right"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||null===i.subscription,onClick:function(){return t.update("unsubscribe")}},void 0,be||(be=(0,s.Z)("span",{className:"material-icon"},void 0,"star_border")),gettext("Unsubscribe"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||!1===i.subscription,onClick:function(){return t.update("notify")}},void 0,ye||(ye=(0,s.Z)("span",{className:"material-icon"},void 0,"star_half")),gettext("Subscribe with alert"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||!0===i.subscription,onClick:function(){return t.update("email")}},void 0,_e||(_e=(0,s.Z)("span",{className:"material-icon"},void 0,"star")),gettext("Subscribe with e-mail"))))})),t.state={loading:!1},t}return(0,o.Z)(p)}(h().Component),qe=function(e){var t,n=e.disabled,a=e.thread;return(0,s.Z)("div",{className:"dropdown"},void 0,(0,s.Z)("button",{className:"btn btn-default btn-icon",type:"button",title:(t=a.subscription,!0===t?gettext("Subscribed to e-mails"):!1===t?gettext("Subscribed to alerts"):gettext("Not subscribed")),disabled:n,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return!0===e?"star":!1===e?"star_half":"star_border"}(a.subscription))),(0,s.Z)(Fe,{disabled:n,thread:a}))},Ye=function(e){var t=e.activeCategory,n=e.categories,a=e.showOptions,i=e.showSubscription,o=e.thread,r=e.isBusy,l=e.isSelected,c=null,u=null;t.id!==o.category&&(u=n[o.category]).parent&&u.parent!==t.id&&n[u.parent]&&!n[u.parent].special_role&&(c=n[u.parent]);var d=o.is_closed||o.is_hidden||o.is_unapproved||o.weight>0||o.best_answer||o.has_poll||o.has_unapproved_posts,p=!a||o.is_new;return(0,s.Z)("li",{className:"list-group-item threads-list-item"+(r?" threads-list-item-is-busy":"")},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,a&&(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)(Ee,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("a",{href:o.url.index,className:"threads-list-item-title"},void 0,o.title),(0,s.Z)("a",{href:p?o.url.new_post:o.url.index,className:"threads-list-item-title-sm"+(p?" threads-list-item-title-new":"")},void 0,o.title)),a&&o.moderation.length>0&&(0,s.Z)("div",{className:"threads-list-item-col-checkbox-sm"},void 0,(0,s.Z)(Se,{checked:l,disabled:r,thread:o}))),(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,d&&(0,s.Z)("div",{className:"threads-list-item-col-flags"},void 0,(0,s.Z)(ke.Z,{thread:o})),!!u&&(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ce,{parent:c,category:u})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(xe.Z,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)(Pe,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)(we,{thread:o})),a&&i&&(0,s.Z)("div",{className:"threads-list-item-col-subscription"},void 0,(0,s.Z)(qe,{disabled:r,thread:o})),a&&o.moderation.length>0&&(0,s.Z)("div",{className:"threads-list-item-col-checkbox"},void 0,(0,s.Z)(Se,{checked:l,disabled:r,thread:o}))))},Ve=function(e){var t=e.width;return(0,s.Z)("span",{className:"ui-preview-text",style:{width:t+"px"}},void 0," ")},$e=function(e){var t=e.showOptions;return(0,s.Z)("div",{className:"threads-list threads-list-loader"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(Oe||(Oe=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Te||(Te=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"90"})," ",(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"90"})," ",(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"}))))),Ae||(Ae=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"70"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"50"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"50"})))))),(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(Be||(Be=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Ie||(Ie=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"30"})," ",(0,s.Z)(Ve,{width:"60"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"30"})," ",(0,s.Z)(Ve,{width:"60"}))))),je||(je=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"55"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"60"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"70"})))))),(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(De||(De=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Ue||(Ue=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"80"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"80"}))))),Me||(Me=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"75"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"40"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"60"}))))))))},Ge=function(e){var t=e.threads,n=e.onClick;return(0,s.Z)("li",{className:"list-group-item threads-list-update-prompt"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-block threads-list-update-prompt-btn",onClick:n},void 0,ze||(ze=(0,s.Z)("span",{className:"material-icon"},void 0,"cached")),(0,s.Z)("span",{className:"threads-list-update-prompt-message"},void 0,interpolate(ngettext("There is %(threads)s new or updated thread. Click here to show it.","There are %(threads)s new or updated threads. Click here to show them.",t),{threads:t},!0))))},We=function(e){var t=e.list,n=e.categories,a=e.category,i=e.threads,o=e.busyThreads,r=e.selection,l=e.isLoaded,c=e.showOptions,u=e.updatedThreads,d=e.applyUpdate,p=e.emptyMessage;return l?(0,s.Z)("div",{className:"threads-list"},void 0,i.length>0?(0,s.Z)("ul",{className:"list-group"},void 0,u>0&&(0,s.Z)(Ge,{threads:u,onClick:d}),i.map((function(e){return(0,s.Z)(Ye,{activeCategory:a,categories:n,thread:e,showOptions:c,showSubscription:c&&"subscribed"===t.type,isBusy:o.indexOf(e.id)>=0,isSelected:r.indexOf(e.id)>=0},e.id)}))):(0,s.Z)("ul",{className:"list-group"},void 0,u>0&&(0,s.Z)(Ge,{threads:u,onClick:d}),(0,s.Z)(Ne,{category:a,list:t,message:p}))):(0,s.Z)($e,{showOptions:c})},Ke=n(82125),Je=n(55547),Qe=n(53328),Xe=n(20370),et=n(99755);var tt=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadThreads(t.getCategory(),t.state.next)})),(0,d.Z)((0,r.Z)(t),"pollResponse",(function(e){var n,a,s;t.setState({diff:Object.assign({},e,{results:(n=t.props.threads,a=e.results,s={},n.forEach((function(e){s[e.id]=e})),a.filter((function(e){return!s[e.id]||function(e,t){return[e.title===t.title,e.weight===t.weight,e.category===t.category,e.last_post===t.last_post,e.last_poster_name===t.last_poster_name].indexOf(!1)>=0}(s[e.id],e)})))})})})),(0,d.Z)((0,r.Z)(t),"addThreads",(function(e){F.Z.dispatch((0,j.R3)(e,t.getSorting()))})),(0,d.Z)((0,r.Z)(t),"applyDiff",(function(){t.addThreads(t.state.diff.results),t.setState(Object.assign({},t.state.diff,{moderation:Ze(F.Z.getState().threads),diff:{results:[]}}))})),(0,d.Z)((0,r.Z)(t),"freezeThread",(function(e){t.setState((function(t){return{busyThreads:Xe.ZN(t.busyThreads,e)}}))})),(0,d.Z)((0,r.Z)(t),"updateThread",(function(e){F.Z.dispatch((0,j.r$)(e,e,t.getSorting()))})),(0,d.Z)((0,r.Z)(t),"deleteThread",(function(e){F.Z.dispatch((0,j.l8)(e))})),t.state={isMounted:!0,isLoaded:!1,isBusy:!1,diff:{results:[]},moderation:[],busyThreads:[],dropdown:!1,subcategories:[],next:0};var n=t.getCategory();return I.Z.has("THREADS")?t.initWithPreloadedData(n,I.Z.get("THREADS")):t.initWithoutPreloadedData(n),t}return(0,o.Z)(p,[{key:"getCategory",value:function(){return this.props.route.category.special_role?null:this.props.route.category.id}},{key:"initWithPreloadedData",value:function(e,t){this.state=Object.assign(this.state,{moderation:Ze(t.results),subcategories:t.subcategories,next:t.next}),this.startPolling(e)}},{key:"initWithoutPreloadedData",value:function(e){this.loadThreads(e)}},{key:"loadThreads",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;M.Z.get(this.props.options.api,{category:e,list:this.props.route.list.type,start:n||0},"threads").then((function(a){t.state.isMounted&&(0===n?F.Z.dispatch((0,j.ZB)(a.results)):F.Z.dispatch((0,j.R3)(a.results,t.getSorting())),t.setState({isLoaded:!0,isBusy:!1,moderation:Ze(F.Z.getState().threads),subcategories:a.subcategories,next:a.next}),t.startPolling(e))}),(function(e){H.Z.apiError(e)}))}},{key:"startPolling",value:function(e){Je.Z.start({poll:"threads",url:this.props.options.api,data:{category:e,list:this.props.route.list.type},frequency:12e4,update:this.pollResponse})}},{key:"componentDidMount",value:function(){this.setPageTitle(),I.Z.has("THREADS")&&(F.Z.dispatch((0,j.ZB)(I.Z.pop("THREADS").results)),this.setState({isLoaded:!0})),F.Z.dispatch(D.YP())}},{key:"componentWillUnmount",value:function(){this.state.isMounted=!1,Je.Z.stop("threads")}},{key:"getTitle",value:function(){return this.props.options.title?this.props.options.title:(e=this.props.route).category.level?e.category.name:I.Z.get("THREADS_ON_INDEX")?I.Z.get("SETTINGS").index_header?I.Z.get("SETTINGS").index_header:I.Z.get("SETTINGS").forum_name:gettext("Threads");var e}},{key:"setPageTitle",value:function(){var e;this.props.route.category.level||!I.Z.get("THREADS_ON_INDEX")?Qe.Z.set((e=this.props.route).category.level?e.list.path?{title:e.list.longName,parent:e.category.name}:{title:e.category.name}:I.Z.get("THREADS_ON_INDEX")?e.list.path?{title:e.list.longName}:null:e.list.path?{title:e.list.longName,parent:gettext("Threads")}:{title:gettext("Threads")}):this.props.options.title?Qe.Z.set(this.props.options.title):I.Z.get("SETTINGS").index_title?document.title=I.Z.get("SETTINGS").index_title:document.title=I.Z.get("SETTINGS").forum_name}},{key:"getSorting",value:function(){return this.props.route.category.level?Z:m}},{key:"getMoreButton",value:function(){return this.state.next?(0,s.Z)("div",{className:"pager-more"},void 0,(0,s.Z)(f.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy||this.state.busyThreads.length,onClick:this.loadMore},void 0,gettext("Show more"))):null}},{key:"getClassName",value:function(){var e,t="page page-threads";return t+=" page-threads-"+this.props.route.list.type,(e=this.props).route.category.level||!I.Z.get("THREADS_ON_INDEX")||e.options.title||(t+=" page-threads-index"),this.props.route.category.css_class&&(t+=" page-threads-"+this.props.route.category.css_class),t}},{key:"render",value:function(){var e=this.props.route.categories[0],t=this.props.route,n=t.category,a=t.list,i=n.special_role;return(0,s.Z)("div",{className:this.getClassName()},void 0,"root_category"==i&&I.Z.get("THREADS_ON_INDEX")&&I.Z.get("SETTINGS").index_header&&(0,s.Z)(et.Iv,{header:I.Z.get("SETTINGS").index_header,message:n.description&&(0,s.Z)(et.Ql,{message:n.description.html}),styleName:"forum-index"}),"root_category"==i&&!I.Z.get("THREADS_ON_INDEX")&&(0,s.Z)(et.Iv,{header:gettext("Threads"),styleName:"threads"}),"private_threads"==i&&(0,s.Z)(et.Iv,{header:this.props.options.title,message:this.props.options.pageLead&&(0,s.Z)(et.bM,{},void 0,(0,s.Z)("p",{},void 0,this.props.options.pageLead)),styleName:"private-threads"}),!i&&(0,s.Z)(et.Iv,{header:n.name,message:n.description&&(0,s.Z)(et.Ql,{message:n.description.html}),styleName:n.css_class||"category-threads"}),(0,s.Z)(ve,{api:this.props.options.api,root:e,route:this.props.route,user:this.props.user,pageLead:this.props.options.pageLead,threads:this.props.threads,threadsCount:this.state.count,moderation:this.state.moderation,selection:this.props.selection,busyThreads:this.state.busyThreads,addThreads:this.addThreads,startThread:this.props.options.startThread,freezeThread:this.freezeThread,deleteThread:this.deleteThread,updateThread:this.updateThread,isLoaded:this.state.isLoaded,isBusy:this.state.isBusy},void 0,(0,s.Z)(We,{category:n,categories:this.props.route.categoriesMap,list:a,selection:this.props.selection,threads:this.props.threads,updatedThreads:this.state.diff.results.length,applyUpdate:this.applyDiff,showOptions:!!this.props.user.id,isLoaded:this.state.isLoaded,busyThreads:this.state.busyThreads,emptyMessage:this.props.options.emptyMessage}),this.getMoreButton()))}}]),p}(Ke.Z);var nt=n(39633),at="misago:private-threads";function st(e){return e.get("CURRENT_LINK").substr(0,at.length)===at?{api:e.get("PRIVATE_THREADS_API"),startThread:{mode:"START_PRIVATE",submit:I.Z.get("PRIVATE_THREADS_API")},title:gettext("Private threads"),pageLead:gettext("Private threads are threads which only those that started them and those they have invited may see and participate in."),emptyMessage:gettext("You aren't participating in any private threads.")}:{api:e.get("THREADS_API")}}I.Z.addInitializer({name:"component:threads",initializer:function(e){var t,n,s,i,o;e.has("THREADS")&&e.has("CATEGORIES")&&(0,nt.Z)({paths:(t=e.get("user"),n=st(e),s=function(e){var t=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return e.id&&(t.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),t.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),t.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),t.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")}),e.acl.can_see_unapproved_content_lists&&t.push({type:"unapproved",path:"unapproved/",name:gettext("Unapproved"),longName:gettext("Unapproved content")})),t}(t),i=[],o={},I.Z.get("CATEGORIES").forEach((function(e){s.forEach((function(t){var r;o[e.id]=e,i.push({path:e.url.index+t.path,component:(0,a.$j)((r=n,function(e){return{options:r,selection:e.selection,threads:e.threads,tick:e.tick.tick,user:e.auth.user}}))(tt),categories:I.Z.get("CATEGORIES"),categoriesMap:o,category:e,lists:s,list:t})}))})),i)})},after:"store"})},47806:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588),p=n.n(d),h=n(19605),f=n(97326),v=n(4942),m=n(78657),Z=n(53904);function g(e){return e.filter((function(e){return e.results.count>0})).map((function(e){return Object.assign({},e,{count:e.results.count,results:e.results.results.slice(0,5)})}))}var b=n(87462),y="HEADER",_="RESULT",N="FOOTER";function k(e){var t=e.value,n=e.onChange;return(0,i.Z)("input",{"aria-haspopup":"true","aria-expanded":"false","aria-controls":"dropdown-menu dropdown-search-results",autoComplete:"off",className:"form-control",value:t,onChange:n,placeholder:gettext("Search"),role:"combobox",type:"text"})}function x(e){var t=e.children,n=e.onChange,a=e.query;return(0,i.Z)("ul",{className:"dropdown-menu dropdown-search-results",role:"menu"},void 0,(0,i.Z)("li",{className:"form-group"},void 0,(0,i.Z)(k,{value:a,onChange:n})),t)}function w(){return(0,i.Z)("li",{className:"dropdown-search-message"},void 0,gettext("Search returned no results."))}var R,C=n(37848);function S(e){return e.message,R||(R=(0,i.Z)("li",{className:"dropdown-search-loader"},void 0,(0,i.Z)(C.Z,{})))}function E(e){var t=e.provider,n=e.query,a=t.url+"?q="+encodeURI(n),s=ngettext('See full "%(provider)s" results page with %(count)s result.','See full "%(provider)s" results page with %(count)s results.',t.count);return(0,i.Z)("li",{className:"dropdown-search-footer"},void 0,(0,i.Z)("a",{href:a},void 0,interpolate(s,{count:t.count,provider:t.name},!0)))}function L(e){var t=e.provider;return(0,i.Z)("li",{className:"dropdown-search-header"},void 0,t.name)}var P,O,T,A=n(30381),B=n.n(A),I=n(19755);function j(e){var t=e.result,n=(t.poster,t.thread),a=gettext("Posted by %(poster)s on %(posted_on)s in %(category)s.");return(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:t.url.index,className:"dropdown-search-thread"},void 0,(0,i.Z)("h5",{},void 0,n.title),(0,i.Z)("small",{className:"dropdown-search-post-content"},void 0,I(t.content).text()),(0,i.Z)("small",{className:"dropdown-search-post-footer"},void 0,interpolate(a,{category:t.category.name,posted_on:B()(t.posted_on).format("LL"),poster:t.poster_name},!0))))}function D(e){var t=e.result,n=t.rank,a=gettext("%(title)s, joined on %(joined_on)s"),s=t.title||n.title||n.name;return(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:t.url,className:"dropdown-search-user"},void 0,(0,i.Z)("div",{className:"media"},void 0,(0,i.Z)("div",{className:"media-left"},void 0,(0,i.Z)(h.ZP,{size:38,user:t})),(0,i.Z)("div",{className:"media-body"},void 0,(0,i.Z)("h5",{className:"media-heading"},void 0,t.username),(0,i.Z)("small",{},void 0,interpolate(a,{title:s,joined_on:B()(t.joined_on).format("LL")},!0))))))}function U(e){var t=e.provider,n=e.result;return"threads"===t.id?(0,i.Z)(j,{result:n}):(0,i.Z)(D,{result:n})}function M(e){var t=e.provider,n=e.result,a=e.type,s=e.query;return a===y?(0,i.Z)(L,{provider:t}):a===N?(0,i.Z)(E,{provider:t,query:s}):(0,i.Z)(U,{provider:t,result:n})}function z(e,t){for(var n=e.results.length,a=0;a<n;a++){var s=e.results[a];t.push({provider:e,result:s,type:_})}t.push({provider:e,type:N})}function H(e){var t=e.isLoading,n=e.onChange,a=e.results,s=e.query;if(!s.trim().length)return(0,i.Z)(x,{onChange:n,query:s});if(a.length){var o=function(e){var t=[];return function(e,t){for(var n=e.length,a=0;a<n;a++){var s=e[a];t.push({provider:s,type:y}),z(s,t)}}(e,t),t}(a);return(0,i.Z)(x,{onChange:n,query:s},void 0,o.map((function(e){var t=e.type,n=e.provider,a=e.result;return t===_?p().createElement(M,(0,b.Z)({key:[n.id,t,a.id].join("_")},e)):p().createElement(M,(0,b.Z)({key:[n.id,t].join("_"),query:s},e))})))}return t?(0,i.Z)(x,{onChange:n,query:s},void 0,P||(P=(0,i.Z)(S,{}))):(0,i.Z)(x,{onChange:n,query:s},void 0,O||(O=(0,i.Z)(w,{})))}var F=function(e){(0,l.Z)(d,e);var t,n,a=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function d(){var e;return(0,o.Z)(this,d),e=a.call(this),(0,v.Z)((0,f.Z)(e),"onToggle",(function(t){e.setState((function(t,n){return t.isOpen||window.setTimeout((function(){e.container.querySelector("input").focus()}),100),{isOpen:!t.isOpen}}))})),(0,v.Z)((0,f.Z)(e),"onDocumentMouseDown",(function(t){for(var n=!0,a=t.target;null!==a&&a!==document;){if(a===e.container)return void(n=!1);a=a.parentNode}n&&e.setState({isOpen:!1})})),(0,v.Z)((0,f.Z)(e),"onEscape",(function(t){"Escape"===t.key&&e.setState({isOpen:!1})})),(0,v.Z)((0,f.Z)(e),"onChange",(function(t){var n=t.target.value;e.setState({query:n}),e.loadResults(n.trim())})),e.state={isLoading:!1,isOpen:!1,query:"",results:[]},e.intervalId=null,e}return(0,r.Z)(d,[{key:"componentDidMount",value:function(){document.addEventListener("mousedown",this.onDocumentMouseDown),document.addEventListener("keydown",this.onEscape)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("mousedown",this.onDocumentMouseDown),document.removeEventListener("keydown",this.onEscape)}},{key:"loadResults",value:function(e){var t=this;if(e.length){var n=300+300*Math.random();this.intervalId&&window.clearTimeout(this.intervalId),this.setState({isLoading:!0}),this.intervalId=window.setTimeout((function(){m.Z.get(s.Z.get("SEARCH_API"),{q:e}).then((function(e){t.setState({intervalId:null,isLoading:!1,results:g(e)})}),(function(e){Z.Z.apiError(e),t.setState({intervalId:null,isLoading:!1,results:[]})}))}),n)}}},{key:"render",value:function(){var e=this,t="navbar-search dropdown";return this.state.isOpen&&(t+=" open"),p().createElement("div",{className:t,ref:function(t){return e.container=t}},(0,i.Z)("a",{"aria-haspopup":"true","aria-expanded":"false",className:"navbar-icon","data-toggle":"dropdown",href:s.Z.get("SEARCH_URL"),onClick:this.onToggle},void 0,T||(T=(0,i.Z)("i",{className:"material-icon"},void 0,"search"))),(0,i.Z)(H,{isLoading:this.state.isLoading,onChange:this.onChange,results:this.state.results,query:this.state.query}))}}]),d}(p().Component),q=n(82211),Y=n(43345),V=n(96359),$=n(59940);var G,W,K,J=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],Q=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],X=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e))._score=0,t._password=null,t._inputs=[],t.state={loaded:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;$.Z.load().then((function(){e.setState({loaded:!0})}))}},{key:"getScore",value:function(e,t){var n=this,a=!1;return e!==this._password&&(a=!0),t.length!==this._inputs.length?a=!0:t.map((function(e,t){e.trim()!==n._inputs[t]&&(a=!0)})),a&&(this._score=$.Z.scorePassword(e,t),this._password=e,this._inputs=t.map((function(e){return e.trim()}))),this._score}},{key:"render",value:function(){if(!this.state.loaded)return null;var e=this.getScore(this.props.password,this.props.inputs);return(0,i.Z)("div",{className:"help-block password-strength"},void 0,(0,i.Z)("div",{className:"progress"},void 0,(0,i.Z)("div",{className:"progress-bar "+J[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},void 0,(0,i.Z)("span",{className:"sr-only"},void 0,Q[e]))),(0,i.Z)("p",{className:"text-small"},void 0,Q[e]))}}]),s}(p().Component),ee=n(26106),te=n(47235),ne=n(98274),ae=n(93825),se=n(59801),ie=n(93051),oe=n(55210);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ce(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var ue,de=function(e){(0,l.Z)(n,e);var t=ce(n);function n(e){var a;(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"handlePrivacyPolicyChange",(function(e){var t=e.target.value;a.handleToggleAgreement("privacyPolicy",t)})),(0,v.Z)((0,f.Z)(a),"handleTermsOfServiceChange",(function(e){var t=e.target.value;a.handleToggleAgreement("termsOfService",t)})),(0,v.Z)((0,f.Z)(a),"handleToggleAgreement",(function(e,t){a.setState((function(n,s){if(null===n[e]){var i=le(le({},n.errors),{},(0,v.Z)({},e,null));return(0,v.Z)({errors:i},e,t)}var o=a.state.validators[e][0],r=le(le({},n.errors),{},(0,v.Z)({},e,[o(null)]));return(0,v.Z)({errors:r},e,null)}))}));var i=a.props.criteria,r=i.username,l=i.password,c=0;l.forEach((function(e){"MinimumLengthValidator"===e.name&&(c=e.min_length)}));var u={username:[oe.lG(),oe.HR(r.min_length),oe.gS(r.max_length)],email:[oe.Do()],password:[oe.Vb(c)],captcha:ae.ZP.validator()};return s.Z.get("TERMS_OF_SERVICE_ID")&&(u.termsOfService=[oe.fT()]),s.Z.get("PRIVACY_POLICY_ID")&&(u.privacyPolicy=[oe.jA()]),a.state={isLoading:!1,username:"",email:"",password:"",captcha:"",termsOfService:null,privacyPolicy:null,validators:u,errors:{}},a}return(0,r.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(Z.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return m.Z.post(s.Z.get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha,terms_of_service:this.state.termsOfService,privacy_policy:this.state.privacyPolicy})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),e.__all__&&e.__all__.length>0?Z.Z.error(e.__all__[0]):Z.Z.error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,ie.Z)(e.ban),se.Z.hide()):Z.Z.apiError(e)}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-dialog modal-register",role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,G||(G=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Register"))),(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("input",{type:"type",style:{display:"none"}}),(0,i.Z)("input",{type:"password",style:{display:"none"}}),(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(te.Z,{buttonClassName:"col-xs-12 col-sm-6",buttonLabel:gettext("Join with %(site)s"),formLabel:gettext("Or create forum account:")}),(0,i.Z)(V.Z,{label:gettext("Username"),for:"id_username",validation:this.state.errors.username},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),(0,i.Z)(V.Z,{label:gettext("E-mail"),for:"id_email",validation:this.state.errors.email},void 0,(0,i.Z)("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),(0,i.Z)(V.Z,{label:gettext("Password"),for:"id_password",validation:this.state.errors.password,extra:(0,i.Z)(X,{password:this.state.password,inputs:[this.state.username,this.state.email]})},void 0,(0,i.Z)("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),ae.ZP.component({form:this}),(0,i.Z)(ee.Z,{errors:this.state.errors,privacyPolicy:this.state.privacyPolicy,termsOfService:this.state.termsOfService,onPrivacyPolicyChange:this.handlePrivacyPolicyChange,onTermsOfServiceChange:this.handleTermsOfServiceChange})),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,i.Z)(q.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Register account"))))))}}]),n}(Y.Z),pe=function(e){(0,l.Z)(n,e);var t=ce(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-dialog modal-message modal-register",role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,W||(W=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Registration complete"))),(0,i.Z)("div",{className:"modal-body"},void 0,K||(K=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,interpolate(this.getLead(),{username:this.props.username},!0)),(0,i.Z)("p",{},void 0,interpolate(this.getSubscript(),{email:this.props.email},!0)),(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))))}}]),n}(p().Component),he=function(e){(0,l.Z)(n,e);var t=ce(n);function n(e){var a;return(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"completeRegistration",(function(e){"active"===e.activation?(se.Z.hide(),ne.Z.signIn(e)):a.setState({complete:e})})),a.state={complete:!1},a}return(0,r.Z)(n,[{key:"render",value:function(){return this.state.complete?(0,i.Z)(pe,{activation:this.state.complete.activation,email:this.state.complete.email,username:this.state.complete.username}):p().createElement(de,(0,b.Z)({callback:this.completeRegistration},this.props))}}]),n}(p().Component);var fe,ve,me,Ze=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"showRegisterForm",(function(){"closed"===misago.get("SETTINGS").account_activation?Z.Z.info(gettext("New registrations are currently disabled.")):t.state.isLoaded?se.Z.show((0,i.Z)(he,{criteria:t.state.criteria})):(t.setState({isLoading:!0}),Promise.all([ae.ZP.load(),m.Z.get(misago.get("AUTH_CRITERIA_API"))]).then((function(e){t.setState({isLoading:!1,isLoaded:!0,criteria:e[1]}),se.Z.show((0,i.Z)(he,{criteria:e[1]}))}),(function(){t.setState({isLoading:!1}),Z.Z.error(gettext("Registration is currently unavailable due to an error."))})))})),t.state={isLoading:!1,isLoaded:!1,criteria:null},t}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return(0,i.Z)("button",{className:"btn "+this.getClassName(),disabled:this.state.isLoading,onClick:this.showRegisterForm,type:"button"},void 0,gettext("Register"),this.state.isLoading?ue||(ue=(0,i.Z)(C.Z,{})):null)}}]),s}(p().Component),ge=n(14467),be=n(8621);function ye(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var _e,Ne=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showSignInModal",value:function(){se.Z.show(ge.Z)}},{key:"render",value:function(){var e=s.Z.get("SETTINGS").DELEGATE_AUTH;return(0,i.Z)("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},void 0,(0,i.Z)("li",{className:"guest-preview"},void 0,(0,i.Z)("h4",{},void 0,gettext("You are browsing as guest.")),(0,i.Z)("p",{},void 0,gettext("Sign in or register to start and participate in discussions.")),e?(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-xs-12"},void 0,(0,i.Z)("a",{className:"btn btn-default btn-sign-in btn-block",href:s.Z.get("SETTINGS").LOGIN_URL},void 0,gettext("Sign in")))):(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-xs-6"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-sign-in btn-block",onClick:this.showSignInModal,type:"button"},void 0,gettext("Sign in"))),(0,i.Z)("div",{className:"col-xs-6"},void 0,(0,i.Z)(Ze,{className:"btn-primary btn-register btn-block"},void 0,gettext("Register"))))))}}]),n}(p().Component),ke=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return s.Z.get("SETTINGS").DELEGATE_AUTH?(0,i.Z)("div",{className:"nav nav-guest"},void 0,(0,i.Z)("a",{className:"btn navbar-btn btn-default btn-sign-in",href:s.Z.get("SETTINGS").LOGIN_URL},void 0,gettext("Sign in")),fe||(fe=(0,i.Z)("div",{className:"navbar-left"},void 0,(0,i.Z)(F,{})))):(0,i.Z)("div",{className:"nav nav-guest"},void 0,(0,i.Z)("button",{className:"btn navbar-btn btn-default btn-sign-in",onClick:this.showSignInModal,type:"button"},void 0,gettext("Sign in")),(0,i.Z)(Ze,{className:"navbar-btn btn-primary btn-register"},void 0,gettext("Register")),ve||(ve=(0,i.Z)("div",{className:"navbar-left"},void 0,(0,i.Z)(F,{}))))}}]),n}(Ne),xe=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showGuestMenu",value:function(){be.Z.show(Ne)}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",onClick:this.showGuestMenu},void 0,me||(me=(0,i.Z)(h.ZP,{size:"64"})))}}]),n}(p().Component);var we,Re=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"setGravatar",(function(){t.callApi("gravatar")})),(0,v.Z)((0,f.Z)(t),"setGenerated",(function(){t.callApi("generated")})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"callApi",value:function(e){var t=this;if(this.state.isLoading)return!1;this.setState({isLoading:!0}),m.Z.post(this.props.user.api.avatar,{avatar:e}).then((function(e){t.setState({isLoading:!1}),Z.Z.success(e.detail),t.props.onComplete(e)}),(function(e){400===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?(0,i.Z)(q.Z,{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},void 0,gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_src?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-crop",disabled:this.state.isLoading,onClick:this.props.showCrop},void 0,gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-upload",disabled:this.state.isLoading,onClick:this.props.showUpload},void 0,gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-gallery",disabled:this.state.isLoading,onClick:this.props.showGallery},void 0,gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){var e={id:this.props.user.id,avatars:this.props.options.avatars};return this.state.isLoading?(0,i.Z)("div",{className:"avatar-preview preview-loading"},void 0,(0,i.Z)(h.ZP,{size:"200",user:e}),_e||(_e=(0,i.Z)(C.Z,{}))):(0,i.Z)("div",{className:"avatar-preview"},void 0,(0,i.Z)(h.ZP,{size:"200",user:e}))}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-index"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-5"},void 0,this.getAvatarPreview()),(0,i.Z)("div",{className:"col-md-7"},void 0,this.getGravatarButton(),(0,i.Z)(q.Z,{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},void 0,gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),s}(p().Component),Ce=n(19755);var Se,Ee=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"cropAvatar",(function(){if(t.state.isLoading)return!1;t.setState({isLoading:!0});var e=t.props.upload?"crop_tmp":"crop_src",n=Ce(".crop-form"),a=n.cropit("exportZoom"),s=n.cropit("offset");m.Z.post(t.props.user.api.avatar,{avatar:e,crop:{offset:{x:s.x*a,y:s.y*a},zoom:n.cropit("zoom")*a}}).then((function(e){t.props.onComplete(e),Z.Z.success(e.detail)}),(function(e){400===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))})),t.state={isLoading:!1,deviceRatio:1},t}return(0,r.Z)(s,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_src.size}},{key:"getImagePath",value:function(){return this.props.upload?this.props.dataUrl:this.props.options.crop_src.url}},{key:"componentDidMount",value:function(){for(var e=this,t=Ce(".crop-form"),n=this.getAvatarSize(),a=t.width();a<n;)n/=2;var s=this.getAvatarSize()/n;t.width(n),t.cropit({width:n,height:n,exportZoom:s,imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var n=t.cropit("zoom"),a=t.cropit("imageSize");if(a.width>a.height){var s=(a.width*n-e.getAvatarSize())/-2;t.cropit("offset",{x:s,y:0})}else if(a.width<a.height){var i=(a.height*n-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}else t.cropit("offset",{x:0,y:0})}else{var o=e.props.options.crop_src.crop;o&&(t.cropit("zoom",o.zoom),t.cropit("offset",{x:o.x,y:o.y}))}}})}},{key:"componentWillUnmount",value:function(){Ce(".crop-form").cropit("disable")}},{key:"render",value:function(){return(0,i.Z)("div",{},void 0,we||(we=(0,i.Z)("div",{className:"modal-body modal-avatar-crop"},void 0,(0,i.Z)("div",{className:"crop-form"},void 0,(0,i.Z)("div",{className:"cropit-preview"}),(0,i.Z)("input",{type:"range",className:"cropit-image-zoom-input"})))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},void 0,this.props.upload?gettext("Set avatar"):gettext("Crop image")),(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},void 0,gettext("Cancel")))))}}]),s}(p().Component),Le=n(48772);var Pe,Oe=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"pickFile",(function(){document.getElementById("avatar-hidden-upload").click()})),(0,v.Z)((0,f.Z)(t),"uploadFile",(function(){var e=document.getElementById("avatar-hidden-upload").files[0];if(e){var n=t.validateFile(e);if(n)Z.Z.error(n);else{t.setState({image:e,preview:URL.createObjectURL(e),progress:0});var a=new FormData;a.append("avatar","upload"),a.append("image",e),m.Z.upload(t.props.user.api.avatar,a,(function(e){t.setState({progress:e})})).then((function(e){t.setState({options:e,uploaded:e.detail}),Z.Z.info(gettext("Your image has been uploaded and you may now crop it."))}),(function(e){400===e.status||413===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1,image:null,progress:0})):t.props.showError(e)}))}}})),t.state={image:null,preview:null,progress:0,uploaded:null,dataUrl:null},t}return(0,r.Z)(s,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,Le.Z)(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var n=!1,a=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map((function(e){a.substr(-1*e.length)===e&&(n=!0)})),!n&&t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map((function(e){return e.substr(1)}));return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,Le.Z)(e.limit)},!0)}},{key:"getUploadButton",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-upload"},void 0,(0,i.Z)(q.Z,{className:"btn-pick-file",onClick:this.pickFile},void 0,Se||(Se=(0,i.Z)("div",{className:"material-icon"},void 0,"input")),gettext("Select file")),(0,i.Z)("p",{className:"text-muted"},void 0,this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-upload"},void 0,(0,i.Z)("div",{className:"upload-progress"},void 0,(0,i.Z)("img",{src:this.state.preview}),(0,i.Z)("div",{className:"progress"},void 0,(0,i.Z)("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},void 0,(0,i.Z)("span",{className:"sr-only"},void 0,this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return(0,i.Z)("div",{},void 0,(0,i.Z)("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},void 0,gettext("Cancel")))))}},{key:"renderCrop",value:function(){return(0,i.Z)(Ee,{options:this.state.options,user:this.props.user,upload:this.state.uploaded,dataUrl:this.state.preview,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),s}(p().Component),Te=n(69130);function Ae(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var Be,Ie,je,De=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(){var e;(0,o.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,v.Z)((0,f.Z)(e),"select",(function(){e.props.select(e.props.id)})),e}return(0,r.Z)(n,[{key:"getClassName",value:function(){return this.props.selection===this.props.id?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},void 0,(0,i.Z)("img",{src:this.props.url}))}}]),n}(p().Component),Ue=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){var e=this;return(0,i.Z)("div",{className:"avatars-gallery"},void 0,(0,i.Z)("h3",{},void 0,this.props.name),(0,i.Z)("div",{className:"avatars-gallery-images"},void 0,(0,Te.Z)(this.props.images,4,null).map((function(t,n){return(0,i.Z)("div",{className:"row"},n,t.map((function(t,n){return(0,i.Z)("div",{className:"col-xs-3"},n,t?p().createElement(De,(0,b.Z)({disabled:e.props.disabled,select:e.props.select,selection:e.props.selection},t)):Pe||(Pe=(0,i.Z)("div",{className:"blank-avatar"})))})))}))))}}]),n}(p().Component),Me=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(e){var a;return(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"select",(function(e){a.setState({selection:e})})),(0,v.Z)((0,f.Z)(a),"save",(function(){if(a.state.isLoading)return!1;a.setState({isLoading:!0}),m.Z.post(a.props.user.api.avatar,{avatar:"galleries",image:a.state.selection}).then((function(e){a.setState({isLoading:!1}),Z.Z.success(e.detail),a.props.onComplete(e),a.props.showIndex()}),(function(e){400===e.status?(Z.Z.error(e.detail),a.setState({isLoading:!1})):a.props.showError(e)}))})),a.state={selection:null,isLoading:!1},a}return(0,r.Z)(n,[{key:"render",value:function(){var e=this;return(0,i.Z)("div",{},void 0,(0,i.Z)("div",{className:"modal-body modal-avatar-gallery"},void 0,this.props.options.galleries.map((function(t,n){return(0,i.Z)(Ue,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select},n)}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},void 0,this.state.selection?gettext("Save choice"):gettext("Select avatar")),(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},void 0,gettext("Cancel"))))))}}]),n}(p().Component),ze=n(3784),He=n(6935),Fe=n(90287);function qe(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var Ye,Ve,$e,Ge,We,Ke,Je,Qe,Xe,et,tt,nt,at=function(e){(0,l.Z)(n,e);var t=qe(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"getErrorReason",value:function(){return this.props.reason?(0,i.Z)("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-body"},void 0,Be||(Be=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"remove_circle_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.props.message),this.getErrorReason(),(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}}]),n}(p().Component),st=function(e){(0,l.Z)(n,e);var t=qe(n);function n(){var e;(0,o.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,v.Z)((0,f.Z)(e),"showError",(function(t){e.setState({error:t})})),(0,v.Z)((0,f.Z)(e),"showIndex",(function(){e.setState({component:Re})})),(0,v.Z)((0,f.Z)(e),"showUpload",(function(){e.setState({component:Oe})})),(0,v.Z)((0,f.Z)(e),"showCrop",(function(){e.setState({component:Ee})})),(0,v.Z)((0,f.Z)(e),"showGallery",(function(){e.setState({component:Me})})),(0,v.Z)((0,f.Z)(e),"completeFlow",(function(t){Fe.Z.dispatch((0,He.n1)(e.props.user,t.avatars)),e.setState({component:Re,options:t})})),e}return(0,r.Z)(n,[{key:"componentDidMount",value:function(){var e=this;m.Z.get(this.props.user.api.avatar).then((function(t){e.setState({component:Re,options:t,error:null})}),(function(t){e.showError(t)}))}},{key:"getBody",value:function(){return this.state?this.state.error?(0,i.Z)(at,{message:this.state.error.detail,reason:this.state.error.reason}):(0,i.Z)(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):Ie||(Ie=(0,i.Z)(ze.Z,{}))}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,je||(je=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Change your avatar"))),this.getBody()))}}]),n}(p().Component);function it(e){return{user:e.auth.user}}function ot(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var rt=function(e){(0,l.Z)(n,e);var t=ot(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"changeAvatar",value:function(){se.Z.show((0,a.$j)(it)(st))}},{key:"render",value:function(){var e=this.props.user;return(0,i.Z)("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},void 0,(0,i.Z)("li",{className:"dropdown-header"},void 0,(0,i.Z)("strong",{},void 0,e.username),(0,i.Z)("div",{className:"row user-stats"},void 0,(0,i.Z)("div",{className:"col-sm-3"},void 0,Ye||(Ye=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),e.posts),(0,i.Z)("div",{className:"col-sm-3"},void 0,Ve||(Ve=(0,i.Z)("span",{className:"material-icon"},void 0,"forum")),e.threads),(0,i.Z)("div",{className:"col-sm-3"},void 0,$e||($e=(0,i.Z)("span",{className:"material-icon"},void 0,"favorite")),e.followers),(0,i.Z)("div",{className:"col-sm-3"},void 0,Ge||(Ge=(0,i.Z)("span",{className:"material-icon"},void 0,"favorite_outline")),e.following))),We||(We=(0,i.Z)("li",{className:"divider"})),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:e.url},void 0,Ke||(Ke=(0,i.Z)("span",{className:"material-icon"},void 0,"account_circle")),gettext("See your profile"))),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:s.Z.get("USERCP_URL")},void 0,Je||(Je=(0,i.Z)("span",{className:"material-icon"},void 0,"done_all")),gettext("Change options"))),(0,i.Z)("li",{},void 0,(0,i.Z)("button",{className:"btn-link",onClick:this.changeAvatar,type:"button"},void 0,Qe||(Qe=(0,i.Z)("span",{className:"material-icon"},void 0,"portrait")),gettext("Change avatar"))),!!e.acl.can_use_private_threads&&(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:s.Z.get("PRIVATE_THREADS_URL")},void 0,Xe||(Xe=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),gettext("Private threads"),(0,i.Z)(lt,{user:e}))),et||(et=(0,i.Z)("li",{className:"divider"})),(0,i.Z)("li",{className:"dropdown-buttons"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block",onClick:function(){return document.getElementById("hidden-logout-form").submit()},type:"button"},void 0,gettext("Log out"))))}}]),n}(p().Component);function lt(e){var t=e.user;return t.unread_private_threads?(0,i.Z)("span",{className:"badge"},void 0,t.unread_private_threads):null}function ct(e){var t=e.user;return(0,i.Z)("ul",{className:"ul nav navbar-nav nav-user"},void 0,tt||(tt=(0,i.Z)("li",{},void 0,(0,i.Z)(F,{}))),(0,i.Z)(ut,{user:t}),(0,i.Z)("li",{className:"dropdown"},void 0,(0,i.Z)("a",{"aria-haspopup":"true","aria-expanded":"false",className:"dropdown-toggle","data-toggle":"dropdown",href:t.url,role:"button"},void 0,(0,i.Z)(h.ZP,{user:t,size:"64"})),(0,i.Z)(rt,{user:t})))}function ut(e){var t=e.user;if(!t.acl.can_use_private_threads)return null;var n;return n=t.unread_private_threads?gettext("You have unread private threads!"):gettext("Private threads"),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{className:"navbar-icon",href:s.Z.get("PRIVATE_THREADS_URL"),title:n},void 0,nt||(nt=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),t.unread_private_threads>0&&(0,i.Z)("span",{className:"badge"},void 0,t.unread_private_threads)))}function dt(e){return{user:e.auth.user}}var pt,ht,ft=function(e){(0,l.Z)(n,e);var t=ot(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showUserMenu",value:function(){be.Z.showConnected("user-menu",(0,a.$j)(dt)(rt))}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",onClick:this.showUserMenu},void 0,(0,i.Z)(h.ZP,{user:this.props.user,size:"50"}))}}]),n}(p().Component);function vt(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var mt=function(e){(0,l.Z)(n,e);var t=vt(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return this.props.isAuthenticated?(0,i.Z)(ct,{user:this.props.user}):pt||(pt=(0,i.Z)(ke,{}))}}]),n}(p().Component),Zt=function(e){(0,l.Z)(n,e);var t=vt(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return this.props.isAuthenticated?(0,i.Z)(ft,{user:this.props.user}):ht||(ht=(0,i.Z)(xe,{}))}}]),n}(p().Component);function gt(e){return e.auth}var bt=n(4869);s.Z.addInitializer({name:"component:user-menu",initializer:function(){(0,bt.Z)((0,a.$j)(gt)(mt),"user-menu-mount"),(0,bt.Z)((0,a.$j)(gt)(Zt),"user-menu-compact-mount")},after:"store"})},77031:function(e,t,n){"use strict";var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37424),h=n(97326),f=n(4942),v=n(59131),m=n(69987),Z=n(94417),g=function(e,t){var n=e;return"rank"===t.component?n+=t.slug:n+=t.component,n+"/"},b=function(e){var t=e.baseUrl,n=e.page,i=e.pages;return(0,s.Z)("div",{className:"nav-container"},void 0,(0,s.Z)("div",{className:"dropdown hidden-sm hidden-md hidden-lg"},void 0,(0,s.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,a||(a=(0,s.Z)("span",{className:"material-icon"},void 0,"menu")),n.name),(0,s.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,i.map((function(e){var n=g(t,e);return(0,s.Z)("li",{},n,(0,s.Z)(m.rU,{to:n},void 0,e.name))})))),(0,s.Z)("ul",{className:"nav nav-pills hidden-xs",role:"menu"},void 0,i.map((function(e){var n=g(t,e);return(0,s.Z)(Z.Z,{path:n},n,(0,s.Z)(m.rU,{to:n},void 0,e.name))}))))};var y,_,N=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getEmptyMessage",value:function(){return interpolate(gettext("No users have posted any new messages during last %(days)s days."),{days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead"},void 0,this.getEmptyMessage())))}}]),u}(d().Component),k=n(19605),x=n(44039);var w=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return(0,s.Z)("li",{className:this.getClassName()},void 0,y||(y=(0,s.Z)("div",{className:"rank-user-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(k.ZP,{size:"50"})))),(0,s.Z)("div",{className:"rank-user"},void 0,(0,s.Z)("div",{className:"user-name"},void 0,(0,s.Z)("span",{className:"item-title"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,80)+"px"}},void 0," "))),(0,s.Z)("div",{className:"user-details"},void 0,(0,s.Z)("span",{className:"user-status"},void 0,_||(_=(0,s.Z)("span",{className:"status-icon ui-preview-text"},void 0," ")),(0,s.Z)("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:x.e(30,50)+"px"}},void 0," ")),(0,s.Z)("span",{className:"rank-name"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,50)+"px"}},void 0," ")),(0,s.Z)("span",{className:"user-title hidden-xs hidden-sm"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,50)+"px"}},void 0," "))),(0,s.Z)("div",{className:"user-compact-stats visible-xs-block"},void 0,(0,s.Z)("span",{className:"rank-position"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("span",{className:"rank-posts-counted"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))))),(0,s.Z)("div",{className:"rank-position hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("div",{className:"rank-posts-counted hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))),(0,s.Z)("div",{className:"rank-posts-total hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Total posts"))))}}]),u}(d().Component);var R,C=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead ui-preview"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(50,220)+"px"}},void 0," ")),(0,s.Z)("div",{className:"active-posters ui-preview"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,[0,1,2].map((function(e){return(0,s.Z)(w,{hiddenOnMobile:e>0},e)}))))))}}]),u}(d().Component),S=n(24678),E=n(32233);var L=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getClassName",value:function(){return this.props.rank.css_class?"list-group-item list-group-rank-"+this.props.rank.css_class:"list-group-item"}},{key:"getUserStatus",value:function(){return this.props.user.status?(0,s.Z)(S.ZP,{user:this.props.user,status:this.props.user.status},void 0,(0,s.Z)(S.Jj,{user:this.props.user,status:this.props.user.status}),(0,s.Z)(S.pg,{user:this.props.user,status:this.props.user.status,className:"status-label hidden-xs hidden-sm"})):(0,s.Z)("span",{className:"user-status"},void 0,R||(R=(0,s.Z)("span",{className:"status-icon ui-preview-text"},void 0," ")),(0,s.Z)("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:x.e(30,50)+"px"}},void 0," "))}},{key:"getRankName",value:function(){if(!this.props.rank.is_tab)return(0,s.Z)("span",{className:"rank-name item-title"},void 0,this.props.rank.name);var e=E.Z.get("USERS_LIST_URL")+this.props.rank.slug+"/";return(0,s.Z)(m.rU,{to:e,className:"rank-name item-title"},void 0,this.props.rank.name)}},{key:"getUserTitle",value:function(){return this.props.user.title?(0,s.Z)("span",{className:"user-title hidden-xs hidden-sm"},void 0,this.props.user.title):null}},{key:"render",value:function(){return(0,s.Z)("li",{className:this.getClassName()},void 0,(0,s.Z)("div",{className:"rank-user-avatar"},void 0,(0,s.Z)("a",{href:this.props.user.url},void 0,(0,s.Z)(k.ZP,{user:this.props.user,size:50,size2x:64}))),(0,s.Z)("div",{className:"rank-user"},void 0,(0,s.Z)("div",{className:"user-name"},void 0,(0,s.Z)("a",{href:this.props.user.url,className:"item-title"},void 0,this.props.user.username)),(0,s.Z)("div",{className:"user-details"},void 0,this.getUserStatus(),this.getRankName(),this.getUserTitle()),(0,s.Z)("div",{className:"user-compact-stats visible-xs-block"},void 0,(0,s.Z)("span",{className:"rank-position"},void 0,(0,s.Z)("strong",{},void 0,"#",this.props.counter),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("span",{className:"rank-posts-counted"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.meta.score),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))))),(0,s.Z)("div",{className:"rank-position hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,"#",this.props.counter),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("div",{className:"rank-posts-counted hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.meta.score),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))),(0,s.Z)("div",{className:"rank-posts-total hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.posts),(0,s.Z)("small",{},void 0,gettext("Total posts"))))}}]),u}(d().Component);var P=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getLeadMessage",value:function(){var e=ngettext("%(posters)s top poster from last %(days)s days.","%(posters)s top posters from last %(days)s days.",this.props.count);return interpolate(e,{posters:this.props.count,days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead"},void 0,this.getLeadMessage()),(0,s.Z)("div",{className:"active-posters ui-ready"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,this.props.users.map((function(e,t){return(0,s.Z)(L,{user:e,rank:e.rank,counter:t+1},e.id)}))))))}}]),u}(d().Component),O=n(6935),T=n(55547),A=n(90287),B=n(53328);var I=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(e){var t;return(0,i.Z)(this,u),t=a.call(this,e),(0,f.Z)((0,h.Z)(t),"update",(function(e){A.Z.dispatch((0,O.ZB)(e.results)),t.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})})),E.Z.has("USERS")?t.initWithPreloadedData(E.Z.pop("USERS")):t.initWithoutPreloadedData(),t.startPolling(),t}return(0,o.Z)(u,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count},A.Z.dispatch((0,O.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){T.Z.start({poll:"active-posters",url:E.Z.get("USERS_API"),data:{list:"active"},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){B.Z.set({title:this.props.route.extra.name,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){T.Z.stop("active-posters")}},{key:"render",value:function(){var e={name:this.props.route.extra.name};return this.state.isLoaded?this.state.count>0?(0,s.Z)(P,{page:e,users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):(0,s.Z)(N,{page:e,trackedPeriod:this.state.trackedPeriod}):(0,s.Z)(C,{page:e})}}]),u}(d().Component);var j,D=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getClassName",value:function(){return this.props.copy&&this.props.copy.length&&1===function(e,t){if(e=(e+"").toLowerCase(),(t=(t+"").toLowerCase()).length<=0)return 0;for(var n=0,a=0,s=t.length;(a=e.indexOf(t,a))>=0;)n+=1,a+=s;return n}(this.props.copy,"<p")&&-1===this.props.copy.indexOf("<br")?"page-lead lead":"page-lead"}},{key:"render",value:function(){return this.props.copy&&this.props.copy.length?(0,s.Z)("div",{className:this.getClassName(),dangerouslySetInnerHTML:{__html:this.props.copy}}):null}}]),u}(d().Component),U=n(40429),M=function(e){var t=e.users;return(0,s.Z)(U.Z,{cols:4,isReady:!0,showStatus:!0,users:t})};var z,H,F,q,Y,V,$,G,W,K=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){var e;(0,i.Z)(this,u);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,f.Z)((0,h.Z)(e),"render",(function(){return j||(j=(0,s.Z)(U.Z,{cols:4,isReady:!1}))})),e}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}}]),u}(d().Component),J=K,Q=n(92490),X=function(e){var t=e.users;return t.more?(0,s.Z)("p",{},void 0,interpolate(ngettext("There is %(more)s more member with this role.","There are %(more)s more members with this role.",t.more),{more:t.more},!0)):(0,s.Z)("p",{},void 0,gettext("There are no more members with this role."))},ee=function(e){var t=e.baseUrl,n=e.users;return(0,s.Z)("div",{className:"misago-pagination"},void 0,n.isLoaded&&n.first?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t,title:gettext("Go to first page")},void 0,z||(z=(0,s.Z)("span",{className:"material-icon"},void 0,"first_page"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to first page"),type:"button",disabled:!0},void 0,H||(H=(0,s.Z)("span",{className:"material-icon"},void 0,"first_page"))),n.isLoaded&&n.previous?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+(n.previous>1?n.previous+"/":""),title:gettext("Go to previous page")},void 0,F||(F=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_left"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to previous page"),type:"button",disabled:!0},void 0,q||(q=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_left"))),n.isLoaded&&n.next?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.next+"/",title:gettext("Go to next page")},void 0,Y||(Y=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_right"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to next page"),type:"button",disabled:!0},void 0,V||(V=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_right"))),n.isLoaded&&n.last?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.last+"/",title:gettext("Go to last page")},void 0,$||($=(0,s.Z)("span",{className:"material-icon"},void 0,"last_page"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to last page"),type:"button",disabled:!0},void 0,G||(G=(0,s.Z)("span",{className:"material-icon"},void 0,"last_page"))))},te=function(e){var t=e.baseUrl,n=e.users;return(0,s.Z)(Q.o8,{},void 0,(0,s.Z)(Q.Z2,{},void 0,(0,s.Z)(Q.Eg,{},void 0,(0,s.Z)(ee,{baseUrl:t,users:n}))),(0,s.Z)(Q.Z2,{auto:!0},void 0,(0,s.Z)(Q.Eg,{},void 0,(0,s.Z)(X,{users:n}))))};var ne=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(e){var t;return(0,i.Z)(this,u),t=a.call(this,e),(0,f.Z)((0,h.Z)(t),"update",(function(e){A.Z.dispatch((0,O.ZB)(e.results)),e.isLoaded=!0,t.setState(e)})),E.Z.has("USERS")?t.initWithPreloadedData(E.Z.pop("USERS")):t.initWithoutPreloadedData(),t.startPolling(e.params.page||1),t}return(0,o.Z)(u,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),A.Z.dispatch((0,O.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){T.Z.start({poll:"rank-users",url:E.Z.get("USERS_API"),data:{rank:this.props.route.rank.id,page:e},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){B.Z.set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){T.Z.stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(B.Z.set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),T.Z.stop("rank-users"),this.startPolling(e.params.page))}},{key:"getClassName",value:function(){return this.props.route.rank.css_class?"rank-users-list rank-users-"+this.props.route.rank.css_class:"rank-users-list"}},{key:"getRankDescription",value:function(){return this.props.route.rank.description?(0,s.Z)("div",{className:"rank-description"},void 0,(0,s.Z)(D,{copy:this.props.route.rank.description.html})):null}},{key:"getComponent",value:function(){return this.state.isLoaded?this.state.count>0?(0,s.Z)(M,{users:this.props.users}):(0,s.Z)("p",{className:"lead"},void 0,gettext("There are no users with this rank at the moment.")):W||(W=(0,s.Z)(J,{}))}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName()},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:E.Z.get("USERS_LIST_URL"),page:{name:this.props.route.rank.name},pages:E.Z.get("USERS_LISTS")}),this.getRankDescription(),this.getComponent(),(0,s.Z)(te,{baseUrl:E.Z.get("USERS_LIST_URL")+this.props.route.rank.slug+"/",users:this.state})))}}]),u}(d().Component),ae=n(82125),se=n(99755);var ie=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"render",value:function(){return(0,s.Z)("div",{className:"page page-users-lists"},void 0,(0,s.Z)(se.sP,{},void 0,(0,s.Z)(se.mr,{styleName:"users-lists"},void 0,(0,s.Z)(se.gC,{styleName:"users-lists"},void 0,(0,s.Z)("h1",{},void 0,gettext("Users"))))),this.props.children)}}]),u}(ae.Z);function oe(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users}}function re(){var e=[];return E.Z.get("USERS_LISTS").forEach((function(t){"rank"===t.component?(e.push({path:E.Z.get("USERS_LIST_URL")+t.slug+"/:page/",component:(0,p.$j)(oe)(ne),rank:t}),e.push({path:E.Z.get("USERS_LIST_URL")+t.slug+"/",component:(0,p.$j)(oe)(ne),rank:t})):"active-posters"===t.component&&e.push({path:E.Z.get("USERS_LIST_URL")+t.component+"/",component:(0,p.$j)(oe)(I),extra:{name:t.name}})})),e}var le=n(39633);E.Z.addInitializer({name:"component:users",initializer:function(e){e.has("USERS_LISTS")&&(0,le.Z)({root:E.Z.get("USERS_LIST_URL"),component:ie,paths:re()})},after:"store"})},97751:function(e,t,n){"use strict";var a=n(32233),s=n(96142);a.Z.addInitializer({name:"include",initializer:function(e){s.Z.init(e.get("STATIC_URL"))}})},76093:function(e,t,n){"use strict";var a=n(32233),s=n(62833);a.Z.addInitializer({name:"local-storage",initializer:function(){s.Z.init("misago_")}})},19764:function(e,t,n){"use strict";var a=n(32233),s=n(8621);a.Z.addInitializer({name:"dropdown",initializer:function(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&s.Z.init(e)},before:"store"})},47549:function(e,t,n){"use strict";var a=n(32233),s=n(59801);a.Z.addInitializer({name:"modal",initializer:function(){var e=document.getElementById("modal-mount");e&&s.Z.init(e)},before:"store"})},22331:function(e,t,n){"use strict";var a=n(30381),s=n.n(a),i=n(32233),o=n(19755);i.Z.addInitializer({name:"moment",initializer:function(){s().locale(o("html").attr("lang"))}})},21513:function(e,t,n){"use strict";var a=n(32233),s=n(53328);a.Z.addInitializer({name:"page-title",initializer:function(e){s.Z.init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}})},98749:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(53904),o=n(55547);a.Z.addInitializer({name:"polls",initializer:function(){o.Z.init(s.Z,i.Z)}})},98251:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(27950),o=n(53904);a.Z.addInitializer({name:"posting",initializer:function(){i.Z.init(s.Z,o.Z,document.getElementById("posting-placeholder"))}})},6720:function(e,t,n){"use strict";var a=n(32233),s=n(35486),i=n(90287);a.Z.addInitializer({name:"reducer:auth",initializer:function(e){i.Z.addReducer("auth",s.ZP,Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},s.E3))},before:"store"})},10846:function(e,t,n){"use strict";var a=n(32233),s=n(8154),i=n(90287);a.Z.addInitializer({name:"reducer:participants",initializer:function(){var e=null;a.Z.has("THREAD")&&(e=a.Z.get("THREAD").participants),i.Z.addReducer("participants",s.ZP,e||[])},before:"store"})},18255:function(e,t,n){"use strict";var a=n(32233),s=n(59752),i=n(90287);a.Z.addInitializer({name:"reducer:poll",initializer:function(){var e;e=a.Z.has("THREAD")&&a.Z.get("THREAD").poll?(0,s.ZB)(a.Z.get("THREAD").poll):{isBusy:!1},i.Z.addReducer("poll",s.ZP,e)},before:"store"})},14113:function(e,t,n){"use strict";var a=n(32233),s=n(21981),i=n(90287);a.Z.addInitializer({name:"reducer:posts",initializer:function(){var e;e=a.Z.has("POSTS")?(0,s.ZB)(a.Z.get("POSTS")):{isLoaded:!1,isBusy:!1},i.Z.addReducer("posts",s.ZP,e)},before:"store"})},24444:function(e,t,n){"use strict";var a=n(32233),s=n(58598),i=n(90287);a.Z.addInitializer({name:"reducer:profile-details",initializer:function(){var e=null;a.Z.has("PROFILE_DETAILS")&&(e=a.Z.get("PROFILE_DETAILS")),i.Z.addReducer("profile-details",s.ZP,e||{})},before:"store"})},1764:function(e,t,n){"use strict";var a=n(32233),s=n(27519),i=n(90287);a.Z.addInitializer({name:"reducer:profile-hydrate",initializer:function(){a.Z.has("PROFILE")&&i.Z.dispatch((0,s.ZB)(a.Z.get("PROFILE")))},after:"store"})},68351:function(e,t,n){"use strict";var a=n(32233),s=n(27519),i=n(90287);a.Z.addInitializer({name:"reducer:profile",initializer:function(){i.Z.addReducer("profile",s.ZP,{})},before:"store"})},81521:function(e,t,n){"use strict";var a=n(32233),s=n(16427),i=n(90287);a.Z.addInitializer({name:"reducer:search",initializer:function(){i.Z.addReducer("search",s.ZP,Object.assign({},s.E3,{providers:a.Z.get("SEARCH_PROVIDERS")||[],query:a.Z.get("SEARCH_QUERY")||""}))},before:"store"})},19984:function(e,t,n){"use strict";var a=n(32233),s=n(77751),i=n(90287);a.Z.addInitializer({name:"reducer:selection",initializer:function(){i.Z.addReducer("selection",s.ZP,[])},before:"store"})},41229:function(e,t,n){"use strict";var a=n(32233),s=n(27346),i=n(90287);a.Z.addInitializer({name:"reducer:snackbar",initializer:function(){i.Z.addReducer("snackbar",s.ZP,s.E3)},before:"store"})},43589:function(e,t,n){"use strict";var a=n(32233),s=n(7738),i=n(90287);a.Z.addInitializer({name:"reducer:thread",initializer:function(){var e;e=a.Z.has("THREAD")?(0,s.ZB)(a.Z.get("THREAD")):{isBusy:!1},i.Z.addReducer("thread",s.ZP,e)},before:"store"})},24108:function(e,t,n){"use strict";var a=n(32233),s=n(61340),i=n(90287);a.Z.addInitializer({name:"reducer:threads",initializer:function(){i.Z.addReducer("threads",s.ZP,[])},before:"store"})},33934:function(e,t,n){"use strict";var a=n(32233),s=n(85586),i=n(90287);a.Z.addInitializer({name:"reducer:tick",initializer:function(){i.Z.addReducer("tick",s.ZP,s.E3)},before:"store"})},85577:function(e,t,n){"use strict";var a=n(32233),s=n(48927),i=n(90287);a.Z.addInitializer({name:"reducer:username-history",initializer:function(){i.Z.addReducer("username-history",s.ZP,[])},before:"store"})},83526:function(e,t,n){"use strict";var a=n(32233),s=n(6935),i=n(90287);a.Z.addInitializer({name:"reducer:users",initializer:function(){i.Z.addReducer("users",s.ZP,[])},before:"store"})},43060:function(e,t,n){"use strict";var a=n(32233),s=n(53904),i=n(90287);a.Z.addInitializer({name:"snackbar",initializer:function(){s.Z.init(i.Z)},after:"store"})},92292:function(e,t,n){"use strict";var a=n(32233),s=n(90287);a.Z.addInitializer({name:"store",initializer:function(){s.Z.init()},before:"_end"})},33409:function(e,t,n){"use strict";var a=n(32233),s=n(85586),i=n(90287);a.Z.addInitializer({name:"tick-start",initializer:function(){window.setInterval((function(){i.Z.dispatch((0,s.bq)())}),5e4)},after:"store"})},31341:function(e,t,n){"use strict";var a=n(32233),s=n(96142),i=n(59940);a.Z.addInitializer({name:"zxcvbn",initializer:function(){i.Z.init(s.Z)}})},35486:function(e,t,n){"use strict";n.d(t,{E3:function(){return s},ZP:function(){return d},r$:function(){return l},w7:function(){return u},zB:function(){return c}});var a=n(6935),s={signedIn:!1,signedOut:!1},i="PATCH_USER",o="SIGN_IN",r="SIGN_OUT";function l(e){return{type:i,patch:e}}function c(e){return{type:o,user:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return{type:r,soft:e}}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;case o:return Object.assign({},e,{signedIn:t.user});case r:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case a.oB:if(e.isAuthenticated&&e.user.id===t.userId){var l=Object.assign({},e);return l.user=Object.assign({},e.user,{avatars:t.avatars}),l}return e;case a.D9:if(e.isAuthenticated&&e.user.id===t.userId){var c=Object.assign({},e);return c.user=Object.assign({},e.user,{username:t.username,slug:t.slug}),c}return e;default:return e}}},8154:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i},gx:function(){return s}});var a="REPLACE_PARTICIPANTS";function s(e){return{type:a,state:e}}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===a?t.state:e}},59752:function(e,t,n){"use strict";n.d(t,{Ar:function(){return p},Od:function(){return f},ZB:function(){return u},ZH:function(){return r},ZP:function(){return v},b9:function(){return l},gx:function(){return h},n6:function(){return d}});var a=n(30381),s=n.n(a),i="BUSY_POLL",o="RELEASE_POLL",r="REMOVE_POLL",l="REPLACE_POLL",c="UPDATE_POLL";function u(e){var t=!1;for(var n in e.choices)if(e.choices[n].selected){t=!0;break}return Object.assign({},e,{posted_on:s()(e.posted_on),hasSelectedChoices:t,endsOn:e.length?s()(e.posted_on).add(e.length,"days"):null,isBusy:!1})}function d(){return{type:i}}function p(){return{type:o}}function h(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:u(e)}}function f(){return{type:r}}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:return Object.assign({},e,{isBusy:!0});case o:return Object.assign({},e,{isBusy:!1});case r:return{isBusy:!1};case l:return t.state;case c:return Object.assign({},e,t.data);default:return e}}},92747:function(e,t,n){"use strict";n.d(t,{Qu:function(){return o},ZB:function(){return r},ZP:function(){return u},r$:function(){return c}});var a=n(30381),s=n.n(a),i=n(6935),o="PATCH_POST";function r(e){return Object.assign({},e,{posted_on:s()(e.posted_on),updated_on:s()(e.updated_on),hidden_on:s()(e.hidden_on),attachments:e.attachments?e.attachments.map(l):null,poster:e.poster?(0,i.Ru)(e.poster):null,isSelected:!1,isBusy:!1,isDeleted:!1})}function l(e){return Object.assign({},e,{uploaded_on:s()(e.uploaded_on)})}function c(e,t){return{type:o,post:e,patch:t}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===o&&e.id==t.post.id?Object.assign({},e,t.patch):e}},21981:function(e,t,n){"use strict";n.d(t,{R3:function(){return m},Rz:function(){return Z},Vx:function(){return g},Ys:function(){return d},ZB:function(){return f},ZP:function(){return b},_H:function(){return p},kR:function(){return h},zD:function(){return v}});var a=n(92747),s="APPEND_POSTS",i="SELECT_POST",o="DESELECT_POST",r="DESELECT_POSTS",l="LOAD_POSTS",c="UNLOAD_POSTS",u="UPDATE_POSTS";function d(e){return{type:i,post:e}}function p(e){return{type:o,post:e}}function h(){return{type:r}}function f(e){return Object.assign({},e,{results:e.results.map(a.ZB),isLoaded:!0,isBusy:!1,isSelected:!1})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:f(e)}}function m(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:s,state:t?e:f(e)}}function Z(){return{type:c}}function g(e){return{type:u,update:e}}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:var n=e.results.map((function(e){return e.id==t.post.id?Object.assign({},e,{isSelected:!0}):e}));return Object.assign({},e,{results:n});case o:var d=e.results.map((function(e){return e.id==t.post.id?Object.assign({},e,{isSelected:!1}):e}));return Object.assign({},e,{results:d});case r:var p=e.results.map((function(e){return Object.assign({},e,{isSelected:!1})}));return Object.assign({},e,{results:p});case s:var h=e.results.slice(),f=e.results.map((function(e){return e.id}));return t.state.results.map((function(e){-1===f.indexOf(e.id)&&h.push(e)})),Object.assign({},t.state,{results:h});case l:return t.state;case c:return Object.assign({},e,{isLoaded:!1});case u:return Object.assign({},e,t.update);case a.Qu:var v=e.results.map((function(e){return(0,a.ZP)(e,t)}));return Object.assign({},e,{results:v});default:return e}}},58598:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i},zD:function(){return s}});var a="LOAD_DETAILS";function s(e){return{type:a,newState:e}}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===a?t.newState:e}},27519:function(e,t,n){"use strict";n.d(t,{ZB:function(){return l},ZP:function(){return u},r$:function(){return c}});var a=n(30381),s=n.n(a),i=n(6935),o="HYDRATE_PROFILE",r="PATCH_PROFILE";function l(e){return{type:o,profile:e}}function c(e){return{type:r,patch:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return Object.assign({},t.profile,{joined_on:s()(t.profile.joined_on),status:(0,i.$q)(t.profile.status)});case r:return Object.assign({},e,t.patch);case i.oB:return e.id===t.userId?Object.assign({},e,{avatars:t.avatars}):e;case i.D9:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}},16427:function(e,t,n){"use strict";n.d(t,{E3:function(){return o},P0:function(){return l},Vx:function(){return r},ZP:function(){return c}});var a="REPLACE_SEARCH",s="UPDATE_SEARCH",i="UPDATE_SEARCH_PROVIDER",o={isLoading:!1,query:"",providers:[]};function r(e){return{type:s,update:e}}function l(e){return{type:i,provider:e}}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case a:return t.state;case s:return Object.assign({},e,t.update);case i:return Object.assign({},e,{providers:e.providers.map((function(e){return e.id===t.provider.id?t.provider:e}))});default:return e}}},77751:function(e,t,n){"use strict";n.d(t,{$6:function(){return r},YP:function(){return l},ZP:function(){return u},wc:function(){return c}});var a=n(20370),s="SELECT_ALL",i="SELECT_NONE",o="SELECT_ITEM";function r(e){return{type:s,items:e}}function l(){return{type:i}}function c(e){return{type:o,item:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case s:return t.items;case i:return[];case o:return(0,a.ZN)(e,t.item);default:return e}}},27346:function(e,t,n){"use strict";n.d(t,{E3:function(){return a},OV:function(){return o},ZP:function(){return l},p2:function(){return r}});var a={type:"info",message:"",isVisible:!1},s="SHOW_SNACKBAR",i="HIDE_SNACKBAR";function o(e,t){return{type:s,message:e,messageType:t}}function r(){return{type:i}}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===s?{type:t.messageType,message:t.message,isVisible:!0}:t.type===i?Object.assign({},e,{isVisible:!1}):e}},7738:function(e,t,n){"use strict";n.d(t,{Ar:function(){return h},Vx:function(){return v},ZB:function(){return d},ZP:function(){return Z},gx:function(){return f},n6:function(){return p},y8:function(){return m}});var a=n(30381),s=n.n(a),i=n(59752),o="BUSY_THREAD",r="RELEASE_THREAD",l="REPLACE_THREAD",c="UPDATE_THREAD",u="UPDATE_THREAD_ACL";function d(e){return Object.assign({},e,{started_on:s()(e.started_on),last_post_on:s()(e.last_post_on),best_answer_marked_on:e.best_answer_marked_on?s()(e.best_answer_marked_on):null,isBusy:!1})}function p(){return{type:o}}function h(){return{type:r}}function f(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:d(e)}}function v(e){return{type:c,data:e}}function m(e){return{type:u,data:e}}function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return Object.assign({},e,{isBusy:!0});case r:return Object.assign({},e,{isBusy:!1});case i.ZH:return Object.assign({},e,{poll:null});case i.b9:return Object.assign({},e,{poll:t.state});case l:return t.state;case c:return Object.assign({},e,t.data);case u:var n=Object.assign({},e.acl,t.data);return Object.assign({},e,{acl:n});default:return e}}},61340:function(e,t,n){"use strict";n.d(t,{R3:function(){return h},V8:function(){return v},ZB:function(){return m},ZP:function(){return b},l8:function(){return f},r$:function(){return Z}});var a=n(30381),s=n.n(a),i=n(89759),o="APPEND_THREADS",r="DELETE_THREAD",l="FILTER_THREADS",c="HYDRATE_THREADS",u="PATCH_THREAD",d="SORT_THREADS",p=["can_announce","can_approve","can_close","can_hide","can_move","can_merge","can_pin","can_review"];function h(e,t){return{type:o,items:e,sorting:t}}function f(e){return{type:r,thread:e}}function v(e,t){return{type:l,category:e,categoriesMap:t}}function m(e){return{type:c,items:e}}function Z(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:u,thread:e,patch:t,sorting:n}}function g(e){return Object.assign({},e,{started_on:s()(e.started_on),last_post_on:s()(e.last_post_on),moderation:(t=e.acl,n=[],p.forEach((function(e){t[e]&&n.push(e)})),n)});var t,n}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:var n=(0,i.Z)(t.items.map(g),e);return n.sort(t.sorting);case r:return e.filter((function(e){return e.id!==t.thread.id}));case l:return e.filter((function(e){var n=t.categoriesMap[e.category];return n.lft>=t.category.lft&&n.rght<=t.category.rght||2==e.weight}));case c:return t.items.map(g);case u:var a=e.map((function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e}));return t.sorting?a.sort(t.sorting):a;case d:return e.sort(t.sorting);default:return e}}},85586:function(e,t,n){"use strict";n.d(t,{E3:function(){return a},ZP:function(){return o},bq:function(){return i}});var a={tick:0},s="TICK";function i(){return{type:s}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}},48927:function(e,t,n){"use strict";n.d(t,{KP:function(){return u},R3:function(){return d},ZB:function(){return p},ZP:function(){return f}});var a=n(30381),s=n.n(a),i=n(6935),o=n(89759),r="ADD_NAME_CHANGE",l="APPEND_HISTORY",c="HYDRATE_HISTORY";function u(e,t,n){return{type:r,change:e,user:t,changedBy:n}}function d(e){return{type:l,items:e}}function p(e){return{type:c,items:e}}function h(e){return Object.assign({},e,{changed_on:s()(e.changed_on)})}function f(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case r:var n=e.slice();return n.unshift({id:Math.floor(Date.now()/1e3),changed_by:t.changedBy,changed_by_username:t.changedBy.username,changed_on:s()(),new_username:t.change.username,old_username:t.user.username}),n;case l:return(0,o.Z)(e,t.items.map(h));case c:return t.items.map(h);case i.oB:return e.map((function(e){return(e=Object.assign({},e)).changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatars:t.avatars})),e}));case i.D9:return e.map((function(e){return(e=Object.assign({},e)).changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{username:t.username,slug:t.slug})),Object.assign({},e)}));default:return e}}},6935:function(e,t,n){"use strict";n.d(t,{$q:function(){return p},D9:function(){return c},R3:function(){return u},Ru:function(){return h},ZB:function(){return d},ZP:function(){return m},_S:function(){return v},n1:function(){return f},oB:function(){return l}});var a=n(30381),s=n.n(a),i=n(89759),o="APPEND_USERS",r="HYDRATE_USERS",l="UPDATE_AVATAR",c="UPDATE_USERNAME";function u(e){return{type:o,items:e}}function d(e){return{type:r,items:e}}function p(e){return e?Object.assign({},e,{last_click:e.last_click?s()(e.last_click):null,banned_until:e.banned_until?s()(e.banned_until):null}):null}function h(e){return Object.assign({},e,{joined_on:s()(e.joined_on),status:p(e.status)})}function f(e,t){return{type:l,userId:e.id,avatars:t}}function v(e,t,n){return{type:c,userId:e.id,username:t,slug:n}}function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return(0,i.Z)(e,t.items.map(h));case r:return t.items.map(h);case l:return e.map((function(e){return(e=Object.assign({},e)).id===t.userId&&(e.avatars=t.avatars),e}));default:return e}}},78657:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(19755),o=function(){function e(){(0,a.Z)(this,e),this._cookieName=null,this._csrfToken=null,this._locks={}}return(0,s.Z)(e,[{key:"init",value:function(e){this._cookieName=e}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,n){var a=this;return new Promise((function(s,o){var r={url:t,method:e,headers:{"X-CSRFToken":a.getCsrfToken()},data:n?JSON.stringify(n):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){s(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};i.ajax(r)}))}},{key:"get",value:function(e,t,n){if(t&&(e+="?"+i.param(t)),n){var a=this;return this._locks[n]&&(this._locks[n].url=e),this._locks[n]&&this._locks[n].waiter?{then:function(){}}:this._locks[n]&&this._locks[n].wait?(this._locks[n].waiter=!0,new Promise((function(t,s){var i=function e(i){a._locks[n].wait?window.setTimeout((function(){e(i)}),300):a._locks[n].url!==i?e(a._locks[n].url):(a._locks[n].waiter=!1,a.request("GET",a._locks[n].url).then((function(s){a._locks[n].url===i?t(s):(a._locks[n].waiter=!0,e(a._locks[n].url))}),(function(t){a._locks[n].url===i?s(t):(a._locks[n].waiter=!0,e(a._locks[n].url))})))};window.setTimeout((function(){i(e)}),300)}))):(this._locks[n]={url:e,wait:!0,waiter:!1},new Promise((function(t,s){a.request("GET",e).then((function(s){a._locks[n].wait=!1,a._locks[n].url===e&&t(s)}),(function(t){a._locks[n].wait=!1,a._locks[n].url===e&&s(t)}))})))}return this.request("GET",e)}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e,t){return this.request("DELETE",e,t)}},{key:"upload",value:function(e,t,n){var a=this;return new Promise((function(s,o){var r={url:e,method:"POST",headers:{"X-CSRFToken":a.getCsrfToken()},data:t,contentType:!1,processData:!1,xhr:function(){var e=new window.XMLHttpRequest;return e.upload.addEventListener("progress",(function(e){e.lengthComputable&&n(Math.round(e.loaded/e.total*100))}),!1),e},success:function(e){s(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),413!==t.status||t.detail||(t.detail=gettext("Upload was rejected by server as too large.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};i.ajax(r)}))}}]),e}();t.Z=new o},98274:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(35486),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this,t=this._store.getState().auth;this._local.watch("auth",(function(n){n.isAuthenticated?e._store.dispatch((0,i.zB)({username:n.username})):t.isAuthenticated&&e._store.dispatch((0,i.w7)())})),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,i.zB)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,i.w7)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,i.w7)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();t.Z=new o},93825:function(e,t,n){"use strict";var a,s=n(22928),i=n(79340),o=n(6215),r=n(61120),l=n(15671),c=n(43144),u=n(57588),d=n.n(u),p=n(96359);function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,r.Z)(e);if(t){var s=(0,r.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,o.Z)(this,n)}}var f=function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,[{key:"init",value:function(e,t,n,a){this._context=e,this._ajax=t,this._include=n,this._snackbar=a}}]),e}(),v=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){return new Promise((function(e){e()}))}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),n}(f),m=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){var e=this;return new Promise((function(t,n){e._ajax.get(e._context.get("CAPTCHA_API")).then((function(n){e.question=n.question,e.helpText=n.help_text,t()}),(function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()}))}))}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return(0,s.Z)(p.Z,{label:this.question,for:"id_captcha",labelClass:e.labelClass||"",controlClass:e.controlClass||"",validation:e.form.state.errors.captcha,helpText:this.helpText||null},void 0,(0,s.Z)("input",{"aria-describedby":"id_captcha_status",className:"form-control",disabled:e.form.state.isLoading,id:"id_captcha",onChange:e.form.bindInput("captcha"),type:"text",value:e.form.state.captcha}))}}]),n}(f),Z=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return a||(a=(0,s.Z)("div",{id:"recaptcha"}))}}]),n}(d().Component),g=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise((function(e){!function t(){"undefined"==typeof grecaptcha?window.setTimeout((function(){t()}),200):e()}()}))}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return(0,s.Z)(p.Z,{label:gettext("Please solve the quick test"),for:"id_captcha",labelClass:e.labelClass||"",controlClass:e.controlClass||"",validation:e.form.state.errors.captcha,helpText:gettext("This test helps us prevent automated spam registrations on our site.")},void 0,(0,s.Z)(Z,{binding:e.form.bindInput("captcha"),siteKey:this._context.get("SETTINGS").recaptcha_site_key}))}}]),n}(f),b=function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,[{key:"init",value:function(e,t,n,a){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new v;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new g}this._captcha.init(e,t,n,a)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();t.ZP=new b},96142:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(19755),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){i.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();t.Z=new o},62833:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=window.localStorage,o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",(function(e){var n=JSON.parse(e.newValue);t._watchers.forEach((function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)}))}))}},{key:"set",value:function(e,t){i.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=i.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();t.Z=new o},8621:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(4869),o=n(19755),r=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i.Z)(e,this._element.id),o(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i.Z)(t,this._element.id,!0),o(this._element).addClass("open"))}},{key:"hide",value:function(){o(this._element).removeClass("open"),this._component=null}}]),e}();t.Z=new r},59801:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(73935),o=n.n(i),r=n(4869),l=n(19755),c=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=l(e).modal({show:!1}),this._modal.on("hidden.bs.modal",(function(){o().unmountComponentAtNode(t._element)}))}},{key:"show",value:function(e){(0,r.Z)(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();t.Z=new c},53328:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t){this._indexTitle=e,this._forumName=t}},{key:"set",value:function(e){if(e){"string"==typeof e&&(e={title:e});var t=e.title;e.page>1&&(t+=" ("+interpolate(gettext("page: %(page)s"),{page:e.page},!0)+")"),e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}else document.title=this._indexTitle||this._forumName}}]),e}();t.Z=new i},55547:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t){this._ajax=e,this._snackbar=t,this._polls={}}},{key:"start",value:function(e){var t=this;this.stop(e.poll);var n=function n(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then((function(a){t._polls[e.poll]._stopped||(e.update(a),t._polls[e.poll].timeout=window.setTimeout(n,e.frequency))}),(function(n){t._polls[e.poll]._stopped||(e.error?e.error(n):t._snackbar.apiError(n))}))};e.delayed?this._polls[e.poll]={timeout:window.setTimeout(n,e.frequency)}:n()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();t.Z=new i},27950:function(e,t,n){"use strict";n.d(t,{Z:function(){return ft}});var a=n(15671),s=n(43144),i=n(4942),o=n(57588),r=n.n(o),l=n(73935),c=n.n(l),u=n(91876),d=n(22928),p=n(97326),h=n(79340),f=n(6215),v=n(61120),m=n(57026),Z=n(87462);var g,b,y,_=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){e.props.replaceSelection(e.props.execAction)})),e}return(0,s.Z)(r,[{key:"render",value:function(){return(0,d.Z)("button",{className:"btn btn-icon "+this.props.className,disabled:this.props.disabled,onClick:this.onClick,title:this.props.title,type:"button"},void 0,this.props.children)}}]),r}(r().Component),N=n(19755);function k(e){return r().createElement(_,(0,Z.Z)({execAction:x,title:gettext("Insert code")},e),g||(g=(0,d.Z)("span",{className:"material-icon"},void 0,"functions")))}function x(e,t){t("\n\n```"+N.trim(prompt(gettext("Enter name of syntax of your code (optional)")+":"))+"\n"+e+"\n```\n\n")}function w(e){return r().createElement(_,(0,Z.Z)({execAction:R,title:gettext("Emphase selection")},e),b||(b=(0,d.Z)("span",{className:"material-icon"},void 0,"format_italic")))}function R(e,t){e.length&&t("*"+e+"*")}function C(e){return r().createElement(_,(0,Z.Z)({execAction:S,title:gettext("Insert horizontal ruler")},e),y||(y=(0,d.Z)("span",{className:"material-icon"},void 0,"remove")))}function S(e,t){t("\n\n- - - - -\n\n")}var E=n(19755),L=new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");function P(e){return L.test(E.trim(e))}var O,T=n(19755);function A(e){return r().createElement(_,(0,Z.Z)({execAction:B,title:gettext("Insert image")},e),O||(O=(0,d.Z)("span",{className:"material-icon"},void 0,"insert_photo")))}function B(e,t){var n="",a="";e.length&&(P(e)?n=e:a=e),(n=T.trim(prompt(gettext("Enter link to image")+":",n))).length&&((a=T.trim(prompt(gettext("Enter image label (optional)")+":",a))).length>0?t(""):t("!("+n+")"))}var I,j,D,U,M=n(19755);function z(e){return r().createElement(_,(0,Z.Z)({execAction:H,title:gettext("Insert link")},e),I||(I=(0,d.Z)("span",{className:"material-icon"},void 0,"insert_link")))}function H(e,t){var n="",a="";if(e.length&&(P(e)?n=e:a=e),0===(n=M.trim(prompt(gettext("Enter link address")+":",n)||"")).length)return!1;a=M.trim(prompt(gettext("Enter link label (optional)")+":",a)),n.length&&(a.length>0?t("["+a+"]("+n+")"):t(n))}function F(e){return r().createElement(_,(0,Z.Z)({execAction:q,title:gettext("Insert spoiler")},e),j||(j=(0,d.Z)("span",{className:"material-icon"},void 0,"not_interested")))}function q(e,t){t("\n\n[spoiler]\n"+e+"\n[/spoiler]\n\n")}function Y(e){return r().createElement(_,(0,Z.Z)({execAction:V,title:gettext("Strikethrough selection")},e),D||(D=(0,d.Z)("span",{className:"material-icon"},void 0,"format_strikethrough")))}function V(e,t){e.length&&t("~~"+e+"~~")}function $(e){return r().createElement(_,(0,Z.Z)({execAction:G,title:gettext("Bolder selection")},e),U||(U=(0,d.Z)("span",{className:"material-icon"},void 0,"format_bold")))}function G(e,t){e.length&&t("**"+e+"**")}var W,K=n(19755);function J(e){return r().createElement(_,(0,Z.Z)({execAction:Q,title:gettext("Insert quote")},e),W||(W=(0,d.Z)("span",{className:"material-icon"},void 0,"format_quote")))}function Q(e,t){var n=K.trim(prompt(gettext("Enter quote autor, prefix usernames with @")+":",n));t(n?'\n\n[quote="'+n+'"]\n'+e+"\n[/quote]\n\n":"\n\n[quote]\n"+e+"\n[/quote]\n\n")}var X,ee=n(32233),te=n(89627),ne=n(48772);var ae,se=function(e){(0,h.Z)(l,e);var t,n,o=(t=l,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function l(){var e;(0,a.Z)(this,l);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onInsert",(function(){e.props.replaceSelection(e.insertAttachment)})),(0,i.Z)((0,p.Z)(e),"insertAttachment",(function(t,n){var a=e.props.item;a.is_image?a.url.thumb?n("[]("+a.url.index+")"):n("[]("+a.url.index+")"):n("["+a.filename+"]("+a.url.index+")")})),(0,i.Z)((0,p.Z)(e),"onRemove",(function(){e.updateItem({isRemoved:!0})})),(0,i.Z)((0,p.Z)(e),"onUndo",(function(){e.updateItem({isRemoved:!1})})),(0,i.Z)((0,p.Z)(e),"updateItem",(function(t){var n=e.props.attachments.map((function(n){return n.id===e.props.item.id?Object.assign({},n,t):n}));e.props.onAttachmentsChange(n)})),e}return(0,s.Z)(l,[{key:"render",value:function(){return(0,d.Z)("li",{className:"editor-attachment-complete"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-xs-12 col-sm-8 col-md-9"},void 0,r().createElement(ie,this.props),(0,d.Z)("div",{className:"editor-attachment-details"},void 0,r().createElement(le,this.props),r().createElement(ce,this.props))),(0,d.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3 xs-margin-top-half"},void 0,r().createElement(ue,(0,Z.Z)({onInsert:this.onInsert,onRemove:this.onRemove,onUndo:this.onUndo},this.props)))))}}]),l}(r().Component);function ie(e){return e.item.is_image?r().createElement(oe,e):r().createElement(re,e)}function oe(e){var t=e.item.url.thumb||e.item.url.index;return(0,d.Z)("div",{className:"editor-attachment-image"},void 0,(0,d.Z)("a",{href:e.item.url.index+"?shva=1",style:{backgroundImage:"url('"+t+"?shva=1')"},target:"_blank"}))}function re(e){return X||(X=(0,d.Z)("div",{className:"editor-attachment-icon"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,"insert_drive_file")))}function le(e){return(0,d.Z)("h4",{},void 0,(0,d.Z)("a",{className:"item-title",href:e.item.url.index+"?shva=1",target:"_blank"},void 0,e.item.filename))}function ce(e){var t;t=e.item.url.uploader?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,te.Z)(e.item.url.uploader),user:(0,te.Z)(e.item.uploader_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,te.Z)(e.item.uploader_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,te.Z)(e.item.uploaded_on.format("LLL")),relative:(0,te.Z)(e.item.uploaded_on.fromNow())},!0),a=interpolate((0,te.Z)(gettext("%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.")),{filetype:e.item.filetype,size:(0,ne.Z)(e.item.size),uploader:t,uploaded_on:n},!0);return(0,d.Z)("p",{dangerouslySetInnerHTML:{__html:a}})}function ue(e){return(0,d.Z)("div",{className:"editor-attachment-actions"},void 0,(0,d.Z)("div",{className:"row"},void 0,r().createElement(de,e),r().createElement(pe,e),r().createElement(he,e)))}function de(e){return e.item.isRemoved?null:(0,d.Z)("div",{className:"col-xs-6"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onInsert,type:"button"},void 0,gettext("Insert")))}function pe(e){return e.item.isRemoved&&e.item.acl.can_delete?null:(0,d.Z)("div",{className:"col-xs-6"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onRemove,type:"button"},void 0,gettext("Remove")))}function he(e){return e.item.isRemoved?(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onUndo,type:"button"},void 0,gettext("Undo removal"))):null}var fe=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){var t=e.props.attachments.filter((function(t){return t.key!==e.props.item.key}));e.props.onAttachmentsChange(t)})),e}return(0,s.Z)(r,[{key:"render",value:function(){var e=interpolate("<strong>%(name)s</strong>",{name:(0,te.Z)(this.props.item.filename)},!0),t=interpolate(gettext("Error uploading %(filename)s"),{filename:e,progress:this.props.item.progress+"%"},!0);return(0,d.Z)("li",{className:"editor-attachment-error"},void 0,ae||(ae=(0,d.Z)("div",{className:"editor-attachment-error-icon"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,"warning"))),(0,d.Z)("div",{className:"editor-attachment-error-message"},void 0,(0,d.Z)("h4",{dangerouslySetInnerHTML:{__html:t+":"}}),(0,d.Z)("p",{},void 0,this.props.item.error),(0,d.Z)("button",{className:"btn btn-default btn-sm",onClick:this.onClick,type:"button"},void 0,gettext("Dismiss"))))}}]),r}(r().Component);function ve(e){var t=interpolate("<strong>%(name)s</strong>",{name:(0,te.Z)(e.item.filename)},!0),n=interpolate(gettext("Uploading %(filename)s... %(progress)s"),{filename:t,progress:e.item.progress+"%"},!0);return(0,d.Z)("li",{className:"editor-attachment-upload"},void 0,(0,d.Z)("div",{className:"editor-attachment-progress-bar"},void 0,(0,d.Z)("div",{className:"editor-attachment-progress",style:{width:e.item.progress+"%"}})),(0,d.Z)("p",{className:"editor-attachment-upload-message",dangerouslySetInnerHTML:{__html:n}}))}function me(e){return e.item.id?r().createElement(se,e):e.item.error?r().createElement(fe,e):r().createElement(ve,e)}function Ze(e){return(0,d.Z)("ul",{className:"list-unstyled editor-attachments-list"},void 0,e.attachments.map((function(t){return r().createElement(me,(0,Z.Z)({item:t,key:t.id||t.key},e))})))}var ge=n(30381),be=n.n(ge),ye=n(78657),_e=n(53904);var Ne,ke=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onChange",(function(t){var n=t.target.files[0];if(n){var a={id:null,key:xe(),progress:0,error:null,filename:n.name};e.props.onAttachmentsChange([a].concat(e.props.attachments));var s=new FormData;s.append("upload",n),ye.Z.upload(ee.Z.get("ATTACHMENTS_API"),s,(function(t){a.progress=t,e.props.onAttachmentsChange(e.props.attachments.concat())})).then((function(t){t.uploaded_on=be()(t.uploaded_on),Object.assign(a,t),e.props.onAttachmentsChange(e.props.attachments.concat())}),(function(t){400===t.status||413===t.status?(a.error=t.detail,e.props.onAttachmentsChange(e.props.attachments.concat())):_e.Z.apiError(t)}))}})),e}return(0,s.Z)(r,[{key:"render",value:function(){return(0,d.Z)("input",{id:"editor-upload-field",onChange:this.onChange,type:"file"})}}]),r}(r().Component);function xe(){return"upld-"+Math.round((new Date).getTime())}function we(e){return ee.Z.get("user").acl.max_attachment_size?(0,d.Z)("div",{className:"editor-attachments"},void 0,r().createElement(Ze,e),r().createElement(ke,e)):null}var Re,Ce=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){document.getElementById("editor-upload-field").click()})),e}return(0,s.Z)(r,[{key:"render",value:function(){return ee.Z.get("user").acl.max_attachment_size?(0,d.Z)("button",{className:"btn btn-icon "+this.props.className,disabled:this.props.disabled,onClick:this.onClick,title:gettext("Upload file"),type:"button"},void 0,Ne||(Ne=(0,d.Z)("span",{className:"material-icon"},void 0,"file_upload"))):null}}]),r}(r().Component),Se=n(69092);function Ee(e){return(0,d.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,d.Z)("div",{className:"modal-content"},void 0,(0,d.Z)("div",{className:"modal-header"},void 0,(0,d.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Re||(Re=(0,d.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,d.Z)("h4",{className:"modal-title"},void 0,gettext("Preview message"))),(0,d.Z)("div",{className:"modal-body markup-preview"},void 0,(0,d.Z)(Se.Z,{markup:e.markup}))))}var Le=n(19755),Pe="editor-textarea";function Oe(){return document.getElementById(Pe)}function Te(e,t){return{start:e,end:t}}function Ae(){var e=Oe();if(document.selection){e.focus();var t=document.selection.createRange(),n=t.text.length;return t.moveStart("character",-e.value.length),Te(t.text.length-n,t.text.length)}if(e.selectionStart||"0"==e.selectionStart)return Te(e.selectionStart,e.selectionEnd)}function Be(e,t){var n=Oe(),a=n.value,s=a.substring(0,e.start);return n.value=a.substring(0,e.start)+t+a.substring(e.end),function(e){var t=Oe();if(t.setSelectionRange)t.focus(),t.setSelectionRange(e.start,e.end);else if(t.createTextRange){var n=t.createTextRange();n.collapse(!0),n.moveStart("character",e.start),n.moveEnd("character",e.end),n.select()}}(Te(s.length+t.length,s.length+t.length)),n.value}var Ie,je=n(82211),De=n(59801),Ue=n(19755);var Me=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"onPreviewClick",(function(){t.state.isPreviewLoading||(t.setState({isPreviewLoading:!0}),ye.Z.post(ee.Z.get("PARSE_MARKUP_API"),{post:t.props.value}).then((function(e){De.Z.show((0,d.Z)(Ee,{markup:e.parsed})),t.setState({isPreviewLoading:!1})}),(function(e){400===e.status?_e.Z.error(e.detail):_e.Z.apiError(e),t.setState({isPreviewLoading:!1})})))})),(0,i.Z)((0,p.Z)(t),"replaceSelection",(function(e){var n;e((n=Ae(),Le.trim(document.getElementById(Pe).value.substring(n.start,n.end))),t._replaceSelection)})),(0,i.Z)((0,p.Z)(t),"_replaceSelection",(function(e){var n;t.props.onChange({target:{value:(n=e,Be(Ae(),n))}})})),t.state={isPreviewLoading:!1},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){var e=this;Ue("#editor-textarea").atwho({at:"@",displayTpl:'<li><img src="${avatar}" alt="">${username}</li>',insertTpl:"@${username}",searchKey:"username",callbacks:{remoteFilter:function(e,t){Ue.getJSON(ee.Z.get("MENTION_API"),{q:e},t)}}}),Ue("#editor-textarea").on("inserted.atwho",(function(t,n,a){e.props.onChange(t)}))}},{key:"render",value:function(){return(0,d.Z)("div",{className:"editor-border"},void 0,(0,d.Z)("textarea",{className:"form-control",value:this.props.value,disabled:this.props.loading,id:"editor-textarea",onChange:this.props.onChange,rows:"9"}),(0,d.Z)("div",{className:"editor-footer"},void 0,(0,d.Z)("div",{className:"buttons-list pull-left"},void 0,(0,d.Z)($,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(w,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(Y,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(C,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(z,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(A,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(J,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(F,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(k,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(Ce,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading})),(0,d.Z)(je.Z,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,onClick:this.onPreviewClick,type:"button"},void 0,gettext("Preview")),(0,d.Z)(je.Z,{className:"btn-primary btn-sm pull-right",loading:this.props.loading},void 0,this.props.submitLabel||gettext("Post")),(0,d.Z)("button",{className:"btn btn-default btn-sm pull-right",disabled:this.props.loading,onClick:this.props.onCancel,type:"button"},void 0,gettext("Cancel")),Ie||(Ie=(0,d.Z)("div",{className:"clearfix visible-xs-block"})),(0,d.Z)(ze,{canProtect:this.props.canProtect,disabled:this.props.loading,onProtect:this.props.onProtect,onUnprotect:this.props.onUnprotect,protect:this.props.protect})),(0,d.Z)(we,{attachments:this.props.attachments,onAttachmentsChange:this.props.onAttachmentsChange,placeholder:this.props.placeholder,replaceSelection:this.replaceSelection}))}}]),r}(r().Component);function ze(e){if(!e.canProtect)return null;var t=e.protect?gettext("Protected"):gettext("Protect");return(0,d.Z)("button",{className:"btn btn-icon btn-default btn-protect btn-sm pull-right",disabled:e.disabled,onClick:e.protect?e.onUnprotect:e.onProtect,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.protect?"lock":"lock_outline"),(0,d.Z)("span",{className:"btn-text hidden-md hidden-lg"},void 0,t))}var He=n(43345);function Fe(e){return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("div",{className:"container"},void 0,e.children))}var qe,Ye,Ve=n(37848);function $e(e){return qe||(qe=(0,d.Z)(Fe,{className:"posting-loader"},void 0,(0,d.Z)(Ve.Z,{})))}function Ge(e){return(0,d.Z)(Fe,{className:"posting-message"},void 0,(0,d.Z)("div",{className:"message-body"},void 0,(0,d.Z)("p",{},void 0,Ye||(Ye=(0,d.Z)("span",{className:"material-icon"},void 0,"error_outline")),e.message),(0,d.Z)("button",{type:"button",className:"btn btn-default",onClick:ft.close},void 0,gettext("Dismiss"))))}function We(e){if(!e.showOptions)return null;var t=e.columns,n="col-xs-12 xs-margin-top";n+=1===t?" col-sm-2":" sm-margin-top",n+=3===t?" col-md-3":" col-md-2",n+=" posting-options";var a="col-xs-"+12/t,s="btn-text";return s+=3===t?" visible-sm-inline-block":2===t?" hidden-md hidden-lg":" hidden-sm",(0,d.Z)("div",{className:n},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)(Qe,{className:a,disabled:e.disabled,onPinGlobally:e.onPinGlobally,onPinLocally:e.onPinLocally,onUnpin:e.onUnpin,pin:e.pin,show:e.options.pin,textClassName:s}),(0,d.Z)(Je,{className:a,disabled:e.disabled,hide:e.hide,onHide:e.onHide,onUnhide:e.onUnhide,show:e.options.hide,textClassName:s}),(0,d.Z)(Ke,{className:a,close:e.close,disabled:e.disabled,onClose:e.onClose,onOpen:e.onOpen,show:e.options.close,textClassName:s})))}function Ke(e){if(!e.show)return null;var t=e.close?gettext("Closed"):gettext("Open");return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:e.close?e.onOpen:e.onClose,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.close?"lock":"lock_outline"),(0,d.Z)("span",{className:e.textClassName},void 0,t)))}function Je(e){if(!e.show)return null;var t=e.hide?gettext("Hidden"):gettext("Not hidden");return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:e.hide?e.onUnhide:e.onHide,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.hide?"visibility_off":"visibility"),(0,d.Z)("span",{className:e.textClassName},void 0,t)))}function Qe(e){if(!e.show)return null;var t=null,n=null,a=null;switch(e.pin){case 0:t="radio_button_unchecked",n=e.onPinLocally,a=gettext("Unpinned");break;case 1:t="bookmark_outline",n=e.onPinGlobally,a=gettext("Pinned locally"),n=2==e.show?e.onPinGlobally:e.onUnpin;break;case 2:t="bookmark",n=e.onUnpin,a=gettext("Pinned globally")}return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:n,title:a,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,t),(0,d.Z)("span",{className:e.textClassName},void 0,a)))}function Xe(e){var t=e.filter((function(e){return e.id&&!e.isRemoved}));return t.map((function(e){return e.id}))}function et(e){return e.map((function(e){return Object.assign({},e,{uploaded_on:be()(e.uploaded_on)})}))}var tt,nt=n(12891);var at=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){var n=null,a=!1,s=null,i=e.map((function(e){return!1===e.post||n&&e.id!=t.state.category||(n=e.id,s=e.post),e.post&&(e.post.close||e.post.hide||e.post.pin)&&(a=!0),Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id})}));t.setState({isReady:!0,showOptions:a,categories:i,category:n,categoryOptions:s})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard thread?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onTitleChange",(function(e){t.changeValue("title",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onCategoryChange",(function(e){var n=t.state.categories.find((function(t){return e.target.value==t.value})),a=t.state.pin;n.post.pin&&n.post.pin<a&&(a=n.post.pin),t.setState({category:n.id,categoryOptions:n.post,pin:a})})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),(0,i.Z)((0,p.Z)(t),"onClose",(function(){t.changeValue("close",!0)})),(0,i.Z)((0,p.Z)(t),"onOpen",(function(){t.changeValue("close",!1)})),(0,i.Z)((0,p.Z)(t),"onPinGlobally",(function(){t.changeValue("pin",2)})),(0,i.Z)((0,p.Z)(t),"onPinLocally",(function(){t.changeValue("pin",1)})),(0,i.Z)((0,p.Z)(t),"onUnpin",(function(){t.changeValue("pin",0)})),(0,i.Z)((0,p.Z)(t),"onHide",(function(){t.changeValue("hide",!0)})),(0,i.Z)((0,p.Z)(t),"onUnhide",(function(){t.changeValue("hide",!1)})),t.state={isReady:!1,isLoading:!1,isErrored:!1,showOptions:!1,categoryOptions:null,title:"",category:e.category||null,categories:[],post:"",attachments:[],close:!1,hide:!1,pin:0,validators:{title:(0,nt.jn)(),post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config).then(this.loadSuccess,this.loadError)}},{key:"clean",value:function(){if(!this.state.title.trim().length)return _e.Z.error(gettext("You have to enter thread title.")),!1;if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return e.title?(_e.Z.error(e.title[0]),!1):!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{title:this.state.title,category:this.state.category,post:this.state.post,attachments:Xe(this.state.attachments),close:this.state.close,hide:this.state.hide,pin:this.state.pin})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your thread has been posted.")),window.location=e.url,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.category||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){if(this.state.isErrored)return(0,d.Z)(Ge,{message:this.state.isErrored});if(!this.state.isReady)return tt||(tt=(0,d.Z)($e,{}));var e=0;this.state.categoryOptions.close&&(e+=1),this.state.categoryOptions.hide&&(e+=1),this.state.categoryOptions.pin&&(e+=1);var t=null;return t=1===e?"col-sm-6":"col-sm-8",t+=3===e?" col-md-6":e?" col-md-7":" col-md-9",(0,d.Z)(Fe,{className:"posting-form",withFirstRow:!0},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:t},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onTitleChange,placeholder:gettext("Thread title"),type:"text",value:this.state.title})),(0,d.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3 xs-margin-top"},void 0,(0,d.Z)(m.Z,{choices:this.state.categories,disabled:this.state.isLoading,onChange:this.onCategoryChange,value:this.state.category})),(0,d.Z)(We,{close:this.state.close,columns:e,disabled:this.state.isLoading,hide:this.state.hide,onClose:this.onClose,onHide:this.onHide,onOpen:this.onOpen,onPinGlobally:this.onPinGlobally,onPinLocally:this.onPinLocally,onUnhide:this.onUnhide,onUnpin:this.onUnpin,options:this.state.categoryOptions,pin:this.state.pin,showOptions:this.state.showOptions})),(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post thread"),value:this.state.post})))))}}]),r}(He.Z);function st(e){var t=e.split(",").map((function(e){return e.trim().toLowerCase()})).filter((function(e){return e.length>0}));return t.filter((function(e,n){return t.indexOf(e)==n}))}var it,ot=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard private thread?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onToChange",(function(e){t.changeValue("to",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onTitleChange",(function(e){t.changeValue("title",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})}));var n=(e.to||[]).map((function(e){return e.username})).join(", ");return t.state={isLoading:!1,to:n,title:"",post:"",attachments:[],validators:{title:(0,nt.jn)(),post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"clean",value:function(){if(!st(this.state.to).length)return _e.Z.error(gettext("You have to enter at least one recipient.")),!1;if(!this.state.title.trim().length)return _e.Z.error(gettext("You have to enter thread title.")),!1;if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return e.title?(_e.Z.error(e.title[0]),!1):!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{to:st(this.state.to),title:this.state.title,post:this.state.post,attachments:Xe(this.state.attachments)})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your thread has been posted.")),window.location=e.url,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.to||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return(0,d.Z)(Fe,{className:"posting-form",withFirstRow:!0},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onToChange,placeholder:gettext("Comma separated list of user names, eg.: Danny, Lisa"),type:"text",value:this.state.to}))),(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onTitleChange,placeholder:gettext("Thread title"),type:"text",value:this.state.title}))),(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post thread"),value:this.state.post})))))}}]),r}(He.Z);var rt,lt=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){t.setState({isReady:!0,post:e.post?'[quote="@'+e.poster+'"]\n'+e.post+"\n[/quote]":""})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"appendData",(function(e){var n=e.post?'[quote="@'+e.poster+'"]\n'+e.post+"\n[/quote]\n\n":"";t.setState((function(e,t){return e.post.length>0?{post:e.post+"\n\n"+n}:{post:n}}))})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard your reply?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),t.state={isReady:!1,isLoading:!1,isErrored:!1,post:"",attachments:[],validators:{post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config,this.props.context||null).then(this.loadSuccess,this.loadError)}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.context,n=e.context;t&&n&&t.reply===n.reply||ye.Z.get(e.config,e.context||null).then(this.appendData,_e.Z.apiError)}},{key:"clean",value:function(){if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{post:this.state.post,attachments:Xe(this.state.attachments)})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your reply has been posted.")),window.location=e.url.index,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,d.Z)(Fe,{className:"posting-form"},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit,method:"POST"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post reply"),value:this.state.post}))))):this.state.isErrored?(0,d.Z)(Ge,{message:this.state.isErrored}):it||(it=(0,d.Z)($e,{}))}}]),r}(He.Z);var ct=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){t.setState({isReady:!0,post:e.post,attachments:et(e.attachments),protect:e.is_protected,canProtect:e.can_protect})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard changes?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onProtect",(function(){t.setState({protect:!0})})),(0,i.Z)((0,p.Z)(t),"onUnprotect",(function(){t.setState({protect:!1})})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),t.state={isReady:!1,isLoading:!1,isErrored:!1,post:"",attachments:[],protect:!1,canProtect:!1,validators:{post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config).then(this.loadSuccess,this.loadError)}},{key:"clean",value:function(){if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.put(this.props.submit,{post:this.state.post,attachments:Xe(this.state.attachments),protect:this.state.protect})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Reply has been edited.")),window.location=e.url.index,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.category||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,d.Z)(Fe,{className:"posting-form"},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit,method:"POST"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,canProtect:this.state.canProtect,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,onProtect:this.onProtect,onUnprotect:this.onUnprotect,protect:this.state.protect,submitLabel:gettext("Edit reply"),value:this.state.post}))))):this.state.isErrored?(0,d.Z)(Ge,{message:this.state.isErrored}):rt||(rt=(0,d.Z)($e,{}))}}]),r}(He.Z);function ut(e){return"START"===e.mode?r().createElement(at,e):"START_PRIVATE"===e.mode?r().createElement(ot,e):"REPLY"===e.mode?r().createElement(lt,e):"EDIT"===e.mode?r().createElement(ct,e):null}var dt=n(4869),pt=n(19755),ht=function(){function e(){var t=this;(0,a.Z)(this,e),(0,i.Z)(this,"close",(function(){t._isOpen&&!t._isClosing&&(t._isClosing=!0,t._placeholder.removeClass("slide-in"),window.setTimeout((function(){c().unmountComponentAtNode(document.getElementById("posting-mount")),t._isClosing=!1,t._isOpen=!1}),300))}))}return(0,s.Z)(e,[{key:"init",value:function(e,t,n){this._ajax=e,this._snackbar=t,this._placeholder=pt(n),this._mode=null,this._isOpen=!1,this._isClosing=!1}},{key:"open",value:function(e){if(!1===this._isOpen)this._mode=e.mode,this._isOpen=e.submit,this._realOpen(e);else if(this._isOpen!==e.submit){var t=gettext("You are already working on other message. Do you want to discard it?");"POLL"==this._mode&&(t=gettext("You are already working on a poll. Do you want to discard it?")),window.confirm(t)&&(this._mode=e.mode,this._isOpen=e.submit,this._realOpen(e))}else"REPLY"==this._mode&&"REPLY"==e.mode&&this._realOpen(e)}},{key:"_realOpen",value:function(e){"POLL"==e.mode?(0,dt.Z)(r().createElement(u.y,e),"posting-mount"):(0,dt.Z)(r().createElement(ut,e),"posting-mount"),this._placeholder.addClass("slide-in"),pt("html, body").animate({scrollTop:this._placeholder.offset().top},1e3)}}]),e}(),ft=new ht},53904:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(27346),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,i.p2)()),this._timeout=window.setTimeout((function(){n._timeout=null,n.alert(e,t)}),300)):(this._store.dispatch((0,i.OV)(e,t)),this._timeout=window.setTimeout((function(){n._store.dispatch((0,i.p2)()),n._timeout=null}),5e3))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=e.detail;t||(t=404===e.status?gettext("Action link is invalid."):gettext("Unknown error has occured.")),403===e.status&&"Permission denied"===t&&(t=gettext("You don't have permission to perform this action.")),this.error(t)}}]),e}();t.Z=new o},90287:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(41438),o=function(){function e(){(0,a.Z)(this,e),this._store=null,this._reducers={},this._initialState={}}return(0,s.Z)(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{key:"init",value:function(){this._store=(0,i.createStore)((0,i.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();t.Z=new o},59940:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._include=e,this._isLoaded=!1}},{key:"scorePassword",value:function(e,t){return this._isLoaded?zxcvbn(e,t).score:0}},{key:"load",value:function(){return this._isLoaded?this._loadedPromise():(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise())}},{key:"_loadingPromise",value:function(){var e=this;return new Promise((function(t,n){!function a(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;(s+=1)>200?n():"undefined"==typeof zxcvbn?window.setTimeout((function(){a(s)}),200):(e._isLoaded=!0,t())}()}))}},{key:"_loadedPromise",value:function(){return new Promise((function(e){e()}))}}]),e}();t.Z=new i},93051:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var a,s=n(22928),i=n(30381),o=n.n(i),r=n(57588),l=n.n(r),c=n(73935),u=n.n(c),d=n(37424),p=n(15671),h=n(43144),f=n(79340),v=n(6215),m=n(61120);var Z=function(e){(0,f.Z)(r,e);var t,n,i=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,m.Z)(t);if(n){var s=(0,m.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,v.Z)(this,e)});function r(){return(0,p.Z)(this,r),i.apply(this,arguments)}return(0,h.Z)(r,[{key:"getReasonMessage",value:function(){return this.props.message.html?(0,s.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):(0,s.Z)("p",{className:"lead"},void 0,this.props.message.plain)}},{key:"getExpirationMessage",value:function(){if(this.props.expires){if(this.props.expires.isAfter(o()())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.props.expires.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0);return(0,s.Z)("abbr",{title:e},void 0,t)}return gettext("This ban has expired.")}return gettext("This ban is permanent.")}},{key:"render",value:function(){return(0,s.Z)("div",{className:"page page-error page-error-banned"},void 0,(0,s.Z)("div",{className:"container"},void 0,(0,s.Z)("div",{className:"message-panel"},void 0,a||(a=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"highlight_off"))),(0,s.Z)("div",{className:"message-body"},void 0,this.getReasonMessage(),(0,s.Z)("p",{className:"message-footnote"},void 0,this.getExpirationMessage())))))}}]),r}(l().Component),g=n(32233),b=n(90287),y=(0,d.$j)((function(e){return e.tick}))(Z);function _(e,t){if(u().render((0,s.Z)(d.zt,{store:b.Z.getStore()},void 0,(0,s.Z)(y,{message:e.message,expires:e.expires_on?o()(e.expires_on):null})),document.getElementById("page-mount")),void 0===t||t){var n=g.Z.get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",g.Z.get("BANNED_URL"))}}},69130:function(e,t,n){"use strict";function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=[],s=[];if(e.forEach((function(e){s.push(e),s.length===t&&(a.push(s),s=[])})),!1!==n&&s.length>0&&s.length<t)for(var i=s.length;i<t;i++)s.push(n);return s.length&&a.push(s),a}n.d(t,{Z:function(){return a}})},89759:function(e,t,n){"use strict";function a(e,t){var n=[];return e.concat(t).filter((function(e){return-1===n.indexOf(e.id)&&(n.push(e.id),!0)}))}n.d(t,{Z:function(){return a}})},89627:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var a={"&":"&","<":"<",">":">",'"':""","'":"'"};function s(e){return e.replace(/[&<>"']/g,(function(e){return a[e]}))}},48772:function(e,t,n){"use strict";function a(e){return e>1073741824?s(e/1073741824)+" GB":e>1048576?s(e/1048576)+" MB":e>1024?s(e/1024)+" KB":s(e)+" B"}function s(e){return e.toFixed(1)}n.d(t,{Z:function(){return a}})},4869:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var a=n(22928),s=(n(57588),n(73935)),i=n.n(s),o=n(37424),r=n(90287);function l(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=document.getElementById(t),l=e.props?e:(0,a.Z)(e,{});s&&(n?i().render((0,a.Z)(o.zt,{store:r.Z.getStore()},void 0,l),s):i().render(l,s))}},44039:function(e,t,n){"use strict";function a(e,t){return Math.floor(Math.random()*(t-e+1))+e}n.d(t,{e:function(){return a}})},39633:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=(n(57588),n(73935)),i=n.n(s),o=n(37424),r=n(69987),l=n(90287),c=document.getElementById("page-mount");function u(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i().render((0,a.Z)(o.zt,{store:l.Z.getStore()},void 0,(0,a.Z)(r.F0,{routes:t,history:r.mW})),c)}},20370:function(e,t,n){"use strict";function a(e,t){if(-1===e.indexOf(t)){var n=e.slice();return n.push(t),n}return e.filter((function(e){return e!==t}))}n.d(t,{ZN:function(){return a}})},55210:function(e,t,n){"use strict";n.d(t,{BS:function(){return d},C1:function(){return o},Do:function(){return c},Ei:function(){return u},HR:function(){return p},Vb:function(){return v},fT:function(){return r},gS:function(){return h},jA:function(){return l},lG:function(){return f}});var a=n(19755),s=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,i=new RegExp("^[0-9a-z]+$","i");function o(e){return function(t){if(!1===t||null===t||0===a.trim(t).length)return e||gettext("This field is required.")}}function r(e){var t=gettext("You have to accept the terms of service.");return o(e||t)}function l(e){var t=gettext("You have to accept the privacy policy.");return o(e||t)}function c(e){return function(t){if(!s.test(t))return e||gettext("Enter a valid email address.")}}function u(e,t){return function(n){var s="",i=a.trim(n).length;if(i<e)return s=t?t(e,i):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(s,{limit_value:e,show_value:i},!0)}}function d(e,t){return function(n){var s="",i=a.trim(n).length;if(i>e)return s=t?t(e,i):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(s,{limit_value:e,show_value:i},!0)}}function p(e){return u(e,(function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)}))}function h(e){return d(e,(function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)}))}function f(){return function(e){if(!i.test(a.trim(e)))return gettext("Username can only contain latin alphabet letters and digits.")}}function v(e){return function(t){var n=t.length;if(n<e){var a=ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e);return interpolate(a,{limit_value:e,show_value:n},!0)}}}},46700:function(e,t,n){var a={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function s(e){var t=i(e);return n(t)}function i(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}s.keys=function(){return Object.keys(a)},s.resolve=i,e.exports=s,s.id=46700}},n={};function a(e){var s=n[e];if(void 0!==s)return s.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=t,e=[],a.O=function(t,n,s,i){if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],s=e[u][1],i=e[u][2];for(var r=!0,l=0;l<n.length;l++)(!1&i||o>=i)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(r=!1,i<o&&(o=i));if(r){e.splice(u--,1);var c=s();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,s,i]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},function(){var e={174:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var s,i,o=n[0],r=n[1],l=n[2],c=0;if(o.some((function(t){return 0!==e[t]}))){for(s in r)a.o(r,s)&&(a.m[s]=r[s]);if(l)var u=l(a)}for(t&&t(n);c<o.length;c++)i=o[c],a.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return a.O(u)},n=self.webpackChunkmisago=self.webpackChunkmisago||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),a.O(void 0,[736],(function(){return a(32233)})),a.O(void 0,[736],(function(){return a(58339)})),a.O(void 0,[736],(function(){return a(64109)})),a.O(void 0,[736],(function(){return a(46226)})),a.O(void 0,[736],(function(){return a(93240)})),a.O(void 0,[736],(function(){return a(75147)})),a.O(void 0,[736],(function(){return a(4894)})),a.O(void 0,[736],(function(){return a(29223)})),a.O(void 0,[736],(function(){return a(3026)})),a.O(void 0,[736],(function(){return a(94795)})),a.O(void 0,[736],(function(){return a(95563)})),a.O(void 0,[736],(function(){return a(32488)})),a.O(void 0,[736],(function(){return a(11768)})),a.O(void 0,[736],(function(){return a(61323)})),a.O(void 0,[736],(function(){return a(15049)})),a.O(void 0,[736],(function(){return a(61814)})),a.O(void 0,[736],(function(){return a(95920)})),a.O(void 0,[736],(function(){return a(59203)})),a.O(void 0,[736],(function(){return a(72168)})),a.O(void 0,[736],(function(){return a(47806)})),a.O(void 0,[736],(function(){return a(77031)})),a.O(void 0,[736],(function(){return a(97751)})),a.O(void 0,[736],(function(){return a(76093)})),a.O(void 0,[736],(function(){return a(19764)})),a.O(void 0,[736],(function(){return a(47549)})),a.O(void 0,[736],(function(){return a(22331)})),a.O(void 0,[736],(function(){return a(21513)})),a.O(void 0,[736],(function(){return a(98749)})),a.O(void 0,[736],(function(){return a(98251)})),a.O(void 0,[736],(function(){return a(6720)})),a.O(void 0,[736],(function(){return a(10846)})),a.O(void 0,[736],(function(){return a(18255)})),a.O(void 0,[736],(function(){return a(14113)})),a.O(void 0,[736],(function(){return a(24444)})),a.O(void 0,[736],(function(){return a(1764)})),a.O(void 0,[736],(function(){return a(68351)})),a.O(void 0,[736],(function(){return a(81521)})),a.O(void 0,[736],(function(){return a(19984)})),a.O(void 0,[736],(function(){return a(41229)})),a.O(void 0,[736],(function(){return a(43589)})),a.O(void 0,[736],(function(){return a(24108)})),a.O(void 0,[736],(function(){return a(33934)})),a.O(void 0,[736],(function(){return a(85577)})),a.O(void 0,[736],(function(){return a(83526)})),a.O(void 0,[736],(function(){return a(43060)})),a.O(void 0,[736],(function(){return a(92292)})),a.O(void 0,[736],(function(){return a(33409)}));var s=a.O(void 0,[736],(function(){return a(31341)}));s=a.O(s)}(); +!function(){var e,t={54116:function(e,t){var n,a;(a="object"==typeof window&&window||"object"==typeof self&&self)&&(a.hljs=function(e){function t(e){return e.replace(/[&<>]/gm,(function(e){return x[e]}))}function n(e){return e.nodeName.toLowerCase()}function a(e,t){var n=e&&e.exec(t);return n&&0===n.index}function s(e){return b.test(e)}function i(e,t){var n,a={};for(n in e)a[n]=e[n];if(t)for(n in t)a[n]=t[n];return a}function o(e){var t=[];return function e(a,s){for(var i=a.firstChild;i;i=i.nextSibling)3===i.nodeType?s+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:s,node:i}),s=e(i,s),n(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:s,node:i}));return s}(e,0),t}function r(e,a,s){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset<a[0].offset?e:a:"start"===a[0].event?e:a:e.length?e:a}function o(e){u+="<"+n(e)+v.map.call(e.attributes,(function(e){return" "+e.nodeName+'="'+t(e.value)+'"'})).join("")+">"}function r(e){u+="</"+n(e)+">"}function l(e){("start"===e.event?o:r)(e.node)}for(var c=0,u="",d=[];e.length||a.length;){var p=i();if(u+=t(s.substring(c,p[0].offset)),c=p[0].offset,p===e){d.reverse().forEach(r);do{l(p.splice(0,1)[0]),p=i()}while(p===e&&p.length&&p[0].offset===c);d.reverse().forEach(o)}else"start"===p[0].event?d.push(p[0].node):d.pop(),l(p.splice(0,1)[0])}return u+t(s.substr(c))}function l(e){function t(e){return e&&e.source||e}function n(n,a){return new RegExp(t(n),"m"+(e.cI?"i":"")+(a?"g":""))}!function a(s,o){if(!s.compiled){if(s.compiled=!0,s.k=s.k||s.bK,s.k){var r={},l=function(t,n){e.cI&&(n=n.toLowerCase()),n.split(" ").forEach((function(e){var n=e.split("|");r[n[0]]=[t,n[1]?Number(n[1]):1]}))};"string"==typeof s.k?l("keyword",s.k):m(s.k).forEach((function(e){l(e,s.k[e])})),s.k=r}s.lR=n(s.l||/\w+/,!0),o&&(s.bK&&(s.b="\\b("+s.bK.split(" ").join("|")+")\\b"),s.b||(s.b=/\B|\b/),s.bR=n(s.b),s.e||s.eW||(s.e=/\B|\b/),s.e&&(s.eR=n(s.e)),s.tE=t(s.e)||"",s.eW&&o.tE&&(s.tE+=(s.e?"|":"")+o.tE)),s.i&&(s.iR=n(s.i)),null==s.r&&(s.r=1),s.c||(s.c=[]);var c=[];s.c.forEach((function(e){e.v?e.v.forEach((function(t){c.push(i(e,t))})):c.push("self"===e?s:e)})),s.c=c,s.c.forEach((function(e){a(e,s)})),s.starts&&a(s.starts,o);var u=s.c.map((function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b})).concat([s.tE,s.i]).map(t).filter(Boolean);s.t=u.length?n(u.join("|"),!0):{exec:function(){return null}}}}(e)}function c(e,n,s,i){function o(e,t){var n,s;for(n=0,s=t.c.length;s>n;n++)if(a(t.c[n].bR,e))return t.c[n]}function r(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?r(e.parent,t):void 0}function d(e,t){return!s&&a(t.iR,e)}function p(e,t){var n=b.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(n)&&e.k[n]}function h(e,t,n,a){var s='<span class="'+(a?"":k.classPrefix);return(s+=e+'">')+t+(n?"":N)}function v(){w+=null!=_.sL?function(){var e="string"==typeof _.sL;if(e&&!Z[_.sL])return t(R);var n=e?c(_.sL,R,!0,x[_.sL]):u(R,_.sL.length?_.sL:void 0);return _.r>0&&(C+=n.r),e&&(x[_.sL]=n.top),h(n.language,n.value,!1,!0)}():function(){var e,n,a,s;if(!_.k)return t(R);for(s="",n=0,_.lR.lastIndex=0,a=_.lR.exec(R);a;)s+=t(R.substring(n,a.index)),(e=p(_,a))?(C+=e[1],s+=h(e[0],t(a[0]))):s+=t(a[0]),n=_.lR.lastIndex,a=_.lR.exec(R);return s+t(R.substr(n))}(),R=""}function m(e){w+=e.cN?h(e.cN,"",!0):"",_=Object.create(e,{parent:{value:_}})}function g(e,t){if(R+=e,null==t)return v(),0;var n=o(t,_);if(n)return n.skip?R+=t:(n.eB&&(R+=t),v(),n.rB||n.eB||(R=t)),m(n),n.rB?0:t.length;var a=r(_,t);if(a){var s=_;s.skip?R+=t:(s.rE||s.eE||(R+=t),v(),s.eE&&(R=t));do{_.cN&&(w+=N),_.skip||(C+=_.r),_=_.parent}while(_!==a.parent);return a.starts&&m(a.starts),s.rE?0:t.length}if(d(t,_))throw new Error('Illegal lexeme "'+t+'" for mode "'+(_.cN||"<unnamed>")+'"');return R+=t,t.length||1}var b=f(e);if(!b)throw new Error('Unknown language: "'+e+'"');l(b);var y,_=i||b,x={},w="";for(y=_;y!==b;y=y.parent)y.cN&&(w=h(y.cN,"",!0)+w);var R="",C=0;try{for(var S,E,L=0;_.t.lastIndex=L,S=_.t.exec(n);)E=g(n.substring(L,S.index),S[0]),L=S.index+E;for(g(n.substr(L)),y=_;y.parent;y=y.parent)y.cN&&(w+=N);return{r:C,value:w,language:e,top:_}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:t(n)};throw e}}function u(e,n){n=n||k.languages||m(Z);var a={r:0,value:t(e)},s=a;return n.filter(f).forEach((function(t){var n=c(t,e,!1);n.language=t,n.r>s.r&&(s=n),n.r>a.r&&(s=a,a=n)})),s.language&&(a.second_best=s),a}function d(e){return k.tabReplace||k.useBR?e.replace(_,(function(e,t){return k.useBR&&"\n"===e?"<br>":k.tabReplace?t.replace(/\t/g,k.tabReplace):void 0})):e}function p(e){var t,n,a,i,l,p=function(e){var t,n,a,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",n=y.exec(o))return f(n[1])?n[1]:"no-highlight";for(t=0,a=(o=o.split(/\s+/)).length;a>t;t++)if(s(i=o[t])||f(i))return i}(e);s(p)||(k.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):t=e,l=t.textContent,a=p?c(p,l,!0):u(l),(n=o(t)).length&&((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=a.value,a.value=r(n,o(i),l)),a.value=d(a.value),e.innerHTML=a.value,e.className=function(e,t,n){var a=t?g[t]:n,s=[e.trim()];return e.match(/\bhljs\b/)||s.push("hljs"),-1===e.indexOf(a)&&s.push(a),s.join(" ").trim()}(e.className,p,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function h(){if(!h.called){h.called=!0;var e=document.querySelectorAll("pre code");v.forEach.call(e,p)}}function f(e){return e=(e||"").toLowerCase(),Z[e]||Z[g[e]]}var v=[],m=Object.keys,Z={},g={},b=/^(no-?highlight|plain|text)$/i,y=/\blang(?:uage)?-([\w-]+)\b/i,_=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,N="</span>",k={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},x={"&":"&","<":"<",">":">"};return e.highlight=c,e.highlightAuto=u,e.fixMarkup=d,e.highlightBlock=p,e.configure=function(e){k=i(k,e)},e.initHighlighting=h,e.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",h,!1),addEventListener("load",h,!1)},e.registerLanguage=function(t,n){var a=Z[t]=n(e);a.aliases&&a.aliases.forEach((function(e){g[e]=t}))},e.listLanguages=function(){return m(Z)},e.getLanguage=f,e.inherit=i,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(t,n,a){var s=e.inherit({cN:"comment",b:t,e:n,c:[]},a||{});return s.c.push(e.PWM),s.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),s},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e}({}),void 0===(n=function(){return a.hljs}.apply(t,[]))||(e.exports=n)),hljs.registerLanguage("xml",(function(e){var t={eW:!0,i:/</,r:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[t],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[t],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}})),hljs.registerLanguage("markdown",(function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}})),hljs.registerLanguage("ini",(function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}})),hljs.registerLanguage("python",(function(e){var t={cN:"meta",b:/^(>>>|\.\.\.) /},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,n]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)|=>/,c:[t,a,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}})),hljs.registerLanguage("css",(function(e){var t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}})),hljs.registerLanguage("less",(function(e){var t="[\\w-]+",n="("+t+"|@{"+t+"})",a=[],s=[],i=function(e){return{cN:"string",b:"~?"+e+".*?"+e}},o=function(e,t,n){return{cN:e,b:t,r:n}},r={b:"\\(",e:"\\)",c:s,r:0};s.push(e.CLCM,e.CBCM,i("'"),i('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},o("number","#[0-9A-Fa-f]+\\b"),r,o("variable","@@?"+t,10),o("variable","@{"+t+"}"),o("built_in","~?`[^`]*?`"),{cN:"attribute",b:t+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var l=s.concat({b:"{",e:"}",c:a}),c={bK:"when",eW:!0,c:[{bK:"and not"}].concat(s)},u={b:n+"\\s*:",rB:!0,e:"[;}]",r:0,c:[{cN:"attribute",b:n,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",r:0,c:s}}]},d={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:s,r:0}},p={cN:"variable",v:[{b:"@"+t+"\\s*:",r:15},{b:"@"+t}],starts:{e:"[;}]",rE:!0,c:l}},h={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:n,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",r:0,c:[e.CLCM,e.CBCM,c,o("keyword","all\\b"),o("variable","@{"+t+"}"),o("selector-tag",n+"%?",0),o("selector-id","#"+n),o("selector-class","\\."+n,0),o("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:l},{b:"!important"}]};return a.push(e.CLCM,e.CBCM,d,p,u,h),{cI:!0,i:"[=>'/<($\"]",c:a}})),hljs.registerLanguage("scss",(function(e){var t={cN:"variable",b:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b"},n={cN:"number",b:"#[0-9A-Fa-f]+"};return e.CSSNM,e.QSM,e.ASM,e.CBCM,{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},t,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[t,n,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[t,e.QSM,e.ASM,n,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}})),hljs.registerLanguage("json",(function(e){var t={literal:"true false null"},n=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:n,k:t},s={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return n.splice(n.length,0,s,i),{c:n,k:t,i:"\\S"}})),hljs.registerLanguage("javascript",(function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",n={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},s={cN:"subst",b:"\\$\\{",e:"\\}",k:n,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,s]};s.c=[e.ASM,e.QSM,i,a,e.RM];var o=s.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:n,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:n,c:o}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:o}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}})),hljs.registerLanguage("bash",(function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},n={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,n,{cN:"string",b:/'/,e:/'/},t]}}))},98936:function(e,t,n){"use strict";n.d(t,{gq:function(){return o},Z6:function(){return r},kw:function(){return l}});var a=n(22928),s=n(94184),i=n.n(s),o=(n(57588),function(e){var t=e.children,n=e.className;return(0,a.Z)("div",{className:i()("flex-row",n)},void 0,t)}),r=function(e){var t=e.children,n=e.className,s=e.shrink;return(0,a.Z)("div",{className:i()("flex-row-col",n,{"flex-row-col-shrink":s})},void 0,t)},l=function(e){var t=e.auto,n=e.children,s=e.className;return(0,a.Z)("div",{className:i()("flex-row-section",{"flex-row-section-auto":t},s)},void 0,n)}},59131:function(e,t,n){"use strict";var a=n(22928);n(57588),t.Z=function(e){var t=e.children;return(0,a.Z)("div",{className:"container page-container"},void 0,t)}},99755:function(e,t,n){"use strict";n.d(t,{mr:function(){return r},gC:function(){return l},sP:function(){return c},eA:function(){return u},Ql:function(){return d},bM:function(){return p},Iv:function(){return h}});var a,s=n(22928),i=n(94184),o=n.n(i),r=(n(57588),function(e){var t=e.children,n=e.className,i=e.styleName;return(0,s.Z)("div",{className:o()("page-header",n,i&&"page-header-"+i)},void 0,(0,s.Z)("div",{className:"page-header-bg-image"},void 0,(0,s.Z)("div",{className:"page-header-bg-overlay"},void 0,a||(a=(0,s.Z)("div",{className:"page-header-image"})),t)))}),l=function(e){var t=e.children,n=e.className,a=e.styleName;return(0,s.Z)("div",{className:o()("page-header-banner",n,a&&"page-header-banner-"+a)},void 0,(0,s.Z)("div",{className:"page-header-banner-bg-image"},void 0,(0,s.Z)("div",{className:"page-header-banner-bg-overlay"},void 0,t)))},c=function(e){var t=e.children;return(0,s.Z)("div",{className:"container page-header-container"},void 0,t)},u=function(e){var t=e.children,n=e.className;return(0,s.Z)("div",{className:o()("page-header-details",n)},void 0,t)},d=function(e){var t=e.className,n=e.message;return(0,s.Z)("div",{className:o()("page-header-message",t),dangerouslySetInnerHTML:{__html:n}})},p=function(e){var t=e.children,n=e.className;return(0,s.Z)("div",{className:o()("page-header-message",n)},void 0,t)},h=function(e){var t=e.styleName,n=e.header,a=e.message;return(0,s.Z)(c,{},void 0,(0,s.Z)(r,{styleName:t},void 0,(0,s.Z)(l,{styleName:t},void 0,(0,s.Z)("h1",{},void 0,n)),a&&(0,s.Z)(u,{styleName:t},void 0,a)))}},26106:function(e,t,n){"use strict";var a=n(22928),s=(n(57588),n(32233)),i=n(89627),o=function(e){var t=e.agreement,n=e.checked,s=e.errors,o=e.url,r=e.value,l=e.onChange;if(!o)return null;var c=interpolate('<a href="%(url)s" target="_blank">%(agreement)s</a>',{agreement:(0,i.Z)(t),url:(0,i.Z)(o)},!0),u=interpolate(gettext("I have read and accept %(agreement)s."),{agreement:c},!0);return(0,a.Z)("div",{className:"checkbox legal-footnote"},void 0,(0,a.Z)("label",{},void 0,(0,a.Z)("input",{checked:n,type:"checkbox",value:r,onChange:l}),(0,a.Z)("span",{dangerouslySetInnerHTML:{__html:u}})),s&&s.map((function(e,t){return(0,a.Z)("div",{className:"help-block errors"},t,e)})))};t.Z=function(e){var t=e.errors,n=e.privacyPolicy,i=e.termsOfService,r=e.onPrivacyPolicyChange,l=e.onTermsOfServiceChange,c=s.Z.get("TERMS_OF_SERVICE_ID"),u=s.Z.get("TERMS_OF_SERVICE_URL"),d=s.Z.get("PRIVACY_POLICY_ID"),p=s.Z.get("PRIVACY_POLICY_URL");return c||d?(0,a.Z)("div",{},void 0,(0,a.Z)(o,{agreement:gettext("the terms of service"),checked:null!==i,errors:t.termsOfService,url:u,value:c,onChange:l}),(0,a.Z)(o,{agreement:gettext("the privacy policy"),checked:null!==n,errors:t.privacyPolicy,url:p,value:d,onChange:r})):null}},47235:function(e,t,n){"use strict";var a,s=n(22928),i=(n(57588),n(32233)),o=function(e){var t=e.className,n=e.text;return n?(0,s.Z)("h5",{className:t||""},void 0,n):null};t.Z=function(e){var t=e.buttonClassName,n=e.buttonLabel,r=e.formLabel,l=e.header,c=e.labelClassName,u=i.Z.get("SOCIAL_AUTH");return 0===u.length?null:(0,s.Z)("div",{className:"form-group form-social-auth"},void 0,(0,s.Z)(o,{className:c,text:l}),(0,s.Z)("div",{className:"row"},void 0,u.map((function(e){var a=e.id,i=e.name,o=e.button_text,r=e.button_color,l=e.url,c="btn btn-block btn-default btn-social-"+a,u=r?{color:r}:null,d=o||interpolate(n,{site:i},!0);return(0,s.Z)("div",{className:t||"col-xs-12"},a,(0,s.Z)("a",{className:c,style:u,href:l},void 0,d))}))),a||(a=(0,s.Z)("hr",{})),(0,s.Z)(o,{className:c,text:r}))}},50366:function(e,t,n){"use strict";var a,s,i,o,r,l,c,u=n(22928);n(57588),t.Z=function(e){var t=e.thread;return(0,u.Z)("ul",{className:"thread-flags"},void 0,2==t.weight&&(0,u.Z)("li",{className:"thread-flag-pinned-globally",title:gettext("Pinned globally")},void 0,a||(a=(0,u.Z)("span",{className:"material-icon"},void 0,"bookmark"))),1==t.weight&&(0,u.Z)("li",{className:"thread-flag-pinned-locally",title:gettext("Pinned in category")},void 0,s||(s=(0,u.Z)("span",{className:"material-icon"},void 0,"bookmark_outline"))),t.best_answer&&(0,u.Z)("li",{className:"thread-flag-answered",title:gettext("Answered")},void 0,i||(i=(0,u.Z)("span",{className:"material-icon"},void 0,"check_circle"))),t.has_poll&&(0,u.Z)("li",{className:"thread-flag-poll",title:gettext("Poll")},void 0,o||(o=(0,u.Z)("span",{className:"material-icon"},void 0,"poll"))),(t.is_unapproved||t.has_unapproved_posts)&&(0,u.Z)("li",{className:"thread-flag-unapproved",title:t.is_unapproved?gettext("Awaiting approval"):gettext("Has unapproved posts")},void 0,r||(r=(0,u.Z)("span",{className:"material-icon"},void 0,"visibility"))),t.is_closed&&(0,u.Z)("li",{className:"thread-flag-closed",title:gettext("Closed")},void 0,l||(l=(0,u.Z)("span",{className:"material-icon"},void 0,"lock"))),t.is_hidden&&(0,u.Z)("li",{className:"thread-flag-hidden",title:gettext("Hidden")},void 0,c||(c=(0,u.Z)("span",{className:"material-icon"},void 0,"visibility_off"))))}},16768:function(e,t,n){"use strict";var a,s=n(22928);n(57588),t.Z=function(e){var t=e.thread;return(0,s.Z)("span",{className:"threads-replies",title:interpolate(ngettext("%(replies)s reply","%(replies)s replies",t.replies),{replies:t.replies},!0)},void 0,a||(a=(0,s.Z)("span",{className:"material-icon"},void 0,"chat_bubble_outline")),t.replies>980?Math.round(t.replies/1e3)+"K":t.replies)}},92490:function(e,t,n){"use strict";n.d(t,{o8:function(){return s},Eg:function(){return r},Z2:function(){return l},tw:function(){return c}});var a=n(22928),s=(n(57588),function(e){var t=e.children;return(0,a.Z)("nav",{className:"toolbar"},void 0,t)}),i=n(94184),o=n.n(i),r=function(e){var t=e.children,n=e.className,s=e.shrink;return(0,a.Z)("div",{className:o()("toolbar-item",n,{"toolbar-item-shrink":s})},void 0,t)},l=function(e){var t=e.auto,n=e.children,s=e.className;return(0,a.Z)("div",{className:o()("toolbar-section",{"toolbar-section-auto":t},s)},void 0,n)},c=function(e){var t=e.className;return(0,a.Z)("div",{className:o()("toolbar-spacer",t)})}},19605:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i}});var a=n(22928),s=(n(57588),n(32233));function i(e){var t=e.size||100,n=e.size2x||t;return(0,a.Z)("img",{alt:"",className:e.className||"user-avatar",src:o(e.user,t),srcSet:o(e.user,n),width:t,height:t})}function o(e,t){return e&&e.id?function(e,t){var n=e[0];return e.forEach((function(e){e.size>=t&&(n=e)})),n}(e.avatars,t).url:s.Z.get("BLANK_AVATAR_URL")}},82211:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){var e="btn "+this.props.className,t=this.props.disabled;return this.props.loading&&(e+=" btn-loading",t=!0),(0,s.Z)("button",{className:e,disabled:t,onClick:this.props.onClick,type:this.props.onClick?"button":"submit"},void 0,this.props.children,this.props.loading?a||(a=(0,s.Z)(p.Z,{})):null)}}]),d}(d().Component);h.defaultProps={className:"btn-default",type:"submit",loading:!1,disabled:!1,onClick:null}},57026:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var a=n(22928);function s(e){return(0,a.Z)("select",{className:e.className||"form-control",disabled:e.disabled||!1,id:e.id||null,onChange:e.onChange,value:e.value},void 0,e.choices.map((function(e){return(0,a.Z)("option",{disabled:e.disabled||!1,value:e.value},e.value,"- - ".repeat(e.level)+e.label)})))}n(57588)},21688:function(e,t,n){"use strict";n.d(t,{Z:function(){return S}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c),d=n(33556);function p(e){return e.display?(0,a.Z)(d.Z,{helpText:gettext("No profile details are editable at this time."),message:gettext("This option is currently unavailable.")}):null}var h,f=n(37848);function v(e){return e.display?h||(h=(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(f.Z,{}))):null}var m=n(97326),Z=n(4942),g=n(60471);var b=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){var e;(0,s.Z)(this,u);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=c.call.apply(c,[this].concat(n)),(0,Z.Z)((0,m.Z)(e),"onChange",(function(t){var n=e.props,a=n.field;(0,n.onChange)(a.fieldname,t.target.value)})),e}return(0,i.Z)(u,[{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.field,s=e.value,i=n.input;return"select"===i.type?(0,a.Z)(g.Z,{choices:i.choices,disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,value:s}):"textarea"===i.type?(0,a.Z)("textarea",{className:"form-control",disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,rows:"4",type:"text",value:s}):"text"===i.type?(0,a.Z)("input",{className:"form-control",disabled:t,id:"id_"+n.fieldname,onChange:this.onChange,type:"text",value:s}):null}}]),u}(u().Component),y=n(96359);function _(e){var t=e.disabled,n=e.errors,s=e.fields,i=e.name,o=e.onChange,r=e.value;return(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,i),s.map((function(e){return(0,a.Z)(y.Z,{for:"id_"+e.fieldname,helpText:e.help_text,label:e.label,validation:n[e.fieldname]},e.fieldname,(0,a.Z)(b,{disabled:t,field:e,onChange:o,value:r[e.fieldname]}))})))}var N=n(82211),k=n(43345),x=n(78657),w=n(53904);var R=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;(0,s.Z)(this,u),t=c.call(this,e),(0,Z.Z)((0,m.Z)(t),"onChange",(function(e,n){t.setState((0,Z.Z)({},e,n))})),t.state={isLoading:!1,errors:{}};for(var n=e.groups.length,a=0;a<n;a++)for(var i=e.groups[a],o=i.fields.length,r=0;r<o;r++){var l=i.fields[r].fieldname,d=i.fields[r].initial;t.state[l]=d}return t}return(0,i.Z)(u,[{key:"send",value:function(){var e=Object.assign({},this.state,{errors:null,isLoading:null});return x.Z.post(this.props.api,e)}},{key:"handleSuccess",value:function(e){this.props.onSuccess(e)}},{key:"handleError",value:function(e){400===e.status?(w.Z.error(gettext("Form contains errors.")),this.setState({errors:e})):w.Z.apiError(e)}},{key:"render",value:function(){var e=this;return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,this.props.groups.map((function(t,n){return(0,a.Z)(_,{disabled:e.state.isLoading,errors:e.state.errors,fields:t.fields,name:t.name,onChange:e.onChange,value:e.state},n)}))),(0,a.Z)("div",{className:"panel-footer text-right"},void 0,(0,a.Z)(C,{disabled:this.state.isLoading,onCancel:this.props.onCancel})," ",(0,a.Z)(N.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes"))))}}]),u}(k.Z);function C(e){var t=e.onCancel,n=e.disabled;return t?(0,a.Z)("button",{className:"btn btn-default",disabled:n,onClick:t,type:"button"},void 0,gettext("Cancel")):null}var S=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={loading:!0,groups:null},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){var e=this;x.Z.get(this.props.api).then((function(t){e.setState({loading:!1,groups:t})}),(function(t){w.Z.apiError(t),e.props.cancel&&e.props.cancel()}))}},{key:"render",value:function(){var e=this.state,t=e.groups,n=e.loading;return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Edit details"))),(0,a.Z)(v,{display:n}),(0,a.Z)(p,{display:!n&&!t.length}),(0,a.Z)(E,{api:this.props.api,display:!n&&t.length,groups:t,onCancel:this.props.onCancel,onSuccess:this.props.onSuccess}))}}]),u}(u().Component);function E(e){var t=e.api,n=e.display,s=e.groups,i=e.onCancel,o=e.onSuccess;return n?(0,a.Z)(R,{api:t,groups:s,onCancel:i,onSuccess:o}):null}},96359:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"isValidated",value:function(){return void 0!==this.props.validation}},{key:"getClassName",value:function(){var e="form-group";return this.isValidated()&&(e+=" has-feedback",null===this.props.validation?e+=" has-success":e+=" has-error"),e}},{key:"getFeedback",value:function(){var e=this;return this.props.validation?(0,a.Z)("div",{className:"help-block errors"},void 0,this.props.validation.map((function(t,n){return(0,a.Z)("p",{},e.props.for+"FeedbackItem"+n,t)}))):null}},{key:"getFeedbackDescription",value:function(){return this.isValidated()?(0,a.Z)("span",{id:this.props.for+"_status",className:"sr-only"},void 0,this.props.validation?gettext("(error)"):gettext("(success)")):null}},{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:this.getClassName()},void 0,(0,a.Z)("label",{className:"control-label "+(this.props.labelClass||""),htmlFor:this.props.for||""},void 0,this.props.label+":"),(0,a.Z)("div",{className:this.props.controlClass||""},void 0,this.props.children,this.getFeedbackDescription(),this.getFeedback(),this.getHelpText(),this.props.extra||null))}}]),u}(n.n(c)().Component)},43345:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var a=n(15671),s=n(43144),i=n(97326),o=n(79340),r=n(6215),l=n(61120),c=n(4942),u=n(57588),d=n.n(u),p=n(55210),h=n(53904);var f=(0,p.C1)(),v=function(e){(0,o.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function d(){var e;(0,a.Z)(this,d);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=u.call.apply(u,[this].concat(n)),(0,c.Z)((0,i.Z)(e),"bindInput",(function(t){return function(n){e.changeValue(t,n.target.value)}})),(0,c.Z)((0,i.Z)(e),"changeValue",(function(t,n){var a=(0,c.Z)({},t,n),s=e.state.errors||{};s[t]=e.validateField(t,a[t]),a.errors=s,e.setState(a)})),(0,c.Z)((0,i.Z)(e),"handleSubmit",(function(t){if(t&&t.preventDefault(),!e.state.isLoading&&e.clean()){e.setState({isLoading:!0});var n=e.send();n?n.then((function(t){e.setState({isLoading:!1}),e.handleSuccess(t)}),(function(t){e.setState({isLoading:!1}),e.handleError(t)})):e.setState({isLoading:!1})}})),e}return(0,s.Z)(d,[{key:"validate",value:function(){var e={};if(!this.state.validators)return e;var t={required:this.state.validators.required||this.state.validators,optional:this.state.validators.optional||{}},n=[];for(var a in t.required)t.required.hasOwnProperty(a)&&t.required[a]&&n.push(a);for(var s in t.optional)t.optional.hasOwnProperty(s)&&t.optional[s]&&n.push(s);for(var i in n){var o=n[i],r=this.validateField(o,this.state[o]);null===r?e[o]=null:r&&(e[o]=r)}return e}},{key:"isValid",value:function(){var e=this.validate();for(var t in e)if(e.hasOwnProperty(t)&&null!==e[t])return!1;return!0}},{key:"validateField",value:function(e,t){var n=[];if(!this.state.validators)return n;var a={required:(this.state.validators.required||this.state.validators)[e],optional:(this.state.validators.optional||{})[e]},s=f(t)||!1;if(a.required){if(s)n=[s];else for(var i in a.required){var o=a.required[i](t);o&&n.push(o)}return n.length?n:null}if(!1===s&&a.optional){for(var r in a.optional){var l=a.optional[r](t);l&&n.push(l)}return n.length?n:null}return!1}},{key:"clean",value:function(){return!0}},{key:"send",value:function(){return null}},{key:"handleSuccess",value:function(e){}},{key:"handleError",value:function(e){h.Z.apiError(e)}}]),d}(d().Component)},94417:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"isActive",value:function(){return this.props.isControlled?this.props.isActive:!!this.props.path&&0===document.location.pathname.indexOf(this.props.path)}},{key:"getClassName",value:function(){return this.isActive()?(this.props.className||"")+" "+(this.props.activeClassName||"active"):this.props.className||""}},{key:"render",value:function(){return(0,a.Z)("li",{className:this.getClassName()},void 0,this.props.children)}}]),u}(n.n(c)().Component)},37848:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var a,s=n(22928);function i(e){return(0,s.Z)("div",{className:e.className||"loader"},void 0,a||(a=(0,s.Z)("div",{className:"loader-spinning-wheel"})))}n(57588)},52753:function(e,t,n){"use strict";n.d(t,{ZP:function(){return Z}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=(n(57588),n(82211)),h=n(43345),f=n(96359),v=n(78657),m=n(59801);var Z=function(e){(0,l.Z)(f,e);var t,n,h=(t=f,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function f(e){var t;return(0,i.Z)(this,f),t=h.call(this,e),(0,d.Z)((0,r.Z)(t),"handleSuccess",(function(e){t.props.onSuccess(e),m.Z.hide()})),(0,d.Z)((0,r.Z)(t),"handleError",(function(e){t.props.onError(e)})),(0,d.Z)((0,r.Z)(t),"onBestAnswerChange",(function(e){t.changeValue("bestAnswer",e.target.value)})),(0,d.Z)((0,r.Z)(t),"onPollChange",(function(e){t.changeValue("poll",e.target.value)})),t.state={isLoading:!1,bestAnswer:"0",poll:"0"},t}return(0,o.Z)(f,[{key:"clean",value:function(){return!this.props.polls||"0"!==this.state.poll||window.confirm(gettext("Are you sure you want to delete all polls?"))}},{key:"send",value:function(){var e=Object.assign({},this.props.data,{best_answer:this.state.bestAnswer,poll:this.state.poll});return v.Z.post(this.props.api,e)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,a||(a=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Merge threads"))),(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(g,{choices:this.props.bestAnswers,onChange:this.onBestAnswerChange,value:this.state.bestAnswer}),(0,s.Z)(b,{choices:this.props.polls,onChange:this.onPollChange,value:this.state.poll})),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)(p.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Merge threads"))))))}}]),f}(h.Z);function g(e){var t=e.choices,n=e.onChange,a=e.value;return t?(0,s.Z)(f.Z,{label:gettext("Best answer"),helpText:gettext("Please select the best answer for your newly merged thread. No posts will be deleted during the merge."),for:"id_best_answer"},void 0,(0,s.Z)("select",{className:"form-control",id:"id_best_answer",onChange:n,value:a},void 0,t.map((function(e){return(0,s.Z)("option",{value:e[0]},e[0],e[1])})))):null}function b(e){var t=e.choices,n=e.onChange,a=e.value;return t?(0,s.Z)(f.Z,{label:gettext("Poll"),helpText:gettext("Please select the poll for your newly merged thread. Rejected polls will be permanently deleted and cannot be recovered."),for:"id_poll"},void 0,(0,s.Z)("select",{className:"form-control",id:"id_poll",onChange:n,value:a},void 0,t.map((function(e){return(0,s.Z)("option",{value:e[0]},e[0],e[1])})))):null}},69092:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var a=n(15671),s=n(43144),i=n(79340),o=n(6215),r=n(61120),l=n(57588),c=n.n(l),u=n(4942),d=n(19755),p=new RegExp("^.*(?:(?:youtu.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)??v(?:i)?=|&v(?:i)?=))([^#&?]*).*"),h=new(function(){function e(){var t=this;(0,a.Z)(this,e),(0,u.Z)(this,"render",(function(e){e&&(t.highlightCode(e),t.embedYoutubePlayers(e))})),this._youtube={}}return(0,s.Z)(e,[{key:"highlightCode",value:function(e){for(var t=e.querySelectorAll("pre>code"),n=0;n<t.length;n++){var a=t[n];hljs.highlightBlock(a)}}},{key:"embedYoutubePlayers",value:function(e){for(var t=e.querySelectorAll("p>a"),n=0;n<t.length;n++){var a=t[n],s=1===a.parentNode.childNodes.length;this._youtube[a.href]||(this._youtube[a.href]=f(a.href));var i=this._youtube[a.href];s&&i&&!1!==i.data&&this.swapYoutubePlayer(a,i)}}},{key:"swapYoutubePlayer",value:function(e,t){var n="https://www.youtube.com/embed/";n+=t.video,n+="?rel=0",t.start&&(n+="&start="+t.start);var a=d('<iframe class="embed-responsive-item" src="'+n+'" allowfullscreen></iframe>');d(e).replaceWith(a),a.wrap('<div class="embed-responsive embed-responsive-16by9"></div>')}}]),e}());function f(e){var t=function(e){var t=e;return"https://"===e.substr(0,8)?t=t.substr(8):"http://"===e.substr(0,7)&&(t=t.substr(7)),"www."===t.substr(0,4)&&(t=t.substr(4)),t}(e),n=function(e){if(-1===e.indexOf("youtu"))return null;var t=e.match(p);return t?t[1]:null}(t);if(!n)return null;var a=0;if(t.indexOf("?")>0){var s=t.substr(t.indexOf("?")+1).split("&").filter((function(e){return"t="===e.substr(0,2)}))[0];if(s){var i=s.substr(2).split("m");"s"===i[0].substr(-1)?a+=parseInt(i[0].substr(0,i[0].length-1)):(a+=60*parseInt(i[0]),i[1]&&"s"===i[1].substr(-1)&&(a+=parseInt(i[1].substr(0,i[1].length-1))))}}return{start:a,video:n}}var v=n(19755);var m=function(e){(0,i.Z)(u,e);var t,n,l=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,r.Z)(t);if(n){var s=(0,r.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,o.Z)(this,e)});function u(){return(0,a.Z)(this,u),l.apply(this,arguments)}return(0,s.Z)(u,[{key:"componentDidMount",value:function(){h.render(this.documentNode),v(this.documentNode).find(".spoiler-reveal").click(Z)}},{key:"componentDidUpdate",value:function(e,t){h.render(this.documentNode),v(this.documentNode).find(".spoiler-reveal").click(Z)}},{key:"shouldComponentUpdate",value:function(e,t){return e.markup!==this.props.markup}},{key:"render",value:function(){var e=this;return c().createElement("article",{className:"misago-markup",dangerouslySetInnerHTML:{__html:this.props.markup},ref:function(t){e.documentNode=t}})}}]),u}(c().Component);function Z(e){var t=e.target;v(t).parent().parent().addClass("revealed")}},3784:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){return a||(a=(0,s.Z)("div",{className:"modal-body modal-loader"},void 0,(0,s.Z)(p.Z,{})))}}]),d}(d().Component)},30337:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120);n(57588);var c=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:"modal-body"},void 0,(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.props.icon||"info_outline")),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,this.props.message),this.getHelpText(),(0,a.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}}]),u}(n(33556).Z)},95187:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37848);var h=function(e){(0,r.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function d(){return(0,i.Z)(this,d),u.apply(this,arguments)}return(0,o.Z)(d,[{key:"render",value:function(){return a||(a=(0,s.Z)("div",{className:"panel-body panel-body-loading"},void 0,(0,s.Z)(p.Z,{className:"loader loader-spaced"})))}}]),d}(d().Component)},33556:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588);var u=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.helpText?(0,a.Z)("p",{className:"help-block"},void 0,this.props.helpText):null}},{key:"render",value:function(){return(0,a.Z)("div",{className:"panel-body panel-message-body"},void 0,(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.props.icon||"info_outline")),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,this.props.message),this.getHelpText()))}}]),u}(n.n(c)().Component)},91876:function(e,t,n){"use strict";n.d(t,{n:function(){return me},y:function(){return ke}});var a,s=n(87462),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(57588),h=n.n(p),f=n(30381),v=n.n(f),m=n(22928);function Z(e){return(0,m.Z)("div",{className:"poll-choices-bars"},void 0,e.poll.choices.map((function(t){return(0,m.Z)(g,{choice:t,poll:e.poll},t.hash)})))}function g(e){var t=0;return e.choice.votes&&e.poll.votes&&(t=Math.ceil(100*e.choice.votes/e.poll.votes)),(0,m.Z)("dl",{className:"dl-horizontal"},void 0,(0,m.Z)("dt",{},void 0,e.choice.label),(0,m.Z)("dd",{},void 0,(0,m.Z)("div",{className:"progress"},void 0,(0,m.Z)("div",{className:"progress-bar",role:"progressbar","aria-valuenow":t,"aria-valuemin":"0","aria-valuemax":"100",style:{width:t+"%"}},void 0,(0,m.Z)("span",{className:"sr-only"},void 0,y(e.votes,e.proc)))),(0,m.Z)("ul",{className:"list-unstyled list-inline poll-chart"},void 0,(0,m.Z)(b,{proc:t,votes:e.choice.votes}),(0,m.Z)(_,{selected:e.choice.selected}))))}function b(e){return(0,m.Z)("li",{className:"poll-chart-votes"},void 0,y(e.votes,e.proc))}function y(e,t){var n=ngettext("%(votes)s vote, %(proc)s% of total.","%(votes)s votes, %(proc)s% of total.",e);return interpolate(n,{votes:e,proc:t},!0)}function _(e){return e.selected?(0,m.Z)("li",{className:"poll-chart-selected"},void 0,a||(a=(0,m.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Your choice.")):null}var N,k,x,w=n(30337),R=n(3784),C=n(78657);var S=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,i.Z)(this,s),(t=a.call(this,e)).state={isLoading:!0,error:null,data:[]},t}return(0,o.Z)(s,[{key:"componentDidMount",value:function(){var e=this;C.Z.get(this.props.poll.api.votes).then((function(t){var n=t.map((function(e){return Object.assign({},e,{voters:e.voters.map((function(e){return Object.assign({},e,{voted_on:v()(e.voted_on)})}))})}));e.setState({isLoading:!1,data:n})}),(function(t){e.setState({isLoading:!1,error:t.detail})}))}},{key:"render",value:function(){return(0,m.Z)("div",{className:"modal-dialog"+(this.state.error?" modal-message":" modal-sm"),role:"document"},void 0,(0,m.Z)("div",{className:"modal-content"},void 0,(0,m.Z)("div",{className:"modal-header"},void 0,(0,m.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,N||(N=(0,m.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,m.Z)("h4",{className:"modal-title"},void 0,gettext("Poll votes"))),(0,m.Z)(E,{data:this.state.data,error:this.state.error,isLoading:this.state.isLoading})))}}]),s}(h().Component);function E(e){return e.isLoading?k||(k=(0,m.Z)(R.Z,{})):e.error?(0,m.Z)(w.Z,{icon:"error_outline",message:e.error}):(0,m.Z)(L,{data:e.data})}function L(e){return(0,m.Z)("div",{className:"modal-body modal-poll-votes"},void 0,(0,m.Z)("ul",{className:"list-unstyled votes-details"},void 0,e.data.map((function(e){return h().createElement(P,(0,s.Z)({key:e.hash},e))}))))}function P(e){return(0,m.Z)("li",{},void 0,(0,m.Z)("h4",{},void 0,e.label),(0,m.Z)(O,{votes:e.votes}),(0,m.Z)(T,{voters:e.voters}),x||(x=(0,m.Z)("hr",{})))}function O(e){var t=ngettext("%(votes)s user has voted for this choice.","%(votes)s users have voted for this choice.",e.votes),n=interpolate(t,{votes:e.votes},!0);return(0,m.Z)("p",{},void 0,n)}function T(e){return e.voters.length?(0,m.Z)("ul",{className:"list-unstyled"},void 0,e.voters.map((function(e){return h().createElement(A,(0,s.Z)({key:e.username},e))}))):null}function A(e){return e.url?(0,m.Z)("li",{},void 0,(0,m.Z)("a",{className:"item-title",href:e.url},void 0,e.username)," ",(0,m.Z)(B,{voted_on:e.voted_on})):(0,m.Z)("li",{},void 0,(0,m.Z)("strong",{},void 0,e.username)," ",(0,m.Z)(B,{voted_on:e.voted_on}))}function B(e){return(0,m.Z)("abbr",{className:"text-muted",title:e.voted_on.format("LLL")},void 0,e.voted_on.fromNow())}var I=n(59752),j=n(7738),D=n(59801),U=n(27950),M=n(53904),z=n(90287);function H(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}function F(e){var t=e.isPollOver,n=e.poll,a=e.showVoting,s=e.thread;if(!function(e,t,n){return n.is_public||t.can_delete||t.can_edit||t.can_see_votes||t.can_vote&&!e&&(!n.hasSelectedChoices||n.allow_revotes)}(t,n.acl,n))return null;var i=[],o=n.acl.can_vote,r=!n.hasSelectedChoices||n.allow_revotes;return o&&r&&i.push(0),(n.is_public||n.acl.can_see_votes)&&i.push(1),n.acl.can_edit&&i.push(2),n.acl.can_delete&&i.push(3),(0,m.Z)("div",{className:"row poll-options"},void 0,(0,m.Z)(Y,{controls:i,isPollOver:t,poll:n,showVoting:a}),(0,m.Z)(V,{controls:i,poll:n}),(0,m.Z)($,{controls:i,poll:n,thread:s}),(0,m.Z)(G,{controls:i,poll:n}))}function q(e,t){var n="col-xs-6";return 1===e.length&&(n="col-xs-12"),3===e.length&&e[0]===t&&(n="col-xs-12"),n+" col-sm-3 col-md-2"}function Y(e){var t=e.poll.acl.can_vote,n=!e.poll.hasSelectedChoices||e.poll.allow_revotes;return t&&n?(0,m.Z)("div",{className:q(e.controls,0)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:e.poll.isBusy,onClick:e.showVoting,type:"button"},void 0,gettext("Vote"))):null}var V=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){D.Z.show((0,m.Z)(S,{poll:e.props.poll}))})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.is_public||this.props.poll.acl.can_see_votes?(0,m.Z)("div",{className:q(this.props.controls,1)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("See votes"))):null}}]),n}(h().Component),$=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){U.Z.open({submit:e.props.poll.api.index,thread:e.props.thread,poll:e.props.poll,mode:"POLL"})})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.acl.can_edit?(0,m.Z)("div",{className:q(this.props.controls,2)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("Edit"))):null}}]),n}(h().Component),G=function(e){(0,l.Z)(n,e);var t=H(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){if(!window.confirm(gettext("Are you sure you want to delete this poll? This action is not reversible.")))return!1;z.Z.dispatch(I.n6()),C.Z.delete(e.props.poll.api.index).then(e.handleSuccess,e.handleError)})),(0,d.Z)((0,r.Z)(e),"handleSuccess",(function(e){M.Z.success("Poll has been deleted"),z.Z.dispatch(I.Od()),z.Z.dispatch(j.y8(e))})),(0,d.Z)((0,r.Z)(e),"handleError",(function(e){M.Z.apiError(e),z.Z.dispatch(I.Ar())})),e}return(0,o.Z)(n,[{key:"render",value:function(){return this.props.poll.acl.can_delete?(0,m.Z)("div",{className:q(this.props.controls,3)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.props.poll.isBusy,onClick:this.onClick,type:"button"},void 0,gettext("Delete"))):null}}]),n}(h().Component),W=n(89627),K='<abbr title="%(absolute)s">%(relative)s</abbr>';function J(e){return(0,m.Z)("ul",{className:"list-unstyled list-inline poll-details"},void 0,(0,m.Z)(ae,{votes:e.poll.votes}),(0,m.Z)(te,{poll:e.poll}),(0,m.Z)(se,{poll:e.poll}),(0,m.Z)(Q,{poll:e.poll}))}function Q(e){var t=interpolate((0,W.Z)(gettext("Posted by %(poster)s %(posted_on)s.")),{poster:X(e.poll),posted_on:ee(e.poll)},!0);return(0,m.Z)("li",{className:"poll-info-creation",dangerouslySetInnerHTML:{__html:t}})}function X(e){return e.url.poster?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,W.Z)(e.url.poster),user:(0,W.Z)(e.poster_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,W.Z)(e.poster_name)},!0)}function ee(e){return interpolate(K,{absolute:(0,W.Z)(e.posted_on.format("LLL")),relative:(0,W.Z)(e.posted_on.fromNow())},!0)}function te(e){if(!e.poll.length)return null;var t=interpolate((0,W.Z)(gettext("Voting ends %(ends_on)s.")),{ends_on:ne(e.poll)},!0);return(0,m.Z)("li",{className:"poll-info-ends-on",dangerouslySetInnerHTML:{__html:t}})}function ne(e){return interpolate(K,{absolute:(0,W.Z)(e.endsOn.format("LLL")),relative:(0,W.Z)(e.endsOn.fromNow())},!0)}function ae(e){var t=ngettext("%(votes)s vote.","%(votes)s votes.",e.votes),n=interpolate(t,{votes:e.votes},!0);return(0,m.Z)("li",{className:"poll-info-votes"},void 0,n)}function se(e){return e.poll.is_public?(0,m.Z)("li",{className:"poll-info-public"},void 0,gettext("Votes are public.")):null}function ie(e){return(0,m.Z)("div",{className:"panel panel-default panel-poll"},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("h2",{},void 0,e.poll.question),(0,m.Z)(J,{poll:e.poll}),(0,m.Z)(Z,{poll:e.poll}),(0,m.Z)(F,{isPollOver:e.isPollOver,poll:e.poll,showVoting:e.showVoting,thread:e.thread})))}function oe(e){return(0,m.Z)("ul",{className:"list-unstyled list-inline poll-help"},void 0,(0,m.Z)(re,{choicesLeft:e.choicesLeft}),(0,m.Z)(le,{poll:e.poll}))}function re(e){var t=e.choicesLeft;if(0===t)return(0,m.Z)("li",{className:"poll-help-choices-left"},void 0,gettext("You can't select any more choices."));var n=ngettext("You can select %(choices)s more choice.","You can select %(choices)s more choices.",t),a=interpolate(n,{choices:t},!0);return(0,m.Z)("li",{className:"poll-help-choices-left"},void 0,a)}function le(e){return e.poll.allow_revotes?(0,m.Z)("li",{className:"poll-help-allow-revotes"},void 0,gettext("You can change your vote later.")):(0,m.Z)("li",{className:"poll-help-no-revotes"},void 0,gettext("Votes are final."))}function ce(e){return(0,m.Z)("ul",{className:"list-unstyled poll-select-choices"},void 0,e.choices.map((function(t){return(0,m.Z)(ue,{choice:t,toggleChoice:e.toggleChoice},t.hash)})))}var ue=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){var e;(0,i.Z)(this,s);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,d.Z)((0,r.Z)(e),"onClick",(function(){e.props.toggleChoice(e.props.choice.hash)})),e}return(0,o.Z)(s,[{key:"render",value:function(){return(0,m.Z)("li",{className:"poll-select-choice"},void 0,(0,m.Z)("button",{className:this.props.choice.selected?"btn btn-selected":"btn",onClick:this.onClick,type:"button"},void 0,(0,m.Z)("span",{className:"material-icon"},void 0,this.props.choice.selected?"check_box":"check_box_outline_blank"),(0,m.Z)("strong",{},void 0,this.props.choice.label)))}}]),s}(h().Component);function de(e,t){var n=[];for(var a in t){var s=t[a];s.selected&&n.push(s)}return e.allowed_choices-n.length}var pe=n(82211),he=n(43345);var fe=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,i.Z)(this,s),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"toggleChoice",(function(e){var n,a=function(e,t){for(var n in e){var a=e[n];if(a.hash===t)return a}return null}(t.state.choices,e);n=a.selected?t.deselectChoice(a,e):t.selectChoice(a,e),t.setState({choices:n,choicesLeft:de(t.props.poll,n)})})),(0,d.Z)((0,r.Z)(t),"selectChoice",(function(e,n){if(!de(t.props.poll,t.state.choices))for(var a in t.state.choices.slice()){var s=t.state.choices[a];if(s.selected&&s.hash!=n){s.selected=!1;break}}return t.state.choices.map((function(e){return Object.assign({},e,{selected:e.hash==n||e.selected})}))})),(0,d.Z)((0,r.Z)(t),"deselectChoice",(function(e,n){return t.state.choices.map((function(e){return Object.assign({},e,{selected:e.hash!=n&&e.selected})}))})),t.state={isLoading:!1,choices:e.poll.choices,choicesLeft:de(e.poll,e.poll.choices)},t}return(0,o.Z)(s,[{key:"clean",value:function(){return this.state.choicesLeft!==this.props.poll.allowed_choices||(M.Z.error(gettext("You need to select at least one choice")),!1)}},{key:"send",value:function(){var e=[];for(var t in this.state.choices.slice()){var n=this.state.choices[t];n.selected&&e.push(n.hash)}return C.Z.post(this.props.poll.api.votes,e)}},{key:"handleSuccess",value:function(e){z.Z.dispatch(I.gx(e)),M.Z.success(gettext("Your vote has been saved.")),this.props.showResults()}},{key:"handleError",value:function(e){400===e.status?M.Z.error(e.detail):M.Z.apiError(e)}},{key:"render",value:function(){var e=[];return this.props.poll.acl.can_vote&&e.push(0),(this.props.poll.is_public||this.props.poll.acl.can_see_votes)&&e.push(1),this.props.poll.acl.can_edit&&e.push(2),this.props.poll.acl.can_delete&&e.push(3),(0,m.Z)("div",{className:"panel panel-default panel-poll"},void 0,(0,m.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("h2",{},void 0,this.props.poll.question),(0,m.Z)(J,{poll:this.props.poll}),(0,m.Z)(ce,{choices:this.state.choices,toggleChoice:this.toggleChoice}),(0,m.Z)(oe,{choicesLeft:this.state.choicesLeft,poll:this.props.poll})),(0,m.Z)("div",{className:"panel-footer"},void 0,(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)("div",{className:q(e,0)},void 0,(0,m.Z)(pe.Z,{className:"btn-primary btn-block btn-sm",loading:this.state.isLoading},void 0,gettext("Save your vote"))),(0,m.Z)("div",{className:q(e,1)},void 0,(0,m.Z)("button",{className:"btn btn-default btn-block btn-sm",disabled:this.state.isLoading,onClick:this.props.showResults,type:"button"},void 0,gettext("See results"))),(0,m.Z)($,{controls:e,poll:this.props.poll,thread:this.props.thread}),(0,m.Z)(G,{controls:e,poll:this.props.poll})))))}}]),s}(he.Z);var ve,me=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"showResults",(function(){t.setState({showResults:!0})})),(0,d.Z)((0,r.Z)(t),"showVoting",(function(){t.setState({showResults:!1})}));var n=!0;return e.user.id&&!e.poll.hasSelectedChoices&&(n=!1),t.state={showResults:n},t}return(0,o.Z)(p,[{key:"render",value:function(){if(!this.props.thread.poll)return null;var e=function(e){return!!e.length&&v()().isAfter(e.endsOn)}(this.props.poll);return e||!this.props.poll.acl.can_vote||this.state.showResults?h().createElement(ie,(0,s.Z)({isPollOver:e,showVoting:this.showVoting},this.props)):h().createElement(fe,(0,s.Z)({showResults:this.showResults},this.props))}}]),p}(h().Component);function Ze(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var ge=function(e){(0,l.Z)(n,e);var t=Ze(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onAdd",(function(){var t=e.props.choices.slice();t.push({hash:ye(),label:""}),e.props.setChoices(t)})),(0,d.Z)((0,r.Z)(e),"onChange",(function(t,n){var a=e.props.choices.map((function(e){return e.hash===t&&(e.label=n),e}));e.props.setChoices(a)})),(0,d.Z)((0,r.Z)(e),"onDelete",(function(t){var n=e.props.choices.filter((function(e){return e.hash!==t}));e.props.setChoices(n)})),e}return(0,o.Z)(n,[{key:"render",value:function(){var e=this;return(0,m.Z)("div",{className:"poll-choices-control"},void 0,(0,m.Z)("ul",{className:"list-group"},void 0,this.props.choices.map((function(t){return(0,m.Z)(be,{canDelete:e.props.choices.length>2,choice:t,disabled:e.props.disabled,onChange:e.onChange,onDelete:e.onDelete},t.hash)}))),(0,m.Z)("button",{className:"btn btn-default btn-sm",disabled:this.props.disabled,onClick:this.onAdd,type:"button"},void 0,gettext("Add choice")))}}]),n}(h().Component),be=function(e){(0,l.Z)(n,e);var t=Ze(n);function n(){var e;(0,i.Z)(this,n);for(var a=arguments.length,s=new Array(a),o=0;o<a;o++)s[o]=arguments[o];return e=t.call.apply(t,[this].concat(s)),(0,d.Z)((0,r.Z)(e),"onChange",(function(t){e.props.onChange(e.props.choice.hash,t.target.value)})),(0,d.Z)((0,r.Z)(e),"onDelete",(function(){window.confirm(gettext("Are you sure you want to delete this choice?"))&&e.props.onDelete(e.props.choice.hash)})),e}return(0,o.Z)(n,[{key:"render",value:function(){return(0,m.Z)("li",{className:"list-group-item"},void 0,(0,m.Z)("button",{className:"btn",disabled:!this.props.canDelete||this.props.disabled,onClick:this.onDelete,title:gettext("Delete this choice"),type:"button"},void 0,ve||(ve=(0,m.Z)("span",{className:"material-icon"},void 0,"close"))),(0,m.Z)("input",{disabled:this.props.disabled,maxLength:"255",placeholder:gettext("choice label"),type:"text",onChange:this.onChange,value:this.props.choice.label}))}}]),n}(h().Component);function ye(){for(var e="";12!=e.length;)e=Math.random().toString(36).replace(/[^a-zA-Z0-9]+/g,"").substr(1,12);return e}var _e=n(96359),Ne=n(7227);var ke=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;(0,i.Z)(this,s),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"setChoices",(function(e){var n=Object.assign({},n,{choices:null});t.setState({choices:e,errors:n})})),(0,d.Z)((0,r.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard poll?"))&&U.Z.close()}));var n=e.poll||{question:"",choices:[{hash:"choice-10000",label:""},{hash:"choice-20000",label:""}],length:0,allowed_choices:1,allow_revotes:0,is_public:0};return t.state={isLoading:!1,isEdit:!!n.question,question:n.question,choices:n.choices,length:n.length,allowed_choices:n.allowed_choices,allow_revotes:n.allow_revotes,is_public:n.is_public,validators:{question:[],choices:[],length:[],allowed_choices:[]},errors:{}},t}return(0,o.Z)(s,[{key:"send",value:function(){var e={question:this.state.question,choices:this.state.choices,length:this.state.length,allowed_choices:this.state.allowed_choices,allow_revotes:this.state.allow_revotes,is_public:this.state.is_public};return this.state.isEdit?C.Z.put(this.props.poll.api.index,e):C.Z.post(this.props.thread.api.poll,e)}},{key:"handleSuccess",value:function(e){z.Z.dispatch(I.gx(e)),this.state.isEdit?M.Z.success(gettext("Poll has been edited.")):M.Z.success(gettext("Poll has been posted.")),U.Z.close()}},{key:"handleError",value:function(e){400===e.status?(e.non_field_errors&&(e.allowed_choices=e.non_field_errors),this.setState({errors:Object.assign({},e)}),M.Z.error(gettext("Form contains errors."))):M.Z.apiError(e)}},{key:"render",value:function(){return(0,m.Z)("div",{className:"poll-form"},void 0,(0,m.Z)("div",{className:"container"},void 0,(0,m.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,m.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,m.Z)("div",{className:"panel-body"},void 0,(0,m.Z)("fieldset",{},void 0,(0,m.Z)("legend",{},void 0,gettext("Question and choices")),(0,m.Z)(_e.Z,{label:gettext("Poll question"),for:"id_questions",validation:this.state.errors.question},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_questions",onChange:this.bindInput("question"),type:"text",maxLength:"255",value:this.state.question})),(0,m.Z)(_e.Z,{label:gettext("Available choices"),validation:this.state.errors.choices},void 0,(0,m.Z)(ge,{choices:this.state.choices,disabled:this.state.isLoading,setChoices:this.setChoices}))),(0,m.Z)("fieldset",{},void 0,(0,m.Z)("legend",{},void 0,gettext("Voting")),(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Poll length"),helpText:gettext("Enter number of days for which voting in this poll should be possible or zero to run this poll indefinitely."),for:"id_length",validation:this.state.errors.length},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_length",onChange:this.bindInput("length"),type:"text",value:this.state.length}))),(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Allowed choices"),for:"id_allowed_choices",validation:this.state.errors.allowed_choices},void 0,(0,m.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_allowed_choices",onChange:this.bindInput("allowed_choices"),type:"text",maxLength:"255",value:this.state.allowed_choices})))),(0,m.Z)("div",{className:"row"},void 0,(0,m.Z)(xe,{bindInput:this.bindInput,disabled:this.state.isLoading,isEdit:this.state.isEdit,value:this.state.is_public}),(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Allow vote changes"),for:"id_allow_revotes"},void 0,(0,m.Z)(Ne.Z,{id:"id_allow_revotes",disabled:this.state.isLoading,iconOn:"check",iconOff:"close",labelOn:gettext("Allow participants to change their vote"),labelOff:gettext("Don't allow participants to change their vote"),onChange:this.bindInput("allow_revotes"),value:this.state.allow_revotes})))))),(0,m.Z)("div",{className:"panel-footer text-right"},void 0,(0,m.Z)("button",{className:"btn btn-default",disabled:this.state.isLoading,onClick:this.onCancel,type:"button"},void 0,gettext("Cancel"))," ",(0,m.Z)(pe.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,this.state.isEdit?gettext("Save changes"):gettext("Post poll")))))))}}]),s}(he.Z);function xe(e){return e.isEdit?null:(0,m.Z)("div",{className:"col-xs-12 col-sm-6"},void 0,(0,m.Z)(_e.Z,{label:gettext("Make voting public"),helpText:gettext("Making voting public will allow everyone to access detailed list of votes, showing which users voted for which choices and at which times. This option can't be changed after poll's creation. Moderators may see voting details for all polls."),for:"id_is_public"},void 0,(0,m.Z)(Ne.Z,{id:"id_is_public",disabled:e.disabled,iconOn:"visibility",iconOff:"visibility_off",labelOn:gettext("Votes are public"),labelOff:gettext("Votes are hidden"),onChange:e.bindInput("is_public"),value:e.value})))}},11005:function(e,t,n){"use strict";n.d(t,{Z:function(){return x}});var a=n(22928),s=n(57588),i=n.n(s),o=n(69092);function r(e){return e.post.content?i().createElement(l,e):i().createElement(c,e)}function l(e){return(0,a.Z)("div",{className:"post-body"},void 0,(0,a.Z)(o.Z,{markup:e.post.content}))}function c(e){return(0,a.Z)("div",{className:"post-body post-body-invalid"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("This post's contents cannot be displayed.")),(0,a.Z)("p",{className:"text-muted"},void 0,gettext("This error is caused by invalid post content manipulation.")))}function u(e){var t=e.post,n=t.category,s=t.thread,i=interpolate(gettext("posted %(posted_on)s"),{posted_on:t.posted_on.format("LL, LT")},!0);return(0,a.Z)("div",{className:"post-heading"},void 0,(0,a.Z)("a",{className:"btn btn-link item-title",href:s.url},void 0,s.title),(0,a.Z)("a",{className:"btn btn-link post-category",href:n.url.index},void 0,n.name),(0,a.Z)("a",{href:t.url.index,className:"btn btn-link posted-on",title:i},void 0,t.posted_on.fromNow()))}var d,p,h=n(19605);function f(e){var t=e.post;return(0,a.Z)("a",{className:"btn btn-default btn-icon pull-right",href:t.url.index},void 0,(0,a.Z)("span",{className:"btn-text-left hidden-xs"},void 0,gettext("See post")),d||(d=(0,a.Z)("span",{className:"material-icon"},void 0,"chevron_right")))}function v(e){var t=e.post;return(0,a.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,a.Z)(f,{post:t}),(0,a.Z)("div",{className:"media"},void 0,p||(p=(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("span",{},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50})))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("span",{className:"item-title"},void 0,t.poster_name)),(0,a.Z)("span",{className:"user-title user-title-anonymous"},void 0,gettext("Removed user")))))}function m(e){var t=e.rank,n=e.title||t.title||t.name,s="user-title";return t.css_class&&(s+=" user-title-"+t.css_class),t.is_tab?(0,a.Z)("a",{className:s,href:t.url},void 0,n):(0,a.Z)("span",{className:s},void 0,n)}function Z(e){var t=e.post,n=e.poster;return(0,a.Z)("div",{className:"post-side post-side-registered"},void 0,(0,a.Z)(f,{post:t}),(0,a.Z)("div",{className:"media"},void 0,(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("a",{href:n.url},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50,user:n}))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("a",{className:"item-title",href:n.url},void 0,n.username)),(0,a.Z)(m,{title:n.title,rank:n.rank}))))}function g(e){var t=e.post,n=e.poster;return n&&n.id?(0,a.Z)(Z,{post:t,poster:n}):(0,a.Z)(v,{post:t})}function b(e){var t=e.post,n=e.poster||t.poster,s="post";return n&&n.rank.css_class&&(s+=" post-"+n.rank.css_class),(0,a.Z)("li",{className:s,id:"post-"+t.id},void 0,(0,a.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("div",{className:"panel-content"},void 0,(0,a.Z)(g,{post:t,poster:n}),(0,a.Z)(u,{post:t}),(0,a.Z)(r,{post:t})))))}var y,_,N=n(44039);function k(){return(0,a.Z)("ul",{className:"posts-list post-feed ui-preview"},void 0,(0,a.Z)("li",{className:"post"},void 0,(0,a.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,a.Z)("div",{className:"media"},void 0,y||(y=(0,a.Z)("div",{className:"media-left"},void 0,(0,a.Z)("span",{},void 0,(0,a.Z)(h.ZP,{className:"poster-avatar",size:50})))),(0,a.Z)("div",{className:"media-body"},void 0,(0,a.Z)("div",{className:"media-heading"},void 0,(0,a.Z)("span",{className:"item-title"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))),(0,a.Z)("span",{className:"user-title user-title-anonymous"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))))),(0,a.Z)("div",{className:"post-heading"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")),(0,a.Z)("div",{className:"post-body"},void 0,(0,a.Z)("article",{className:"misago-markup"},void 0,(0,a.Z)("p",{},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")," ",(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," ")," ",(0,a.Z)("span",{className:"ui-preview-text",style:{width:N.e(30,200)+"px"}},void 0," "))))))))}function x(e){var t=e.isReady,n=e.posts,s=e.poster;return t?(0,a.Z)("ul",{className:"posts-list post-feed ui-ready"},void 0,n.map((function(e){return(0,a.Z)(b,{post:e,poster:s},e.id)}))):_||(_=(0,a.Z)(k,{}))}},12891:function(e,t,n){"use strict";n.d(t,{Jh:function(){return o},jn:function(){return i}});var a=n(55210),s=n(32233);function i(){return[(0,a.Ei)(s.Z.get("SETTINGS").thread_title_length_min,(function(e,t){var n=ngettext("Thread title should be at least %(limit_value)s character long (it has %(show_value)s).","Thread title should be at least %(limit_value)s characters long (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)})),(0,a.BS)(s.Z.get("SETTINGS").thread_title_length_max,(function(e,t){var n=ngettext("Thread title cannot be longer than %(limit_value)s character (it has %(show_value)s).","Thread title cannot be longer than %(limit_value)s characters (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))]}function o(){return s.Z.get("SETTINGS").post_length_max?[r(),(0,a.BS)(s.Z.get("SETTINGS").post_length_max||1e6,(function(e,t){var n=ngettext("Posted message cannot be longer than %(limit_value)s character (it has %(show_value)s).","Posted message cannot be longer than %(limit_value)s characters (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))]:[r()]}function r(){return(0,a.Ei)(s.Z.get("SETTINGS").post_length_min,(function(e,t){var n=ngettext("Posted message should be at least %(limit_value)s character long (it has %(show_value)s).","Posted message should be at least %(limit_value)s characters long (it has %(show_value)s).",e);return interpolate(n,{limit_value:e,show_value:t},!0)}))}},60471:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var a=n(22928),s=n(15671),i=n(43144),o=n(97326),r=n(79340),l=n(6215),c=n(61120),u=n(4942),d=n(57588);var p=function(e){(0,r.Z)(p,e);var t,n,d=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function p(){var e;(0,s.Z)(this,p);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=d.call.apply(d,[this].concat(n)),(0,u.Z)((0,o.Z)(e),"change",(function(t){return function(){e.props.onChange({target:{value:t}})}})),e}return(0,i.Z)(p,[{key:"getChoice",value:function(){var e=this,t=null;return this.props.choices.map((function(n){n.value===e.props.value&&(t=n)})),t}},{key:"getIcon",value:function(){return this.getChoice().icon}},{key:"getLabel",value:function(){return this.getChoice().label}},{key:"render",value:function(){var e=this;return(0,a.Z)("div",{className:"btn-group btn-select-group"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-select dropdown-toggle",id:this.props.id||null,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false","aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},void 0,(0,a.Z)(h,{icon:this.getIcon()}),this.getLabel()),(0,a.Z)("ul",{className:"dropdown-menu"},void 0,this.props.choices.map((function(t,n){return(0,a.Z)("li",{},n,(0,a.Z)("button",{type:"button",className:"btn-link",onClick:e.change(t.value)},void 0,(0,a.Z)(h,{icon:t.icon}),t.label))}))))}}]),p}(n.n(d)().Component);function h(e){var t=e.icon;return t?(0,a.Z)("span",{className:"material-icon"},void 0,t):null}},14467:function(e,t,n){"use strict";n.d(t,{Z:function(){return b}});var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=(n(57588),n(32233)),d=n(82211),p=n(43345),h=n(47235),f=n(78657),v=n(59801),m=n(53904),Z=n(93051),g=n(19755);var b=function(e){(0,r.Z)(b,e);var t,n,p=(t=b,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function b(e){var t;return(0,i.Z)(this,b),(t=p.call(this,e)).state={isLoading:!1,showActivation:!1,username:"",password:"",validators:{username:[],password:[]}},t}return(0,o.Z)(b,[{key:"clean",value:function(){return!!this.isValid()||(m.Z.error(gettext("Fill out both fields.")),!1)}},{key:"send",value:function(){return f.Z.post(u.Z.get("AUTH_API"),{username:this.state.username,password:this.state.password})}},{key:"handleSuccess",value:function(){var e=g("#hidden-login-form");e.append('<input type="text" name="username" />'),e.append('<input type="password" name="password" />'),e.find('input[type="hidden"]').val(f.Z.getCsrfToken()),e.find('input[name="redirect_to"]').val(window.location.pathname),e.find('input[name="username"]').val(this.state.username),e.find('input[name="password"]').val(this.state.password),e.submit(),this.setState({isLoading:!0})}},{key:"handleError",value:function(e){400===e.status?"inactive_admin"===e.code?m.Z.info(e.detail):"inactive_user"===e.code?(m.Z.info(e.detail),this.setState({showActivation:!0})):"banned"===e.code?((0,Z.Z)(e.detail),v.Z.hide()):m.Z.error(e.detail):403===e.status&&e.ban?((0,Z.Z)(e.ban),v.Z.hide()):m.Z.apiError(e)}},{key:"getActivationButton",value:function(){return this.state.showActivation?(0,s.Z)("a",{className:"btn btn-success btn-block",href:u.Z.get("REQUEST_ACTIVATION_URL")},void 0,gettext("Activate account")):null}},{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog modal-sm modal-sign-in",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,a||(a=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Sign in"))),(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(h.Z,{buttonLabel:gettext("Sign in with %(site)s"),formLabel:gettext("Or use your forum account:"),labelClassName:"text-center"}),(0,s.Z)("div",{className:"form-group"},void 0,(0,s.Z)("div",{className:"control-input"},void 0,(0,s.Z)("input",{className:"form-control input-lg",disabled:this.state.isLoading,id:"id_username",onChange:this.bindInput("username"),placeholder:gettext("Username or e-mail"),type:"text",value:this.state.username}))),(0,s.Z)("div",{className:"form-group"},void 0,(0,s.Z)("div",{className:"control-input"},void 0,(0,s.Z)("input",{className:"form-control input-lg",disabled:this.state.isLoading,id:"id_password",onChange:this.bindInput("password"),placeholder:gettext("Password"),type:"password",value:this.state.password})))),(0,s.Z)("div",{className:"modal-footer"},void 0,this.getActivationButton(),(0,s.Z)(d.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Sign in")),(0,s.Z)("a",{className:"btn btn-default btn-block",href:u.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Forgot password?"))))))}}]),b}(p.Z)},24678:function(e,t,n){"use strict";n.d(t,{Jj:function(){return h},ZP:function(){return p},pg:function(){return f}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c);function d(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,l.Z)(e);if(t){var s=(0,l.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,r.Z)(this,n)}}var p=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getClass",value:function(){return e=this.props.status,t="",e.is_banned?t="banned":e.is_hidden?t="offline":e.is_online_hidden?t="online":e.is_offline_hidden?t="offline":e.is_online?t="online":e.is_offline&&(t="offline"),"user-status user-"+t;var e,t}},{key:"render",value:function(){return(0,a.Z)("span",{className:this.getClass()},void 0,this.props.children)}}]),n}(u().Component),h=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getIcon",value:function(){return this.props.status.is_banned?"remove_circle_outline":this.props.status.is_hidden?"help_outline":this.props.status.is_online_hidden?"label":this.props.status.is_offline_hidden?"label_outline":this.props.status.is_online?"lens":this.props.status.is_offline?"panorama_fish_eye":void 0}},{key:"render",value:function(){return(0,a.Z)("span",{className:"material-icon status-icon"},void 0,this.getIcon())}}]),n}(u().Component),f=function(e){(0,o.Z)(n,e);var t=d(n);function n(){return(0,s.Z)(this,n),t.apply(this,arguments)}return(0,i.Z)(n,[{key:"getHelp",value:function(){return e=this.props.user,(t=this.props.status).is_banned?t.banned_until?interpolate(gettext("%(username)s is banned until %(ban_expires)s"),{username:e.username,ban_expires:t.banned_until.format("LL, LT")},!0):interpolate(gettext("%(username)s is banned"),{username:e.username},!0):t.is_hidden?interpolate(gettext("%(username)s is hiding presence"),{username:e.username},!0):t.is_online_hidden?interpolate(gettext("%(username)s is online (hidden)"),{username:e.username},!0):t.is_offline_hidden?interpolate(gettext("%(username)s was last seen %(last_click)s (hidden)"),{username:e.username,last_click:t.last_click.fromNow()},!0):t.is_online?interpolate(gettext("%(username)s is online"),{username:e.username},!0):t.is_offline?interpolate(gettext("%(username)s was last seen %(last_click)s"),{username:e.username,last_click:t.last_click.fromNow()},!0):void 0;var e,t}},{key:"getLabel",value:function(){return this.props.status.is_banned?gettext("Banned"):this.props.status.is_hidden?gettext("Hidden"):this.props.status.is_online_hidden?gettext("Online (hidden)"):this.props.status.is_offline_hidden?gettext("Offline (hidden)"):this.props.status.is_online?gettext("Online"):this.props.status.is_offline?gettext("Offline"):void 0}},{key:"render",value:function(){return(0,a.Z)("span",{className:this.props.className||"status-label",title:this.getHelp()},void 0,this.getLabel())}}]),n}(u().Component)},7850:function(e,t,n){"use strict";n.d(t,{Z:function(){return k}});var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c);var d,p,h=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getEmptyMessage",value:function(){return this.props.emptyMessage?this.props.emptyMessage:gettext("No name changes have been recorded for your account.")}},{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-ready"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,(0,a.Z)("li",{className:"list-group-item empty-message"},void 0,this.getEmptyMessage())))}}]),u}(u().Component),f=n(19605);var v=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"renderUserAvatar",value:function(){return this.props.change.changed_by?(0,a.Z)("a",{href:this.props.change.changed_by.url,className:"user-avatar-wrapper"},void 0,(0,a.Z)(f.ZP,{user:this.props.change.changed_by,size:"100"})):d||(d=(0,a.Z)("span",{className:"user-avatar-wrapper"},void 0,(0,a.Z)(f.ZP,{size:"100"})))}},{key:"renderUsername",value:function(){return this.props.change.changed_by?(0,a.Z)("a",{href:this.props.change.changed_by.url,className:"item-title"},void 0,this.props.change.changed_by.username):(0,a.Z)("span",{className:"item-title"},void 0,this.props.change.changed_by_username)}},{key:"render",value:function(){return(0,a.Z)("li",{className:"list-group-item"},this.props.change.id,(0,a.Z)("div",{className:"change-avatar"},void 0,this.renderUserAvatar()),(0,a.Z)("div",{className:"change-author"},void 0,this.renderUsername()),(0,a.Z)("div",{className:"change"},void 0,(0,a.Z)("span",{className:"old-username"},void 0,this.props.change.old_username),p||(p=(0,a.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),(0,a.Z)("span",{className:"new-username"},void 0,this.props.change.new_username)),(0,a.Z)("div",{className:"change-date"},void 0,(0,a.Z)("abbr",{title:this.props.change.changed_on.format("LLL")},void 0,this.props.change.changed_on.fromNow())))}}]),u}(u().Component);var m,Z,g=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-ready"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,this.props.changes.map((function(e){return(0,a.Z)(v,{change:e},e.id)}))))}}]),u}(u().Component),b=n(44039);var y=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return(0,a.Z)("li",{className:this.getClassName()},void 0,m||(m=(0,a.Z)("div",{className:"change-avatar"},void 0,(0,a.Z)("span",{className:"user-avatar"},void 0,(0,a.Z)(f.ZP,{size:"100"})))),(0,a.Z)("div",{className:"change-author"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,100)+"px"}},void 0," ")),(0,a.Z)("div",{className:"change"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,70)+"px"}},void 0," "),Z||(Z=(0,a.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(30,70)+"px"}},void 0," ")),(0,a.Z)("div",{className:"change-date"},void 0,(0,a.Z)("span",{className:"ui-preview-text",style:{width:b.e(80,140)+"px"}},void 0," ")))}}]),u}(u().Component);var _,N=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,a.Z)("div",{className:"username-history ui-preview"},void 0,(0,a.Z)("ul",{className:"list-group"},void 0,[0,1,2].map((function(e){return(0,a.Z)(y,{hiddenOnMobile:e>0},e)}))))}}]),u}(u().Component);var k=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){return this.props.isLoaded?this.props.changes.length?(0,a.Z)(g,{changes:this.props.changes}):(0,a.Z)(h,{emptyMessage:this.props.emptyMessage}):_||(_=(0,a.Z)(N,{}))}}]),u}(u().Component)},40429:function(e,t,n){"use strict";n.d(t,{Z:function(){return L}});var a,s=n(22928),i=n(57588),o=n.n(i),r=n(19605),l=n(24678);function c(e){var t=e.showStatus,n=e.user;return(0,s.Z)("ul",{className:"list-unstyled"},void 0,(0,s.Z)(u,{showStatus:t,user:n}),(0,s.Z)(d,{user:n}),a||(a=(0,s.Z)("li",{className:"user-stat-divider"})),(0,s.Z)(p,{user:n}),(0,s.Z)(h,{user:n}),(0,s.Z)(f,{user:n}))}function u(e){var t=e.showStatus,n=e.user;return t?(0,s.Z)("li",{className:"user-stat-status"},void 0,(0,s.Z)(l.ZP,{status:n.status},void 0,(0,s.Z)(l.pg,{status:n.status,user:n}))):null}function d(e){var t=e.user.joined_on,n=interpolate(gettext("Joined on %(joined_on)s"),{joined_on:t.format("LL, LT")},!0),a=interpolate(gettext("Joined %(joined_on)s"),{joined_on:t.fromNow()},!0);return(0,s.Z)("li",{className:"user-stat-join-date"},void 0,(0,s.Z)("abbr",{title:n},void 0,a))}function p(e){var t=e.user,n=v("user-stat-posts",t.posts),a=ngettext("%(posts)s post","%(posts)s posts",t.posts);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{posts:t.posts},!0))}function h(e){var t=e.user,n=v("user-stat-threads",t.threads),a=ngettext("%(threads)s thread","%(threads)s threads",t.threads);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{threads:t.threads},!0))}function f(e){var t=e.user,n=v("user-stat-followers",t.followers),a=ngettext("%(followers)s follower","%(followers)s followers",t.followers);return(0,s.Z)("li",{className:n},void 0,interpolate(a,{followers:t.followers},!0))}function v(e,t){return 0===t?e+" user-stat-empty":e}function m(e){var t=e.rank,n=e.title||t.title||t.name,a="user-title";return t.css_class&&(a+=" user-title-"+t.css_class),t.is_tab?(0,s.Z)("a",{className:a,href:t.url},void 0,n):(0,s.Z)("span",{className:a},void 0,n)}function Z(e){var t=e.showStatus,n=e.user,a=n.rank,i="panel user-card";return a.css_class&&(i+=" user-card-"+a.css_class),(0,s.Z)("div",{className:i},void 0,(0,s.Z)("div",{className:"panel-body"},void 0,(0,s.Z)("div",{className:"row"},void 0,(0,s.Z)("div",{className:"col-xs-3 user-card-left"},void 0,(0,s.Z)("div",{className:"user-card-small-avatar"},void 0,(0,s.Z)("a",{href:n.url},void 0,(0,s.Z)(r.ZP,{size:"50",size2x:"80",user:n})))),(0,s.Z)("div",{className:"col-xs-9 col-sm-12 user-card-body"},void 0,(0,s.Z)("div",{className:"user-card-avatar"},void 0,(0,s.Z)("a",{href:n.url},void 0,(0,s.Z)(r.ZP,{size:"150",size2x:"200",user:n}))),(0,s.Z)("div",{className:"user-card-username"},void 0,(0,s.Z)("a",{href:n.url},void 0,n.username)),(0,s.Z)("div",{className:"user-card-title"},void 0,(0,s.Z)(m,{rank:a,title:n.title})),(0,s.Z)("div",{className:"user-card-stats"},void 0,(0,s.Z)(c,{showStatus:t,user:n}))))))}var g,b,y,_=n(15671),N=n(43144),k=n(79340),x=n(6215),w=n(61120),R=n(44039);var C,S=function(e){(0,k.Z)(i,e);var t,n,a=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,w.Z)(t);if(n){var s=(0,w.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,x.Z)(this,e)});function i(){return(0,_.Z)(this,i),a.apply(this,arguments)}return(0,N.Z)(i,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,s.Z)("div",{className:"panel user-card user-card-preview"},void 0,(0,s.Z)("div",{className:"panel-body"},void 0,(0,s.Z)("div",{className:"row"},void 0,g||(g=(0,s.Z)("div",{className:"col-xs-3 user-card-left"},void 0,(0,s.Z)("div",{className:"user-card-small-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(r.ZP,{size:"50",size2x:"80"}))))),(0,s.Z)("div",{className:"col-xs-9 col-sm-12 user-card-body"},void 0,b||(b=(0,s.Z)("div",{className:"user-card-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(r.ZP,{size:"150",size2x:"200"})))),(0,s.Z)("div",{className:"user-card-username"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(60,150)+"px"}},void 0," ")),(0,s.Z)("div",{className:"user-card-title"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(60,150)+"px"}},void 0," ")),(0,s.Z)("div",{className:"user-card-stats"},void 0,(0,s.Z)("ul",{className:"list-unstyled"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),y||(y=(0,s.Z)("li",{className:"user-stat-divider"})),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," ")),(0,s.Z)("li",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:R.e(30,70)+"px"}},void 0," "))))))))}}]),i}(o().Component);function E(e){var t=e.colClassName,n=e.cols,a=Array.apply(null,{length:n}).map(Number.call,Number);return(0,s.Z)("div",{className:"users-cards-list ui-preview"},void 0,(0,s.Z)("div",{className:"row"},void 0,a.map((function(e){var n=t;return 0!==e&&(n+=" hidden-xs"),3===e&&(n+=" hidden-sm"),(0,s.Z)("div",{className:n},e,C||(C=(0,s.Z)(S,{})))}))))}function L(e){var t=e.cols,n=e.isReady,a=e.showStatus,i=e.users,o="col-xs-12 col-sm-4";return 4===t&&(o+=" col-md-3"),n?(0,s.Z)("div",{className:"users-cards-list ui-ready"},void 0,(0,s.Z)("div",{className:"row"},void 0,i.map((function(e){return(0,s.Z)("div",{className:o},e.id,(0,s.Z)(Z,{showStatus:a,user:e}))})))):(0,s.Z)(E,{colClassName:o,cols:t})}},82125:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var a=n(15671),s=n(43144),i=n(97326),o=n(79340),r=n(6215),l=n(61120),c=n(4942),u=n(57588);var d=function(e){(0,o.Z)(d,e);var t,n,u=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function d(e){var t;return(0,a.Z)(this,d),t=u.call(this,e),(0,c.Z)((0,i.Z)(t),"toggleNav",(function(){t.setState({dropdown:!t.state.dropdown})})),(0,c.Z)((0,i.Z)(t),"hideNav",(function(){t.setState({dropdown:!1})})),t.state={dropdown:!1},t}return(0,s.Z)(d,[{key:"getCompactNavClassName",value:function(){return this.state.dropdown?"compact-nav open":"compact-nav"}}]),d}(n.n(u)().Component)},7227:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var a=n(22928),s=n(15671),i=n(43144),o=n(97326),r=n(79340),l=n(6215),c=n(61120),u=n(4942),d=n(57588);var p=function(e){(0,r.Z)(p,e);var t,n,d=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function p(){var e;(0,s.Z)(this,p);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=d.call.apply(d,[this].concat(n)),(0,u.Z)((0,o.Z)(e),"toggle",(function(){e.props.onChange({target:{value:!e.props.value}})})),e}return(0,i.Z)(p,[{key:"getClassName",value:function(){return this.props.value?"btn btn-yes-no btn-yes-no-on":"btn btn-yes-no btn-yes-no-off"}},{key:"getIcon",value:function(){return this.props.value?this.props.iconOn||"check_box":this.props.iconOff||"check_box_outline_blank"}},{key:"getLabel",value:function(){return this.props.value?this.props.labelOn||gettext("yes"):this.props.labelOff||gettext("no")}},{key:"render",value:function(){return(0,a.Z)("button",{type:"button",onClick:this.toggle,className:this.getClassName(),id:this.props.id||null,"aria-describedby":this.props["aria-describedby"]||null,disabled:this.props.disabled||!1},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,this.getIcon()),(0,a.Z)("span",{className:"btn-text"},void 0,this.getLabel()))}}]),p}(n.n(d)().Component)},32233:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var a=n(15671),s=n(43144),i=(n(58294),n(95377),n(68852),n(39737),n(14316),n(43204),n(43511),n(7023),n(54116),function(){function e(t){(0,a.Z)(this,e),this.isOrdered=!1,this._items=t||[]}return(0,s.Z)(e,[{key:"add",value:function(e,t,n){this._items.push({key:e,item:t,after:n&&n.after||null,before:n&&n.before||null})}},{key:"get",value:function(e,t){for(var n=0;n<this._items.length;n++)if(this._items[n].key===e)return this._items[n].item;return t}},{key:"has",value:function(e){return void 0!==this.get(e)}},{key:"values",value:function(){for(var e=[],t=0;t<this._items.length;t++)e.push(this._items[t].item);return e}},{key:"order",value:function(e){return this.isOrdered||(this._items=this._order(this._items),this.isOrdered=!0),e||void 0===e?this.values():this._items}},{key:"orderedValues",value:function(){return this.order(!0)}},{key:"_order",value:function(e){var t=[];e.forEach((function(e){t.push(e.key)}));var n=[],a=[];function s(e){var t=-1;-1===a.indexOf(e.key)&&(e.after?-1!==(t=a.indexOf(e.after))&&(t+=1):e.before&&(t=a.indexOf(e.before)),-1!==t&&(n.splice(t,0,e),a.splice(t,0,e.key)))}e.forEach((function(e){e.after||e.before||(n.push(e),a.push(e.key))})),e.forEach((function(e){"_end"===e.before&&(n.push(e),a.push(e.key))}));for(var i=200;i>0&&t.length!==a.length;)i-=1,e.forEach(s);return n}}]),e}()),o=new(function(){function e(){(0,a.Z)(this,e),this._initializers=[],this._context={}}return(0,s.Z)(e,[{key:"addInitializer",value:function(e){this._initializers.push({key:e.name,item:e.initializer,after:e.after,before:e.before})}},{key:"init",value:function(e){var t=this;this._context=e,new i(this._initializers).orderedValues().forEach((function(e){e(t)}))}},{key:"has",value:function(e){return!!this._context[e]}},{key:"get",value:function(e,t){return this.has(e)?this._context[e]:t||void 0}},{key:"pop",value:function(e){if(this.has(e)){var t=this._context[e];return this._context[e]=null,t}}}]),e}());window.misago=o;var r=o},58339:function(e,t,n){"use strict";var a=n(32233),s=n(78657);a.Z.addInitializer({name:"ajax",initializer:function(){s.Z.init(a.Z.get("CSRF_COOKIE_NAME"))}})},64109:function(e,t,n){"use strict";var a=n(32233),s=n(35486),i=n(78657),o=n(53904),r=n(90287);a.Z.addInitializer({name:"auth-sync",initializer:function(e){e.get("isAuthenticated")&&window.setInterval((function(){i.Z.get(e.get("AUTH_API")).then((function(e){r.Z.dispatch((0,s.r$)(e))}),(function(e){o.Z.apiError(e)}))}),45e3)},after:"auth"})},46226:function(e,t,n){"use strict";var a=n(32233),s=n(98274),i=n(59801),o=n(90287),r=n(62833);a.Z.addInitializer({name:"auth",initializer:function(){s.Z.init(o.Z,r.Z,i.Z)},after:"store"})},93240:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(93825),o=n(96142),r=n(53904);a.Z.addInitializer({name:"captcha",initializer:function(e){i.ZP.init(e,s.Z,o.Z,r.Z)}})},75147:function(e,t,n){"use strict";var a=n(22928),s=n(57588),i=n.n(s),o=n(32233),r=n(15671),l=n(43144),c=n(97326),u=n(79340),d=n(6215),p=n(61120),h=n(4942),f=n(78657);var v=function(e){(0,u.Z)(i,e);var t,n,s=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function i(e){var t;return(0,r.Z)(this,i),t=s.call(this,e),(0,h.Z)((0,c.Z)(t),"handleDecline",(function(){t.state.submiting||window.confirm(gettext("Declining will result in immediate deactivation and deletion of your account. This action is not reversible."))&&(t.setState({submiting:!0}),f.Z.post(t.props.api,{accept:!1}).then((function(){window.location.reload(!0)})))})),(0,h.Z)((0,c.Z)(t),"handleAccept",(function(){t.state.submiting||(t.setState({submiting:!0}),f.Z.post(t.props.api,{accept:!0}).then((function(){window.location.reload(!0)})))})),t.state={submiting:!1},t}return(0,l.Z)(i,[{key:"render",value:function(){return(0,a.Z)("div",{},void 0,(0,a.Z)("button",{className:"btn btn-default",disabled:this.state.submiting,type:"buton",onClick:this.handleDecline},void 0,gettext("Decline")),(0,a.Z)("button",{className:"btn btn-primary",disabled:this.state.submiting,type:"buton",onClick:this.handleAccept},void 0,gettext("Accept and continue")))}}]),i}(i().Component),m=n(4869);o.Z.addInitializer({name:"component:accept-agreement",initializer:function(e){document.getElementById("required-agreement-mount")&&(0,m.Z)((0,a.Z)(v,{api:e.get("REQUIRED_AGREEMENT_API")}),"required-agreement-mount",!1)},after:"store"})},4894:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588);var p=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"refresh",value:function(){window.location.reload()}},{key:"getMessage",value:function(){return this.props.signedIn?interpolate(gettext("You have signed in as %(username)s. Please refresh the page before continuing."),{username:this.props.signedIn.username},!0):this.props.signedOut?interpolate(gettext("%(username)s, you have been signed out. Please refresh the page before continuing."),{username:this.props.user.username},!0):void 0}},{key:"render",value:function(){var e="auth-message";return(this.props.signedIn||this.props.signedOut)&&(e+=" show"),(0,i.Z)("div",{className:e},void 0,(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.getMessage()),(0,i.Z)("p",{},void 0,(0,i.Z)("button",{className:"btn btn-default",type:"button",onClick:this.refresh},void 0,gettext("Reload page")),(0,i.Z)("span",{className:"hidden-xs hidden-sm"},void 0," "+gettext("or press F5 key.")))))}}]),s}(n.n(d)().Component);function h(e){return{user:e.auth.user,signedIn:e.auth.signedIn,signedOut:e.auth.signedOut}}var f=n(4869);s.Z.addInitializer({name:"component:auth-message",initializer:function(){(0,f.Z)((0,a.$j)(h)(p),"auth-message-mount")},after:"store"})},29223:function(e,t,n){"use strict";var a=n(32233),s=n(93051);a.Z.addInitializer({name:"component:banmed-page",initializer:function(e){e.has("BAN_MESSAGE")&&(0,s.Z)(e.get("BAN_MESSAGE"),!1)},after:"store"})},3026:function(e,t,n){"use strict";var a=n(37424),s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(30381),h=n.n(p),f=n(57588),v=n.n(f);function m(e){return(0,s.Z)("div",{className:"categories-list"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("No categories exist or you don't have permission to see them.")))))}function Z(e){var t=e.category;return t.description?(0,s.Z)("div",{className:"category-description",dangerouslySetInnerHTML:{__html:t.description.html}}):null}function g(e){var t=e.category;return(0,s.Z)("div",{className:b(t),title:y(t)},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return e.is_closed?e.is_read?"lock_outline":"lock":e.is_read?"chat_bubble_outline":"chat_bubble"}(t)))}function b(e){return e.is_read?"read-status item-read":"read-status item-new"}function y(e){return e.is_closed?e.is_read?gettext("This category has no new posts. (closed)"):gettext("This category has new posts. (closed)"):e.is_read?gettext("This category has no new posts."):gettext("This category has new posts.")}function _(e){var t=e.category;return(0,s.Z)("div",{className:"col-xs-12 col-sm-6 col-md-6 category-main"},void 0,(0,s.Z)("div",{className:"media"},void 0,(0,s.Z)("div",{className:"media-left"},void 0,(0,s.Z)(g,{category:t})),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("h4",{className:"media-heading"},void 0,(0,s.Z)("a",{href:t.url.index},void 0,t.name)),(0,s.Z)(Z,{category:t}))))}var N,k,x,w=n(19605);function R(e){var t=e.category;return(0,s.Z)("div",{className:"col-xs-12 col-sm-6 col-md-4 category-last-thread"},void 0,(0,s.Z)(C,{category:t}),(0,s.Z)(L,{category:t}),(0,s.Z)(P,{category:t}),(0,s.Z)(O,{category:t}))}function C(e){var t=e.category;return t.acl.can_browse&&t.acl.can_see_all_threads&&t.last_thread_title?(0,s.Z)("div",{className:"media"},void 0,(0,s.Z)("div",{className:"media-left hidden-xs"},void 0,(0,s.Z)(S,{category:t})),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("div",{className:"media-heading"},void 0,(0,s.Z)("a",{className:"item-title thread-title",href:t.url.last_thread_new,title:t.last_thread_title},void 0,t.last_thread_title)),(0,s.Z)("ul",{className:"list-inline"},void 0,(0,s.Z)("li",{className:"category-last-thread-poster"},void 0,(0,s.Z)(E,{category:t})),N||(N=(0,s.Z)("li",{className:"divider"},void 0,"—")),(0,s.Z)("li",{className:"category-last-thread-date"},void 0,(0,s.Z)("a",{href:t.url.last_post},void 0,t.last_post_on.fromNow()))))):null}function S(e){var t=e.category;return t.last_poster?(0,s.Z)("a",{className:"last-poster-avatar",href:t.last_poster.url,title:t.last_poster_name},void 0,(0,s.Z)(w.ZP,{className:"media-object",size:40,user:t.last_poster})):(0,s.Z)("span",{className:"last-poster-avatar",title:t.last_poster_name},void 0,k||(k=(0,s.Z)(w.ZP,{className:"media-object",size:40})))}function E(e){var t=e.category;return t.last_poster?(0,s.Z)("a",{className:"item-title",href:t.last_poster.url},void 0,t.last_poster_name):(0,s.Z)("span",{className:"item-title"},void 0,t.last_poster_name)}function L(e){var t=e.category;return t.acl.can_browse&&t.acl.can_see_all_threads?t.last_thread_title?null:(0,s.Z)(T,{message:gettext("This category is empty. No threads were posted within it so far.")}):null}function P(e){var t=e.category;return t.acl.can_browse?t.acl.can_see_all_threads?null:(0,s.Z)(T,{message:gettext("This category is private. You can see only your own threads within it.")}):null}function O(e){return e.category.acl.can_browse?null:(0,s.Z)(T,{message:gettext("This category is protected. You can't browse its contents.")})}function T(e){var t=e.message;return(0,s.Z)("div",{className:"media category-thread-message"},void 0,x||(x=(0,s.Z)("div",{className:"media-left"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"media-body"},void 0,(0,s.Z)("p",{},void 0,t)))}function A(e){var t=e.category;return(0,s.Z)("div",{className:"col-md-2 hidden-xs hidden-sm"},void 0,(0,s.Z)("ul",{className:"list-unstyled category-stats"},void 0,(0,s.Z)(B,{threads:t.threads}),(0,s.Z)(I,{posts:t.posts})))}function B(e){var t=e.threads,n=ngettext("%(threads)s thread","%(threads)s threads",t);return(0,s.Z)("li",{className:"category-stat-threads"},void 0,interpolate(n,{threads:t},!0))}function I(e){var t=e.posts,n=ngettext("%(posts)s post","%(posts)s posts",t);return(0,s.Z)("li",{className:"category-stat-posts"},void 0,interpolate(n,{posts:t},!0))}function j(e){var t=e.category,n="btn btn-default btn-block btn-sm btn-subcategory";return t.is_read||(n+=" btn-subcategory-new"),(0,s.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3"},void 0,(0,s.Z)("a",{className:n,href:t.url.index},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return e.is_closed?e.is_read?"lock_outline":"lock":e.is_read?"chat_bubble_outline":"chat_bubble"}(t)),(0,s.Z)("span",{className:"icon-text"},void 0,t.name)))}function D(e){var t=e.category;return e.isFirst||0===t.subcategories.length?null:(0,s.Z)("div",{className:"row subcategories-list"},void 0,t.subcategories.map((function(e){return(0,s.Z)(j,{category:e},e.id)})))}function U(e){var t=e.category,n=e.isFirst,a="list-group-item";return t.description?a+=" list-group-category-has-description":a+=" list-group-category-no-description",n&&(a+=" list-group-item-first"),t.css_class&&(a+=" list-group-category-has-flavor",a+=" list-group-item-category-"+t.css_class),(0,s.Z)("li",{className:a},void 0,(0,s.Z)("div",{className:"row"},void 0,(0,s.Z)(_,{category:t}),(0,s.Z)(A,{category:t}),(0,s.Z)(R,{category:t})),(0,s.Z)(D,{category:t,isFirst:n}))}function M(e){var t=e.category,n="list-group list-group-category";return t.css_class&&(n+=" list-group-category-has-flavor",n+=" list-group-category-"+t.css_class),(0,s.Z)("ul",{className:n},void 0,(0,s.Z)(U,{category:t,isFirst:!0}),t.subcategories.map((function(e){return(0,s.Z)(U,{category:e,isFirst:!1},e.id)})))}function z(e){var t=e.categories;return(0,s.Z)("div",{className:"categories-list"},void 0,t.map((function(e){return(0,s.Z)(M,{category:e},e.id)})))}var H,F=n(32233),q=n(55547);var Y=function e(t){return Object.assign({},t,{last_post_on:t.last_post_on?h()(t.last_post_on):null,subcategories:t.subcategories.map(e)})},V=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;return(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"update",(function(e){t.setState({categories:e.map(Y)})})),t.state={categories:F.Z.get("CATEGORIES").map(Y)},t.startPolling(F.Z.get("CATEGORIES_API")),t}return(0,o.Z)(p,[{key:"startPolling",value:function(e){q.Z.start({poll:"categories",url:e,frequency:18e4,update:this.update})}},{key:"render",value:function(){var e=this.state.categories;return 0===e.length?H||(H=(0,s.Z)(m,{})):(0,s.Z)(z,{categories:e})}}]),p}(v().Component);function $(e){return{tick:e.tick.tick}}var G=n(4869);F.Z.addInitializer({name:"component:categories",initializer:function(){document.getElementById("categories-mount")&&(0,G.Z)((0,a.$j)($)(V),"categories-mount")},after:"store"})},94795:function(e,t,n){"use strict";var a=n(22928),s=n(15671),i=n(43144),o=n(79340),r=n(6215),l=n(61120),c=n(57588),u=n.n(c),d=n(37424),p=n(69987),h=n(94417);function f(e){return(0,a.Z)("div",{className:"list-group nav-side"},void 0,e.options.map((function(t){return(0,a.Z)(p.rU,{to:e.baseUrl+t.component+"/",className:"list-group-item",activeClassName:"active"},t.component,(0,a.Z)("span",{className:"material-icon"},void 0,t.icon),t.name)})))}function v(e){return(0,a.Z)("ul",{className:e.className||"dropdown-menu",role:"menu"},void 0,e.options.map((function(t){return(0,a.Z)(h.Z,{path:e.baseUrl+t.component+"/"},t.component,(0,a.Z)(p.rU,{to:e.baseUrl+t.component+"/",onClick:e.hideNav},void 0,(0,a.Z)("span",{className:"material-icon hidden-sm"},void 0,t.icon),t.name))})))}var m,Z=n(97326),g=n(4942),b=n(82211),y=n(78657),_=n(53328),N=n(53904),k=n(90287),x=n(32233);var w=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"onPasswordChange",(function(e){t.setState({password:e.target.value})})),(0,g.Z)((0,Z.Z)(t),"handleSubmit",(function(e){e.preventDefault();var n=t.state,a=n.isLoading,s=n.password,i=t.props.user;return 0==s.length?(N.Z.error(gettext("Enter your password to confirm account deletion.")),!1):!a&&(t.setState({isLoading:!0}),void y.Z.post(i.api.delete,{password:s}).then((function(e){window.location.href=x.Z.get("MISAGO_PATH")}),(function(e){t.setState({isLoading:!1}),e.password?N.Z.error(e.password[0]):N.Z.apiError(e)})))})),t.state={isLoading:!1,password:""},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Delete account"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-danger panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Delete account"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("You are going to delete your account. This action is nonreversible, and will result in following data being deleted:")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Stored IP addresses associated with content that you have posted will be deleted.")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Your username will become available for other user to rename to or for new user to register their account with.")),(0,a.Z)("p",{},void 0,"-"," ",gettext("Your e-mail will become available for use in new account registration.")),m||(m=(0,a.Z)("hr",{})),(0,a.Z)("p",{},void 0,gettext("All your posted content will NOT be deleted, but username associated with it will be changed to one shared by all deleted accounts."))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)("div",{className:"input-group"},void 0,(0,a.Z)("input",{className:"form-control",disabled:this.state.isLoading,name:"password-confirmation",type:"password",placeholder:gettext("Enter your password to confirm account deletion."),value:this.state.password,onChange:this.onPasswordChange}),(0,a.Z)("span",{className:"input-group-btn"},void 0,(0,a.Z)(b.Z,{className:"btn-danger",loading:this.state.isLoading},void 0,gettext("Delete my account")))))))}}]),u}(u().Component),R=n(21688);var C=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){var e;(0,s.Z)(this,u);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return e=c.call.apply(c,[this].concat(n)),(0,g.Z)((0,Z.Z)(e),"onSuccess",(function(){N.Z.info(gettext("Your details have been updated."))})),e}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Edit details"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)(R.Z,{api:this.props.user.api.edit_details,onSuccess:this.onSuccess})}}]),u}(u().Component),S=n(30381),E=n.n(S);var L=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"handleLoadDownloads",(function(){y.Z.get(t.props.user.api.data_downloads).then((function(e){t.setState({isLoading:!1,downloads:e})}),(function(e){N.Z.apiError(e)}))})),(0,g.Z)((0,Z.Z)(t),"handleRequestDataDownload",(function(){t.setState({isSubmiting:!0}),y.Z.post(t.props.user.api.request_data_download).then((function(){t.handleLoadDownloads(),N.Z.success(gettext("Your request for data download has been registered.")),t.setState({isSubmiting:!1})}),(function(e){N.Z.apiError(e),t.setState({isSubmiting:!1})}))})),t.state={isLoading:!1,isSubmiting:!1,downloads:[]},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Download your data"),parent:gettext("Change your options")}),this.handleLoadDownloads()}},{key:"render",value:function(){return(0,a.Z)("div",{},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Download your data"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("p",{},void 0,gettext('To download your data from the site, click the "Request data download" button. Depending on amount of data to be archived and number of users wanting to download their data at same time it may take up to few days for your download to be prepared. An e-mail with notification will be sent to you when your data is ready to be downloaded.')),(0,a.Z)("p",{},void 0,gettext("The download will only be available for limited amount of time, after which it will be deleted from the site and marked as expired."))),(0,a.Z)("table",{className:"table"},void 0,(0,a.Z)("thead",{},void 0,(0,a.Z)("tr",{},void 0,(0,a.Z)("th",{},void 0,gettext("Requested on")),(0,a.Z)("th",{className:"col-md-4"},void 0,gettext("Download")))),(0,a.Z)("tbody",{},void 0,this.state.downloads.map((function(e){return(0,a.Z)("tr",{},e.id,(0,a.Z)("td",{style:P},void 0,E()(e.requested_on).fromNow()),(0,a.Z)("td",{},void 0,(0,a.Z)(O,{exportFile:e.file,status:e.status})))})),0==this.state.downloads.length?(0,a.Z)("tr",{},void 0,(0,a.Z)("td",{colSpan:"2"},void 0,gettext("You have no data downloads."))):null)),(0,a.Z)("div",{className:"panel-footer text-right"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isSubmiting,type:"button",onClick:this.handleRequestDataDownload},void 0,gettext("Request data download")))))}}]),u}(u().Component),P={verticalAlign:"middle"},O=function(e){var t=e.exportFile,n=e.status;return 0===n||1===n?(0,a.Z)(b.Z,{className:"btn-info btn-sm btn-block",disabled:!0,type:"button"},void 0,gettext("Download is being prepared")):t?(0,a.Z)("a",{className:"btn btn-success btn-sm btn-block",href:t},void 0,gettext("Download your data")):(0,a.Z)(b.Z,{className:"btn-default btn-sm btn-block",disabled:!0,type:"button"},void 0,gettext("Download is expired"))},T=n(43345),A=n(96359),B=n(60471),I=n(7227),j=n(35486);var D,U=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={isLoading:!1,is_hiding_presence:e.user.is_hiding_presence,limits_private_thread_invites_to:e.user.limits_private_thread_invites_to,subscribe_to_started_threads:e.user.subscribe_to_started_threads,subscribe_to_replied_threads:e.user.subscribe_to_replied_threads,errors:{}},t.privateThreadInvitesChoices=[{value:0,icon:"help_outline",label:gettext("Everybody")},{value:1,icon:"done_all",label:gettext("Users I follow")},{value:2,icon:"highlight_off",label:gettext("Nobody")}],t.subscribeToChoices=[{value:0,icon:"star_border",label:gettext("No")},{value:1,icon:"star_half",label:gettext("Notify")},{value:2,icon:"star",label:gettext("Notify with e-mail")}],t}return(0,i.Z)(u,[{key:"send",value:function(){return y.Z.post(this.props.user.api.options,{is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})}},{key:"handleSuccess",value:function(){k.Z.dispatch((0,j.r$)({is_hiding_presence:this.state.is_hiding_presence,limits_private_thread_invites_to:this.state.limits_private_thread_invites_to,subscribe_to_started_threads:this.state.subscribe_to_started_threads,subscribe_to_replied_threads:this.state.subscribe_to_replied_threads})),N.Z.success(gettext("Your forum options have been changed."))}},{key:"handleError",value:function(e){400===e.status?N.Z.error(gettext("Please reload page and try again.")):N.Z.apiError(e)}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Forum options"),parent:gettext("Change your options")})}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change forum options"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,gettext("Privacy settings")),(0,a.Z)(A.Z,{label:gettext("Hide my presence"),helpText:gettext("If you hide your presence, only members with permission to see hidden users will see when you are online."),for:"id_is_hiding_presence"},void 0,(0,a.Z)(I.Z,{id:"id_is_hiding_presence",disabled:this.state.isLoading,iconOn:"visibility_off",iconOff:"visibility",labelOn:gettext("Hide my presence from other users"),labelOff:gettext("Show my presence to other users"),onChange:this.bindInput("is_hiding_presence"),value:this.state.is_hiding_presence})),(0,a.Z)(A.Z,{label:gettext("Private thread invitations"),for:"id_limits_private_thread_invites_to"},void 0,(0,a.Z)(B.Z,{id:"id_limits_private_thread_invites_to",disabled:this.state.isLoading,onChange:this.bindInput("limits_private_thread_invites_to"),value:this.state.limits_private_thread_invites_to,choices:this.privateThreadInvitesChoices}))),(0,a.Z)("fieldset",{},void 0,(0,a.Z)("legend",{},void 0,gettext("Automatic subscriptions")),(0,a.Z)(A.Z,{label:gettext("Threads I start"),for:"id_subscribe_to_started_threads"},void 0,(0,a.Z)(B.Z,{id:"id_subscribe_to_started_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_started_threads"),value:this.state.subscribe_to_started_threads,choices:this.subscribeToChoices})),(0,a.Z)(A.Z,{label:gettext("Threads I reply to"),for:"id_subscribe_to_replied_threads"},void 0,(0,a.Z)(B.Z,{id:"id_subscribe_to_replied_threads",disabled:this.state.isLoading,onChange:this.bindInput("subscribe_to_replied_threads"),value:this.state.subscribe_to_replied_threads,choices:this.subscribeToChoices})))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes")))))}}]),u}(T.Z),M=n(95187);function z(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),D||(D=(0,a.Z)(M.Z,{})))}var H=n(33556);var F=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"getHelpText",value:function(){return this.props.options.next_on?interpolate(gettext("You will be able to change your username %(next_change)s."),{next_change:this.props.options.next_on.fromNow()},!0):gettext("You have used up available name changes.")}},{key:"render",value:function(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),(0,a.Z)(H.Z,{helpText:this.getHelpText(),message:gettext("You can't change your username at the moment.")}))}}]),u}(u().Component),q=n(55210);var Y,V=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={username:"",validators:{username:[q.lG(),q.HR(e.options.length_min),q.gS(e.options.length_max)]},isLoading:!1},t}return(0,i.Z)(u,[{key:"getHelpText",value:function(){var e=[];if(this.props.options.changes_left>0){var t=ngettext("You can change your username %(changes_left)s more time.","You can change your username %(changes_left)s more times.",this.props.options.changes_left);e.push(interpolate(t,{changes_left:this.props.options.changes_left},!0))}if(this.props.user.acl.name_changes_expire>0){var n=ngettext("Used changes become available again after %(name_changes_expire)s day.","Used changes become available again after %(name_changes_expire)s days.",this.props.user.acl.name_changes_expire);e.push(interpolate(n,{name_changes_expire:this.props.user.acl.name_changes_expire},!0))}return e.length?e.join(" "):null}},{key:"clean",value:function(){var e=this.validate();return e.username?(N.Z.error(e.username[0]),!1):this.state.username.trim()!==this.props.user.username||(N.Z.info(gettext("Your new username is same as current one.")),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),this.props.complete(e.username,e.slug,e.options)}},{key:"handleError",value:function(e){N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change username"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New username"),for:"id_username",helpText:this.getHelpText()},void 0,(0,a.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change username")))))}}]),u}(T.Z),$=n(7850),G=n(48927),W=n(6935);var K,J=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),t=c.call(this,e),(0,g.Z)((0,Z.Z)(t),"onComplete",(function(e,n,a){t.setState({options:a}),k.Z.dispatch((0,G.KP)({username:e,slug:n},t.props.user,t.props.user)),k.Z.dispatch((0,W._S)(t.props.user,e,n)),N.Z.success(gettext("Your username has been changed successfully."))})),t.state={isLoaded:!1,options:null},t}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){var e=this;_.Z.set({title:gettext("Change username"),parent:gettext("Change your options")}),Promise.all([y.Z.get(this.props.user.api.username),y.Z.get(x.Z.get("USERNAME_CHANGES_API"),{user:this.props.user.id})]).then((function(t){k.Z.dispatch((0,G.ZB)(t[1].results)),e.setState({isLoaded:!0,options:{changes_left:t[0].changes_left,length_min:t[0].length_min,length_max:t[0].length_max,next_on:t[0].next_on?E()(t[0].next_on):null}})}))}},{key:"getChangeForm",value:function(){return this.state.isLoaded?0===this.state.options.changes_left?(0,a.Z)(F,{options:this.state.options}):(0,a.Z)(V,{complete:this.onComplete,options:this.state.options,user:this.props.user}):Y||(Y=(0,a.Z)(z,{}))}},{key:"render",value:function(){return(0,a.Z)("div",{},void 0,this.getChangeForm(),(0,a.Z)($.Z,{changes:this.props["username-history"],isLoaded:this.state.isLoaded}))}}]),u}(u().Component);var Q,X=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={new_email:"",password:"",validators:{new_email:[q.Do()],password:[]},isLoading:!1},t}return(0,i.Z)(u,[{key:"clean",value:function(){var e=this.validate();return-1!==[this.state.new_email.trim().length,this.state.password.trim().length].indexOf(0)?(N.Z.error(gettext("Fill out all fields.")),!1):!e.new_email||(N.Z.error(e.new_email[0]),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.change_email,{new_email:this.state.new_email,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_email:"",password:""}),N.Z.success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_email?N.Z.error(e.new_email):N.Z.error(e.password):N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("input",{type:"type",style:{display:"none"}}),(0,a.Z)("input",{type:"password",style:{display:"none"}}),(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change e-mail address"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New e-mail"),for:"id_new_email"},void 0,(0,a.Z)("input",{type:"text",id:"id_new_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_email"),value:this.state.new_email})),K||(K=(0,a.Z)("hr",{})),(0,a.Z)(A.Z,{label:gettext("Your current password"),for:"id_confirm_email"},void 0,(0,a.Z)("input",{type:"password",id:"id_confirm_email",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change e-mail")))))}}]),u}(T.Z);var ee,te,ne,ae=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(e){var t;return(0,s.Z)(this,u),(t=c.call(this,e)).state={new_password:"",repeat_password:"",password:"",validators:{new_password:[],repeat_password:[],password:[]},isLoading:!1},t}return(0,i.Z)(u,[{key:"clean",value:function(){var e=this.validate();return-1!==[this.state.new_password.trim().length,this.state.repeat_password.trim().length,this.state.password.trim().length].indexOf(0)?(N.Z.error(gettext("Fill out all fields.")),!1):e.new_password?(N.Z.error(e.new_password[0]),!1):this.state.new_password===this.state.repeat_password||(N.Z.error(gettext("New passwords are different.")),!1)}},{key:"send",value:function(){return y.Z.post(this.props.user.api.change_password,{new_password:this.state.new_password,password:this.state.password})}},{key:"handleSuccess",value:function(e){this.setState({new_password:"",repeat_password:"",password:""}),N.Z.success(e.detail)}},{key:"handleError",value:function(e){400===e.status?e.new_password?N.Z.error(e.new_password):N.Z.error(e.password):N.Z.apiError(e)}},{key:"render",value:function(){return(0,a.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,a.Z)("input",{type:"type",style:{display:"none"}}),(0,a.Z)("input",{type:"password",style:{display:"none"}}),(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change password"))),(0,a.Z)("div",{className:"panel-body"},void 0,(0,a.Z)(A.Z,{label:gettext("New password"),for:"id_new_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_new_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("new_password"),value:this.state.new_password})),(0,a.Z)(A.Z,{label:gettext("Repeat password"),for:"id_repeat_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_repeat_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("repeat_password"),value:this.state.repeat_password})),Q||(Q=(0,a.Z)("hr",{})),(0,a.Z)(A.Z,{label:gettext("Your current password"),for:"id_confirm_password"},void 0,(0,a.Z)("input",{type:"password",id:"id_confirm_password",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,a.Z)("div",{className:"panel-footer"},void 0,(0,a.Z)(b.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change password")))))}}]),u}(T.Z),se=function(){return(0,a.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,a.Z)("div",{className:"panel-heading"},void 0,(0,a.Z)("h3",{className:"panel-title"},void 0,gettext("Change email or password"))),(0,a.Z)("div",{className:"panel-body panel-message-body"},void 0,ee||(ee=(0,a.Z)("div",{className:"message-icon"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,a.Z)("div",{className:"message-body"},void 0,(0,a.Z)("p",{className:"lead"},void 0,gettext("You need to set a password for your account to be able to change your username or email.")),(0,a.Z)("p",{className:"help-block"},void 0,(0,a.Z)("a",{className:"btn btn-primary",href:x.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Set password"))))))};var ie,oe=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Change email or password"),parent:gettext("Change your options")})}},{key:"render",value:function(){return this.props.user.has_usable_password?(0,a.Z)("div",{},void 0,(0,a.Z)(X,{user:this.props.user}),(0,a.Z)(ae,{user:this.props.user}),(0,a.Z)("p",{className:"message-line"},void 0,ne||(ne=(0,a.Z)("span",{className:"material-icon"},void 0,"warning")),(0,a.Z)("a",{href:x.Z.get("FORGOTTEN_PASSWORD_URL")},void 0,gettext("Change forgotten password")))):te||(te=(0,a.Z)(se,{}))}}]),u}(u().Component),re=n(82125),le=n(98936),ce=n(59131),ue=n(99755);var de=function(e){(0,o.Z)(u,e);var t,n,c=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,l.Z)(t);if(n){var s=(0,l.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,r.Z)(this,e)});function u(){return(0,s.Z)(this,u),c.apply(this,arguments)}return(0,i.Z)(u,[{key:"render",value:function(){var e=this,t=x.Z.get("USER_OPTIONS").filter((function(t){var n=x.Z.get("USERCP_URL")+t.component+"/";return e.props.location.pathname.substr(0,n.length)===n}))[0];return(0,a.Z)("div",{className:"page page-options"},void 0,(0,a.Z)(ue.sP,{},void 0,(0,a.Z)(ue.mr,{styleName:"options"},void 0,(0,a.Z)(ue.gC,{styleName:"options"},void 0,(0,a.Z)(le.gq,{},void 0,(0,a.Z)(le.kw,{auto:!0},void 0,(0,a.Z)(le.Z6,{auto:!0},void 0,(0,a.Z)("h1",{},void 0,gettext("Change your options"))),(0,a.Z)(le.Z6,{className:"hidden-xs hidden-md hidden-lg",shrink:!0},void 0,(0,a.Z)("div",{className:"dropdown"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Menu"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,ie||(ie=(0,a.Z)("span",{className:"material-icon"},void 0,"menu"))),(0,a.Z)(v,{className:"dropdown-menu dropdown-menu-right",baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})))),(0,a.Z)(le.kw,{className:"hidden-sm hidden-md hidden-lg"},void 0,(0,a.Z)(le.Z6,{},void 0,(0,a.Z)("div",{className:"dropdown"},void 0,(0,a.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-block dropdown-toggle","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,a.Z)("span",{className:"material-icon"},void 0,t.icon),t.name),(0,a.Z)(v,{className:"dropdown-menu",baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})))))))),(0,a.Z)(ce.Z,{},void 0,(0,a.Z)("div",{className:"row"},void 0,(0,a.Z)("div",{className:"col-md-3 hidden-xs hidden-sm"},void 0,(0,a.Z)(f,{baseUrl:x.Z.get("USERCP_URL"),options:x.Z.get("USER_OPTIONS")})),(0,a.Z)("div",{className:"col-md-9"},void 0,this.props.children))))}}]),u}(re.Z);function pe(e){return{tick:e.tick.tick,user:e.auth.user,"username-history":e["username-history"]}}function he(){var e=[{path:x.Z.get("USERCP_URL")+"forum-options/",component:(0,d.$j)(pe)(U)},{path:x.Z.get("USERCP_URL")+"edit-details/",component:(0,d.$j)(pe)(C)}],t=x.Z.get("SETTINGS").DELEGATE_AUTH;return t||(e.push({path:x.Z.get("USERCP_URL")+"change-username/",component:(0,d.$j)(pe)(J)}),e.push({path:x.Z.get("USERCP_URL")+"sign-in-credentials/",component:(0,d.$j)(pe)(oe)})),x.Z.get("ENABLE_DOWNLOAD_OWN_DATA")&&e.push({path:x.Z.get("USERCP_URL")+"download-data/",component:(0,d.$j)(pe)(L)}),!t&&x.Z.get("ENABLE_DELETE_OWN_ACCOUNT")&&e.push({path:x.Z.get("USERCP_URL")+"delete-account/",component:(0,d.$j)(pe)(w)}),e}var fe=n(39633);x.Z.addInitializer({name:"component:options",initializer:function(e){e.has("USER_OPTIONS")&&(0,fe.Z)({root:x.Z.get("USERCP_URL"),component:de,paths:he()})},after:"store"})},95563:function(e,t,n){"use strict";var a,s=n(37424),i=n(22928),o=n(15671),r=n(43144),l=n(97326),c=n(79340),u=n(6215),d=n(61120),p=n(4942),h=n(57588),f=n.n(h),v=n(30381),m=n.n(v),Z=n(95187),g=n(33556),b=n(32233),y=n(55547),_=n(53328);var N=function(e){(0,c.Z)(h,e);var t,n,s=(t=h,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function h(e){var t;return(0,o.Z)(this,h),t=s.call(this,e),(0,p.Z)((0,l.Z)(t),"update",(function(e){e.expires_on&&(e.expires_on=m()(e.expires_on)),t.setState({isLoaded:!0,error:null,ban:e})})),(0,p.Z)((0,l.Z)(t),"error",(function(e){t.setState({isLoaded:!0,error:e.detail,ban:null})})),b.Z.has("PROFILE_BAN")?t.initWithPreloadedData(b.Z.pop("PROFILE_BAN")):t.initWithoutPreloadedData(),t.startPolling(e.profile.api.ban),t}return(0,r.Z)(h,[{key:"initWithPreloadedData",value:function(e){e.expires_on&&(e.expires_on=m()(e.expires_on)),this.state={isLoaded:!0,ban:e}}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){y.Z.start({poll:"ban-details",url:e,frequency:9e4,update:this.update,error:this.error})}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Ban details"),parent:this.props.profile.username})}},{key:"componentWillUnmount",value:function(){y.Z.stop("ban-details")}},{key:"getUserMessage",value:function(){return this.state.ban.user_message?(0,i.Z)("div",{className:"panel-body ban-message ban-user-message"},void 0,(0,i.Z)("h4",{},void 0,gettext("User-shown ban message")),(0,i.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.user_message.html}})):null}},{key:"getStaffMessage",value:function(){return this.state.ban.staff_message?(0,i.Z)("div",{className:"panel-body ban-message ban-staff-message"},void 0,(0,i.Z)("h4",{},void 0,gettext("Team-shown ban message")),(0,i.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.state.ban.staff_message.html}})):null}},{key:"getExpirationMessage",value:function(){if(this.state.ban.expires_on){if(this.state.ban.expires_on.isAfter(m()())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.state.ban.expires_on.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.state.ban.expires_on.fromNow()},!0);return(0,i.Z)("abbr",{title:e},void 0,t)}return gettext("This ban has expired.")}return interpolate(gettext("%(username)s's ban is permanent."),{username:this.props.profile.username},!0)}},{key:"getPanelBody",value:function(){return this.state.ban?Object.keys(this.state.ban).length?(0,i.Z)("div",{},void 0,this.getUserMessage(),this.getStaffMessage(),(0,i.Z)("div",{className:"panel-body ban-expires"},void 0,(0,i.Z)("h4",{},void 0,gettext("Ban expiration")),(0,i.Z)("p",{className:"lead"},void 0,this.getExpirationMessage()))):(0,i.Z)("div",{},void 0,(0,i.Z)(g.Z,{message:gettext("No ban is active at the moment.")})):this.state.error?(0,i.Z)("div",{},void 0,(0,i.Z)(g.Z,{icon:"error_outline",message:this.state.error})):a||(a=(0,i.Z)("div",{},void 0,(0,i.Z)(Z.Z,{})))}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-ban-details"},void 0,(0,i.Z)("div",{className:"panel panel-default"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Ban details"))),this.getPanelBody()))}}]),h}(f().Component),k=n(21688);function x(e){var t=e.api,n=e.display,a=e.onCancel,s=e.onSuccess;return n?(0,i.Z)(k.Z,{api:t,onCancel:a,onSuccess:s}):null}function w(e){var t,n=e.isAuthenticated,a=e.profile;return t=n?gettext("You are not sharing any details with others."):interpolate(gettext("%(username)s is not sharing any details with others."),{username:a.username},!0),(0,i.Z)("div",{className:"panel panel-default"},void 0,(0,i.Z)("div",{className:"panel-body text-center lead"},void 0,t))}function R(e){var t=e.html,n=e.text,a=e.url;return t?(0,i.Z)("div",{className:"form-control-static col-md-9",dangerouslySetInnerHTML:{__html:t}}):(0,i.Z)("div",{className:"form-control-static col-md-9"},void 0,(0,i.Z)(C,{text:n,url:a}))}function C(e){var t=e.text,n=e.url;return n?(0,i.Z)("p",{},void 0,(0,i.Z)("a",{href:n,target:"_blank",rel:"nofollow"},void 0,t||n)):t?(0,i.Z)("p",{},void 0,t):null}function S(e){return(0,i.Z)("div",{className:"form-group"},void 0,(0,i.Z)("strong",{className:"control-label col-md-3"},void 0,e.name,":"),f().createElement(R,e))}function E(e){var t=e.fields,n=e.name;return(0,i.Z)("div",{className:"panel panel-default panel-profile-details-group"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,n)),(0,i.Z)("div",{className:"panel-body"},void 0,(0,i.Z)("div",{className:"form-horizontal"},void 0,t.map((function(e){var t=e.fieldname,n=e.html,a=e.name,s=e.text,o=e.url;return(0,i.Z)(S,{name:a,html:n,text:s,url:o},t)})))))}var L,P=n(37848);function O(e){var t=e.display,n=e.groups,a=e.isAuthenticated,s=e.loading,o=e.profile;return t?s?L||(L=(0,i.Z)(P.Z,{})):n.length?(0,i.Z)("div",{},void 0,n.map((function(e,t){return(0,i.Z)(E,{fields:e.fields,name:e.name},t)}))):(0,i.Z)(w,{isAuthenticated:a,profile:o}):null}var T=n(92490),A=function(e){var t=e.onEdit,n=e.showEditButton;return(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,gettext("Details")))),n&&(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)("button",{className:"btn btn-default btn-outline btn-block",onClick:t,type:"button"},void 0,gettext("Edit")))))},B=n(58598),I=n(78657),j=n(53904);var D=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this.props,t=e.data,n=e.dispatch,a=e.user;t&&t.id===a.id||I.Z.get(this.props.user.api.details).then((function(e){n((0,B.zD)(e))}),(function(e){j.Z.apiError(e)}))}},{key:"render",value:function(){return this.props.children}}]),s}(f().Component);var U=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"onCancel",(function(){t.setState({editing:!1})})),(0,p.Z)((0,l.Z)(t),"onEdit",(function(){t.setState({editing:!0})})),(0,p.Z)((0,l.Z)(t),"onSuccess",(function(e){var n,a=t.props,s=a.dispatch,i=a.isAuthenticated,o=a.profile;n=i?gettext("Your details have been updated."):interpolate(gettext("%(username)s's details have been updated."),{username:o.username},!0),j.Z.info(n),s((0,B.zD)(e)),t.setState({editing:!1})})),t.state={editing:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Details"),parent:this.props.profile.username})}},{key:"render",value:function(){var e=this.props,t=e.dispatch,n=e.isAuthenticated,a=e.profile,s=e.profileDetails,o=s.id!==a.id;return(0,i.Z)(D,{data:s,dispatch:t,user:a},void 0,(0,i.Z)("div",{className:"profile-details"},void 0,(0,i.Z)(A,{onEdit:this.onEdit,showEditButton:!!s.edit&&!this.state.editing}),(0,i.Z)(O,{display:!this.state.editing,groups:s.groups,isAuthenticated:n,loading:o,profile:a}),(0,i.Z)(x,{api:a.api.edit_details,dispatch:t,display:this.state.editing,onCancel:this.onCancel,onSuccess:this.onSuccess})))}}]),s}(f().Component),M=n(87462),z=n(11005),H=n(82211),F=n(21981),q=n(90287);var Y,V=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isLoading:!0}),t.loadItems(t.props.posts.next)})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"loadItems",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;I.Z.get(this.props.api,{start:t||0}).then((function(n){0===t?q.Z.dispatch(F.zD(n)):q.Z.dispatch(F.R3(n)),e.setState({isLoading:!1})}),(function(t){e.setState({isLoading:!1}),j.Z.apiError(t)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:this.props.title,parent:this.props.profile.username}),this.loadItems()}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-feed"},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.props.header)))),f().createElement($,(0,M.Z)({isLoading:this.state.isLoading,loadMore:this.loadMore},this.props)))}}]),s}(f().Component);function $(e){return e.posts.isLoaded&&!e.posts.results.length?(0,i.Z)("p",{className:"lead"},void 0,e.emptyMessage):(0,i.Z)("div",{},void 0,(0,i.Z)(z.Z,{isReady:e.posts.isLoaded,posts:e.posts.results,poster:e.profile}),(0,i.Z)(G,{isLoading:e.isLoading,loadMore:e.loadMore,next:e.posts.next}))}function G(e){return e.next?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:e.isLoading,onClick:e.loadMore},void 0,gettext("Show older activity"))):null}var W=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.className?"form-search "+this.props.className:"form-search"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName()},void 0,(0,i.Z)("input",{type:"text",className:"form-control",value:this.props.value,onChange:this.props.onChange,placeholder:this.props.placeholder||gettext("Search...")}),Y||(Y=(0,i.Z)("span",{className:"material-icon"},void 0,"search")))}}]),s}(f().Component),K=n(40429),J=n(6935);var Q=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadUsers(t.state.page+1,t.state.search)})),(0,p.Z)((0,l.Z)(t),"search",(function(e){t.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),t.loadUsers(1,e.target.value)})),t.setSpecialProps(),b.Z.has(t.PRELOADED_DATA_KEY)?t.initWithPreloadedData(b.Z.pop(t.PRELOADED_DATA_KEY)):t.initWithoutPreloadedData(),t}return(0,r.Z)(s,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWERS",this.TITLE=gettext("Followers"),this.API_FILTER="followers"}},{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},q.Z.dispatch((0,J.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadUsers()}},{key:"loadUsers",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=this.props.profile.api[this.API_FILTER];I.Z.get(a,{search:n,page:t||1},"user-"+this.API_FILTER).then((function(n){1===t?q.Z.dispatch((0,J.ZB)(n.results)):q.Z.dispatch((0,J.R3)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.pages})}),(function(e){j.Z.apiError(e)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:this.TITLE,parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You have %(users)s follower.","You have %(users)s followers.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var n=ngettext("%(username)s has %(users)s follower.","%(username)s has %(users)s followers.",this.state.count);return interpolate(n,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You have no followers."):interpolate(gettext("%(username)s has no followers."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy,onClick:this.loadMore},void 0,interpolate(gettext("Show more (%(more)s)"),{more:this.state.more},!0))):null}},{key:"getListBody",value:function(){return this.state.isLoaded&&0===this.state.count?(0,i.Z)("p",{className:"lead"},void 0,this.getEmptyMessage()):(0,i.Z)("div",{},void 0,(0,i.Z)(K.Z,{cols:3,isReady:this.state.isLoaded,users:this.props.users}),this.getMoreButton())}},{key:"getClassName",value:function(){return"profile-"+this.API_FILTER}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName()},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.getLabel()))),(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)(W,{value:this.state.search,onChange:this.search,placeholder:gettext("Search users...")})))),this.getListBody())}}]),s}(f().Component);var X=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"setSpecialProps",value:function(){this.PRELOADED_DATA_KEY="PROFILE_FOLLOWS",this.TITLE=gettext("Follows"),this.API_FILTER="follows"}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(users)s user.","Found %(users)s users.",this.state.count);return interpolate(e,{users:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("You are following %(users)s user.","You are following %(users)s users.",this.state.count);return interpolate(t,{users:this.state.count},!0)}var n=ngettext("%(username)s is following %(users)s user.","%(username)s is following %(users)s users.",this.state.count);return interpolate(n,{username:this.props.profile.username,users:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no users matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("You are not following any users."):interpolate(gettext("%(username)s is not following any users."),{username:this.props.profile.username},!0)}}]),s}(Q),ee=n(7850),te=n(48927);var ne=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadChanges(t.state.page+1,t.state.search)})),(0,p.Z)((0,l.Z)(t),"search",(function(e){t.setState({isLoaded:!1,isBusy:!0,search:e.target.value,count:0,more:0,page:1,pages:1}),t.loadChanges(1,e.target.value)})),b.Z.has("PROFILE_NAME_HISTORY")?t.initWithPreloadedData(b.Z.pop("PROFILE_NAME_HISTORY")):t.initWithoutPreloadedData(),t}return(0,r.Z)(s,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,isBusy:!1,search:"",count:e.count,more:e.more,page:e.page,pages:e.pages},q.Z.dispatch((0,te.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1,isBusy:!1,search:"",count:0,more:0,page:1,pages:1},this.loadChanges()}},{key:"loadChanges",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;I.Z.get(b.Z.get("USERNAME_CHANGES_API"),{user:this.props.profile.id,search:n,page:t||1},"search-username-history").then((function(n){1===t?q.Z.dispatch((0,te.ZB)(n.results)):q.Z.dispatch((0,te.R3)(n.results)),e.setState({isLoaded:!0,isBusy:!1,count:n.count,more:n.more,page:n.page,pages:n.pages})}),(function(e){j.Z.apiError(e)}))}},{key:"componentDidMount",value:function(){_.Z.set({title:gettext("Username history"),parent:this.props.profile.username})}},{key:"getLabel",value:function(){if(this.state.isLoaded){if(this.state.search){var e=ngettext("Found %(changes)s username change.","Found %(changes)s username changes.",this.state.count);return interpolate(e,{changes:this.state.count},!0)}if(this.props.profile.id===this.props.user.id){var t=ngettext("Your username was changed %(changes)s time.","Your username was changed %(changes)s times.",this.state.count);return interpolate(t,{changes:this.state.count},!0)}var n=ngettext("%(username)s's username was changed %(changes)s time.","%(username)s's username was changed %(changes)s times.",this.state.count);return interpolate(n,{username:this.props.profile.username,changes:this.state.count},!0)}return gettext("Loading...")}},{key:"getEmptyMessage",value:function(){return this.state.search?gettext("Search returned no username changes matching specified criteria."):this.props.user.id===this.props.profile.id?gettext("No name changes have been recorded for your account."):interpolate(gettext("%(username)s's username was never changed."),{username:this.props.profile.username},!0)}},{key:"getMoreButton",value:function(){return this.state.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(H.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy,onClick:this.loadMore},void 0,interpolate(gettext("Show older (%(more)s)"),{more:this.state.more},!0))):null}},{key:"render",value:function(){return(0,i.Z)("div",{className:"profile-username-history"},void 0,(0,i.Z)(T.o8,{},void 0,(0,i.Z)(T.Z2,{auto:!0},void 0,(0,i.Z)(T.Eg,{auto:!0},void 0,(0,i.Z)("h3",{},void 0,this.getLabel()))),(0,i.Z)(T.Z2,{},void 0,(0,i.Z)(T.Eg,{},void 0,(0,i.Z)(W,{value:this.state.search,onChange:this.search,placeholder:gettext("Search history...")})))),(0,i.Z)(ee.Z,{isLoaded:this.state.isLoaded,emptyMessage:this.getEmptyMessage(),changes:this.props["username-history"]}),this.getMoreButton())}}]),s}(f().Component),ae=n(82125),se=n(27519),ie=n(59131),oe=n(19605),re=n(98936),le=n(99755);var ce,ue=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"action",(function(){t.setState({isLoading:!0}),t.props.profile.is_followed?q.Z.dispatch((0,se.r$)({is_followed:!1,followers:t.props.profile.followers-1})):q.Z.dispatch((0,se.r$)({is_followed:!0,followers:t.props.profile.followers+1})),I.Z.post(t.props.profile.api.follow).then((function(e){t.setState({isLoading:!1}),q.Z.dispatch((0,se.r$)(e))}),(function(e){t.setState({isLoading:!1}),j.Z.apiError(e)}))})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.profile.is_followed?this.props.className+" btn-default btn-following":this.props.className+" btn-default btn-follow"}},{key:"getIcon",value:function(){return this.props.profile.is_followed?"favorite":"favorite_border"}},{key:"getLabel",value:function(){return this.props.profile.is_followed?gettext("Following"):gettext("Follow")}},{key:"render",value:function(){return(0,i.Z)(H.Z,{className:this.getClassName(),disabled:this.state.isLoading,onClick:this.action},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,this.getIcon()),this.getLabel())}}]),s}(f().Component),de=n(27950);var pe,he,fe=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(){var e;(0,o.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,p.Z)((0,l.Z)(e),"onClick",(function(){de.Z.open({mode:"START_PRIVATE",submit:b.Z.get("PRIVATE_THREADS_API"),to:[e.props.profile]})})),e}return(0,r.Z)(s,[{key:"render",value:function(){var e=this.props.user.acl.can_start_private_threads,t=this.props.user.id===this.props.profile.id;return!e||t?null:(0,i.Z)("button",{className:this.props.className,onClick:this.onClick,type:"button"},void 0,ce||(ce=(0,i.Z)("span",{className:"material-icon"},void 0,"comment")),gettext("Message"))}}]),s}(f().Component),ve=n(43345),me=n(96359),Ze=n(3784),ge=n(7227),be=n(30337);var ye,_e,Ne=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e)).state={isLoaded:!1,isLoading:!1,error:null,is_avatar_locked:"",avatar_lock_user_message:"",avatar_lock_staff_message:""},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.moderate_avatar).then((function(t){e.setState({isLoaded:!0,is_avatar_locked:t.is_avatar_locked,avatar_lock_user_message:t.avatar_lock_user_message||"",avatar_lock_staff_message:t.avatar_lock_staff_message||""})}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"clean",value:function(){return!!this.isValid()||(j.Z.error(this.validate().username[0]),!1)}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.moderate_avatar,{is_avatar_locked:this.state.is_avatar_locked,avatar_lock_user_message:this.state.avatar_lock_user_message,avatar_lock_staff_message:this.state.avatar_lock_staff_message})}},{key:"handleSuccess",value:function(e){q.Z.dispatch((0,J.n1)(this.props.profile,e.avatar_hash)),j.Z.success(gettext("Avatar controls have been changed."))}},{key:"getFormBody",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("Lock avatar"),helpText:gettext("Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one."),for:"id_is_avatar_locked"},void 0,(0,i.Z)(ge.Z,{id:"id_is_avatar_locked",disabled:this.state.isLoading,iconOn:"lock_outline",iconOff:"lock_open",labelOn:gettext("Disallow user from changing avatar"),labelOff:gettext("Allow user to change avatar"),onChange:this.bindInput("is_avatar_locked"),value:this.state.is_avatar_locked})),(0,i.Z)(me.Z,{label:gettext("User message"),helpText:gettext("Optional message for user explaining why he/she is prohibited form changing avatar."),for:"id_avatar_lock_user_message"},void 0,(0,i.Z)("textarea",{id:"id_avatar_lock_user_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_user_message"),value:this.state.avatar_lock_user_message})),(0,i.Z)(me.Z,{label:gettext("Staff message"),helpText:gettext("Optional message for forum team members explaining why user is prohibited form changing avatar."),for:"id_avatar_lock_staff_message"},void 0,(0,i.Z)("textarea",{id:"id_avatar_lock_staff_message",className:"form-control",rows:"4",disabled:this.state.isLoading,onChange:this.bindInput("avatar_lock_staff_message"),value:this.state.avatar_lock_staff_message}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},void 0,gettext("Close")),(0,i.Z)(H.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Save changes"))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():pe||(pe=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-avatar-controls":"modal-dialog modal-avatar-controls"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,he||(he=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Avatar controls"))),this.getModalBody()))}}]),s}(ve.Z),ke=n(55210);var xe,we,Re,Ce=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e)).state={isLoaded:!1,isLoading:!1,error:null,username:"",validators:{username:[ke.lG()]}},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.moderate_username).then((function(){e.setState({isLoaded:!0})}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"clean",value:function(){return!!this.isValid()||(j.Z.error(this.validate().username[0]),!1)}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.moderate_username,{username:this.state.username})}},{key:"handleSuccess",value:function(e){this.setState({username:""}),q.Z.dispatch((0,te.KP)(e,this.props.profile,this.props.user)),q.Z.dispatch((0,J._S)(this.props.profile,e.username,e.slug)),j.Z.success(gettext("Username has been changed."))}},{key:"getFormBody",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("New username"),for:"id_username"},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,i.Z)(H.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Change username"))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.getFormBody():ye||(ye=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error?"modal-dialog modal-message modal-rename-user":"modal-dialog modal-rename-user"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,_e||(_e=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Change username"))),this.getModalBody()))}}]),s}(ve.Z);var Se,Ee,Le,Pe=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"countdown",(function(){window.setTimeout((function(){t.state.countdown>1?(t.setState({countdown:t.state.countdown-1}),t.countdown()):t.state.confirm||t.setState({confirm:!0})}),1e3)})),t.state={isLoaded:!1,isLoading:!1,isDeleted:!1,error:null,countdown:5,confirm:!1,with_content:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;I.Z.get(this.props.profile.api.delete).then((function(){e.setState({isLoaded:!0}),e.countdown()}),(function(t){e.setState({isLoaded:!0,error:t.detail})}))}},{key:"send",value:function(){return I.Z.post(this.props.profile.api.delete,{with_content:this.state.with_content})}},{key:"handleSuccess",value:function(){y.Z.stop("user-profile"),this.state.with_content?this.setState({isDeleted:interpolate(gettext("%(username)s's account, threads, posts and other content has been deleted."),{username:this.props.profile.username},!0)}):this.setState({isDeleted:interpolate(gettext("%(username)s's account has been deleted and other content has been hidden."),{username:this.props.profile.username},!0)})}},{key:"getButtonLabel",value:function(){return this.state.confirm?interpolate(gettext("Delete %(username)s"),{username:this.props.profile.username},!0):interpolate(gettext("Please wait... (%(countdown)ss)"),{countdown:this.state.countdown},!0)}},{key:"getForm",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(me.Z,{label:gettext("User content"),for:"id_with_content"},void 0,(0,i.Z)(ge.Z,{id:"id_with_content",disabled:this.state.isLoading,labelOn:gettext("Delete together with user's account"),labelOff:gettext("Hide after deleting user's account"),onChange:this.bindInput("with_content"),value:this.state.with_content}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-default","data-dismiss":"modal"},void 0,gettext("Cancel")),(0,i.Z)(H.Z,{className:"btn-danger",loading:this.state.isLoading,disabled:!this.state.confirm},void 0,this.getButtonLabel())))}},{key:"getDeletedBody",value:function(){return(0,i.Z)("div",{className:"modal-body"},void 0,xe||(xe=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.state.isDeleted),(0,i.Z)("p",{},void 0,(0,i.Z)("a",{href:b.Z.get("USERS_LIST_URL")},void 0,gettext("Return to users list")))))}},{key:"getModalBody",value:function(){return this.state.error?(0,i.Z)(be.Z,{icon:"remove_circle_outline",message:this.state.error}):this.state.isLoaded?this.state.isDeleted?this.getDeletedBody():this.getForm():we||(we=(0,i.Z)(Ze.Z,{}))}},{key:"getClassName",value:function(){return this.state.error||this.state.isDeleted?"modal-dialog modal-message modal-delete-account":"modal-dialog modal-delete-account"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,Re||(Re=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Delete user account"))),this.getModalBody()))}}]),s}(ve.Z),Oe=n(59801);var Te,Ae,Be,Ie,je,De=function(e){return{tick:e.tick,user:e.auth,profile:e.profile}},Ue=function(e){(0,c.Z)(h,e);var t,n,a=(t=h,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function h(){var e;(0,o.Z)(this,h);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,p.Z)((0,l.Z)(e),"showAvatarDialog",(function(){Oe.Z.show((0,s.$j)(De)(Ne))})),(0,p.Z)((0,l.Z)(e),"showRenameDialog",(function(){Oe.Z.show((0,s.$j)(De)(Ce))})),(0,p.Z)((0,l.Z)(e),"showDeleteDialog",(function(){Oe.Z.show((0,s.$j)(De)(Pe))})),e}return(0,r.Z)(h,[{key:"render",value:function(){var e=this.props.moderation;return(0,i.Z)("ul",{className:"dropdown-menu dropdown-menu-right",role:"menu"},void 0,!!e.avatar&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showAvatarDialog},void 0,Se||(Se=(0,i.Z)("span",{className:"material-icon"},void 0,"portrait")),gettext("Avatar controls"))),!!e.rename&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showRenameDialog},void 0,Ee||(Ee=(0,i.Z)("span",{className:"material-icon"},void 0,"credit_card")),gettext("Change username"))),!!e.delete&&(0,i.Z)("li",{},void 0,(0,i.Z)("button",{type:"button",className:"btn btn-link",onClick:this.showDeleteDialog},void 0,Le||(Le=(0,i.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete account"))))}}]),h}(f().Component),Me=n(24678),ze=function(e){var t=e.profile;return(0,i.Z)("ul",{className:"profile-data-list"},void 0,!1===t.is_active&&(0,i.Z)("li",{className:"user-account-disabled"},void 0,(0,i.Z)("abbr",{title:gettext("This user's account has been disabled by administrator.")},void 0,gettext("Account disabled"))),(0,i.Z)("li",{className:"user-status-display"},void 0,(0,i.Z)(Me.ZP,{user:t,status:t.status},void 0,(0,i.Z)(Me.Jj,{user:t,status:t.status}),(0,i.Z)(Me.pg,{user:t,status:t.status,className:"status-label"}))),t.rank.is_tab?(0,i.Z)("li",{className:"user-rank"},void 0,(0,i.Z)("a",{href:t.rank.url,className:"item-title"},void 0,t.rank.name)):(0,i.Z)("li",{className:"user-rank"},void 0,(0,i.Z)("span",{className:"item-title"},void 0,t.rank.name)),(t.title||t.rank.title)&&(0,i.Z)("li",{className:"user-title"},void 0,t.title||t.rank.title),(0,i.Z)("li",{className:"user-joined-on"},void 0,(0,i.Z)("abbr",{title:interpolate(gettext("Joined on %(joined_on)s"),{joined_on:t.joined_on.format("LL, LT")},!0)},void 0,interpolate(gettext("Joined %(joined_on)s"),{joined_on:t.joined_on.fromNow()},!0))),t.email&&(0,i.Z)("li",{className:"user-email"},void 0,(0,i.Z)("a",{href:"mailto:"+t.email,className:"item-title"},void 0,t.email)))},He=function(){return(0,i.Z)("button",{className:"btn btn-default btn-icon btn-outline dropdown-toggle",type:"button",title:gettext("Options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,je||(je=(0,i.Z)("span",{className:"material-icon"},void 0,"settings")))},Fe=function(e){var t=e.profile,n=e.user,a=e.moderation,s=e.message,o=e.follow;return(0,i.Z)(le.sP,{},void 0,(0,i.Z)(le.mr,{styleName:t.rank.css_class?"rank-"+t.rank.css_class:"profile"},void 0,(0,i.Z)(le.gC,{styleName:t.rank.css_class?"rank-"+t.rank.css_class:"profile"},void 0,(0,i.Z)("div",{className:"profile-page-header"},void 0,(0,i.Z)("div",{className:"profile-page-header-avatar"},void 0,(0,i.Z)(oe.ZP,{className:"user-avatar hidden-sm hidden-md hidden-lg",user:t,size:200,size2x:400}),(0,i.Z)(oe.ZP,{className:"user-avatar hidden-xs hidden-md hidden-lg",user:t,size:64,size2x:128}),(0,i.Z)(oe.ZP,{className:"user-avatar hidden-xs hidden-sm",user:t,size:128,size2x:256})),(0,i.Z)("h1",{},void 0,t.username))),(0,i.Z)(le.eA,{className:"profile-page-header-details"},void 0,(0,i.Z)(re.gq,{},void 0,(0,i.Z)(re.kw,{auto:!0},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(ze,{profile:t}))),s&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(fe,{className:"btn btn-default btn-block btn-outline",profile:t,user:n})),a.available&&!o&&(0,i.Z)(re.Z6,{shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Te||(Te=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a})))),o&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{},void 0,(0,i.Z)(ue,{className:"btn btn-block btn-outline",profile:t})),a.available&&(0,i.Z)(re.Z6,{shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Ae||(Ae=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a})))),a.available&&!o&&!s&&(0,i.Z)(re.kw,{},void 0,(0,i.Z)(re.Z6,{className:"hidden-xs",shrink:!0},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,Be||(Be=(0,i.Z)(He,{})),(0,i.Z)(Ue,{profile:t,moderation:a}))),(0,i.Z)(re.Z6,{className:"hidden-sm hidden-md hidden-lg"},void 0,(0,i.Z)("div",{className:"dropdown"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,Ie||(Ie=(0,i.Z)("span",{className:"material-icon"},void 0,"settings")),gettext("Options")),(0,i.Z)(Ue,{profile:t,moderation:a}))))))))},qe=n(69987),Ye=n(94417),Ve=function(e){var t=e.baseUrl,n=e.page,a=e.pages;return(0,i.Z)("div",{className:"nav-container"},void 0,(0,i.Z)("div",{className:"dropdown hidden-sm hidden-md hidden-lg"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,n.icon),n.name),(0,i.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,a.map((function(e){return(0,i.Z)("li",{},e.component,(0,i.Z)(qe.rU,{to:t+e.component+"/"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name))})))),(0,i.Z)("ul",{className:"nav nav-pills hidden-xs",role:"menu"},void 0,a.map((function(e){return(0,i.Z)(Ye.Z,{path:t+e.component+"/"},e.component,(0,i.Z)(qe.rU,{to:t+e.component+"/"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name))}))))};var $e=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"update",(function(e){q.Z.dispatch((0,se.ZB)(e))})),t.startPolling(e.profile.api.index),t}return(0,r.Z)(s,[{key:"startPolling",value:function(e){y.Z.start({poll:"user-profile",url:e,frequency:9e4,update:this.update})}},{key:"render",value:function(){var e=this,t=b.Z.get("PROFILE").url,n=b.Z.get("PROFILE_PAGES"),a=n.filter((function(n){var a=t+n.component+"/";return e.props.location.pathname===a}))[0],s=this.props,o=s.profile,r=s.user,l=Ge(o,r),c=r.acl.can_start_private_threads&&o.id!==r.id,u=o.acl.can_follow&&o.id!==r.id;return(0,i.Z)("div",{className:"page page-user-profile"},void 0,(0,i.Z)(Fe,{profile:this.props.profile,user:this.props.user,moderation:l,message:c,follow:u}),(0,i.Z)(ie.Z,{},void 0,(0,i.Z)(Ve,{baseUrl:t,page:a,pages:n}),this.props.children))}}]),s}(ae.Z),Ge=function(e,t){var n={available:!1,rename:!1,avatar:!1,delete:!1};return t.is_anonymouse||(n.rename=e.acl.can_rename,n.avatar=e.acl.can_moderate_avatar,n.delete=e.acl.can_delete,n.available=n.rename||n.avatar||n.delete),n};function We(e){return{isAuthenticated:e.auth.user.id===e.profile.id,tick:e.tick.tick,user:e.auth.user,users:e.users,posts:e.posts,profile:e.profile,profileDetails:e["profile-details"],"username-history":e["username-history"]}}var Ke={posts:function(e){var t;t=e.user.id===e.profile.id?gettext("You have posted no messages."):interpolate(gettext("%(username)s posted no messages."),{username:e.profile.username},!0);var n=null;if(e.posts.isLoaded)if(e.profile.id===e.user.id){var a=ngettext("You have posted %(posts)s message.","You have posted %(posts)s messages.",e.profile.posts);n=interpolate(a,{posts:e.profile.posts},!0)}else{var s=ngettext("%(username)s has posted %(posts)s message.","%(username)s has posted %(posts)s messages.",e.profile.posts);n=interpolate(s,{username:e.profile.username,posts:e.profile.posts},!0)}else n=gettext("Loading...");return f().createElement(V,(0,M.Z)({api:e.profile.api.posts,emptyMessage:t,header:n,title:gettext("Posts")},e))},threads:function(e){var t;t=e.user.id===e.profile.id?gettext("You have no started threads."):interpolate(gettext("%(username)s started no threads."),{username:e.profile.username},!0);var n=null;if(e.posts.isLoaded)if(e.profile.id===e.user.id){var a=ngettext("You have started %(threads)s thread.","You have started %(threads)s threads.",e.profile.threads);n=interpolate(a,{threads:e.profile.threads},!0)}else{var s=ngettext("%(username)s has started %(threads)s thread.","%(username)s has started %(threads)s threads.",e.profile.threads);n=interpolate(s,{username:e.profile.username,threads:e.profile.threads},!0)}else n=gettext("Loading...");return f().createElement(V,(0,M.Z)({api:e.profile.api.threads,emptyMessage:t,header:n,title:gettext("Threads")},e))},followers:Q,follows:X,details:U,"username-history":ne,"ban-details":N};function Je(){var e=[];return b.Z.get("PROFILE_PAGES").forEach((function(t){e.push(Object.assign({},t,{path:b.Z.get("PROFILE").url+t.component+"/",component:(0,s.$j)(We)(Ke[t.component])}))})),e}var Qe=n(39633);b.Z.addInitializer({name:"component:profile",initializer:function(e){e.has("PROFILE")&&e.has("PROFILE_PAGES")&&(0,Qe.Z)({root:b.Z.get("PROFILE").url,component:(0,s.$j)(We)($e),paths:Je()})},after:"reducer:profile-hydrate"})},32488:function(e,t,n){"use strict";var a,s=n(32233),i=n(97326),o=n(4942),r=n(22928),l=n(15671),c=n(43144),u=n(79340),d=n(6215),p=n(61120),h=n(57588),f=n.n(h),v=n(82211),m=n(43345),Z=n(78657),g=n(53904),b=n(55210),y=n(93051);function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}var N=function(e){(0,u.Z)(n,e);var t=_(n);function n(e){var a;return(0,l.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,email:"",validators:{email:[b.Do()]}},a}return(0,c.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(g.Z.error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return Z.Z.post(s.Z.get("SEND_ACTIVATION_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["already_active","inactive_admin"].indexOf(e.code)>-1?g.Z.info(e.detail):403===e.status&&e.ban?(0,y.Z)(e.ban):g.Z.apiError(e)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-request-activation-link"},void 0,(0,r.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,r.Z)("div",{className:"form-group"},void 0,(0,r.Z)("div",{className:"control-input"},void 0,(0,r.Z)("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),(0,r.Z)(v.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Send link"))))}}]),n}(m.Z),k=function(e){(0,u.Z)(n,e);var t=_(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("Activation link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-request-activation-link well-done"},void 0,(0,r.Z)("div",{className:"done-message"},void 0,a||(a=(0,r.Z)("div",{className:"message-icon"},void 0,(0,r.Z)("span",{className:"material-icon"},void 0,"check"))),(0,r.Z)("div",{className:"message-body"},void 0,(0,r.Z)("p",{},void 0,this.getMessage())),(0,r.Z)("button",{className:"btn btn-primary btn-block",type:"button",onClick:this.props.callback},void 0,gettext("Request another link"))))}}]),n}(f().Component),x=function(e){(0,u.Z)(n,e);var t=_(n);function n(e){var a;return(0,l.Z)(this,n),a=t.call(this,e),(0,o.Z)((0,i.Z)(a),"complete",(function(e){a.setState({complete:e})})),(0,o.Z)((0,i.Z)(a),"reset",(function(){a.setState({complete:!1})})),a.state={complete:!1},a}return(0,c.Z)(n,[{key:"render",value:function(){return this.state.complete?(0,r.Z)(k,{user:this.state.complete,callback:this.reset}):(0,r.Z)(N,{callback:this.complete})}}]),n}(f().Component),w=n(4869);s.Z.addInitializer({name:"component:request-activation-link",initializer:function(){document.getElementById("request-activation-link-mount")&&(0,w.Z)(x,"request-activation-link-mount",!1)},after:"store"})},11768:function(e,t,n){"use strict";var a,s,i=n(32233),o=n(97326),r=n(4942),l=n(22928),c=n(15671),u=n(43144),d=n(79340),p=n(6215),h=n(61120),f=n(57588),v=n.n(f),m=n(73935),Z=n.n(m),g=n(82211),b=n(43345),y=n(78657),_=n(53904),N=n(55210),k=n(93051);function x(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,h.Z)(e);if(t){var s=(0,h.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,p.Z)(this,n)}}var w=function(e){(0,d.Z)(n,e);var t=x(n);function n(e){var a;return(0,c.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,email:"",validators:{email:[N.Do()]}},a}return(0,u.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(_.Z.error(gettext("Enter a valid email address.")),!1)}},{key:"send",value:function(){return y.Z.post(i.Z.get("SEND_PASSWORD_RESET_API"),{email:this.state.email})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){["inactive_user","inactive_admin"].indexOf(e.code)>-1?this.props.showInactivePage(e):403===e.status&&e.ban?(0,k.Z)(e.ban):_.Z.apiError(e)}},{key:"render",value:function(){return(0,l.Z)("div",{className:"well well-form well-form-request-password-reset"},void 0,(0,l.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,l.Z)("div",{className:"form-group"},void 0,(0,l.Z)("div",{className:"control-input"},void 0,(0,l.Z)("input",{type:"text",className:"form-control",placeholder:gettext("Your e-mail address"),disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email}))),(0,l.Z)(g.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Send link"))))}}]),n}(b.Z),R=function(e){(0,d.Z)(n,e);var t=x(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,u.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("Reset password link was sent to %(email)s"),{email:this.props.user.email},!0)}},{key:"render",value:function(){return(0,l.Z)("div",{className:"well well-form well-form-request-password-reset well-done"},void 0,(0,l.Z)("div",{className:"done-message"},void 0,a||(a=(0,l.Z)("div",{className:"message-icon"},void 0,(0,l.Z)("span",{className:"material-icon"},void 0,"check"))),(0,l.Z)("div",{className:"message-body"},void 0,(0,l.Z)("p",{},void 0,this.getMessage())),(0,l.Z)("button",{type:"button",className:"btn btn-primary btn-block",onClick:this.props.callback},void 0,gettext("Request another link"))))}}]),n}(v().Component),C=function(e){(0,d.Z)(n,e);var t=x(n);function n(){return(0,c.Z)(this,n),t.apply(this,arguments)}return(0,u.Z)(n,[{key:"getActivateButton",value:function(){return"inactive_user"===this.props.activation?(0,l.Z)("p",{},void 0,(0,l.Z)("a",{href:i.Z.get("REQUEST_ACTIVATION_URL")},void 0,gettext("Activate your account."))):null}},{key:"render",value:function(){return(0,l.Z)("div",{className:"page page-message page-message-info page-forgotten-password-inactive"},void 0,(0,l.Z)("div",{className:"container"},void 0,(0,l.Z)("div",{className:"message-panel"},void 0,s||(s=(0,l.Z)("div",{className:"message-icon"},void 0,(0,l.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,l.Z)("div",{className:"message-body"},void 0,(0,l.Z)("p",{className:"lead"},void 0,gettext("Your account is inactive.")),(0,l.Z)("p",{},void 0,this.props.message),this.getActivateButton()))))}}]),n}(v().Component),S=function(e){(0,d.Z)(n,e);var t=x(n);function n(e){var a;return(0,c.Z)(this,n),a=t.call(this,e),(0,r.Z)((0,o.Z)(a),"complete",(function(e){a.setState({complete:e})})),(0,r.Z)((0,o.Z)(a),"reset",(function(){a.setState({complete:!1})})),a.state={complete:!1},a}return(0,u.Z)(n,[{key:"showInactivePage",value:function(e){Z().render((0,l.Z)(C,{activation:e.code,message:e.detail}),document.getElementById("page-mount"))}},{key:"render",value:function(){return this.state.complete?(0,l.Z)(R,{callback:this.reset,user:this.state.complete}):(0,l.Z)(w,{callback:this.complete,showInactivePage:this.showInactivePage})}}]),n}(v().Component),E=n(4869);i.Z.addInitializer({name:"component:request-password-reset",initializer:function(){document.getElementById("request-password-reset-mount")&&(0,E.Z)(S,"request-password-reset-mount",!1)},after:"store"})},61323:function(e,t,n){"use strict";var a,s=n(32233),i=n(97326),o=n(4942),r=n(22928),l=n(15671),c=n(43144),u=n(79340),d=n(6215),p=n(61120),h=n(57588),f=n.n(h),v=n(73935),m=n.n(v),Z=n(82211),g=n(43345),b=n(14467),y=n(78657),_=n(98274),N=n(59801),k=n(53904),x=n(93051),w=n(19755);function R(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}var C=function(e){(0,u.Z)(n,e);var t=R(n);function n(e){var a;return(0,l.Z)(this,n),(a=t.call(this,e)).state={isLoading:!1,password:""},a}return(0,c.Z)(n,[{key:"clean",value:function(){return!!this.state.password.trim().length||(k.Z.error(gettext("Enter new password.")),!1)}},{key:"send",value:function(){return y.Z.post(s.Z.get("CHANGE_PASSWORD_API"),{password:this.state.password})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){403===e.status&&e.ban?(0,x.Z)(e.ban):k.Z.apiError(e)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"well well-form well-form-reset-password"},void 0,(0,r.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,r.Z)("div",{className:"form-group"},void 0,(0,r.Z)("div",{className:"control-input"},void 0,(0,r.Z)("input",{type:"password",className:"form-control",placeholder:gettext("Enter new password"),disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password}))),(0,r.Z)(Z.Z,{className:"btn-primary btn-block",loading:this.state.isLoading},void 0,gettext("Change password"))))}}]),n}(g.Z),S=function(e){(0,u.Z)(n,e);var t=R(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"getMessage",value:function(){return interpolate(gettext("%(username)s, your password has been changed successfully."),{username:this.props.user.username},!0)}},{key:"showSignIn",value:function(){N.Z.show(b.Z)}},{key:"render",value:function(){return(0,r.Z)("div",{className:"page page-message page-message-success page-forgotten-password-changed"},void 0,(0,r.Z)("div",{className:"container"},void 0,(0,r.Z)("div",{className:"message-panel"},void 0,a||(a=(0,r.Z)("div",{className:"message-icon"},void 0,(0,r.Z)("span",{className:"material-icon"},void 0,"check"))),(0,r.Z)("div",{className:"message-body"},void 0,(0,r.Z)("p",{className:"lead"},void 0,this.getMessage()),(0,r.Z)("p",{},void 0,gettext("You will have to sign in using new password before continuing.")),(0,r.Z)("p",{},void 0,(0,r.Z)("button",{type:"button",className:"btn btn-primary",onClick:this.showSignIn},void 0,gettext("Sign in")))))))}}]),n}(f().Component),E=function(e){(0,u.Z)(n,e);var t=R(n);function n(){var e;(0,l.Z)(this,n);for(var a=arguments.length,s=new Array(a),c=0;c<a;c++)s[c]=arguments[c];return e=t.call.apply(t,[this].concat(s)),(0,o.Z)((0,i.Z)(e),"complete",(function(e){_.Z.softSignOut(),w('#hidden-login-form input[name="redirect_to"]').remove(),m().render((0,r.Z)(S,{user:e}),document.getElementById("page-mount"))})),e}return(0,c.Z)(n,[{key:"render",value:function(){return(0,r.Z)(C,{callback:this.complete})}}]),n}(f().Component),L=n(4869);s.Z.addInitializer({name:"component:reset-password-form",initializer:function(){document.getElementById("reset-password-form-mount")&&(0,L.Z)(E,"reset-password-form-mount",!1)},after:"store"})},15049:function(e,t,n){"use strict";var a,s=n(37424),i=n(22928),o=n(87462),r=n(57588),l=n.n(r),c=n(59131),u=n(15671),d=n(43144),p=n(97326),h=n(79340),f=n(6215),v=n(61120),m=n(4942),Z=n(32233),g=n(43345),b=n(21981),y=n(16427),_=n(6935),N=n(78657),k=n(53904),x=n(90287),w=n(98936),R=n(99755);var C=function(e){(0,h.Z)(o,e);var t,n,s=(t=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function o(e){var t;return(0,u.Z)(this,o),t=s.call(this,e),(0,m.Z)((0,p.Z)(t),"onQueryChange",(function(e){t.changeValue("query",e.target.value)})),t.state={isLoading:!1,query:e.search.query},t}return(0,d.Z)(o,[{key:"componentDidMount",value:function(){this.state.query.length&&this.handleSubmit()}},{key:"clean",value:function(){return!!this.state.query.trim().length||(k.Z.error(gettext("You have to enter search query.")),!1)}},{key:"send",value:function(){x.Z.dispatch((0,y.Vx)({isLoading:!0}));var e=this.state.query.trim(),t=window.location.href,n=t.indexOf("?q=");return n>0&&(t=t.substring(0,n+3)),window.history.pushState({},"",t+encodeURIComponent(e)),N.Z.get(Z.Z.get("SEARCH_API"),{q:e})}},{key:"handleSuccess",value:function(e){x.Z.dispatch((0,y.Vx)({query:this.state.query.trim(),isLoading:!1,providers:e})),e.forEach((function(e){"users"===e.id?x.Z.dispatch((0,_.ZB)(e.results.results)):"threads"===e.id&&x.Z.dispatch((0,b.zD)(e.results))}))}},{key:"handleError",value:function(e){k.Z.apiError(e),x.Z.dispatch((0,y.Vx)({isLoading:!1}))}},{key:"render",value:function(){return(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)(R.sP,{},void 0,(0,i.Z)(R.mr,{styleName:"site-search"},void 0,(0,i.Z)(R.gC,{styleName:"site-search"},void 0,(0,i.Z)("h1",{},void 0,gettext("Search"))),(0,i.Z)(R.eA,{className:"page-header-search-form"},void 0,(0,i.Z)(w.gq,{},void 0,(0,i.Z)(w.kw,{auto:!0},void 0,(0,i.Z)(w.Z6,{},void 0,(0,i.Z)("input",{className:"form-control",disabled:this.state.isLoading,type:"text",value:this.state.query,placeholder:gettext("Search"),onChange:this.onQueryChange})),(0,i.Z)(w.Z6,{shrink:!0},void 0,(0,i.Z)("button",{className:"btn btn-secondary btn-icon btn-outline",disabled:this.state.isLoading},void 0,a||(a=(0,i.Z)("span",{className:"material-icon"},void 0,"search"))))))))))}}]),o}(g.Z),S=n(69987);function E(e){return(0,i.Z)("div",{className:"list-group nav-side"},void 0,e.providers.map((function(e){return(0,i.Z)(S.rU,{activeClassName:"active",className:"list-group-item",to:e.url},e.id,(0,i.Z)("span",{className:"material-icon"},void 0,e.icon),e.name,(0,i.Z)(L,{results:e.results}))})))}function L(e){if(!e.results)return null;var t=e.results.count;return t>1e6?t=Math.ceil(t/1e6)+"KK":t>1e3&&(t=Math.ceil(t/1e3)+"K"),(0,i.Z)("span",{className:"badge"},void 0,t)}function P(e){return(0,i.Z)("div",{className:"page page-search"},void 0,(0,i.Z)(C,{provider:e.provider,search:e.search}),(0,i.Z)(c.Z,{},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-3"},void 0,(0,i.Z)(E,{providers:e.search.providers})),(0,i.Z)("div",{className:"col-md-9"},void 0,e.children,(0,i.Z)(O,{provider:e.provider,search:e.search})))))}function O(e){var t=null;if(e.search.providers.forEach((function(n){n.id===e.provider.id&&(t=n.time)})),null===t)return null;var n=gettext("Search took %(time)s s to complete");return(0,i.Z)("footer",{className:"search-footer"},void 0,(0,i.Z)("p",{},void 0,interpolate(n,{time:t},!0)))}var T=n(11005),A=n(82211);function B(e){return(0,i.Z)("div",{},void 0,(0,i.Z)(T.Z,{isReady:!0,posts:e.results}),l().createElement(I,e))}n(69092);var I=function(e){(0,h.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function s(){var e;(0,u.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,m.Z)((0,p.Z)(e),"onClick",(function(){x.Z.dispatch((0,b.Vx)({isBusy:!0})),N.Z.get(e.props.provider.api,{q:e.props.query,page:e.props.next}).then((function(e){e.forEach((function(e){"threads"===e.id&&(x.Z.dispatch((0,b.R3)(e.results)),x.Z.dispatch((0,y.P0)(e)))})),x.Z.dispatch((0,b.Vx)({isBusy:!1}))}),(function(e){k.Z.apiError(e),x.Z.dispatch((0,b.Vx)({isBusy:!1}))}))})),e}return(0,d.Z)(s,[{key:"render",value:function(){return this.props.more?(0,i.Z)("div",{className:"pager-more"},void 0,(0,i.Z)(A.Z,{className:"btn btn-default btn-outline",loading:this.props.isBusy,onClick:this.onClick},void 0,gettext("Show more"))):null}}]),s}(l().Component);function j(e){var t=e.children,n=e.loading,a=e.posts,s=e.query;return a&&a.count?t:s.length?(0,i.Z)("p",{className:"lead"},void 0,n?gettext("Loading results..."):gettext("No threads matching search query have been found.")):(0,i.Z)("p",{className:"lead"},void 0,gettext("Enter at least two characters to search threads."))}var D=n(40429);function U(e){var t=e.children,n=e.loading,a=e.query;return e.users.length?t:a.length?(0,i.Z)("p",{className:"lead"},void 0,n?gettext("Loading results..."):gettext("No users matching search query have been found.")):(0,i.Z)("p",{className:"lead"},void 0,gettext("Enter at least two characters to search users."))}var M={threads:function(e){return(0,i.Z)(P,{provider:e.route.provider,search:e.search},void 0,(0,i.Z)(j,{loading:e.search.isLoading,query:e.search.query,posts:e.posts},void 0,l().createElement(B,(0,o.Z)({provider:e.route.provider,query:e.search.query},e.posts))))},users:function(e){return(0,i.Z)(P,{provider:e.route.provider,search:e.search},void 0,(0,i.Z)(U,{loading:e.search.isLoading,query:e.search.query,users:e.users},void 0,(0,i.Z)(D.Z,{cols:3,isReady:!e.search.isLoading,users:e.users})))}};function z(e){return{posts:e.posts,search:e.search,tick:e.tick.tick,user:e.auth.user,users:e.users}}var H=n(39633);Z.Z.addInitializer({name:"component:search",initializer:function(e){var t;"misago:search"===e.get("CURRENT_LINK")&&(0,H.Z)({paths:(t=Z.Z.get("SEARCH_PROVIDERS"),t.map((function(e){return{path:e.url,component:(0,s.$j)(z)(M[e.id]),provider:e}})))})},after:"store"})},61814:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588);var p={info:"alert-info",success:"alert-success",warning:"alert-warning",error:"alert-danger"},h=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(){return(0,o.Z)(this,s),a.apply(this,arguments)}return(0,r.Z)(s,[{key:"getSnackbarClass",value:function(){var e="alerts-snackbar";return this.props.isVisible?e+=" in":e+=" out",e}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getSnackbarClass()},void 0,(0,i.Z)("p",{className:"alert "+p[this.props.type]},void 0,this.props.message))}}]),s}(n.n(d)().Component);function f(e){return e.snackbar}var v=n(4869);s.Z.addInitializer({name:"component:snackbar",initializer:function(){(0,v.Z)((0,a.$j)(f)(h),"snackbar-mount")},after:"snackbar"})},95920:function(e,t,n){"use strict";var a=n(57588),s=n.n(a),i=n(22928),o=n(15671),r=n(43144),l=n(97326),c=n(79340),u=n(6215),d=n(61120),p=n(4942),h=n(32233),f=n(26106),v=n(82211),m=n(43345),Z=n(96359),g=n(78657),b=n(53904),y=n(55210),_=function(e){var t=e.backendName,n=gettext("Sign in with %(backend)s"),a=interpolate(n,{backend:t},!0);return(0,i.Z)("div",{className:"page-header-bg"},void 0,(0,i.Z)("div",{className:"page-header"},void 0,(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("h1",{},void 0,a))))};function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){(0,p.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var x=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"handlePrivacyPolicyChange",(function(e){var n=e.target.value;t.handleToggleAgreement("privacyPolicy",n)})),(0,p.Z)((0,l.Z)(t),"handleTermsOfServiceChange",(function(e){var n=e.target.value;t.handleToggleAgreement("termsOfService",n)})),(0,p.Z)((0,l.Z)(t),"handleToggleAgreement",(function(e,n){t.setState((function(a,s){if(null===a[e]){var i=k(k({},a.errors),{},(0,p.Z)({},e,null));return(0,p.Z)({errors:i},e,n)}var o=t.state.validators[e][0],r=k(k({},a.errors),{},(0,p.Z)({},e,[o(null)]));return(0,p.Z)({errors:r},e,null)}))}));var n={email:[y.Do()],username:[y.lG()]};return h.Z.get("TERMS_OF_SERVICE_ID")&&(n.termsOfService=[y.fT()]),h.Z.get("PRIVACY_POLICY_ID")&&(n.privacyPolicy=[y.jA()]),t.state={email:e.email||"",emailProtected:!!e.email,username:e.username||"",termsOfService:null,privacyPolicy:null,validators:n,errors:{},isLoading:!1},t}return(0,r.Z)(s,[{key:"clean",value:function(){if(this.validate(),-1!==[this.state.email.trim().length,this.state.username.trim().length].indexOf(0))return b.Z.error(gettext("Fill out all fields.")),!1;var e=this.state.validators;return h.Z.get("TERMS_OF_SERVICE_ID")&&null===this.state.termsOfService?(b.Z.error(e.termsOfService[0](null)),!1):!h.Z.get("PRIVACY_POLICY_ID")||null!==this.state.privacyPolicy||(b.Z.error(e.privacyPolicy[0](null)),b.Z.error(gettext("You need to accept the privacy policy.")),!1)}},{key:"send",value:function(){return g.Z.post(this.props.url,{email:this.state.email,username:this.state.username,terms_of_service:this.state.termsOfService,privacy_policy:this.state.privacyPolicy})}},{key:"handleSuccess",value:function(e){(0,this.props.onRegistrationComplete)(e)}},{key:"handleError",value:function(e){if(200===e.status)(0,this.props.onRegistrationComplete)({activation:"active",step:"done",username:this.state.username});else if(400===e.status){var t={errors:e};e.email&&(t.emailProtected=!1),this.setState(t)}else b.Z.apiError(e)}},{key:"render",value:function(){var e=this.props.backend_name,t=this.state,n=t.email,a=t.emailProtected,s=t.username,o=t.isLoading,r=null;if(a){var l=gettext("Your e-mail address has been verified by %(backend)s.");r=interpolate(l,{backend:e},!0)}return(0,i.Z)("div",{className:"page page-social-auth page-social-sauth-register"},void 0,(0,i.Z)(_,{backendName:e}),(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Complete your details"))),(0,i.Z)("div",{className:"panel-body"},void 0,(0,i.Z)(Z.Z,{for:"id_username",label:gettext("Username"),validation:this.state.errors.username},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control",disabled:o,onChange:this.bindInput("username"),value:s})),(0,i.Z)(Z.Z,{for:"id_email",label:gettext("E-mail address"),helpText:r,validation:a?null:this.state.errors.email},void 0,(0,i.Z)("input",{type:"email",id:"id_email",className:"form-control",disabled:o||a,onChange:this.bindInput("email"),value:n})),(0,i.Z)(f.Z,{errors:this.state.errors,privacyPolicy:this.state.privacyPolicy,termsOfService:this.state.termsOfService,onPrivacyPolicyChange:this.handlePrivacyPolicyChange,onTermsOfServiceChange:this.handleTermsOfServiceChange})),(0,i.Z)("div",{className:"panel-footer"},void 0,(0,i.Z)(v.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Sign in")))))))))}}]),s}(m.Z),w=function(e){var t,n,a=e.activation,s=e.backend_name,o=e.username;return n="user"===a?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===a?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):gettext("%(username)s, your account has been created and you have been signed in to it."),t="active"===a?"check":"info_outline",(0,i.Z)("div",{className:"page page-social-auth page-social-sauth-register"},void 0,(0,i.Z)(_,{backendName:s}),(0,i.Z)("div",{className:"container"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)("div",{className:"panel panel-default panel-form"},void 0,(0,i.Z)("div",{className:"panel-heading"},void 0,(0,i.Z)("h3",{className:"panel-title"},void 0,gettext("Registration completed!"))),(0,i.Z)("div",{className:"panel-body panel-message-body"},void 0,(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,t)),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,interpolate(n,{username:o},!0)),(0,i.Z)("p",{className:"help-block"},void 0,(0,i.Z)("a",{className:"btn btn-default",href:h.Z.get("MISAGO_PATH")},void 0,gettext("Return to forum index"))))))))))};var R=function(e){(0,c.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,d.Z)(t);if(n){var s=(0,d.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,u.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,p.Z)((0,l.Z)(t),"handleRegistrationComplete",(function(e){var n=e.activation,a=e.email,s=e.step,i=e.username;t.setState({activation:n,email:a,step:s,username:i})})),t.state={step:e.step,activation:e.activation||"",email:e.email||"",username:e.username||""},t}return(0,r.Z)(s,[{key:"render",value:function(){var e=this.props,t=e.backend_name,n=e.url,a=this.state,s=a.activation,o=a.email,r=a.step,l=a.username;return"register"===r?(0,i.Z)(x,{backend_name:t,email:o,url:n,username:l,onRegistrationComplete:this.handleRegistrationComplete}):(0,i.Z)(w,{activation:s,backend_name:t,email:o,url:n,username:l})}}]),s}(s().Component),C=n(4869);h.Z.addInitializer({name:"component:social-auth",initializer:function(e){if("misago:social-complete"===e.get("CURRENT_LINK")){var t=e.get("SOCIAL_AUTH_FORM");(0,C.Z)(s().createElement(R,t),"page-mount")}},after:"store"})},59203:function(e,t,n){"use strict";var a,s,i=n(37424),o=n(22928),r=n(15671),l=n(43144),c=n(97326),u=n(79340),d=n(6215),p=n(61120),h=n(4942),f=n(57588),v=n.n(f),m=n(87462),Z=n(43345),g=n(96359),b=n(8154),y=n(7738),_=n(78657),N=n(59801),k=n(53904),x=n(90287);var w,R=function(e){(0,u.Z)(i,e);var t,n,s=(t=i,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function i(e){var t;return(0,r.Z)(this,i),t=s.call(this,e),(0,h.Z)((0,c.Z)(t),"onUsernameChange",(function(e){t.changeValue("username",e.target.value)})),t.state={isLoading:!1,username:""},t}return(0,l.Z)(i,[{key:"clean",value:function(){return!!this.state.username.trim().length||(k.Z.error(gettext("You have to enter user name.")),!1)}},{key:"send",value:function(){return _.Z.patch(this.props.thread.api.index,[{op:"add",path:"participants",value:this.state.username},{op:"add",path:"acl",value:1}])}},{key:"handleSuccess",value:function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants)),k.Z.success(gettext("New participant has been added to thread.")),N.Z.hide()}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog modal-sm",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,a||(a=(0,o.Z)(C,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_username",label:gettext("User to add")},void 0,(0,o.Z)("input",{id:"id_username",className:"form-control",disabled:this.state.isLoading,onChange:this.onUsernameChange,type:"text",value:this.state.username}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-block btn-primary",disabled:this.state.isLoading},void 0,gettext("Add participant")),(0,o.Z)("button",{className:"btn btn-block btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel"))))))}}]),i}(Z.Z);function C(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,s||(s=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Add participant")))}var S=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(R,{thread:e.props.thread}))})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.thread.acl.can_add_participants?(0,o.Z)("div",{className:"col-xs-12 col-sm-3"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-block",onClick:this.onClick,type:"button"},void 0,w||(w=(0,o.Z)("span",{className:"material-icon"},void 0,"person_add")),gettext("Add participant"))):null}}]),s}(v().Component),E=n(32233);var L=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onClick",(function(){var e,n,a=!1;if(t.isUser)a=window.confirm(gettext("Are you sure you want to take over this thread?"));else{var s=gettext("Are you sure you want to change thread owner to %(user)s?");a=window.confirm(interpolate(s,{user:t.props.participant.username},!0))}a&&(e=t.props.thread,n=t.props.participant,_.Z.patch(e.api.index,[{op:"replace",path:"owner",value:n.id},{op:"add",path:"acl",value:1}]).then((function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants));var t=gettext("%(user)s has been made new thread owner.");k.Z.success(interpolate(t,{user:n.username},!0))}),(function(e){k.Z.apiError(e)})))})),t.isUser=e.participant.id===e.user.id,t}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.participant.is_owner?null:this.props.thread.acl.can_change_owner?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,gettext("Make owner"))):null}}]),s}(v().Component);var P,O,T,A=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onClick",(function(){var e,n,a=!1;if(t.isUser)a=window.confirm(gettext("Are you sure you want to leave this thread?"));else{var s=gettext("Are you sure you want to remove %(user)s from this thread?");a=window.confirm(interpolate(s,{user:t.props.participant.username},!0))}a&&(t.isUser?(e=t.props.thread,n=t.props.participant,_.Z.patch(e.api.index,[{op:"remove",path:"participants",value:n.id}]).then((function(){k.Z.success(gettext("You have left this thread.")),window.setTimeout((function(){window.location=E.Z.get("PRIVATE_THREADS_URL")}),3e3)}),(function(e){k.Z.apiError(e)}))):function(e,t){_.Z.patch(e.api.index,[{op:"remove",path:"participants",value:t.id},{op:"add",path:"acl",value:1}]).then((function(e){x.Z.dispatch((0,y.y8)(e)),x.Z.dispatch(b.gx(e.participants));var n=gettext("%(user)s has been removed from this thread.");k.Z.success(interpolate(n,{user:t.username},!0))}),(function(e){k.Z.apiError(e)}))}(t.props.thread,t.props.participant))})),t.isUser=e.participant.id===e.user.id,t}return(0,l.Z)(s,[{key:"render",value:function(){var e=this.props.user.acl.can_moderate_private_threads;return this.props.userIsOwner||this.isUser||e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,this.isUser?gettext("Leave thread"):gettext("Remove"))):null}}]),s}(v().Component),B=n(19605);function I(e){var t=e.participant,n="btn btn-default";return t.is_owner&&(n="btn btn-primary"),n+=" btn-user btn-block",(0,o.Z)("div",{className:"col-xs-12 col-sm-3 col-md-2 participant-card"},void 0,(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{"aria-haspopup":"true","aria-expanded":"false",className:n,"data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)(B.ZP,{size:"34",user:t}),(0,o.Z)("span",{className:"btn-text"},void 0,t.username)),(0,o.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,(0,o.Z)(j,{isOwner:t.is_owner}),P||(P=(0,o.Z)("li",{className:"dropdown-header"})),(0,o.Z)("li",{},void 0,(0,o.Z)("a",{href:t.url},void 0,gettext("See profile"))),O||(O=(0,o.Z)("li",{role:"separator",className:"divider"})),v().createElement(L,e),v().createElement(A,e))))}function j(e){return e.isOwner?(0,o.Z)("li",{className:"dropdown-header dropdown-header-owner"},void 0,T||(T=(0,o.Z)("span",{className:"material-icon"},void 0,"start")),(0,o.Z)("span",{className:"icon-text"},void 0,gettext("Thread owner"))):null}function D(e){var t=e.participants,n=e.thread,a=e.user,s=e.userIsOwner;return(0,o.Z)("div",{className:"participants-cards"},void 0,(0,o.Z)("div",{className:"row"},void 0,t.map((function(e){return(0,o.Z)(I,{participant:e,thread:n,user:a,userIsOwner:s},e.id)}))))}function U(e){return e.participants.length?(0,o.Z)("div",{className:"panel panel-default panel-participants"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,v().createElement(D,(0,m.Z)({userIsOwner:M(e.user,e.participants)},e)),(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)(S,{thread:e.thread}),(0,o.Z)("div",{className:"col-xs-12 col-sm-9"},void 0,(0,o.Z)("p",{},void 0,function(e){var t=e.length,n=ngettext("This thread has %(users)s participant.","This thread has %(users)s participants.",t);return interpolate(n,{users:t},!0)}(e.participants)))))):null}function M(e,t){return t[0].id===e.id}var z=n(91876),H={changed_title:"edit",pinned_globally:"bookmark",pinned_locally:"bookmark_border",unpinned:"panorama_fish_eye",moved:"arrow_forward",merged:"call_merge",approved:"done",opened:"lock_open",closed:"lock_outline",unhid:"visibility",hid:"visibility_off",changed_owner:"grade",tookover:"grade",added_participant:"person_add",owner_left:"person_outline",participant_left:"person_outline",removed_participant:"remove_circle_outline"},F=function(e){return(0,o.Z)("span",{className:"event-icon-bg"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,H[e.post.event_type]))},q=n(89627),Y=n(30381),V=n.n(Y),$=n(92747);function G(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function W(e){return e.post.acl.can_hide?(0,o.Z)("li",{className:"event-controls"},void 0,v().createElement(K,e),v().createElement(J,e),v().createElement(Q,e)):null}var K=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){x.Z.dispatch($.r$(e.props.post,{is_hidden:!0,hidden_on:V()(),hidden_by_name:e.props.user.username,url:Object.assign(e.props.post.url,{hidden_by:e.props.user.url})})),_.Z.patch(e.props.post.api.index,[{op:"replace",path:"is-hidden",value:!0}]).then((function(t){x.Z.dispatch($.r$(e.props.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{is_hidden:!1}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.is_hidden?null:(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Hide"))}}]),n}(v().Component),J=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){x.Z.dispatch($.r$(e.props.post,{is_hidden:!1})),_.Z.patch(e.props.post.api.index,[{op:"replace",path:"is-hidden",value:!1}]).then((function(t){x.Z.dispatch($.r$(e.props.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{is_hidden:!0}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.is_hidden?(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Unhide")):null}}]),n}(v().Component),Q=function(e){(0,u.Z)(n,e);var t=G(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){window.confirm(gettext("Are you sure you wish to delete this event? This action is not reversible!"))&&e.delete()})),(0,h.Z)((0,c.Z)(e),"delete",(function(){x.Z.dispatch($.r$(e.props.post,{isDeleted:!0})),_.Z.delete(e.props.post.api.index).then((function(){k.Z.success(gettext("Event has been deleted."))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.props.post,{isDeleted:!1}))}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,gettext("Delete"))}}]),n}(v().Component),X='<span class="item-title">%(user)s</span>',ee='<a href="%(url)s" class="item-title">%(user)s</a>';function te(e){return(0,o.Z)("ul",{className:"list-inline event-info"},void 0,v().createElement(ne,e),v().createElement(ae,e),v().createElement(W,e))}function ne(e){if(e.post.is_hidden){var t;t=e.post.url.hidden_by?interpolate(ee,{url:(0,q.Z)(e.post.url.hidden_by),user:(0,q.Z)(e.post.hidden_by_name)},!0):interpolate(X,{user:(0,q.Z)(e.post.hidden_by_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.post.hidden_on.format("LLL")),relative:(0,q.Z)(e.post.hidden_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("Hidden by %(event_by)s %(event_on)s.")),{event_by:t,event_on:n},!0);return(0,o.Z)("li",{className:"event-hidden-message",dangerouslySetInnerHTML:{__html:a}})}return null}function ae(e){var t;t=e.post.poster?interpolate(ee,{url:(0,q.Z)(e.post.poster.url),user:(0,q.Z)(e.post.poster_name)},!0):interpolate(X,{user:(0,q.Z)(e.post.poster_name)},!0);var n=interpolate('<a href="%(url)s" title="%(absolute)s">%(relative)s</a>',{url:(0,q.Z)(e.post.url.index),absolute:(0,q.Z)(e.post.posted_on.format("LLL")),relative:(0,q.Z)(e.post.posted_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("By %(event_by)s %(event_on)s.")),{event_by:t,event_on:n},!0);return(0,o.Z)("li",{className:"event-posters",dangerouslySetInnerHTML:{__html:a}})}var se={pinned_globally:gettext("Thread has been pinned globally."),pinned_locally:gettext("Thread has been pinned locally."),unpinned:gettext("Thread has been unpinned."),approved:gettext("Thread has been approved."),opened:gettext("Thread has been opened."),closed:gettext("Thread has been closed."),unhid:gettext("Thread has been revealed."),hid:gettext("Thread has been made hidden."),tookover:gettext("Took thread over."),owner_left:gettext("Owner has left thread. This thread is now closed."),participant_left:gettext("Participant has left thread.")},ie='<a href="%(url)s" class="item-title">%(name)s</a>',oe='<span class="item-title">%(name)s</span>';function re(e){return se[e.post.event_type]?(0,o.Z)("p",{className:"event-message"},void 0,se[e.post.event_type]):"changed_title"===e.post.event_type?v().createElement(le,e):"moved"===e.post.event_type?v().createElement(ce,e):"merged"===e.post.event_type?v().createElement(ue,e):"changed_owner"===e.post.event_type?v().createElement(de,e):"added_participant"===e.post.event_type?v().createElement(pe,e):"removed_participant"===e.post.event_type?v().createElement(he,e):null}function le(e){var t=(0,q.Z)(gettext("Thread title has been changed from %(old_title)s.")),n=interpolate(oe,{name:(0,q.Z)(e.post.event_context.old_title)},!0),a=interpolate(t,{old_title:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function ce(e){var t=(0,q.Z)(gettext("Thread has been moved from %(from_category)s.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.from_category.url),name:(0,q.Z)(e.post.event_context.from_category.name)},!0),a=interpolate(t,{from_category:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function ue(e){var t=(0,q.Z)(gettext("The %(merged_thread)s thread has been merged into this thread.")),n=interpolate(oe,{name:(0,q.Z)(e.post.event_context.merged_thread)},!0),a=interpolate(t,{merged_thread:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function de(e){var t=(0,q.Z)(gettext("Changed thread owner to %(user)s.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function pe(e){var t=(0,q.Z)(gettext("Added %(user)s to thread.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function he(e){var t=(0,q.Z)(gettext("Removed %(user)s from thread.")),n=interpolate(ie,{url:(0,q.Z)(e.post.event_context.user.url),name:(0,q.Z)(e.post.event_context.user.username)},!0),a=interpolate(t,{user:n},!0);return(0,o.Z)("p",{className:"event-message",dangerouslySetInnerHTML:{__html:a}})}function fe(e){return e.post.is_read?null:(0,o.Z)("div",{className:"event-label"},void 0,(0,o.Z)("span",{className:"label label-unread"},void 0,gettext("New event")))}var ve=n(19755);var me=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){return(0,r.Z)(this,s),a.apply(this,arguments)}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;this.props.post.is_read||ve(this.element).waypoint({handler:function(t){"down"!==t||e.props.post.is_read||window.setTimeout((function(){var t=e.element.getBoundingClientRect(),n=t.height+t.top,a=document.documentElement.clientHeight;n<5||n>a||(x.Z.dispatch($.r$(e.props.post,{is_read:!0})),_.Z.post(e.props.post.api.read).then((function(t){x.Z.dispatch(y.Vx(e.props.thread,{is_read:t.thread_is_read}))}),(function(e){k.Z.apiError(e)})))}),1e3)},offset:"bottom-in-view"})}},{key:"render",value:function(){var e=this;return v().createElement("div",{className:this.props.className,ref:function(t){t&&(e.element=t)}},this.props.children)}}]),s}(v().Component);function Ze(e){var t="event";return e.post.isDeleted?t="hide":e.post.is_hidden&&(t="event post-hidden"),(0,o.Z)("li",{id:"post-"+e.post.id,className:t},void 0,(0,o.Z)(fe,{post:e.post}),(0,o.Z)("div",{className:"event-body"},void 0,(0,o.Z)("div",{className:"event-icon"},void 0,v().createElement(F,e)),(0,o.Z)(me,{className:"event-content",post:e.post},void 0,v().createElement(re,e),v().createElement(te,e))))}var ge=n(69130),be=n(48772);function ye(e){return(0,o.Z)("div",{className:"col-xs-12 col-md-6"},void 0,v().createElement(_e,e),(0,o.Z)("div",{className:"post-attachment"},void 0,(0,o.Z)("a",{href:e.attachment.url.index,className:"attachment-name item-title"},void 0,e.attachment.filename),v().createElement(xe,e)))}function _e(e){return e.attachment.is_image?(0,o.Z)("div",{className:"post-attachment-preview"},void 0,v().createElement(ke,e)):(0,o.Z)("div",{className:"post-attachment-preview"},void 0,v().createElement(Ne,e))}function Ne(e){return(0,o.Z)("a",{href:e.attachment.url.index,className:"material-icon"},void 0,"insert_drive_file")}function ke(e){var t=e.attachment.url.thumb||e.attachment.url.index;return(0,o.Z)("a",{className:"post-thumbnail",href:e.attachment.url.index,style:{backgroundImage:'url("'+(0,q.Z)(t)+'")'}})}function xe(e){var t;t=e.attachment.url.uploader?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.attachment.url.uploader),user:(0,q.Z)(e.attachment.uploader_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.attachment.uploader_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.attachment.uploaded_on.format("LLL")),relative:(0,q.Z)(e.attachment.uploaded_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.")),{filetype:e.attachment.filetype,size:(0,be.Z)(e.attachment.size),uploader:t,uploaded_on:n},!0);return(0,o.Z)("p",{className:"post-attachment-description",dangerouslySetInnerHTML:{__html:a}})}function we(e){return function(e){return(!e.is_hidden||e.acl.can_see_hidden)&&e.attachments}(e.post)?(0,o.Z)("div",{className:"post-attachments"},void 0,(0,ge.Z)(e.post.attachments,2).map((function(e){var t=e.map((function(e){return e?e.id:0})).join("_");return(0,o.Z)(Re,{row:e},t)}))):null}function Re(e){return(0,o.Z)("div",{className:"row"},void 0,e.row.map((function(e){return(0,o.Z)(ye,{attachment:e},e?e.id:0)})))}var Ce,Se,Ee,Le,Pe=n(69092);function Oe(e){return e.post.is_hidden&&!e.post.acl.can_see_hidden?v().createElement(Ae,e):e.post.content?v().createElement(Te,e):v().createElement(Be,e)}function Te(e){return(0,o.Z)(me,{className:"post-body",post:e.post},void 0,(0,o.Z)(Pe.Z,{markup:e.post.content}))}function Ae(e){var t;t=e.post.hidden_by?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.post.url.hidden_by),user:(0,q.Z)(e.post.hidden_by_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.post.hidden_by_name)},!0);var n=interpolate('<abbr class="last-title" title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.post.hidden_on.format("LLL")),relative:(0,q.Z)(e.post.hidden_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("Hidden by %(hidden_by)s %(hidden_on)s.")),{hidden_by:t,hidden_on:n},!0);return(0,o.Z)(me,{className:"post-body post-body-hidden",post:e.post},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("This post is hidden. You cannot see its contents.")),(0,o.Z)("p",{className:"text-muted",dangerouslySetInnerHTML:{__html:a}}))}function Be(e){return(0,o.Z)(me,{className:"post-body post-body-invalid",post:e.post},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("This post's contents cannot be displayed.")),(0,o.Z)("p",{className:"text-muted"},void 0,gettext("This error is caused by invalid post content manipulation.")))}function Ie(e){var t=e.post,n=e.thread,a=e.user;if(!Me(t)||t.id!==n.best_answer)return null;var s;return s=a.id&&n.best_answer_marked_by===a.id?interpolate(gettext("Marked as best answer by you %(marked_on)s."),{marked_on:n.best_answer_marked_on.fromNow()},!0):interpolate(gettext("Marked as best answer by %(marked_by)s %(marked_on)s."),{marked_by:n.best_answer_marked_by_name,marked_on:n.best_answer_marked_on.fromNow()},!0),(0,o.Z)("div",{className:"post-status-message post-status-best-answer"},void 0,Ce||(Ce=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),(0,o.Z)("p",{},void 0,s))}function je(e){return Me(e.post)&&e.post.is_hidden?(0,o.Z)("div",{className:"post-status-message post-status-hidden"},void 0,Se||(Se=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),(0,o.Z)("p",{},void 0,gettext("This post is hidden. Only users with permission may see its contents."))):null}function De(e){return Me(e.post)&&e.post.is_unapproved?(0,o.Z)("div",{className:"post-status-message post-status-unapproved"},void 0,Ee||(Ee=(0,o.Z)("span",{className:"material-icon"},void 0,"remove_circle_outline")),(0,o.Z)("p",{},void 0,gettext("This post is unapproved. Only users with permission to approve posts and its author may see its contents."))):null}function Ue(e){return Me(e.post)&&e.post.is_protected?(0,o.Z)("div",{className:"post-status-message post-status-protected visible-xs-block"},void 0,Le||(Le=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),(0,o.Z)("p",{},void 0,gettext("This post is protected. Only moderators may change it."))):null}function Me(e){return!e.is_hidden||e.acl.can_see_hidden}function ze(e){x.Z.dispatch($.r$(e.post,{is_unapproved:!1})),Ge(e,[{op:"replace",path:"is-unapproved",value:!1}],{is_unapproved:e.post.is_unapproved})}function He(e){x.Z.dispatch($.r$(e.post,{is_protected:!0})),Ge(e,[{op:"replace",path:"is-protected",value:!0}],{is_protected:e.post.is_protected})}function Fe(e){x.Z.dispatch($.r$(e.post,{is_protected:!1})),Ge(e,[{op:"replace",path:"is-protected",value:!1}],{is_protected:e.post.is_protected})}function qe(e){x.Z.dispatch($.r$(e.post,{is_hidden:!0,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(e.post.url,{hidden_by:e.user.url})})),Ge(e,[{op:"replace",path:"is-hidden",value:!0}],{is_hidden:e.post.is_hidden,hidden_on:e.post.hidden_on,hidden_by_name:e.post.hidden_by_name,url:e.post.url})}function Ye(e){x.Z.dispatch($.r$(e.post,{is_hidden:!1})),Ge(e,[{op:"replace",path:"is-hidden",value:!1}],{is_hidden:e.post.is_hidden})}function Ve(e){var t=e.post.last_likes||[],n=[e.user].concat(t),a=n.length>3?n.slice(0,-1):n;x.Z.dispatch($.r$(e.post,{is_liked:!0,likes:e.post.likes+1,last_likes:a})),Ge(e,[{op:"replace",path:"is-liked",value:!0}],{is_liked:e.post.is_liked,likes:e.post.likes,last_likes:e.post.last_likes})}function $e(e){x.Z.dispatch($.r$(e.post,{is_liked:!1,likes:e.post.likes-1,last_likes:e.post.last_likes.filter((function(t){return!t.id||t.id!==e.user.id}))}));var t={is_liked:e.post.is_liked,likes:e.post.likes,last_likes:e.post.last_likes};Ge(e,[{op:"replace",path:"is-liked",value:!1}],t)}function Ge(e,t,n){_.Z.patch(e.post.api.index,t).then((function(t){x.Z.dispatch($.r$(e.post,t))}),(function(t){400===t.status?k.Z.error(t.detail[0]):k.Z.apiError(t),x.Z.dispatch($.r$(e.post,n))}))}function We(e){window.confirm(gettext("Are you sure you want to delete this post? This action is not reversible!"))&&(x.Z.dispatch($.r$(e.post,{isDeleted:!0})),_.Z.delete(e.post.api.index).then((function(){k.Z.success(gettext("Post has been deleted."))}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),x.Z.dispatch($.r$(e.post,{isDeleted:!1}))})))}function Ke(e){var t=e.post,n=e.user;x.Z.dispatch(y.Vx({best_answer:t.id,best_answer_is_protected:t.is_protected,best_answer_marked_on:V()(),best_answer_marked_by:n.id,best_answer_marked_by_name:n.username,best_answer_marked_by_slug:n.slug})),Qe(e,[{op:"replace",path:"best-answer",value:t.id},{op:"add",path:"acl",value:!0}],{best_answer:e.thread.best_answer,best_answer_is_protected:e.thread.best_answer_is_protected,best_answer_marked_on:e.thread.best_answer_marked_on,best_answer_marked_by:e.thread.best_answer_marked_by,best_answer_marked_by_name:e.thread.best_answer_marked_by_name,best_answer_marked_by_slug:e.thread.best_answer_marked_by_slug})}function Je(e){var t=e.post;x.Z.dispatch(y.Vx({best_answer:null,best_answer_is_protected:!1,best_answer_marked_on:null,best_answer_marked_by:null,best_answer_marked_by_name:null,best_answer_marked_by_slug:null})),Qe(e,[{op:"remove",path:"best-answer",value:t.id},{op:"add",path:"acl",value:!0}],{best_answer:e.thread.best_answer,best_answer_is_protected:e.thread.best_answer_is_protected,best_answer_marked_on:e.thread.best_answer_marked_on,best_answer_marked_by:e.thread.best_answer_marked_by,best_answer_marked_by_name:e.thread.best_answer_marked_by_name,best_answer_marked_by_slug:e.thread.best_answer_marked_by_slug})}function Qe(e,t,n){_.Z.patch(e.thread.api.index,t).then((function(e){e.best_answer_marked_on&&(e.best_answer_marked_on=V()(e.best_answer_marked_on)),x.Z.dispatch(y.Vx(e))}),(function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e),x.Z.dispatch(y.Vx(n))}))}var Xe,et,tt,nt=n(30337),at=n(3784);var st=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),(t=a.call(this,e)).state={isReady:!1,error:null,likes:[]},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(this.props.post.api.likes).then((function(t){e.setState({isReady:!0,likes:t.map(it)})}),(function(t){e.setState({isReady:!0,error:t.detail})}))}},{key:"render",value:function(){return this.state.error?(0,o.Z)(ot,{className:"modal-message"},void 0,(0,o.Z)(nt.Z,{message:this.state.error})):this.state.isReady?this.state.likes.length?(0,o.Z)(ot,{className:"modal-sm",likes:this.state.likes},void 0,(0,o.Z)(rt,{likes:this.state.likes})):(0,o.Z)(ot,{className:"modal-message"},void 0,(0,o.Z)(nt.Z,{message:gettext("No users have liked this post.")})):Xe||(Xe=(0,o.Z)(ot,{className:"modal-sm"},void 0,(0,o.Z)(at.Z,{})))}}]),s}(v().Component);function it(e){return Object.assign({},e,{liked_on:V()(e.liked_on)})}function ot(e){var t=e.className,n=e.children,a=e.likes,s=gettext("Post Likes");if(a){var i=a.length,r=ngettext("%(likes)s like","%(likes)s likes",i);s=interpolate(r,{likes:i},!0)}return(0,o.Z)("div",{className:"modal-dialog "+(t||""),role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,et||(et=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,s)),n))}function rt(e){return(0,o.Z)("div",{className:"modal-body modal-post-likers"},void 0,(0,o.Z)("ul",{className:"media-list"},void 0,e.likes.map((function(e){return v().createElement(lt,(0,m.Z)({key:e.id},e))}))))}function lt(e){if(e.url){var t={id:e.liker_id,avatars:e.avatars};return(0,o.Z)("li",{className:"media"},void 0,(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("a",{className:"user-avatar",href:e.url},void 0,(0,o.Z)(B.ZP,{size:"50",user:t}))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("a",{className:"item-title",href:e.url},void 0,e.username)," ",(0,o.Z)(ct,{likedOn:e.liked_on})))}return(0,o.Z)("li",{className:"media"},void 0,tt||(tt=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{className:"user-avatar"},void 0,(0,o.Z)(B.ZP,{size:"50"})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("strong",{},void 0,e.username)," ",(0,o.Z)(ct,{likedOn:e.liked_on})))}function ct(e){return(0,o.Z)("span",{className:"text-muted",title:e.likedOn.format("LLL")},void 0,e.likedOn.fromNow())}var ut,dt,pt,ht,ft=n(27950);function vt(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function mt(e){return function(e){return(!e.is_hidden||e.acl.can_see_hidden)&&(e.acl.can_reply||e.acl.can_edit||e.acl.can_see_likes&&(e.last_likes||[]).length||e.acl.can_like)}(e.post)?(0,o.Z)("div",{className:"post-footer"},void 0,v().createElement(Zt,e),v().createElement(gt,e),v().createElement(bt,e),v().createElement(yt,(0,m.Z)({lastLikes:e.post.last_likes,likes:e.post.likes},e)),v().createElement(_t,(0,m.Z)({likes:e.post.likes},e)),v().createElement(wt,e),v().createElement(Rt,e)):null}var Zt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("button",{className:"hidden-xs btn btn-default btn-sm pull-left",disabled:this.props.post.isBusy||t.id===n.best_answer,onClick:this.onClick,type:"button"},void 0,ut||(ut=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Best answer")):null}}]),n}(v().Component),gt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("button",{className:"visible-xs-inline-block btn btn-default btn-sm pull-left",disabled:this.props.post.isBusy||t.id===n.best_answer,onClick:this.onClick,type:"button"},void 0,dt||(dt=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box"))):null}}]),n}(v().Component),bt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.post.is_liked?$e(e.props):Ve(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){if(!this.props.post.acl.can_like)return null;var e="btn btn-default btn-sm pull-left";return this.props.post.is_liked&&(e="btn btn-success btn-sm pull-left"),(0,o.Z)("button",{className:e,disabled:this.props.post.isBusy,onClick:this.onClick,type:"button"},void 0,this.props.post.is_liked?gettext("Liked"):gettext("Like"))}}]),n}(v().Component),yt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(st,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=(this.props.post.last_likes||[]).length>0;return this.props.post.acl.can_see_likes&&e?2===this.props.post.acl.can_see_likes?(0,o.Z)("button",{className:"btn btn-link btn-sm pull-left hidden-xs",onClick:this.onClick,type:"button"},void 0,Nt(this.props.likes,this.props.lastLikes)):(0,o.Z)("p",{className:"pull-left hidden-xs"},void 0,Nt(this.props.likes,this.props.lastLikes)):null}}]),n}(v().Component),_t=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,l.Z)(n,[{key:"render",value:function(){var e=(this.props.post.last_likes||[]).length>0;return this.props.post.acl.can_see_likes&&e?2===this.props.post.acl.can_see_likes?(0,o.Z)("button",{className:"btn btn-link btn-sm likes-compact pull-left visible-xs-block",onClick:this.onClick,type:"button"},void 0,pt||(pt=(0,o.Z)("span",{className:"material-icon"},void 0,"favorite")),this.props.likes):(0,o.Z)("p",{className:"likes-compact pull-left visible-xs-block"},void 0,ht||(ht=(0,o.Z)("span",{className:"material-icon"},void 0,"favorite")),this.props.likes):null}}]),n}(yt);function Nt(e,t){var n=t.slice(0,3).map((function(e){return e.username}));if(1==n.length)return interpolate(gettext("%(user)s likes this."),{user:n[0]},!0);var a=e-n.length,s=n.slice(0,-1).join(", "),i=n.slice(-1)[0],o=interpolate(gettext("%(users)s and %(last_user)s"),{users:s,last_user:i},!0);if(0===a)return interpolate(gettext("%(users)s like this."),{users:o},!0);var r=ngettext("%(users)s and %(likes)s other user like this.","%(users)s and %(likes)s other users like this.",a);return interpolate(r,{users:n.join(", "),likes:a},!0)}var kt,xt,wt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"REPLY",config:e.props.thread.api.editor,submit:e.props.thread.api.posts.index,context:{reply:e.props.post.id}})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_reply?(0,o.Z)("button",{className:"btn btn-primary btn-sm pull-right",type:"button",onClick:this.onClick},void 0,gettext("Reply")):null}}]),n}(v().Component),Rt=function(e){(0,u.Z)(n,e);var t=vt(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"EDIT",config:e.props.post.api.editor,submit:e.props.post.api.index})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_edit?(0,o.Z)("button",{className:"hidden-xs btn btn-default btn-sm pull-right",type:"button",onClick:this.onClick},void 0,gettext("Edit")):null}}]),n}(v().Component),Ct=n(82211);var St=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.move,{new_thread:this.state.url,posts:[this.props.post.id]})}},{key:"handleSuccess",value:function(e){x.Z.dispatch($.r$(this.props.post,{isDeleted:!0})),N.Z.hide(),k.Z.success(gettext("Selected post was moved to the other thread."))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail):k.Z.apiError(e)}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,kt||(kt=(0,o.Z)(Et,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to move post to")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading},void 0,gettext("Move post"))))))}}]),s}(Z.Z);function Et(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,xt||(xt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move post")))}function Lt(e){return(0,o.Z)("div",{className:"modal-body post-changelog-diff"},void 0,(0,o.Z)("ul",{className:"list-unstyled"},void 0,e.diff.map((function(e,t){return(0,o.Z)(Pt,{item:e},t)}))))}function Pt(e){return"?"===e.item[0]?null:(0,o.Z)("li",{className:(t=e.item,n="diff-item","-"===t[0]?n+=" diff-item-sub":"+"===t[0]&&(n+=" diff-item-add"),n)},void 0,e.item.substr(2));var t,n}var Ot,Tt,At,Bt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.revertEdit(e.props.edit.id)})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.canRevert?(0,o.Z)("div",{className:"modal-footer visible-xs-block"},void 0,(0,o.Z)(Ct.Z,{className:"btn-default btn-sm btn-block",disabled:this.props.disabled,onClick:this.onClick,title:gettext("Revert post to state from before this edit.")},void 0,gettext("Revert"))):null}}]),s}(v().Component);var It,jt,Dt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"goLast",(function(){e.props.goToEdit()})),(0,h.Z)((0,c.Z)(e),"goForward",(function(){e.props.goToEdit(e.props.edit.next)})),(0,h.Z)((0,c.Z)(e),"goBack",(function(){e.props.goToEdit(e.props.edit.previous)})),(0,h.Z)((0,c.Z)(e),"revertEdit",(function(){e.props.revertEdit(e.props.edit.id)})),e}return(0,l.Z)(s,[{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-toolbar post-changelog-toolbar"},void 0,(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)("div",{className:"col-xs-12 col-sm-4"},void 0,(0,o.Z)("div",{className:"row"},void 0,(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(Ut,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goBack})),(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(Mt,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goForward})),(0,o.Z)("div",{className:"col-xs-4"},void 0,(0,o.Z)(zt,{disabled:this.props.disabled,edit:this.props.edit,onClick:this.goLast})))),(0,o.Z)("div",{className:"col-xs-12 col-sm-5 xs-margin-top-half post-change-label"},void 0,(0,o.Z)(Ft,{edit:this.props.edit})),(0,o.Z)(Ht,{canRevert:this.props.canRevert,disabled:this.props.disabled,onClick:this.revertEdit})))}}]),s}(v().Component);function Ut(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.previous,onClick:e.onClick,title:gettext("See previous change")},void 0,Ot||(Ot=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left")))}function Mt(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.next,onClick:e.onClick,title:gettext("See next change")},void 0,Tt||(Tt=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right")))}function zt(e){return(0,o.Z)(Ct.Z,{className:"btn-default btn-block btn-icon btn-sm",disabled:e.disabled||!e.edit.next,onClick:e.onClick,title:gettext("See previous change")},void 0,At||(At=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page")))}function Ht(e){return e.canRevert?(0,o.Z)("div",{className:"col-sm-3 hidden-xs"},void 0,(0,o.Z)(Ct.Z,{className:"btn-default btn-sm btn-block",disabled:e.disabled,onClick:e.onClick,title:gettext("Revert post to state from before this edit.")},void 0,gettext("Revert"))):null}function Ft(e){var t;t=e.edit.url.editor?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,q.Z)(e.edit.url.editor),user:(0,q.Z)(e.edit.editor_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,q.Z)(e.edit.editor_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,q.Z)(e.edit.edited_on.format("LLL")),relative:(0,q.Z)(e.edit.edited_on.fromNow())},!0),a=interpolate((0,q.Z)(gettext("By %(edited_by)s %(edited_on)s.")),{edited_by:t,edited_on:n},!0);return(0,o.Z)("p",{dangerouslySetInnerHTML:{__html:a}})}function qt(e){return Object.assign({},e,{edited_on:V()(e.edited_on)})}var Yt=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"goToEdit",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;t.setState({isBusy:!0});var n=t.props.post.api.edits;null!==e&&(n+="?edit="+e),_.Z.get(n).then((function(e){t.setState({isReady:!0,isBusy:!1,edit:qt(e)})}),(function(e){t.setState({isReady:!0,isBusy:!1,error:e.detail})}))})),(0,h.Z)((0,c.Z)(t),"revertEdit",(function(e){if(!t.state.isBusy&&window.confirm(gettext("Are you sure you with to revert this post to the state from before this edit?"))){t.setState({isBusy:!0});var n=t.props.post.api.edits+"?edit="+e;_.Z.post(n).then((function(e){var t=$.ZB(e);x.Z.dispatch($.r$(e,t)),k.Z.success(gettext("Post has been reverted to previous state.")),N.Z.hide()}),(function(e){k.Z.apiError(e),t.setState({isBusy:!1})}))}})),t.state={isReady:!1,isBusy:!0,canRevert:e.post.acl.can_edit,error:null,edit:null},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){this.goToEdit()}},{key:"render",value:function(){return this.state.error?(0,o.Z)(Vt,{className:"modal-dialog modal-message"},void 0,(0,o.Z)(nt.Z,{message:this.state.error})):this.state.isReady?(0,o.Z)(Vt,{},void 0,(0,o.Z)(Dt,{canRevert:this.state.canRevert,disabled:this.state.isBusy,edit:this.state.edit,goToEdit:this.goToEdit,revertEdit:this.revertEdit}),(0,o.Z)(Lt,{diff:this.state.edit.diff}),(0,o.Z)(Bt,{canRevert:this.state.canRevert,disabled:this.state.isBusy,edit:this.state.edit,revertEdit:this.revertEdit})):It||(It=(0,o.Z)(Vt,{},void 0,(0,o.Z)(at.Z,{})))}}]),s}(v().Component);function Vt(e){return(0,o.Z)("div",{className:e.className||"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,jt||(jt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Post edits history"))),e.children))}var $t,Gt,Wt,Kt,Jt,Qt,Xt=n(57026),en=n(60471),tn=n(55210);function nn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function an(e){return v().createElement(gn,(0,m.Z)({},e,{Form:bn}))}var sn,on,rn,ln,cn,un,dn,pn,hn,fn,vn,mn,Zn,gn=function(e){(0,u.Z)(n,e);var t=nn(n);function n(e){var a;return(0,r.Z)(this,n),(a=t.call(this,e)).state={isLoaded:!1,isError:!1,categories:[]},a}return(0,l.Z)(n,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(misago.get("THREAD_EDITOR_API")).then((function(t){var n=t.map((function(e){return Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id,post:e.post})}));e.setState({isLoaded:!0,categories:n})}),(function(t){e.setState({isError:t.detail})}))}},{key:"render",value:function(){return this.state.isError?(0,o.Z)(_n,{message:this.state.isError}):this.state.isLoaded?v().createElement(bn,(0,m.Z)({},this.props,{categories:this.state.categories})):$t||($t=(0,o.Z)(yn,{}))}}]),n}(v().Component),bn=function(e){(0,u.Z)(n,e);var t=nn(n);function n(e){var a;return(0,r.Z)(this,n),a=t.call(this,e),(0,h.Z)((0,c.Z)(a),"onCategoryChange",(function(e){var t=e.target.value,n={category:t};a.acl[t].can_pin_threads<n.weight&&(n.weight=0),a.acl[t].can_hide_threads||(n.is_hidden=0),a.acl[t].can_close_threads||(n.is_closed=!1),a.setState(n)})),a.state={isLoading:!1,title:"",category:null,categories:e.categories,weight:0,is_hidden:0,is_closed:!1,validators:{title:[tn.C1()]},errors:{}},a.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],a.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],a.acl={},a.props.categories.forEach((function(e){e.post&&(a.state.category||(a.state.category=e.id),a.acl[e.id]={can_pin_threads:e.post.pin,can_close_threads:e.post.close,can_hide_threads:e.post.hide})})),a}return(0,l.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(k.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.split,{title:this.state.title,category:this.state.category,weight:this.state.weight,is_hidden:this.state.is_hidden,is_closed:this.state.is_closed,posts:[this.props.post.id]})}},{key:"handleSuccess",value:function(e){x.Z.dispatch($.r$(this.props.post,{isDeleted:!0})),N.Z.hide(),k.Z.success(gettext("Selected post was split into new thread."))}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),k.Z.error(gettext("Form contains errors."))):k.Z.apiError(e)}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,o.Z)(g.Z,{label:gettext("Thread weight"),for:"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,o.Z)(g.Z,{label:gettext("Hide thread"),for:"id_is_hidden",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,o.Z)(g.Z,{label:gettext("Close thread"),for:"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"render",value:function(){return(0,o.Z)(Nn,{className:"modal-dialog"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{label:gettext("Thread title"),for:"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},void 0,(0,o.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),Gt||(Gt=(0,o.Z)("div",{className:"clearfix"})),(0,o.Z)(g.Z,{label:gettext("Category"),for:"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},void 0,(0,o.Z)(Xt.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.state.categories})),Wt||(Wt=(0,o.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)(Ct.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Split post")))))}}]),n}(Z.Z);function yn(){return Kt||(Kt=(0,o.Z)(Nn,{className:"modal-dialog"},void 0,(0,o.Z)(at.Z,{})))}function _n(e){return(0,o.Z)(Nn,{className:"modal-dialog modal-message"},void 0,Jt||(Jt=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move this post at the moment.")),(0,o.Z)("p",{},void 0,e.message)))}function Nn(e){return(0,o.Z)("div",{className:e.className,role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Qt||(Qt=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Split post into new thread"))),e.children))}function kn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function xn(e){return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,v().createElement(Rn,e),v().createElement(Cn,e),v().createElement(Sn,e),v().createElement(En,e),v().createElement(Ln,e),v().createElement(Pn,e),v().createElement(On,e),v().createElement(Tn,e),v().createElement(An,e),v().createElement(Bn,e),v().createElement(In,e),v().createElement(jn,e),v().createElement(Dn,e))}var wn,Rn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){var t=window.location.protocol+"//";t+=window.location.host,t+=e.props.post.url.index,prompt(gettext("Permament link to this post:"),t)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,sn||(sn=(0,o.Z)("span",{className:"material-icon"},void 0,"link")),gettext("Permament link")))}}]),n}(v().Component),Cn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ft.Z.open({mode:"EDIT",config:e.props.post.api.editor,submit:e.props.post.api.index})})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_edit?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,on||(on=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Edit"))):null}}]),n}(v().Component),Sn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ke(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return n.acl.can_mark_best_answer&&t.acl.can_mark_as_best_answer?t.id===n.best_answer||n.best_answer&&!n.acl.can_change_best_answer?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,rn||(rn=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Mark as best answer"))):null}}]),n}(v().Component),En=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Je(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id!==n.best_answer?null:n.acl.can_unmark_best_answer?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,ln||(ln=(0,o.Z)("span",{className:"material-icon"},void 0,"check_box_outline_blank")),gettext("Unmark best answer"))):null}}]),n}(v().Component),Ln=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(Yt,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("This post was edited %(edits)s time.","This post was edited %(edits)s times.",this.props.post.edits);return interpolate(n,{edits:this.props.post.edits},!0),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,cn||(cn=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Changes history")))}}]),n}(v().Component),Pn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){ze(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_approve&&this.props.post.is_unapproved?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,un||(un=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))):null}}]),n}(v().Component),On=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(St,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_move?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,dn||(dn=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))):null}}]),n}(v().Component),Tn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(an,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_move?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,pn||(pn=(0,o.Z)("span",{className:"material-icon"},void 0,"call_split")),gettext("Split"))):null}}]),n}(v().Component),An=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){He(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_protect?this.props.post.is_protected?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,hn||(hn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Protect"))):null}}]),n}(v().Component),Bn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Fe(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_protect&&this.props.post.is_protected?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,fn||(fn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Remove protection"))):null}}]),n}(v().Component),In=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){qe(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id===n.best_answer?null:t.acl.can_hide?t.is_hidden?null:(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,vn||(vn=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))):null}}]),n}(v().Component),jn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ye(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){return this.props.post.acl.can_unhide&&this.props.post.is_hidden?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,mn||(mn=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))):null}}]),n}(v().Component),Dn=function(e){(0,u.Z)(n,e);var t=kn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){We(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props,t=e.post,n=e.thread;return t.id===n.best_answer?null:t.acl.can_delete?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.onClick,type:"button"},void 0,Zn||(Zn=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))):null}}]),n}(v().Component);function Un(e){return(0,o.Z)("div",{className:"pull-right dropdown"},void 0,wn||(wn=(0,o.Z)("button",{"aria-expanded":"true","aria-haspopup":"true",className:"btn btn-default btn-icon dropdown-toggle","data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"expand_more"))),v().createElement(xn,e))}var Mn=n(21981);var zn,Hn=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){e.props.post.isSelected?x.Z.dispatch(Mn._H(e.props.post)):x.Z.dispatch(Mn.Ys(e.props.post))})),e}return(0,l.Z)(s,[{key:"render",value:function(){return this.props.thread.acl.can_merge_posts||(e=this.props.post.acl).can_approve||e.can_hide||e.can_protect||e.can_unhide||e.can_delete||e.can_move?(0,o.Z)("div",{className:"pull-right"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-icon",onClick:this.onClick,type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,this.props.post.isSelected?"check_box":"check_box_outline_blank"))):null;var e}}]),s}(v().Component),Fn=n(24678);function qn(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function Yn(e){return(0,o.Z)("div",{className:"post-heading"},void 0,v().createElement(Vn,e),v().createElement($n,e),v().createElement(Gn,e),v().createElement(Wn,e),v().createElement(Qn,e),v().createElement(Xn,e),v().createElement(ea,e),v().createElement(Hn,e),v().createElement(Un,e))}function Vn(e){return e.post.is_read?null:(0,o.Z)("span",{className:"label label-unread hidden-xs"},void 0,gettext("New post"))}function $n(e){return e.post.is_read?null:(0,o.Z)("span",{className:"label label-unread visible-xs-inline-block"},void 0,gettext("New"))}function Gn(e){var t=interpolate(gettext("posted %(posted_on)s"),{posted_on:e.post.posted_on.format("LL, LT")},!0);return(0,o.Z)("a",{href:e.post.url.index,className:"btn btn-link posted-on hidden-xs",title:t},void 0,e.post.posted_on.fromNow())}function Wn(e){return(0,o.Z)("a",{href:e.post.url.index,className:"btn btn-link posted-on visible-xs-inline-block"},void 0,e.post.posted_on.fromNow())}var Kn,Jn,Qn=function(e){(0,u.Z)(n,e);var t=qn(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show((0,o.Z)(Yt,{post:e.props.post}))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("This post was edited %(edits)s time.","This post was edited %(edits)s times.",this.props.post.edits),a=interpolate(n,{edits:this.props.post.edits},!0),s=ngettext("edited %(edits)s time","edited %(edits)s times",this.props.post.edits);return(0,o.Z)("button",{className:"btn btn-link btn-see-edits hidden-xs",onClick:this.onClick,title:a,type:"button"},void 0,interpolate(s,{edits:this.props.post.edits},!0))}}]),n}(v().Component),Xn=function(e){(0,u.Z)(n,e);var t=qn(n);function n(){return(0,r.Z)(this,n),t.apply(this,arguments)}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.post.is_hidden&&!this.props.post.acl.can_see_hidden,t=0===this.props.post.edits;if(e||t)return null;var n=ngettext("%(edits)s edit","%(edits)s edits",this.props.post.edits);return(0,o.Z)("button",{className:"btn btn-link btn-see-edits visible-xs-inline-block",onClick:this.onClick,type:"button"},void 0,interpolate(n,{edits:this.props.post.edits},!0))}}]),n}(Qn);function ea(e){var t=e.post.poster&&e.post.poster.id===e.user.id,n=e.post.acl.can_protect;return e.user.id&&e.post.is_protected&&(t||n)?(0,o.Z)("span",{className:"label label-protected hidden-xs",title:gettext("This post is protected and may not be edited.")},void 0,zn||(zn=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("protected")):null}function ta(e){var t=e.post,n=e.thread;return(0,o.Z)("div",{className:"post-side post-side-anonymous"},void 0,(0,o.Z)(Hn,{post:t,thread:n}),(0,o.Z)(Un,{post:t,thread:n}),(0,o.Z)("div",{className:"media"},void 0,Kn||(Kn=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:100})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("span",{className:"media-heading item-title"},void 0,t.poster_name),(0,o.Z)("span",{className:"user-title user-title-anonymous"},void 0,gettext("Removed user")))))}function na(e){var t=e.title,n=e.rank;return n.is_tab||!!t||!!n.title}function aa(e){var t=e.poster,n=ngettext("%(posts)s post","%(posts)s posts",t.posts),a="user-postcount";return na(t)&&(a+=" hidden-xs hidden-sm"),(0,o.Z)("span",{className:a},void 0,interpolate(n,{posts:t.posts},!0))}function sa(e){var t=e.poster,n="hidden-xs";return na(t)&&(n+=" hidden-sm"),(0,o.Z)("span",{className:n},void 0,(0,o.Z)(Fn.ZP,{status:t.status},void 0,(0,o.Z)(Fn.pg,{status:t.status,user:t})))}function ia(e){var t=e.rank,n=e.title||t.title;if(!n&&t.is_tab&&(n=t.name),!n)return null;var a="user-title";return t.css_class&&(a+=" user-title-"+t.css_class),t.is_tab?(0,o.Z)("div",{className:a},void 0,(0,o.Z)("a",{href:t.url},void 0,n)):(0,o.Z)("div",{className:a},void 0,n)}function oa(e){var t=e.post,n=e.thread,a=t.poster;return(0,o.Z)("div",{className:"post-side post-side-registered"},void 0,(0,o.Z)(Hn,{post:t,thread:n}),(0,o.Z)(Un,{post:t,thread:n}),(0,o.Z)("div",{className:"media"},void 0,(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("a",{href:a.url},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:100,user:a}))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("div",{className:"media-heading"},void 0,(0,o.Z)("a",{className:"item-title",href:a.url},void 0,a.username),(0,o.Z)(Fn.ZP,{status:a.status},void 0,(0,o.Z)(Fn.Jj,{status:a.status}))),(0,o.Z)(ia,{rank:a.rank,title:a.title}),(0,o.Z)(sa,{poster:a}),(0,o.Z)(aa,{poster:a}))))}function ra(e){return e.post.poster?v().createElement(oa,e):v().createElement(ta,e)}function la(e){var t="post";return e.post.isDeleted?t="hide":e.post.is_hidden&&!e.post.acl.can_see_hidden&&(t="post post-hidden"),e.post.poster&&e.post.poster.rank.css_class&&(t+=" post-"+e.post.poster.rank.css_class),e.post.is_read||(t+=" post-new"),(0,o.Z)("li",{id:"post-"+e.post.id,className:t},void 0,(0,o.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,v().createElement(ra,e),(0,o.Z)("div",{className:"panel-content"},void 0,v().createElement(Yn,e),v().createElement(Ie,e),v().createElement(De,e),v().createElement(Ue,e),v().createElement(je,e),v().createElement(Oe,e),v().createElement(we,e),v().createElement(mt,e)))))}var ca,ua=function(){return(0,o.Z)("li",{className:"post"},void 0,(0,o.Z)("div",{className:"panel panel-default panel-post"},void 0,(0,o.Z)("div",{className:"panel-body"},void 0,(0,o.Z)("div",{className:"post-side post-side-registered"},void 0,(0,o.Z)("div",{className:"media"},void 0,Jn||(Jn=(0,o.Z)("div",{className:"media-left"},void 0,(0,o.Z)("span",{},void 0,(0,o.Z)(B.ZP,{className:"poster-avatar",size:"100"})))),(0,o.Z)("div",{className:"media-body"},void 0,(0,o.Z)("span",{className:"media-heading item-title"},void 0,(0,o.Z)("span",{className:"ui-preview-text",style:{width:"80px"}},void 0," ")),(0,o.Z)("span",{className:"user-title user-title-anonymous"},void 0,(0,o.Z)("span",{className:"ui-preview-text",style:{width:"60px"}},void 0," "))))),(0,o.Z)("div",{className:"panel-content"},void 0,(0,o.Z)("div",{className:"post-body"},void 0,(0,o.Z)("article",{className:"misago-markup"},void 0,(0,o.Z)("p",{className:"ui-preview-text",style:{width:"100%"}},void 0," "),(0,o.Z)("p",{className:"ui-preview-text",style:{width:"70%"}},void 0," "),(0,o.Z)("p",{className:"ui-preview-text hidden-xs hidden-sm",style:{width:"85%"}},void 0," ")))))))};function da(e){return e.posts.isLoaded?(0,o.Z)("ul",{className:"posts-list ui-ready"},void 0,e.posts.results.map((function(t){return v().createElement(pa,(0,m.Z)({key:t.id,post:t},e))}))):ca||(ca=(0,o.Z)("ul",{className:"posts-list ui-preview"},void 0,(0,o.Z)(ua,{})))}function pa(e){return e.post.is_event?v().createElement(Ze,e):v().createElement(la,e)}var ha,fa,va,ma=n(59752),Za=n(55547),ga=n(53328),ba=n(59131),ya=n(98936),_a=n(50366),Na=n(16768),ka=function(e){var t=e.thread;return(0,o.Z)("div",{className:"thread-user-card"},void 0,(0,o.Z)("div",{className:"thread-user-card-media"},void 0,t.starter?(0,o.Z)("a",{href:t.url.starter},void 0,(0,o.Z)(B.ZP,{size:40,user:t.starter})):ha||(ha=(0,o.Z)(B.ZP,{size:40}))),(0,o.Z)("div",{className:"thread-user-card-body"},void 0,(0,o.Z)("div",{className:"thread-user-card-header"},void 0,t.starter?(0,o.Z)("a",{className:"item-title",href:t.url.starter,title:gettext("Thread author")},void 0,t.starter.username):(0,o.Z)("span",{className:"item-title",title:gettext("Thread author")},void 0,t.starter_name)),(0,o.Z)("div",{},void 0,(0,o.Z)("span",{className:"text-muted",title:interpolate(gettext("Started on: %(timestamp)s"),{timestamp:t.started_on.format("LLL")},!0)},void 0,t.started_on.fromNow()))))},xa=n(99755),wa=n(12891);var Ra=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"handleSuccess",(function(e){t.handleSuccessUnmounted(e),t.setState({isLoading:!0}),N.Z.hide()})),(0,h.Z)((0,c.Z)(t),"handleSuccessUnmounted",(function(e){x.Z.dispatch(y.Ar()),x.Z.dispatch(y.Vx(e))})),(0,h.Z)((0,c.Z)(t),"handleError",(function(e){x.Z.dispatch(y.Ar()),400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)})),(0,h.Z)((0,c.Z)(t),"onChange",(function(e){t.changeValue("title",e.target.value)})),t.state={isLoading:!1,title:e.thread.title,validators:{title:(0,wa.jn)()},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){if(!this.state.title.trim().length)return k.Z.error(gettext("You have to enter thread title.")),!1;var e=this.validate();return!e.title||(k.Z.error(e.title[0]),!1)}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.patch(this.props.thread.api.index,[{op:"replace",path:"title",value:this.state.title}])}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,fa||(fa=(0,o.Z)(Ca,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_modal_title",label:gettext("Thread title")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_modal_title",onChange:this.onChange,value:this.state.title}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Change title"))))))}}]),s}(Z.Z);function Ca(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,va||(va=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Change title")))}var Sa,Ea,La=n(52753);var Pa,Oa,Ta,Aa,Ba,Ia,ja=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"handleSuccess",(function(e){t.handleSuccessUnmounted(e),t.setState({isLoading:!0})})),(0,h.Z)((0,c.Z)(t),"handleSuccessUnmounted",(function(e){k.Z.success(gettext("Thread has been merged with other one.")),window.location=e.url})),(0,h.Z)((0,c.Z)(t),"handleError",(function(e){x.Z.dispatch(y.Ar()),400===e.status?e.best_answers||e.polls?N.Z.show((0,o.Z)(La.ZP,{api:t.props.thread.api.merge,bestAnswers:e.best_answers,data:{other_thread:t.state.url},polls:e.polls,onError:t.handleError,onSuccess:t.handleSuccessUnmounted})):e.best_answer?k.Z.error(e.best_answer[0]):e.poll?k.Z.error(e.poll[0]):k.Z.error(e.detail):k.Z.apiError(e)})),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.post(this.props.thread.api.merge,{other_thread:this.state.url})}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Sa||(Sa=(0,o.Z)(Da,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to merge with"),help_text:gettext("Merge will delete current thread and move its contents to the thread specified here.")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Merge thread"))))))}}]),s}(Z.Z);function Da(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ea||(Ea=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Merge thread")))}var Ua,Ma,za,Ha,Fa,qa,Ya,Va,$a,Ga,Wa,Ka,Ja=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onCategoryChange",(function(e){t.changeValue("category",e.target.value)})),t.state={isReady:!1,isLoading:!1,isError:!1,category:null,categories:[]},t}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(E.Z.get("THREAD_EDITOR_API")).then((function(t){var n=null,a=t.map((function(e){return!1===e.post||n||(n=e.id),Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id})}));e.setState({isReady:!0,category:n,categories:a})}),(function(t){e.setState({isError:t.detail})}))}},{key:"send",value:function(){return x.Z.dispatch(y.n6()),_.Z.patch(this.props.thread.api.index,[{op:"replace",path:"category",value:this.state.category}])}},{key:"handleSuccess",value:function(){_.Z.get(this.props.thread.api.posts.index,{page:this.props.posts.page}).then((function(e){x.Z.dispatch(y.gx(e)),x.Z.dispatch(Mn.zD(e.post_set)),x.Z.dispatch(y.Ar()),k.Z.success(gettext("Thread has been moved.")),N.Z.hide()}),(function(e){x.Z.dispatch(y.Ar()),k.Z.apiError(e)}))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Pa||(Pa=(0,o.Z)(Qa,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_category",label:gettext("New category")},void 0,(0,o.Z)(Xt.Z,{choices:this.state.categories,disabled:this.state.isLoading||this.props.thread.isBusy,id:"id_category",onChange:this.onCategoryChange,value:this.state.category}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading||this.props.thread.isBusy},void 0,gettext("Move thread")))))):this.state.isError?(0,o.Z)(es,{message:this.state.isError}):Oa||(Oa=(0,o.Z)(Xa,{}))}}]),s}(Z.Z);function Qa(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ta||(Ta=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move thread")))}function Xa(e){return Aa||(Aa=(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)(Qa,{}),(0,o.Z)(at.Z,{}))))}function es(e){return(0,o.Z)("div",{className:"modal-dialog modal-message",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Ba||(Ba=(0,o.Z)(Qa,{})),Ia||(Ia=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move this thread at the moment.")),(0,o.Z)("p",{},void 0,e.message),(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok")))))}var ts,ns,as,ss,is=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"callApi",(function(t,n){x.Z.dispatch(y.n6()),t.push({op:"add",path:"acl",value:!0}),_.Z.patch(e.props.thread.api.index,t).then((function(e){x.Z.dispatch(y.Vx(e)),x.Z.dispatch(y.Ar()),k.Z.success(n)}),(function(e){x.Z.dispatch(y.Ar()),400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e)}))})),(0,h.Z)((0,c.Z)(e),"changeTitle",(function(){N.Z.show((0,o.Z)(Ra,{thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"pinGlobally",(function(){e.callApi([{op:"replace",path:"weight",value:2}],gettext("Thread has been pinned globally."))})),(0,h.Z)((0,c.Z)(e),"pinLocally",(function(){e.callApi([{op:"replace",path:"weight",value:1}],gettext("Thread has been pinned locally."))})),(0,h.Z)((0,c.Z)(e),"unpin",(function(){e.callApi([{op:"replace",path:"weight",value:0}],gettext("Thread has been unpinned."))})),(0,h.Z)((0,c.Z)(e),"approve",(function(){e.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Thread has been approved."))})),(0,h.Z)((0,c.Z)(e),"open",(function(){e.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Thread has been opened."))})),(0,h.Z)((0,c.Z)(e),"close",(function(){e.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Thread has been closed."))})),(0,h.Z)((0,c.Z)(e),"unhide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Thread has been made visible."))})),(0,h.Z)((0,c.Z)(e),"hide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Thread has been made hidden."))})),(0,h.Z)((0,c.Z)(e),"move",(function(){N.Z.show((0,o.Z)(Ja,{posts:e.props.posts,thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"merge",(function(){N.Z.show((0,o.Z)(ja,{thread:e.props.thread}))})),(0,h.Z)((0,c.Z)(e),"delete",(function(){window.confirm(gettext("Are you sure you want to delete this thread?"))&&(x.Z.dispatch(y.n6()),_.Z.delete(e.props.thread.api.index).then((function(t){k.Z.success(gettext("Thread has been deleted.")),window.location=e.props.thread.category.url.index}),(function(e){x.Z.dispatch(y.Ar()),k.Z.apiError(e)})))})),e}return(0,l.Z)(s,[{key:"render",value:function(){var e=this.props.moderation;return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,!!e.edit&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.changeTitle,type:"button"},void 0,Ua||(Ua=(0,o.Z)("span",{className:"material-icon"},void 0,"edit")),gettext("Change title"))),!!e.pinGlobally&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.pinGlobally,type:"button"},void 0,Ma||(Ma=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark")),gettext("Pin globally"))),!!e.pinLocally&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.pinLocally,type:"button"},void 0,za||(za=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark_border")),gettext("Pin locally"))),!!e.unpin&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.unpin,type:"button"},void 0,Ha||(Ha=(0,o.Z)("span",{className:"material-icon"},void 0,"panorama_fish_eye")),gettext("Unpin"))),!!e.move&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.move,type:"button"},void 0,Fa||(Fa=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))),!!e.merge&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.merge,type:"button"},void 0,qa||(qa=(0,o.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge"))),!!e.approve&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.approve,type:"button"},void 0,Ya||(Ya=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))),!!e.open&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.open,type:"button"},void 0,Va||(Va=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Open"))),!!e.close&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.close,type:"button"},void 0,$a||($a=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Close"))),!!e.unhide&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.unhide,type:"button"},void 0,Ga||(Ga=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))),!!e.hide&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.hide,type:"button"},void 0,Wa||(Wa=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))),!!e.delete&&(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:this.delete,type:"button"},void 0,Ka||(Ka=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))))}}]),s}(v().Component),os=is,rs=function(e){var t=e.thread,n=e.posts,a=e.moderation;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Thread options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:t.isBusy},void 0,ts||(ts=(0,o.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,o.Z)(os,{thread:t,posts:n,moderation:a}))},ls=n(94184),cs=n.n(ls);function us(e,t,n){var a={subscription:e.subscription};x.Z.dispatch(y.Vx({subscription:t})),_.Z.patch(e.api.index,[{op:"replace",path:"subscription",value:n}]).then((function(e){x.Z.dispatch(y.Vx(e))}),(function(e){400===e.status?k.Z.error(e.detail[0]):k.Z.apiError(e),x.Z.dispatch(y.Vx(a))}))}var ds,ps,hs,fs,vs,ms,Zs,gs,bs,ys,_s,Ns,ks,xs=function(e){var t,n=e.stickToBottom,a=e.thread;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-outline btn-block","aria-expanded":"true","aria-haspopup":"true","data-toggle":"dropdown",type:"button"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,!0===(t=a.subscription)?"star":!1===t?"star_half":"star_border"),function(e){return!0===e?gettext("E-mail"):!1===e?gettext("Enabled"):gettext("Disabled")}(a.subscription)),(0,o.Z)("ul",{className:cs()("dropdown-menu dropdown-menu-right",{"stick-to-bottom":n})},void 0,(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){null!==e.subscription&&us(e,null,"unsubscribe")}(a)}},void 0,ns||(ns=(0,o.Z)("span",{className:"material-icon"},void 0,"star_border")),gettext("Unsubscribe"))),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){!1!==e.subscription&&us(e,!1,"notify")}(a)}},void 0,as||(as=(0,o.Z)("span",{className:"material-icon"},void 0,"star_half")),gettext("Subscribe"))),(0,o.Z)("li",{},void 0,(0,o.Z)("button",{className:"btn btn-link",onClick:function(){return function(e){!0!==e.subscription&&us(e,!0,"email")}(a)}},void 0,ss||(ss=(0,o.Z)("span",{className:"material-icon"},void 0,"star")),gettext("Subscribe with e-mail")))))},ws=function(e){var t=e.children,n=e.className;return(0,o.Z)("ul",{className:cs()("breadcrumbs",n)},void 0,t)},Rs=function(e){var t=e.category,n=e.className;return(0,o.Z)("li",{className:cs()("breadcrumbs-item",n)},void 0,(0,o.Z)("a",{href:t.url.index},void 0,(0,o.Z)("span",{className:"material-icon",style:{color:t.color||"inherit"}},void 0,"label"),!!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name hidden-sm hidden-md hidden-lg",title:t.name},void 0,t.short_name),!!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name hidden-xs"},void 0,t.name),!t.short_name&&(0,o.Z)("span",{className:"breadcrumbs-item-name"},void 0,t.name)))},Cs=function(e){var t=e.category,n=e.className;return(0,o.Z)("li",{className:cs()("breadcrumbs-item",n)},void 0,(0,o.Z)("a",{href:t.url.index},void 0,ds||(ds=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right")),(0,o.Z)("span",{className:"breadcrumbs-item-name"},void 0,"root_category"===t.special_role?gettext("Threads"):gettext("Private threads"))))},Ss=function(e){var t=e.breadcrumbs;return(0,o.Z)(ws,{},void 0,t.map((function(e){return e.special_role?(0,o.Z)(Cs,{category:e},e.id):(0,o.Z)(Rs,{category:e},e.id)})))},Es=function(e){var t=e.styleName,n=e.thread,a=e.posts,s=e.user,i=e.moderation;return(0,o.Z)(xa.sP,{},void 0,(0,o.Z)(xa.mr,{styleName:t},void 0,(0,o.Z)(xa.gC,{styleName:t},void 0,(0,o.Z)(Ss,{breadcrumbs:n.path}),(0,o.Z)("h1",{},void 0,n.title)),(0,o.Z)(xa.eA,{className:"page-header-thread-details"},void 0,(0,o.Z)(ya.gq,{},void 0,(0,o.Z)(ya.kw,{auto:!0},void 0,(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(ka,{thread:n})),ps||(ps=(0,o.Z)(ya.Z6,{auto:!0})),n.replies>0&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(Na.Z,{thread:n})),function(e){return e.is_closed||e.is_hidden||e.is_unapproved||e.weight>0||e.best_answer||e.has_poll||e.has_unapproved_posts}(n)&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(_a.Z,{thread:n}))),s.is_authenticated&&(0,o.Z)(ya.kw,{},void 0,(0,o.Z)(ya.Z6,{},void 0,(0,o.Z)(xs,{thread:n})),i.enabled&&(0,o.Z)(ya.Z6,{shrink:!0},void 0,(0,o.Z)(rs,{thread:n,posts:a,moderation:i})))))))},Ls=n(92490),Ps=n(69987),Os=function(e){var t=e.baseUrl,n=e.posts;return(0,o.Z)("div",{className:"misago-pagination"},void 0,n.isLoaded&&n.first?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t,title:gettext("Go to first page")},void 0,hs||(hs=(0,o.Z)("span",{className:"material-icon"},void 0,"first_page"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to first page"),type:"button",disabled:!0},void 0,fs||(fs=(0,o.Z)("span",{className:"material-icon"},void 0,"first_page"))),n.isLoaded&&n.previous?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+(n.previous>1?n.previous+"/":""),title:gettext("Go to previous page")},void 0,vs||(vs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to previous page"),type:"button",disabled:!0},void 0,ms||(ms=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_left"))),n.isLoaded&&n.next?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.next+"/",title:gettext("Go to next page")},void 0,Zs||(Zs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to next page"),type:"button",disabled:!0},void 0,gs||(gs=(0,o.Z)("span",{className:"material-icon"},void 0,"chevron_right"))),n.isLoaded&&n.last?(0,o.Z)(Ps.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.last+"/",title:gettext("Go to last page")},void 0,bs||(bs=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page"))):(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to last page"),type:"button",disabled:!0},void 0,ys||(ys=(0,o.Z)("span",{className:"material-icon"},void 0,"last_page"))))},Ts=function(e){var t=e.posts;return t.more?(0,o.Z)("p",{},void 0,interpolate(ngettext("There is %(more)s more post in this thread.","There are %(more)s more posts in this thread.",t.more),{more:t.more},!0)):(0,o.Z)("p",{},void 0,gettext("There are no more posts in this thread."))};function As(e){var t=e.errors,n=e.posts;return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,_s||(_s=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Moderation"))),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("One or more posts could not be changed:")),(0,o.Z)("ul",{className:"list-unstyled list-errored-items"},void 0,t.map((function(e){return(0,o.Z)(Bs,{errors:e.detail,post:n[e.id]},e.id)}))))))}function Bs(e){var t=e.errors,n=e.post,a=interpolate(gettext("%(username)s on %(posted_on)s"),{posted_on:n.posted_on.format("LL, LT"),username:n.poster_name},!0);return(0,o.Z)("li",{},void 0,(0,o.Z)("h5",{},void 0,a,":"),t.map((function(e,t){return(0,o.Z)("p",{},t,e)})))}function Is(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_unapproved:!1}})),a=t.map((function(e){return{id:e.id,is_unapproved:e.is_unapproved}}));zs(e,[{op:"replace",path:"is-unapproved",value:!1}],n,a)}function js(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_protected:!0}})),a=t.map((function(e){return{id:e.id,is_protected:e.is_protected}}));zs(e,[{op:"replace",path:"is-protected",value:!0}],n,a)}function Ds(e){var t=e.selection,n=t.map((function(e){return{id:e.id,is_protected:!1}})),a=t.map((function(e){return{id:e.id,is_protected:e.is_protected}}));zs(e,[{op:"replace",path:"is-protected",value:!1}],n,a)}function Us(e){var t=e.selection,n=t.map((function(t){return{id:t.id,is_hidden:!0,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(t.url,{hidden_by:e.user.url})}})),a=t.map((function(e){return{id:e.id,is_hidden:e.is_hidden,hidden_on:e.hidden_on,hidden_by_name:e.hidden_by_name,url:e.url}}));zs(e,[{op:"replace",path:"is-hidden",value:!0}],n,a)}function Ms(e){var t=e.selection,n=t.map((function(t){return{id:t.id,is_hidden:!1,hidden_on:V()(),hidden_by_name:e.user.username,url:Object.assign(t.url,{hidden_by:e.user.url})}})),a=t.map((function(e){return{id:e.id,is_hidden:e.is_hidden,hidden_on:e.hidden_on,hidden_by_name:e.hidden_by_name,url:e.url}}));zs(e,[{op:"replace",path:"is-hidden",value:!1}],n,a)}function zs(e,t,n,a){var s=e.selection,i=e.thread;n.forEach((function(e){$.r$(e,e)})),x.Z.dispatch(Mn.kR());var r={ops:t,ids:s.map((function(e){return e.id}))};_.Z.patch(i.api.posts.index,r).then((function(e){e.forEach((function(e){x.Z.dispatch($.r$(e,e))}))}),(function(e){if(400!==e.status)return a.forEach((function(e){x.Z.dispatch($.r$(e,e))})),k.Z.apiError(e);var t=[],n=[];e.forEach((function(e){e.detail?(t.push(e),n.push(e.id)):x.Z.dispatch($.r$(e,e)),a.forEach((function(e){-1!==n.indexOf(e)&&x.Z.dispatch($.r$(e,e))}))}));var i={};s.forEach((function(e){i[e.id]=e})),N.Z.show((0,o.Z)(As,{errors:t,posts:i}))}))}function Hs(e){window.confirm(gettext("Are you sure you want to merge selected posts? This action is not reversible!"))&&(e.selection.slice(1).map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),_.Z.post(e.thread.api.posts.merge,{posts:e.selection.map((function(e){return e.id}))}).then((function(e){x.Z.dispatch($.r$(e,$.ZB(e)))}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),e.selection.slice(1).map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!1}))}))})),x.Z.dispatch(Mn.kR()))}function Fs(e){if(window.confirm(gettext("Are you sure you want to delete selected posts? This action is not reversible!"))){e.selection.map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))}));var t=e.selection.map((function(e){return e.id}));_.Z.delete(e.thread.api.posts.index,t).then((function(){}),(function(t){400===t.status?k.Z.error(t.detail):k.Z.apiError(t),e.selection.map((function(e){x.Z.dispatch($.r$(e,{isDeleted:!1}))}))})),x.Z.dispatch(Mn.kR())}}var qs,Ys,Vs,$s,Gs,Ws,Ks=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(e){var t;return(0,r.Z)(this,s),t=a.call(this,e),(0,h.Z)((0,c.Z)(t),"onUrlChange",(function(e){t.changeValue("url",e.target.value)})),t.state={isLoading:!1,url:"",validators:{url:[]},errors:{}},t}return(0,l.Z)(s,[{key:"clean",value:function(){return!!this.state.url.trim().length||(k.Z.error(gettext("You have to enter link to the other thread.")),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.move,{new_thread:this.state.url,posts:this.props.selection.map((function(e){return e.id}))})}},{key:"handleSuccess",value:function(e){this.props.selection.forEach((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),N.Z.hide(),k.Z.success(gettext("Selected posts were moved to the other thread."))}},{key:"handleError",value:function(e){400===e.status?k.Z.error(e.detail):k.Z.apiError(e)}},{key:"render",value:function(){return(0,o.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,Ns||(Ns=(0,o.Z)(Js,{})),(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{for:"id_url",label:gettext("Link to thread you want to move posts to")},void 0,(0,o.Z)("input",{className:"form-control",disabled:this.state.isLoading,id:"id_url",onChange:this.onUrlChange,value:this.state.url}))),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)("button",{className:"btn btn-primary",disabled:this.state.isLoading},void 0,gettext("Move posts"))))))}}]),s}(Z.Z);function Js(e){return(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,ks||(ks=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Move posts")))}function Qs(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function Xs(e){return v().createElement(ci,(0,m.Z)({},e,{Form:ui}))}var ei,ti,ni,ai,si,ii,oi,ri,li,ci=function(e){(0,u.Z)(n,e);var t=Qs(n);function n(e){var a;return(0,r.Z)(this,n),(a=t.call(this,e)).state={isLoaded:!1,isError:!1,categories:[]},a}return(0,l.Z)(n,[{key:"componentDidMount",value:function(){var e=this;_.Z.get(misago.get("THREAD_EDITOR_API")).then((function(t){var n=t.map((function(e){return Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id,post:e.post})}));e.setState({isLoaded:!0,categories:n})}),(function(t){e.setState({isError:t.detail})}))}},{key:"render",value:function(){return this.state.isError?(0,o.Z)(pi,{message:this.state.isError}):this.state.isLoaded?v().createElement(ui,(0,m.Z)({},this.props,{categories:this.state.categories})):qs||(qs=(0,o.Z)(di,{}))}}]),n}(v().Component),ui=function(e){(0,u.Z)(n,e);var t=Qs(n);function n(e){var a;return(0,r.Z)(this,n),a=t.call(this,e),(0,h.Z)((0,c.Z)(a),"onCategoryChange",(function(e){var t=e.target.value,n={category:t};a.acl[t].can_pin_threads<n.weight&&(n.weight=0),a.acl[t].can_hide_threads||(n.is_hidden=0),a.acl[t].can_close_threads||(n.is_closed=!1),a.setState(n)})),a.state={isLoading:!1,title:"",category:null,categories:e.categories,weight:0,is_hidden:0,is_closed:!1,validators:{title:[tn.C1()]},errors:{}},a.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],a.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],a.acl={},a.props.categories.forEach((function(e){e.post&&(a.state.category||(a.state.category=e.id),a.acl[e.id]={can_pin_threads:e.post.pin,can_close_threads:e.post.close,can_hide_threads:e.post.hide})})),a}return(0,l.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(k.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return _.Z.post(this.props.thread.api.posts.split,{title:this.state.title,category:this.state.category,weight:this.state.weight,is_hidden:this.state.is_hidden,is_closed:this.state.is_closed,posts:this.props.selection.map((function(e){return e.id}))})}},{key:"handleSuccess",value:function(e){this.props.selection.forEach((function(e){x.Z.dispatch($.r$(e,{isDeleted:!0}))})),N.Z.hide(),k.Z.success(gettext("Selected posts were split into new thread."))}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),k.Z.error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?N.Z.show((0,o.Z)(As,{errors:e})):k.Z.apiError(e)}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,o.Z)(g.Z,{label:gettext("Thread weight"),for:"id_weight",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,o.Z)(g.Z,{label:gettext("Hide thread"),for:"id_is_hidden",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,o.Z)(g.Z,{label:gettext("Close thread"),for:"id_is_closed",labelClass:"col-sm-4",controlClass:"col-sm-8"},void 0,(0,o.Z)(en.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"render",value:function(){return(0,o.Z)(hi,{className:"modal-dialog"},void 0,(0,o.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,o.Z)("div",{className:"modal-body"},void 0,(0,o.Z)(g.Z,{label:gettext("Thread title"),for:"id_title",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.title},void 0,(0,o.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),Ys||(Ys=(0,o.Z)("div",{className:"clearfix"})),(0,o.Z)(g.Z,{label:gettext("Category"),for:"id_category",labelClass:"col-sm-4",controlClass:"col-sm-8",validation:this.state.errors.category},void 0,(0,o.Z)(Xt.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.state.categories})),Vs||(Vs=(0,o.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,o.Z)("div",{className:"modal-footer"},void 0,(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,o.Z)(Ct.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Split posts")))))}}]),n}(Z.Z);function di(){return $s||($s=(0,o.Z)(hi,{className:"modal-dialog"},void 0,(0,o.Z)(at.Z,{})))}function pi(e){return(0,o.Z)(hi,{className:"modal-dialog modal-message"},void 0,Gs||(Gs=(0,o.Z)("div",{className:"message-icon"},void 0,(0,o.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,o.Z)("div",{className:"message-body"},void 0,(0,o.Z)("p",{className:"lead"},void 0,gettext("You can't move selected posts at the moment.")),(0,o.Z)("p",{},void 0,e.message),(0,o.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}function hi(e){return(0,o.Z)("div",{className:e.className,role:"document"},void 0,(0,o.Z)("div",{className:"modal-content"},void 0,(0,o.Z)("div",{className:"modal-header"},void 0,(0,o.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Ws||(Ws=(0,o.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,o.Z)("h4",{className:"modal-title"},void 0,gettext("Split posts into new thread"))),e.children))}function fi(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,p.Z)(e);if(t){var s=(0,p.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,d.Z)(this,n)}}function vi(e){return(0,o.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,v().createElement(Ri,e),v().createElement(Ci,e),v().createElement(Si,e),v().createElement(Ei,e),v().createElement(Li,e),v().createElement(Pi,e),v().createElement(Ti,e),v().createElement(Oi,e),v().createElement(Ai,e))}var mi,Zi,gi,bi,yi,_i,Ni,ki,xi,wi,Ri=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Is(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_approve&&e.is_unapproved}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ei||(ei=(0,o.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve"))):null}}]),n}(v().Component),Ci=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Hs(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.length>1&&this.props.selection.find((function(e){return e.acl.can_merge}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ti||(ti=(0,o.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge"))):null}}]),n}(v().Component),Si=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(Ks,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_move}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ni||(ni=(0,o.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move"))):null}}]),n}(v().Component),Ei=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){N.Z.show(v().createElement(Xs,e.props))})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_move}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ai||(ai=(0,o.Z)("span",{className:"material-icon"},void 0,"call_split")),gettext("Split"))):null}}]),n}(v().Component),Li=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){js(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return!e.is_protected&&e.acl.can_protect}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,si||(si=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Protect"))):null}}]),n}(v().Component),Pi=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ds(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.is_protected&&e.acl.can_protect}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ii||(ii=(0,o.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Unprotect"))):null}}]),n}(v().Component),Oi=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Us(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_hide&&!e.is_hidden}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,oi||(oi=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide"))):null}}]),n}(v().Component),Ti=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Ms(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_unhide&&e.is_hidden}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,ri||(ri=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide"))):null}}]),n}(v().Component),Ai=function(e){(0,u.Z)(n,e);var t=fi(n);function n(){var e;(0,r.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,h.Z)((0,c.Z)(e),"onClick",(function(){Fs(e.props)})),e}return(0,l.Z)(n,[{key:"render",value:function(){var e=this.props.selection.find((function(e){return e.acl.can_delete}));return e?(0,o.Z)("li",{},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-link",onClick:this.onClick},void 0,li||(li=(0,o.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete"))):null}}]),n}(v().Component),Bi=function(e){var t=e.thread,n=e.user,a=e.selection,s=e.dropup;return(0,o.Z)("div",{className:s?"dropup":"dropdown"},void 0,(0,o.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Posts options"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:0===a.length},void 0,mi||(mi=(0,o.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,o.Z)(vi,{thread:t,user:n,selection:a}))},Ii=function(e){var t=e.onClick;return(0,o.Z)("button",{className:"btn btn-primary btn-outline btn-block",type:"button",onClick:t},void 0,Zi||(Zi=(0,o.Z)("span",{className:"material-icon"},void 0,"chat")),gettext("Reply"))},ji=function(e){var t=e.thread,n=e.posts,a=e.user,s=e.selection,i=e.moderation,r=e.onReply;return(0,o.Z)(Ls.o8,{},void 0,(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Os,{baseUrl:t.url.index,posts:n})),(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s,dropup:!0}))),(0,o.Z)(Ls.Z2,{className:"hidden-xs hidden-sm",auto:!0},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ts,{posts:n}))),gi||(gi=(0,o.Z)(Ls.tw,{className:"hidden-md hidden-lg"})),a.is_authenticated&&(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(xs,{thread:t})),t.acl.can_reply&&(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ii,{onClick:r})),i.enabled&&(0,o.Z)(Ls.Eg,{className:"hidden-xs",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s,dropup:!0}))))},Di=function(e){var t=e.compact,n=e.onClick;return(0,o.Z)("button",{className:cs()("btn btn-default btn-outline",{"btn-block":!t,"btn-icon":t}),type:"button",title:t?gettext("Add poll"):null,onClick:n},void 0,bi||(bi=(0,o.Z)("span",{className:"material-icon"},void 0,"poll")),!t&&gettext("Add poll"))},Ui=function(e){var t=e.user,n=e.thread;return(0,o.Z)("div",{className:"dropdown"},void 0,(0,o.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Shortcuts"),"aria-expanded":"true","aria-haspopup":"true","data-toggle":"dropdown",type:"button"},void 0,yi||(yi=(0,o.Z)("span",{className:"material-icon"},void 0,"bookmark"))),(0,o.Z)("ul",{className:"dropdown-menu"},void 0,t.is_authenticated&&n.is_new&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.new_post},void 0,_i||(_i=(0,o.Z)("span",{className:"material-icon"},void 0,"comment")),gettext("Go to new post"))),n.best_answer&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.best_answer},void 0,Ni||(Ni=(0,o.Z)("span",{className:"material-icon"},void 0,"check_circle")),gettext("Go to best answer"))),n.has_unapproved_posts&&n.acl.can_approve&&(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.unapproved_post},void 0,ki||(ki=(0,o.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Go to unapproved post"))),(0,o.Z)("li",{},void 0,(0,o.Z)("a",{className:"btn btn-link",href:n.url.last_post},void 0,xi||(xi=(0,o.Z)("span",{className:"material-icon"},void 0,"reply")),gettext("Go to last post")))))},Mi=function(e){var t=e.thread,n=e.posts,a=e.user,s=e.selection,i=e.moderation,r=e.onPoll,l=e.onReply;return(0,o.Z)(Ls.o8,{},void 0,(0,o.Z)(Ls.Z2,{className:"hidden-xs"},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ui,{thread:t,user:a})),(0,o.Z)(Ls.Eg,{className:"hidden-xs hidden-sm"},void 0,(0,o.Z)(Os,{baseUrl:t.url.index,posts:n}))),wi||(wi=(0,o.Z)(Ls.tw,{})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Z2,{className:"hidden-xs"},void 0,(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Di,{onClick:r}))),t.acl.can_reply?(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Ui,{thread:t,user:a})),(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Ii,{onClick:l})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Di,{onClick:r,compact:!0})),i.enabled&&(0,o.Z)(Ls.Eg,{className:"hidden-xs",shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s}))):(0,o.Z)(Ls.Z2,{},void 0,(0,o.Z)(Ls.Eg,{className:"hidden-sm hidden-md hidden-lg",shrink:!0},void 0,(0,o.Z)(Ui,{thread:t,user:a})),t.acl.can_start_poll&&!t.poll&&(0,o.Z)(Ls.Eg,{},void 0,(0,o.Z)(Di,{onClick:r})),i.enabled&&(0,o.Z)(Ls.Eg,{shrink:!0},void 0,(0,o.Z)(Bi,{thread:t,user:a,selection:s}))))};var zi=function(e){(0,u.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,p.Z)(t);if(n){var s=(0,p.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,d.Z)(this,e)});function s(){var e;(0,r.Z)(this,s);for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return e=a.call.apply(a,[this].concat(n)),(0,h.Z)((0,c.Z)(e),"update",(function(t){x.Z.dispatch(y.gx(t)),x.Z.dispatch(Mn.zD(t.post_set)),t.participants&&x.Z.dispatch(b.gx(t.participants)),t.poll&&x.Z.dispatch(ma.gx(t.poll)),e.setPageTitle()})),(0,h.Z)((0,c.Z)(e),"openPollForm",(function(){ft.Z.open({mode:"POLL",submit:e.props.thread.api.poll,thread:e.props.thread,poll:null})})),(0,h.Z)((0,c.Z)(e),"openReplyForm",(function(){ft.Z.open({mode:"REPLY",config:e.props.thread.api.editor,submit:e.props.thread.api.posts.index})})),e}return(0,l.Z)(s,[{key:"componentDidMount",value:function(){this.shouldFetchData()&&(this.fetchData(),this.setPageTitle()),this.startPollingApi()}},{key:"componentDidUpdate",value:function(){this.shouldFetchData()&&(this.fetchData(),this.startPollingApi(),this.setPageTitle())}},{key:"componentWillUnmount",value:function(){this.stopPollingApi()}},{key:"shouldFetchData",value:function(){return!!this.props.posts.isLoaded&&1*(this.props.params.page||1)!=this.props.posts.page}},{key:"fetchData",value:function(){var e=this;x.Z.dispatch(Mn.Rz()),_.Z.get(this.props.thread.api.posts.index,{page:this.props.params.page||1},"posts").then((function(t){e.update(t)}),(function(e){k.Z.apiError(e)}))}},{key:"startPollingApi",value:function(){Za.Z.start({poll:"thread-posts",url:this.props.thread.api.posts.index,data:{page:this.props.params.page||1},update:this.update,frequency:12e4,delayed:!0})}},{key:"stopPollingApi",value:function(){Za.Z.stop("thread-posts")}},{key:"setPageTitle",value:function(){ga.Z.set({title:this.props.thread.title,parent:this.props.thread.category.name,page:1*(this.props.params.page||1)})}},{key:"render",value:function(){var e=this.props.thread.category,t="page page-thread";e.css_class&&(t+=" page-thread-"+e.css_class);var n="private_threads"===e.special_role?"private-threads":e.css_class||"category-threads",a=Hi(this.props.thread,this.props.user),s=Fi(this.props.posts.results,this.props.user),i=this.props.posts.results.filter((function(e){return e.isSelected}));return(0,o.Z)("div",{className:t},void 0,(0,o.Z)(Es,{styleName:n,thread:this.props.thread,posts:this.props.posts,user:this.props.user,moderation:a}),(0,o.Z)(ba.Z,{},void 0,(0,o.Z)(U,{participants:this.props.participants,thread:this.props.thread,user:this.props.user}),(0,o.Z)(Mi,{thread:this.props.thread,posts:this.props.posts,user:this.props.user,selection:i,moderation:s,onPoll:this.openPollForm,onReply:this.openReplyForm}),(0,o.Z)(z.n,{poll:this.props.poll,thread:this.props.thread,user:this.props.user}),v().createElement(da,this.props),(0,o.Z)(ji,{thread:this.props.thread,posts:this.props.posts,user:this.props.user,selection:i,moderation:s,onReply:this.openReplyForm})))}}]),s}(v().Component),Hi=function(e,t){var n={enabled:!1,edit:!1,approve:!1,close:!1,open:!1,hide:!1,unhide:!1,move:!1,merge:!1,pinGlobally:!1,pinLocally:!1,unpin:!1,delete:!1};return t.is_authenticated?(n.edit=e.acl.can_edit,n.approve=e.acl.can_approve&&e.is_unapproved,n.close=e.acl.can_close&&!e.is_closed,n.open=e.acl.can_close&&e.is_closed,n.hide=e.acl.can_hide&&!e.is_hidden,n.unhide=e.acl.can_unhide&&e.is_hidden,n.move=e.acl.can_move,n.merge=e.acl.can_merge,n.pinGlobally=e.acl.can_pin_globally&&e.weight<2,n.pinLocally=e.acl.can_pin&&1!==e.weight,n.unpin=e.acl.can_pin&&1===e.weight||e.acl.can_pin_globally&&2===e.weight,n.delete=e.acl.can_delete,n.enabled=n.edit||n.approve||n.close||n.open||n.hide||n.unhide||n.move||n.merge||n.pinGlobally||n.pinLocally||n.unpin||n.delete,n):n},Fi=function(e,t){var n={enabled:!1,approve:!1,move:!1,merge:!1,protect:!1,hide:!1,delete:!1};return t.is_authenticated?(e.forEach((function(e){e.is_event||(e.acl.can_approve&&e.is_unapproved&&(n.approve=!0),e.acl.can_move&&(n.move=!0),e.acl.can_merge&&(n.merge=!0),(e.acl.can_protect||e.acl.can_unprotect)&&(n.protect=!0),(e.acl.can_hide||e.acl.can_unhide)&&(n.hide=!0),e.acl.can_delete&&(n.delete=!0),(n.approve||n.move||n.merge||n.protect||n.hide||n.delete)&&(n.enabled=!0))})),n):n};function qi(e){return{participants:e.participants,poll:e.poll,posts:e.posts,thread:e.thread,tick:e.tick.tick,user:e.auth.user}}var Yi=n(39633);E.Z.addInitializer({name:"component:thread",initializer:function(e){var t,n;e.has("THREAD")&&e.has("POSTS")&&(0,Yi.Z)({paths:(t=E.Z.get("THREAD"),n=t.url.index.replace(t.slug+"-"+t.pk,":slug"),[{path:n,component:(0,i.$j)(qi)(zi)},{path:n+":page/",component:(0,i.$j)(qi)(zi)}])})},after:"store"})},72168:function(e,t,n){"use strict";var a=n(37424),s=n(22928),i=n(15671),o=n(43144),r=n(97326),l=n(79340),c=n(6215),u=n(61120),d=n(4942),p=n(57588),h=n.n(p),f=n(82211);function v(e,t){return e.last_post>t.last_post?-1:e.last_post<t.last_post?1:0}function m(e,t){return 2===e.weight&&e.weight>t.weight?-1:2===t.weight&&e.weight<t.weight?1:v(e,t)}function Z(e,t){return e.weight>t.weight?-1:e.weight<t.weight?1:v(e,t)}var g,b,y=n(59131),_=n(27950),N=n(92490),k=n(69987),x=function(e){var t=e.allItems,n=e.parentUrl,a=e.category,i=e.categories,o=e.list;return(0,s.Z)("div",{className:"dropdown threads-category-picker"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline dropdown-toggle btn-block text-ellipsis","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,a&&(0,s.Z)("span",{className:"material-icon",style:{color:a.color||"inherit"}},void 0,"label"),a&&a.short_name&&(0,s.Z)("span",{className:a.short_name&&"hidden-md hidden-lg"},void 0,a.short_name),a?(0,s.Z)("span",{className:a.short_name&&"hidden-xs hidden-sm"},void 0,a.name):t),(0,s.Z)("ul",{className:"dropdown-menu"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)(k.rU,{to:n+o.path},void 0,t)),g||(g=(0,s.Z)("li",{role:"separator",className:"divider"})),i.map((function(e){return(0,s.Z)("li",{},e.id,(0,s.Z)(k.rU,{to:e.url.index+o.path},void 0,(0,s.Z)("span",{className:"material-icon",style:{color:e.color||"inherit"}},void 0,"label"),e.name))}))))},w=function(e){var t=e.baseUrl,n=e.list,a=e.lists;return(0,s.Z)("div",{className:"dropdown threads-list-picker"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline dropdown-toggle btn-block","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,n.longName),(0,s.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,a.map((function(e){return(0,s.Z)("li",{},e.type,(0,s.Z)(k.rU,{to:t+e.path},void 0,e.longName))}))))};var R=function(e){(0,l.Z)(r,e);var t,n,a=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function r(){return(0,i.Z)(this,r),a.apply(this,arguments)}return(0,o.Z)(r,[{key:"render",value:function(){return(0,s.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,b||(b=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Threads moderation"))),(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("One or more threads could not be deleted:")),(0,s.Z)("ul",{className:"list-unstyled list-errored-items"},void 0,this.props.errors.map((function(e){return(0,s.Z)(C,{errors:e.errors,thread:e.thread},e.thread.id)}))))))}}]),r}(h().Component);function C(e){var t=e.errors,n=e.thread;return(0,s.Z)("li",{},void 0,(0,s.Z)("h5",{},void 0,n.title),t.map((function(e,t){return(0,s.Z)("p",{},void 0,e)})))}var S,E,L,P,O=n(43345),T=n(96359),A=n(57026),B=n(60471),I=n(32233),j=n(61340),D=n(77751),U=n(52753),M=n(78657),z=n(59801),H=n(53904),F=n(90287),q=n(55210);var Y,V,$=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;for(var n in(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"getFormdata",(function(){return{threads:t.props.threads.map((function(e){return e.id})),title:t.state.title,category:t.state.category,weight:t.state.weight,is_hidden:t.state.is_hidden,is_closed:t.state.is_closed}})),(0,d.Z)((0,r.Z)(t),"handleSuccess",(function(e){t.props.threads.forEach((function(e){t.props.freezeThread(e.id),t.props.deleteThread(e)})),F.Z.dispatch(D.YP()),t.props.addThreads([e]),F.Z.dispatch((0,j.V8)(t.props.route.category,t.props.categoriesMap)),z.Z.hide()})),(0,d.Z)((0,r.Z)(t),"handleError",(function(e){400===e.status?e.best_answers||e.polls?z.Z.show((0,s.Z)(U.ZP,{api:I.Z.get("MERGE_THREADS_API"),bestAnswers:e.best_answers,data:t.getFormdata(),polls:e.polls,onError:t.handleError,onSuccess:t.handleSuccess})):(t.setState({errors:Object.assign({},t.state.errors,e)}),H.Z.error(gettext("Form contains errors."))):403===e.status&&Array.isArray(e)?z.Z.show((0,s.Z)(R,{errors:e})):e.best_answer?H.Z.error(e.best_answer[0]):e.poll?H.Z.error(e.poll[0]):H.Z.apiError(e)})),(0,d.Z)((0,r.Z)(t),"onCategoryChange",(function(e){var n=e.target.value,a={category:n};t.acl[n].can_pin_threads<a.weight&&(a.weight=0),t.acl[n].can_hide_threads||(a.is_hidden=0),t.acl[n].can_close_threads||(a.is_closed=!1),t.setState(a)})),t.state={isLoading:!1,title:"",category:null,weight:0,is_hidden:0,is_closed:!1,validators:{title:[q.C1()]},errors:{}},t.acl={},e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(n)){var o=e.user.acl.categories[n];t.acl[o.id]=o}return t.categoryChoices=[],e.categories.forEach((function(e){if(e.level>0){var n=t.acl[e.id],a=!n.can_start_threads||e.is_closed&&!n.can_close_threads;t.categoryChoices.push({value:e.id,disabled:a,level:e.level-1,label:e.name}),a||t.state.category||(t.state.category=e.id)}})),t.isHiddenChoices=[{value:0,icon:"visibility",label:gettext("No")},{value:1,icon:"visibility_off",label:gettext("Yes")}],t.isClosedChoices=[{value:!1,icon:"lock_outline",label:gettext("No")},{value:!0,icon:"lock",label:gettext("Yes")}],t}return(0,o.Z)(p,[{key:"clean",value:function(){return!!this.isValid()||(H.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return M.Z.post(I.Z.get("MERGE_THREADS_API"),this.getFormdata())}},{key:"getWeightChoices",value:function(){var e=[{value:0,icon:"remove",label:gettext("Not pinned")},{value:1,icon:"bookmark_border",label:gettext("Pinned locally")}];return 2==this.acl[this.state.category].can_pin_threads&&e.push({value:2,icon:"bookmark",label:gettext("Pinned globally")}),e}},{key:"renderWeightField",value:function(){return this.acl[this.state.category].can_pin_threads?(0,s.Z)(T.Z,{label:gettext("Thread weight"),for:"id_weight"},void 0,(0,s.Z)(B.Z,{id:"id_weight",onChange:this.bindInput("weight"),value:this.state.weight,choices:this.getWeightChoices()})):null}},{key:"renderHiddenField",value:function(){return this.acl[this.state.category].can_hide_threads?(0,s.Z)(T.Z,{label:gettext("Hide thread"),for:"id_is_hidden"},void 0,(0,s.Z)(B.Z,{id:"id_is_closed",onChange:this.bindInput("is_hidden"),value:this.state.is_hidden,choices:this.isHiddenChoices})):null}},{key:"renderClosedField",value:function(){return this.acl[this.state.category].can_close_threads?(0,s.Z)(T.Z,{label:gettext("Close thread"),for:"id_is_closed"},void 0,(0,s.Z)(B.Z,{id:"id_is_closed",onChange:this.bindInput("is_closed"),value:this.state.is_closed,choices:this.isClosedChoices})):null}},{key:"renderForm",value:function(){return(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(T.Z,{label:gettext("Thread title"),for:"id_title",validation:this.state.errors.title},void 0,(0,s.Z)("input",{id:"id_title",className:"form-control",type:"text",onChange:this.bindInput("title"),value:this.state.title})),S||(S=(0,s.Z)("div",{className:"clearfix"})),(0,s.Z)(T.Z,{label:gettext("Category"),for:"id_category",validation:this.state.errors.category},void 0,(0,s.Z)(A.Z,{id:"id_category",onChange:this.onCategoryChange,value:this.state.category,choices:this.categoryChoices})),E||(E=(0,s.Z)("div",{className:"clearfix"})),this.renderWeightField(),this.renderHiddenField(),this.renderClosedField()),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)(f.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Merge threads"))))}},{key:"renderCantMergeMessage",value:function(){return(0,s.Z)("div",{className:"modal-body"},void 0,L||(L=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"message-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("You can't move threads because there are no categories you are allowed to move them to.")),(0,s.Z)("p",{},void 0,gettext("You need permission to start threads in category to be able to merge threads to it.")),(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}},{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,P||(P=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Merge threads"))),this.state.category?this.renderForm():this.renderCantMergeMessage()))}}]),p}(O.Z);var G,W,K,J,Q,X,ee,te,ne,ae,se,ie,oe,re,le=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"handleSubmit",(function(e){e.preventDefault(),z.Z.hide(),t.props.callApi([{op:"replace",path:"category",value:t.state.category},{op:"replace",path:"flatten-categories",value:null},{op:"add",path:"acl",value:!0}],gettext("Selected threads were moved."),(function(){F.Z.dispatch((0,j.V8)(t.props.route.category,t.props.categoriesMap));var e=F.Z.getState(),n=e.threads.map((function(e){return e.id}));F.Z.dispatch(D.$6(e.selection.filter((function(e){return-1!==n.indexOf(e)}))))}))})),t.state={category:null};var n={};for(var s in e.user.acl.categories)if(e.user.acl.categories.hasOwnProperty(s)){var o=e.user.acl.categories[s];n[o.id]=o}return t.categoryChoices=[],e.categories.forEach((function(e){if(e.level>0){var a=n[e.id],s=!a.can_start_threads||e.is_closed&&!a.can_close_threads;t.categoryChoices.push({value:e.id,disabled:s,level:e.level-1,label:e.name}),s||t.state.category||(t.state.category=e.id)}})),t}return(0,o.Z)(p,[{key:"getClassName",value:function(){return this.state.category?"modal-dialog":"modal-dialog modal-message"}},{key:"renderForm",value:function(){return(0,s.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,s.Z)("div",{className:"modal-body"},void 0,(0,s.Z)(T.Z,{label:gettext("New category"),for:"id_new_category"},void 0,(0,s.Z)(A.Z,{id:"id_new_category",onChange:this.bindInput("category"),value:this.state.category,choices:this.categoryChoices}))),(0,s.Z)("div",{className:"modal-footer"},void 0,(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,s.Z)("button",{className:"btn btn-primary"},void 0,gettext("Move threads"))))}},{key:"renderCantMoveMessage",value:function(){return(0,s.Z)("div",{className:"modal-body"},void 0,Y||(Y=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,s.Z)("div",{className:"message-body"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("You can't move threads because there are no categories you are allowed to move them to.")),(0,s.Z)("p",{},void 0,gettext("You need permission to start threads in category to be able to move threads to it.")),(0,s.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,s.Z)("div",{className:"modal-content"},void 0,(0,s.Z)("div",{className:"modal-header"},void 0,(0,s.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,V||(V=(0,s.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,s.Z)("h4",{className:"modal-title"},void 0,gettext("Move threads"))),this.state.category?this.renderForm():this.renderCantMoveMessage()))}}]),p}(O.Z);var ce,ue,de,pe=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(){var e;(0,i.Z)(this,p);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,d.Z)((0,r.Z)(e),"callApi",(function(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;e.props.threads.forEach((function(t){e.props.freezeThread(t.id)}));var i=e.props.threads.map((function(e){return e.id}));t.push({op:"add",path:"acl",value:!0}),M.Z.patch(e.props.api,{ids:i,ops:t}).then((function(t){e.props.threads.forEach((function(t){e.props.freezeThread(t.id)})),t.forEach((function(t){e.props.updateThread(t)})),H.Z.success(n),a&&a()}),(function(t){if(e.props.threads.forEach((function(t){e.props.freezeThread(t.id)})),400!==t.status)return H.Z.apiError(t);var n=[],a={};e.props.threads.forEach((function(e){a[e.id]=e})),t.forEach((function(e){var t=e.id,s=e.detail;void 0!==a[t]&&n.push({errors:s,thread:a[t]})})),z.Z.show((0,s.Z)(R,{errors:n}))}))})),(0,d.Z)((0,r.Z)(e),"pinGlobally",(function(){e.callApi([{op:"replace",path:"weight",value:2}],gettext("Selected threads were pinned globally."))})),(0,d.Z)((0,r.Z)(e),"pinLocally",(function(){e.callApi([{op:"replace",path:"weight",value:1}],gettext("Selected threads were pinned locally."))})),(0,d.Z)((0,r.Z)(e),"unpin",(function(){e.callApi([{op:"replace",path:"weight",value:0}],gettext("Selected threads were unpinned."))})),(0,d.Z)((0,r.Z)(e),"approve",(function(){e.callApi([{op:"replace",path:"is-unapproved",value:!1}],gettext("Selected threads were approved."))})),(0,d.Z)((0,r.Z)(e),"open",(function(){e.callApi([{op:"replace",path:"is-closed",value:!1}],gettext("Selected threads were opened."))})),(0,d.Z)((0,r.Z)(e),"close",(function(){e.callApi([{op:"replace",path:"is-closed",value:!0}],gettext("Selected threads were closed."))})),(0,d.Z)((0,r.Z)(e),"unhide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!1}],gettext("Selected threads were unhidden."))})),(0,d.Z)((0,r.Z)(e),"hide",(function(){e.callApi([{op:"replace",path:"is-hidden",value:!0}],gettext("Selected threads were hidden."))})),(0,d.Z)((0,r.Z)(e),"move",(function(){z.Z.show((0,s.Z)(le,{callApi:e.callApi,categories:e.props.categories,categoriesMap:e.props.categoriesMap,route:e.props.route,user:e.props.user}))})),(0,d.Z)((0,r.Z)(e),"merge",(function(){var t=[];if(e.props.threads.forEach((function(e){e.acl.can_merge||t.append({id:e.id,title:e.title,errors:[gettext("You don't have permission to merge this thread with others.")]})})),e.props.threads.length<2)H.Z.info(gettext("You have to select at least two threads to merge."));else{if(t.length)return void z.Z.show((0,s.Z)(R,{errors:t}));z.Z.show(h().createElement($,e.props))}})),(0,d.Z)((0,r.Z)(e),"delete",(function(){if(window.confirm(gettext("Are you sure you want to delete selected threads?"))){e.props.threads.map((function(t){e.props.freezeThread(t.id)}));var t=e.props.threads.map((function(e){return e.id}));M.Z.delete(e.props.api,t).then((function(){e.props.threads.map((function(t){e.props.freezeThread(t.id),e.props.deleteThread(t)})),H.Z.success(gettext("Selected threads were deleted."))}),(function(t){if(400===t.status){var n=t.map((function(e){return e.id}));e.props.threads.map((function(t){e.props.freezeThread(t.id),-1===n.indexOf(t.id)&&e.props.deleteThread(t)})),z.Z.show((0,s.Z)(R,{errors:t}))}else H.Z.apiError(t)}))}})),e}return(0,o.Z)(p,[{key:"render",value:function(){var e=this.props,t=e.moderation,n=e.threads,a=0==this.props.selection.length;return(0,s.Z)("ul",{className:"dropdown-menu dropdown-menu-right stick-to-bottom"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",onClick:function(){return F.Z.dispatch(D.$6(n.map((function(e){return e.id}))))}},void 0,G||(G=(0,s.Z)("span",{className:"material-icon"},void 0,"check_box")),gettext("Select all"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:function(){return F.Z.dispatch(D.YP())}},void 0,W||(W=(0,s.Z)("span",{className:"material-icon"},void 0,"check_box_outline_blank")),gettext("Select none"))),K||(K=(0,s.Z)("li",{role:"separator",className:"divider"})),!!t.can_pin_globally&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.pinGlobally},void 0,J||(J=(0,s.Z)("span",{className:"material-icon"},void 0,"bookmark")),gettext("Pin threads globally"))),!!t.can_pin&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.pinLocally},void 0,Q||(Q=(0,s.Z)("span",{className:"material-icon"},void 0,"bookmark_border")),gettext("Pin threads locally"))),!!t.can_pin&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.unpin},void 0,X||(X=(0,s.Z)("span",{className:"material-icon"},void 0,"panorama_fish_eye")),gettext("Unpin threads"))),!!t.can_move&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.move},void 0,ee||(ee=(0,s.Z)("span",{className:"material-icon"},void 0,"arrow_forward")),gettext("Move threads"))),!!t.can_merge&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.merge},void 0,te||(te=(0,s.Z)("span",{className:"material-icon"},void 0,"call_merge")),gettext("Merge threads"))),!!t.can_approve&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.approve},void 0,ne||(ne=(0,s.Z)("span",{className:"material-icon"},void 0,"done")),gettext("Approve threads"))),!!t.can_close&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.open},void 0,ae||(ae=(0,s.Z)("span",{className:"material-icon"},void 0,"lock_open")),gettext("Open threads"))),!!t.can_close&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.close},void 0,se||(se=(0,s.Z)("span",{className:"material-icon"},void 0,"lock_outline")),gettext("Close threads"))),!!t.can_unhide&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.unhide},void 0,ie||(ie=(0,s.Z)("span",{className:"material-icon"},void 0,"visibility")),gettext("Unhide threads"))),!!t.can_hide&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.hide},void 0,oe||(oe=(0,s.Z)("span",{className:"material-icon"},void 0,"visibility_off")),gettext("Hide threads"))),!!t.can_delete&&(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn btn-link",type:"button",disabled:a,onClick:this.delete},void 0,re||(re=(0,s.Z)("span",{className:"material-icon"},void 0,"clear")),gettext("Delete threads"))))}}]),p}(h().Component),he=function(e){var t=e.api,n=e.categoriesMap,a=e.categories,i=e.threads,o=e.addThreads,r=e.freezeThread,l=e.updateThread,c=e.deleteThread,u=e.selection,d=e.moderation,p=e.route,h=e.user,f=e.disabled;return(0,s.Z)("div",{className:"dropdown threads-moderation"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-default btn-outline btn-icon dropdown-toggle",title:gettext("Moderation"),"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",disabled:f},void 0,ce||(ce=(0,s.Z)("span",{className:"material-icon"},void 0,"settings"))),(0,s.Z)(pe,{api:t,categories:a,categoriesMap:n,threads:i,addThreads:o,freezeThread:r,updateThread:l,deleteThread:c,selection:u,moderation:d,route:p,user:h,disabled:f}))},fe=function(e){var t=e.api,n=e.baseUrl,a=e.category,i=e.categories,o=e.categoriesMap,r=e.topCategory,l=e.topCategories,c=e.subCategory,u=e.subCategories,d=e.list,p=e.lists,h=e.threads,v=e.addThreads,m=e.startThread,Z=e.freezeThread,g=e.updateThread,b=e.deleteThread,y=e.selection,k=e.moderation,R=e.route,C=e.user,S=e.disabled;return(0,s.Z)(N.o8,{},void 0,l.length>0&&(0,s.Z)(N.Z2,{},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(x,{allItems:gettext("All categories"),parentUrl:d.path,category:r,categories:l,list:d})),r&&u.length>0&&(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(x,{allItems:gettext("All subcategories"),parentUrl:r.url.index,category:c,categories:u,list:d}))),p.length>1&&(0,s.Z)(N.Z2,{className:"hidden-xs"},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(w,{baseUrl:n,list:d,lists:p}))),ue||(ue=(0,s.Z)(N.tw,{})),!!C.id&&(0,s.Z)(N.Z2,{},void 0,(0,s.Z)(N.Eg,{},void 0,(0,s.Z)(f.Z,{className:"btn-primary btn-outline btn-block",disabled:S,onClick:function(){_.Z.open(m||{mode:"START",config:misago.get("THREAD_EDITOR_API"),submit:misago.get("THREADS_API"),category:a.id})}},void 0,de||(de=(0,s.Z)("span",{className:"material-icon"},void 0,"chat")),gettext("Start thread"))),!!k.allow&&(0,s.Z)(N.Eg,{shrink:!0},void 0,(0,s.Z)(he,{api:t,categories:i,categoriesMap:o,threads:h.filter((function(e){return-1!==y.indexOf(e.id)})),addThreads:v,freezeThread:Z,updateThread:g,deleteThread:b,selection:y,moderation:k,route:R,user:C,disabled:S}))))};var ve=function(e){(0,l.Z)(r,e);var t,n,a=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function r(){return(0,i.Z)(this,r),a.apply(this,arguments)}return(0,o.Z)(r,[{key:"render",value:function(){var e=this.props.root,t=this.props.route,n=t.category,a=t.categories,i=t.categoriesMap,o=me(e,n,i);return(0,s.Z)(y.Z,{},void 0,(0,s.Z)(fe,{api:this.props.api,baseUrl:n.url.index,category:n,categories:a,categoriesMap:i,topCategory:o,topCategories:a.filter((function(t){return t.parent===e.id})),subCategories:o?a.filter((function(e){return e.parent===o.id})):[],subCategory:2===n.level?n:null,subcategories:this.props.subcategories,list:this.props.route.list,lists:this.props.route.lists,threads:this.props.threads,addThreads:this.props.addThreads,startThread:this.props.startThread,freezeThread:this.props.freezeThread,deleteThread:this.props.deleteThread,updateThread:this.props.updateThread,selection:this.props.selection,moderation:this.props.moderation,route:this.props.route,user:this.props.user,disabled:!this.props.isLoaded||this.props.isBusy||this.props.busyThreads.length}),this.props.children)}}]),r}(h().Component),me=function(e,t,n){return t.parent?t.parent===e.id?t:n[t.parent]:null};function Ze(e){var t={allow:!1,can_approve:0,can_close:0,can_delete:0,can_hide:0,can_merge:0,can_move:0,can_pin:0,can_pin_globally:0,can_unhide:0};return e.forEach((function(e){e.is_unapproved&&e.acl.can_approve>t.can_approve&&(t.can_approve=e.acl.can_approve),e.acl.can_close>t.can_close&&(t.can_close=e.acl.can_close),e.acl.can_delete>t.can_delete&&(t.can_delete=e.acl.can_delete),e.acl.can_hide>t.can_hide&&(t.can_hide=e.acl.can_hide),e.acl.can_merge>t.can_merge&&(t.can_merge=e.acl.can_merge),e.acl.can_move>t.can_move&&(t.can_move=e.acl.can_move),e.acl.can_pin>t.can_pin&&(t.can_pin=e.acl.can_pin),e.acl.can_pin_globally>t.can_pin_globally&&(t.can_pin_globally=e.acl.can_pin_globally),e.is_hidden&&e.acl.can_unhide>t.can_unhide&&(t.can_unhide=e.acl.can_unhide),t.allow=t.can_approve||t.can_close||t.can_delete||t.can_hide||t.can_merge||t.can_move||t.can_pin||t.can_pin_globally||t.can_unhide})),t}var ge,be,ye,_e,Ne=function(e){var t=e.category,n=e.list,a=e.message;return"all"===n.type?a?(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,a),(0,s.Z)("p",{},void 0,gettext("Why not start one yourself?"))):(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,t.special_role?gettext("There are no threads on this forum... yet!"):gettext("There are no threads in this category.")),(0,s.Z)("p",{},void 0,gettext("Why not start one yourself?"))):(0,s.Z)("li",{className:"list-group-item empty-message"},void 0,(0,s.Z)("p",{className:"lead"},void 0,gettext("No threads matching specified criteria were found.")))},ke=n(50366),xe=n(16768),we=function(e){var t=e.thread;return(0,s.Z)("a",{href:t.url.last_post,className:"threads-list-item-last-activity",title:interpolate(gettext("Last activity: %(timestamp)s"),{timestamp:t.last_post_on.format("LLL")},!0)},void 0,t.last_post_on.fromNow(!0))},Re=function(e){var t="threads-list-item-category threads-list-category-label";return e.color&&(t+=" threads-list-category-label-color"),t},Ce=function(e){var t=e.parent,n=e.category;return(0,s.Z)("span",{},void 0,t&&(0,s.Z)("a",{href:t.url.index,className:Re(t)+" threads-list-item-parent-category",style:t.color?{"--label-color":t.color}:null,title:t.short_name?t.name:null},void 0,t.short_name||t.name),(0,s.Z)("a",{href:n.url.index,className:Re(n),style:n.color?{"--label-color":n.color}:null,title:n.short_name?n.name:null},void 0,n.short_name||n.name))},Se=function(e){var t=e.checked,n=e.disabled,a=e.thread;return(0,s.Z)("button",{className:"btn btn-default btn-icon",type:"button",disabled:n,onClick:function(){return F.Z.dispatch(D.wc(a.id))}},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,t?"check_box":"check_box_outline_blank"))},Ee=function(e){var t=e.thread,n="threads-list-icon";return t.is_read||(n+=" threads-list-icon-new"),(0,s.Z)("a",{title:t.is_read?gettext("No new posts"):gettext("New posts"),href:t.is_read?t.url.last_post:t.url.new_post,className:n},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,t.is_read?"chat_bubble_outline":"chat_bubble"))},Le=n(19605),Pe=function(e){var t=e.thread;return t.last_poster?(0,s.Z)("a",{href:t.url.last_poster,className:"threads-list-item-last-poster",title:interpolate(gettext("Last post by: %(poster)s"),{poster:t.last_poster.username},!0)},void 0,(0,s.Z)(Le.ZP,{size:32,user:t.last_poster})):(0,s.Z)("span",{className:"threads-list-item-last-poster",title:interpolate(gettext("Last post by: %(poster)s"),{poster:t.last_poster_name},!0)},void 0,ge||(ge=(0,s.Z)(Le.ZP,{size:32})))};var Oe,Te,Ae,Be,Ie,je,De,Ue,Me,ze,He={unsubscribe:null,notify:!1,email:!0},Fe=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;return(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"update",(function(e){var n=t.props.thread;t.setState({loading:!0}),F.Z.dispatch((0,j.r$)(n,{subscription:He[e]})),M.Z.patch(n.api.index,[{op:"replace",path:"subscription",value:e}]).then((function(){}),(function(e){F.Z.dispatch((0,j.r$)(n,{subscription:He[n.subscription]})),H.Z.apiError(e)})).then((function(){return t.setState({loading:!1})}))})),(0,d.Z)((0,r.Z)(t),"render",(function(){var e=t.state.loading,n=t.props,a=n.disabled,i=n.thread;return(0,s.Z)("ul",{className:"dropdown-menu dropdown-menu-right"},void 0,(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||null===i.subscription,onClick:function(){return t.update("unsubscribe")}},void 0,be||(be=(0,s.Z)("span",{className:"material-icon"},void 0,"star_border")),gettext("Unsubscribe"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||!1===i.subscription,onClick:function(){return t.update("notify")}},void 0,ye||(ye=(0,s.Z)("span",{className:"material-icon"},void 0,"star_half")),gettext("Subscribe with alert"))),(0,s.Z)("li",{},void 0,(0,s.Z)("button",{className:"btn-link",disabled:a||e||!0===i.subscription,onClick:function(){return t.update("email")}},void 0,_e||(_e=(0,s.Z)("span",{className:"material-icon"},void 0,"star")),gettext("Subscribe with e-mail"))))})),t.state={loading:!1},t}return(0,o.Z)(p)}(h().Component),qe=function(e){var t,n=e.disabled,a=e.thread;return(0,s.Z)("div",{className:"dropdown"},void 0,(0,s.Z)("button",{className:"btn btn-default btn-icon",type:"button",title:(t=a.subscription,!0===t?gettext("Subscribed to e-mails"):!1===t?gettext("Subscribed to alerts"):gettext("Not subscribed")),disabled:n,"data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,function(e){return!0===e?"star":!1===e?"star_half":"star_border"}(a.subscription))),(0,s.Z)(Fe,{disabled:n,thread:a}))},Ye=function(e){var t=e.activeCategory,n=e.categories,a=e.showOptions,i=e.showSubscription,o=e.thread,r=e.isBusy,l=e.isSelected,c=null,u=null;t.id!==o.category&&(u=n[o.category]).parent&&u.parent!==t.id&&n[u.parent]&&!n[u.parent].special_role&&(c=n[u.parent]);var d=o.is_closed||o.is_hidden||o.is_unapproved||o.weight>0||o.best_answer||o.has_poll||o.has_unapproved_posts,p=!a||o.is_new;return(0,s.Z)("li",{className:"list-group-item threads-list-item"+(r?" threads-list-item-is-busy":"")},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,a&&(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)(Ee,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("a",{href:o.url.index,className:"threads-list-item-title"},void 0,o.title),(0,s.Z)("a",{href:p?o.url.new_post:o.url.index,className:"threads-list-item-title-sm"+(p?" threads-list-item-title-new":"")},void 0,o.title)),a&&o.moderation.length>0&&(0,s.Z)("div",{className:"threads-list-item-col-checkbox-sm"},void 0,(0,s.Z)(Se,{checked:l,disabled:r,thread:o}))),(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,d&&(0,s.Z)("div",{className:"threads-list-item-col-flags"},void 0,(0,s.Z)(ke.Z,{thread:o})),!!u&&(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ce,{parent:c,category:u})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(xe.Z,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)(Pe,{thread:o})),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)(we,{thread:o})),a&&i&&(0,s.Z)("div",{className:"threads-list-item-col-subscription"},void 0,(0,s.Z)(qe,{disabled:r,thread:o})),a&&o.moderation.length>0&&(0,s.Z)("div",{className:"threads-list-item-col-checkbox"},void 0,(0,s.Z)(Se,{checked:l,disabled:r,thread:o}))))},Ve=function(e){var t=e.width;return(0,s.Z)("span",{className:"ui-preview-text",style:{width:t+"px"}},void 0," ")},$e=function(e){var t=e.showOptions;return(0,s.Z)("div",{className:"threads-list threads-list-loader"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(Oe||(Oe=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Te||(Te=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"90"})," ",(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"90"})," ",(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"}))))),Ae||(Ae=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"70"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"50"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"50"})))))),(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(Be||(Be=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Ie||(Ie=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"30"})," ",(0,s.Z)(Ve,{width:"60"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"30"})," ",(0,s.Z)(Ve,{width:"60"}))))),je||(je=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"55"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"60"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"70"})))))),(0,s.Z)("li",{className:"list-group-item threads-list-item"},void 0,(0,s.Z)("div",{className:"threads-list-item-top-row"},void 0,t&&(De||(De=(0,s.Z)("div",{className:"threads-list-item-col-icon"},void 0,(0,s.Z)("span",{className:"threads-list-icon ui-preview-img"})))),Ue||(Ue=(0,s.Z)("div",{className:"threads-list-item-col-title"},void 0,(0,s.Z)("span",{className:"threads-list-item-title"},void 0,(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"80"})),(0,s.Z)("span",{className:"threads-list-item-title-sm"},void 0,(0,s.Z)(Ve,{width:"40"})," ",(0,s.Z)(Ve,{width:"120"})," ",(0,s.Z)(Ve,{width:"80"}))))),Me||(Me=(0,s.Z)("div",{className:"threads-list-item-bottom-row"},void 0,(0,s.Z)("div",{className:"threads-list-item-col-category"},void 0,(0,s.Z)(Ve,{width:"75"})),(0,s.Z)("div",{className:"threads-list-item-col-replies"},void 0,(0,s.Z)(Ve,{width:"40"})),(0,s.Z)("div",{className:"threads-list-item-col-last-poster"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-poster"},void 0,(0,s.Z)(Le.ZP,{size:32}))),(0,s.Z)("div",{className:"threads-list-item-col-last-activity"},void 0,(0,s.Z)("span",{className:"threads-list-item-last-activity"},void 0,(0,s.Z)(Ve,{width:"60"}))))))))},Ge=function(e){var t=e.threads,n=e.onClick;return(0,s.Z)("li",{className:"list-group-item threads-list-update-prompt"},void 0,(0,s.Z)("button",{type:"button",className:"btn btn-block threads-list-update-prompt-btn",onClick:n},void 0,ze||(ze=(0,s.Z)("span",{className:"material-icon"},void 0,"cached")),(0,s.Z)("span",{className:"threads-list-update-prompt-message"},void 0,interpolate(ngettext("There is %(threads)s new or updated thread. Click here to show it.","There are %(threads)s new or updated threads. Click here to show them.",t),{threads:t},!0))))},We=function(e){var t=e.list,n=e.categories,a=e.category,i=e.threads,o=e.busyThreads,r=e.selection,l=e.isLoaded,c=e.showOptions,u=e.updatedThreads,d=e.applyUpdate,p=e.emptyMessage;return l?(0,s.Z)("div",{className:"threads-list"},void 0,i.length>0?(0,s.Z)("ul",{className:"list-group"},void 0,u>0&&(0,s.Z)(Ge,{threads:u,onClick:d}),i.map((function(e){return(0,s.Z)(Ye,{activeCategory:a,categories:n,thread:e,showOptions:c,showSubscription:c&&"subscribed"===t.type,isBusy:o.indexOf(e.id)>=0,isSelected:r.indexOf(e.id)>=0},e.id)}))):(0,s.Z)("ul",{className:"list-group"},void 0,u>0&&(0,s.Z)(Ge,{threads:u,onClick:d}),(0,s.Z)(Ne,{category:a,list:t,message:p}))):(0,s.Z)($e,{showOptions:c})},Ke=n(82125),Je=n(55547),Qe=n(53328),Xe=n(20370),et=n(99755);var tt=function(e){(0,l.Z)(p,e);var t,n,a=(t=p,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function p(e){var t;(0,i.Z)(this,p),t=a.call(this,e),(0,d.Z)((0,r.Z)(t),"loadMore",(function(){t.setState({isBusy:!0}),t.loadThreads(t.getCategory(),t.state.next)})),(0,d.Z)((0,r.Z)(t),"pollResponse",(function(e){var n,a,s;t.setState({diff:Object.assign({},e,{results:(n=t.props.threads,a=e.results,s={},n.forEach((function(e){s[e.id]=e})),a.filter((function(e){return!s[e.id]||function(e,t){return[e.title===t.title,e.weight===t.weight,e.category===t.category,e.last_post===t.last_post,e.last_poster_name===t.last_poster_name].indexOf(!1)>=0}(s[e.id],e)})))})})})),(0,d.Z)((0,r.Z)(t),"addThreads",(function(e){F.Z.dispatch((0,j.R3)(e,t.getSorting()))})),(0,d.Z)((0,r.Z)(t),"applyDiff",(function(){t.addThreads(t.state.diff.results),t.setState(Object.assign({},t.state.diff,{moderation:Ze(F.Z.getState().threads),diff:{results:[]}}))})),(0,d.Z)((0,r.Z)(t),"freezeThread",(function(e){t.setState((function(t){return{busyThreads:Xe.ZN(t.busyThreads,e)}}))})),(0,d.Z)((0,r.Z)(t),"updateThread",(function(e){F.Z.dispatch((0,j.r$)(e,e,t.getSorting()))})),(0,d.Z)((0,r.Z)(t),"deleteThread",(function(e){F.Z.dispatch((0,j.l8)(e))})),t.state={isMounted:!0,isLoaded:!1,isBusy:!1,diff:{results:[]},moderation:[],busyThreads:[],dropdown:!1,subcategories:[],next:0};var n=t.getCategory();return I.Z.has("THREADS")?t.initWithPreloadedData(n,I.Z.get("THREADS")):t.initWithoutPreloadedData(n),t}return(0,o.Z)(p,[{key:"getCategory",value:function(){return this.props.route.category.special_role?null:this.props.route.category.id}},{key:"initWithPreloadedData",value:function(e,t){this.state=Object.assign(this.state,{moderation:Ze(t.results),subcategories:t.subcategories,next:t.next}),this.startPolling(e)}},{key:"initWithoutPreloadedData",value:function(e){this.loadThreads(e)}},{key:"loadThreads",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;M.Z.get(this.props.options.api,{category:e,list:this.props.route.list.type,start:n||0},"threads").then((function(a){t.state.isMounted&&(0===n?F.Z.dispatch((0,j.ZB)(a.results)):F.Z.dispatch((0,j.R3)(a.results,t.getSorting())),t.setState({isLoaded:!0,isBusy:!1,moderation:Ze(F.Z.getState().threads),subcategories:a.subcategories,next:a.next}),t.startPolling(e))}),(function(e){H.Z.apiError(e)}))}},{key:"startPolling",value:function(e){Je.Z.start({poll:"threads",url:this.props.options.api,data:{category:e,list:this.props.route.list.type},frequency:12e4,update:this.pollResponse})}},{key:"componentDidMount",value:function(){this.setPageTitle(),I.Z.has("THREADS")&&(F.Z.dispatch((0,j.ZB)(I.Z.pop("THREADS").results)),this.setState({isLoaded:!0})),F.Z.dispatch(D.YP())}},{key:"componentWillUnmount",value:function(){this.state.isMounted=!1,Je.Z.stop("threads")}},{key:"getTitle",value:function(){return this.props.options.title?this.props.options.title:(e=this.props.route).category.level?e.category.name:I.Z.get("THREADS_ON_INDEX")?I.Z.get("SETTINGS").index_header?I.Z.get("SETTINGS").index_header:I.Z.get("SETTINGS").forum_name:gettext("Threads");var e}},{key:"setPageTitle",value:function(){var e;this.props.route.category.level||!I.Z.get("THREADS_ON_INDEX")?Qe.Z.set((e=this.props.route).category.level?e.list.path?{title:e.list.longName,parent:e.category.name}:{title:e.category.name}:I.Z.get("THREADS_ON_INDEX")?e.list.path?{title:e.list.longName}:null:e.list.path?{title:e.list.longName,parent:gettext("Threads")}:{title:gettext("Threads")}):this.props.options.title?Qe.Z.set(this.props.options.title):I.Z.get("SETTINGS").index_title?document.title=I.Z.get("SETTINGS").index_title:document.title=I.Z.get("SETTINGS").forum_name}},{key:"getSorting",value:function(){return this.props.route.category.level?Z:m}},{key:"getMoreButton",value:function(){return this.state.next?(0,s.Z)("div",{className:"pager-more"},void 0,(0,s.Z)(f.Z,{className:"btn btn-default btn-outline",loading:this.state.isBusy||this.state.busyThreads.length,onClick:this.loadMore},void 0,gettext("Show more"))):null}},{key:"getClassName",value:function(){var e,t="page page-threads";return t+=" page-threads-"+this.props.route.list.type,(e=this.props).route.category.level||!I.Z.get("THREADS_ON_INDEX")||e.options.title||(t+=" page-threads-index"),this.props.route.category.css_class&&(t+=" page-threads-"+this.props.route.category.css_class),t}},{key:"render",value:function(){var e=this.props.route.categories[0],t=this.props.route,n=t.category,a=t.list,i=n.special_role;return(0,s.Z)("div",{className:this.getClassName()},void 0,"root_category"==i&&I.Z.get("THREADS_ON_INDEX")&&I.Z.get("SETTINGS").index_header&&(0,s.Z)(et.Iv,{header:I.Z.get("SETTINGS").index_header,message:n.description&&(0,s.Z)(et.Ql,{message:n.description.html}),styleName:"forum-index"}),"root_category"==i&&!I.Z.get("THREADS_ON_INDEX")&&(0,s.Z)(et.Iv,{header:gettext("Threads"),styleName:"threads"}),"private_threads"==i&&(0,s.Z)(et.Iv,{header:this.props.options.title,message:this.props.options.pageLead&&(0,s.Z)(et.bM,{},void 0,(0,s.Z)("p",{},void 0,this.props.options.pageLead)),styleName:"private-threads"}),!i&&(0,s.Z)(et.Iv,{header:n.name,message:n.description&&(0,s.Z)(et.Ql,{message:n.description.html}),styleName:n.css_class||"category-threads"}),(0,s.Z)(ve,{api:this.props.options.api,root:e,route:this.props.route,user:this.props.user,pageLead:this.props.options.pageLead,threads:this.props.threads,threadsCount:this.state.count,moderation:this.state.moderation,selection:this.props.selection,busyThreads:this.state.busyThreads,addThreads:this.addThreads,startThread:this.props.options.startThread,freezeThread:this.freezeThread,deleteThread:this.deleteThread,updateThread:this.updateThread,isLoaded:this.state.isLoaded,isBusy:this.state.isBusy},void 0,(0,s.Z)(We,{category:n,categories:this.props.route.categoriesMap,list:a,selection:this.props.selection,threads:this.props.threads,updatedThreads:this.state.diff.results.length,applyUpdate:this.applyDiff,showOptions:!!this.props.user.id,isLoaded:this.state.isLoaded,busyThreads:this.state.busyThreads,emptyMessage:this.props.options.emptyMessage}),this.getMoreButton()))}}]),p}(Ke.Z);var nt=n(39633),at="misago:private-threads";function st(e){return e.get("CURRENT_LINK").substr(0,at.length)===at?{api:e.get("PRIVATE_THREADS_API"),startThread:{mode:"START_PRIVATE",submit:I.Z.get("PRIVATE_THREADS_API")},title:gettext("Private threads"),pageLead:gettext("Private threads are threads which only those that started them and those they have invited may see and participate in."),emptyMessage:gettext("You aren't participating in any private threads.")}:{api:e.get("THREADS_API")}}I.Z.addInitializer({name:"component:threads",initializer:function(e){var t,n,s,i,o;e.has("THREADS")&&e.has("CATEGORIES")&&(0,nt.Z)({paths:(t=e.get("user"),n=st(e),s=function(e){var t=[{type:"all",path:"",name:gettext("All"),longName:gettext("All threads")}];return e.id&&(t.push({type:"my",path:"my/",name:gettext("My"),longName:gettext("My threads")}),t.push({type:"new",path:"new/",name:gettext("New"),longName:gettext("New threads")}),t.push({type:"unread",path:"unread/",name:gettext("Unread"),longName:gettext("Unread threads")}),t.push({type:"subscribed",path:"subscribed/",name:gettext("Subscribed"),longName:gettext("Subscribed threads")}),e.acl.can_see_unapproved_content_lists&&t.push({type:"unapproved",path:"unapproved/",name:gettext("Unapproved"),longName:gettext("Unapproved content")})),t}(t),i=[],o={},I.Z.get("CATEGORIES").forEach((function(e){s.forEach((function(t){var r;o[e.id]=e,i.push({path:e.url.index+t.path,component:(0,a.$j)((r=n,function(e){return{options:r,selection:e.selection,threads:e.threads,tick:e.tick.tick,user:e.auth.user}}))(tt),categories:I.Z.get("CATEGORIES"),categoriesMap:o,category:e,lists:s,list:t})}))})),i)})},after:"store"})},47806:function(e,t,n){"use strict";var a=n(37424),s=n(32233),i=n(22928),o=n(15671),r=n(43144),l=n(79340),c=n(6215),u=n(61120),d=n(57588),p=n.n(d),h=n(19605),f=n(97326),v=n(4942),m=n(78657),Z=n(53904);function g(e){return e.filter((function(e){return e.results.count>0})).map((function(e){return Object.assign({},e,{count:e.results.count,results:e.results.results.slice(0,5)})}))}var b=n(87462),y="HEADER",_="RESULT",N="FOOTER";function k(e){var t=e.value,n=e.onChange;return(0,i.Z)("input",{"aria-haspopup":"true","aria-expanded":"false","aria-controls":"dropdown-menu dropdown-search-results",autoComplete:"off",className:"form-control",value:t,onChange:n,placeholder:gettext("Search"),role:"combobox",type:"text"})}function x(e){var t=e.children,n=e.onChange,a=e.query;return(0,i.Z)("ul",{className:"dropdown-menu dropdown-search-results",role:"menu"},void 0,(0,i.Z)("li",{className:"form-group"},void 0,(0,i.Z)(k,{value:a,onChange:n})),t)}function w(){return(0,i.Z)("li",{className:"dropdown-search-message"},void 0,gettext("Search returned no results."))}var R,C=n(37848);function S(e){return e.message,R||(R=(0,i.Z)("li",{className:"dropdown-search-loader"},void 0,(0,i.Z)(C.Z,{})))}function E(e){var t=e.provider,n=e.query,a=t.url+"?q="+encodeURI(n),s=ngettext('See full "%(provider)s" results page with %(count)s result.','See full "%(provider)s" results page with %(count)s results.',t.count);return(0,i.Z)("li",{className:"dropdown-search-footer"},void 0,(0,i.Z)("a",{href:a},void 0,interpolate(s,{count:t.count,provider:t.name},!0)))}function L(e){var t=e.provider;return(0,i.Z)("li",{className:"dropdown-search-header"},void 0,t.name)}var P,O,T,A=n(30381),B=n.n(A),I=n(19755);function j(e){var t=e.result,n=(t.poster,t.thread),a=gettext("Posted by %(poster)s on %(posted_on)s in %(category)s.");return(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:t.url.index,className:"dropdown-search-thread"},void 0,(0,i.Z)("h5",{},void 0,n.title),(0,i.Z)("small",{className:"dropdown-search-post-content"},void 0,I(t.content).text()),(0,i.Z)("small",{className:"dropdown-search-post-footer"},void 0,interpolate(a,{category:t.category.name,posted_on:B()(t.posted_on).format("LL"),poster:t.poster_name},!0))))}function D(e){var t=e.result,n=t.rank,a=gettext("%(title)s, joined on %(joined_on)s"),s=t.title||n.title||n.name;return(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:t.url,className:"dropdown-search-user"},void 0,(0,i.Z)("div",{className:"media"},void 0,(0,i.Z)("div",{className:"media-left"},void 0,(0,i.Z)(h.ZP,{size:38,user:t})),(0,i.Z)("div",{className:"media-body"},void 0,(0,i.Z)("h5",{className:"media-heading"},void 0,t.username),(0,i.Z)("small",{},void 0,interpolate(a,{title:s,joined_on:B()(t.joined_on).format("LL")},!0))))))}function U(e){var t=e.provider,n=e.result;return"threads"===t.id?(0,i.Z)(j,{result:n}):(0,i.Z)(D,{result:n})}function M(e){var t=e.provider,n=e.result,a=e.type,s=e.query;return a===y?(0,i.Z)(L,{provider:t}):a===N?(0,i.Z)(E,{provider:t,query:s}):(0,i.Z)(U,{provider:t,result:n})}function z(e,t){for(var n=e.results.length,a=0;a<n;a++){var s=e.results[a];t.push({provider:e,result:s,type:_})}t.push({provider:e,type:N})}function H(e){var t=e.isLoading,n=e.onChange,a=e.results,s=e.query;if(!s.trim().length)return(0,i.Z)(x,{onChange:n,query:s});if(a.length){var o=function(e){var t=[];return function(e,t){for(var n=e.length,a=0;a<n;a++){var s=e[a];t.push({provider:s,type:y}),z(s,t)}}(e,t),t}(a);return(0,i.Z)(x,{onChange:n,query:s},void 0,o.map((function(e){var t=e.type,n=e.provider,a=e.result;return t===_?p().createElement(M,(0,b.Z)({key:[n.id,t,a.id].join("_")},e)):p().createElement(M,(0,b.Z)({key:[n.id,t].join("_"),query:s},e))})))}return t?(0,i.Z)(x,{onChange:n,query:s},void 0,P||(P=(0,i.Z)(S,{}))):(0,i.Z)(x,{onChange:n,query:s},void 0,O||(O=(0,i.Z)(w,{})))}var F=function(e){(0,l.Z)(d,e);var t,n,a=(t=d,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function d(){var e;return(0,o.Z)(this,d),e=a.call(this),(0,v.Z)((0,f.Z)(e),"onToggle",(function(t){e.setState((function(t,n){return t.isOpen||window.setTimeout((function(){e.container.querySelector("input").focus()}),100),{isOpen:!t.isOpen}}))})),(0,v.Z)((0,f.Z)(e),"onDocumentMouseDown",(function(t){for(var n=!0,a=t.target;null!==a&&a!==document;){if(a===e.container)return void(n=!1);a=a.parentNode}n&&e.setState({isOpen:!1})})),(0,v.Z)((0,f.Z)(e),"onEscape",(function(t){"Escape"===t.key&&e.setState({isOpen:!1})})),(0,v.Z)((0,f.Z)(e),"onChange",(function(t){var n=t.target.value;e.setState({query:n}),e.loadResults(n.trim())})),e.state={isLoading:!1,isOpen:!1,query:"",results:[]},e.intervalId=null,e}return(0,r.Z)(d,[{key:"componentDidMount",value:function(){document.addEventListener("mousedown",this.onDocumentMouseDown),document.addEventListener("keydown",this.onEscape)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("mousedown",this.onDocumentMouseDown),document.removeEventListener("keydown",this.onEscape)}},{key:"loadResults",value:function(e){var t=this;if(e.length){var n=300+300*Math.random();this.intervalId&&window.clearTimeout(this.intervalId),this.setState({isLoading:!0}),this.intervalId=window.setTimeout((function(){m.Z.get(s.Z.get("SEARCH_API"),{q:e}).then((function(e){t.setState({intervalId:null,isLoading:!1,results:g(e)})}),(function(e){Z.Z.apiError(e),t.setState({intervalId:null,isLoading:!1,results:[]})}))}),n)}}},{key:"render",value:function(){var e=this,t="navbar-search dropdown";return this.state.isOpen&&(t+=" open"),p().createElement("div",{className:t,ref:function(t){return e.container=t}},(0,i.Z)("a",{"aria-haspopup":"true","aria-expanded":"false",className:"navbar-icon","data-toggle":"dropdown",href:s.Z.get("SEARCH_URL"),onClick:this.onToggle},void 0,T||(T=(0,i.Z)("i",{className:"material-icon"},void 0,"search"))),(0,i.Z)(H,{isLoading:this.state.isLoading,onChange:this.onChange,results:this.state.results,query:this.state.query}))}}]),d}(p().Component),q=n(82211),Y=n(43345),V=n(96359),$=n(59940);var G,W,K,J=["progress-bar-danger","progress-bar-warning","progress-bar-warning","progress-bar-primary","progress-bar-success"],Q=[gettext("Entered password is very weak."),gettext("Entered password is weak."),gettext("Entered password is average."),gettext("Entered password is strong."),gettext("Entered password is very strong.")],X=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),(t=a.call(this,e))._score=0,t._password=null,t._inputs=[],t.state={loaded:!1},t}return(0,r.Z)(s,[{key:"componentDidMount",value:function(){var e=this;$.Z.load().then((function(){e.setState({loaded:!0})}))}},{key:"getScore",value:function(e,t){var n=this,a=!1;return e!==this._password&&(a=!0),t.length!==this._inputs.length?a=!0:t.map((function(e,t){e.trim()!==n._inputs[t]&&(a=!0)})),a&&(this._score=$.Z.scorePassword(e,t),this._password=e,this._inputs=t.map((function(e){return e.trim()}))),this._score}},{key:"render",value:function(){if(!this.state.loaded)return null;var e=this.getScore(this.props.password,this.props.inputs);return(0,i.Z)("div",{className:"help-block password-strength"},void 0,(0,i.Z)("div",{className:"progress"},void 0,(0,i.Z)("div",{className:"progress-bar "+J[e],style:{width:20+20*e+"%"},role:"progress-bar","aria-valuenow":e,"aria-valuemin":"0","aria-valuemax":"4"},void 0,(0,i.Z)("span",{className:"sr-only"},void 0,Q[e]))),(0,i.Z)("p",{className:"text-small"},void 0,Q[e]))}}]),s}(p().Component),ee=n(26106),te=n(47235),ne=n(98274),ae=n(93825),se=n(59801),ie=n(93051),oe=n(55210);function re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?re(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ce(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var ue,de=function(e){(0,l.Z)(n,e);var t=ce(n);function n(e){var a;(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"handlePrivacyPolicyChange",(function(e){var t=e.target.value;a.handleToggleAgreement("privacyPolicy",t)})),(0,v.Z)((0,f.Z)(a),"handleTermsOfServiceChange",(function(e){var t=e.target.value;a.handleToggleAgreement("termsOfService",t)})),(0,v.Z)((0,f.Z)(a),"handleToggleAgreement",(function(e,t){a.setState((function(n,s){if(null===n[e]){var i=le(le({},n.errors),{},(0,v.Z)({},e,null));return(0,v.Z)({errors:i},e,t)}var o=a.state.validators[e][0],r=le(le({},n.errors),{},(0,v.Z)({},e,[o(null)]));return(0,v.Z)({errors:r},e,null)}))}));var i=a.props.criteria,r=i.username,l=i.password,c=0;l.forEach((function(e){"MinimumLengthValidator"===e.name&&(c=e.min_length)}));var u={username:[oe.lG(),oe.HR(r.min_length),oe.gS(r.max_length)],email:[oe.Do()],password:[oe.Vb(c)],captcha:ae.ZP.validator()};return s.Z.get("TERMS_OF_SERVICE_ID")&&(u.termsOfService=[oe.fT()]),s.Z.get("PRIVACY_POLICY_ID")&&(u.privacyPolicy=[oe.jA()]),a.state={isLoading:!1,username:"",email:"",password:"",captcha:"",termsOfService:null,privacyPolicy:null,validators:u,errors:{}},a}return(0,r.Z)(n,[{key:"clean",value:function(){return!!this.isValid()||(Z.Z.error(gettext("Form contains errors.")),this.setState({errors:this.validate()}),!1)}},{key:"send",value:function(){return m.Z.post(s.Z.get("USERS_API"),{username:this.state.username,email:this.state.email,password:this.state.password,captcha:this.state.captcha,terms_of_service:this.state.termsOfService,privacy_policy:this.state.privacyPolicy})}},{key:"handleSuccess",value:function(e){this.props.callback(e)}},{key:"handleError",value:function(e){400===e.status?(this.setState({errors:Object.assign({},this.state.errors,e)}),e.__all__&&e.__all__.length>0?Z.Z.error(e.__all__[0]):Z.Z.error(gettext("Form contains errors."))):403===e.status&&e.ban?((0,ie.Z)(e.ban),se.Z.hide()):Z.Z.apiError(e)}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-dialog modal-register",role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,G||(G=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Register"))),(0,i.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,i.Z)("input",{type:"type",style:{display:"none"}}),(0,i.Z)("input",{type:"password",style:{display:"none"}}),(0,i.Z)("div",{className:"modal-body"},void 0,(0,i.Z)(te.Z,{buttonClassName:"col-xs-12 col-sm-6",buttonLabel:gettext("Join with %(site)s"),formLabel:gettext("Or create forum account:")}),(0,i.Z)(V.Z,{label:gettext("Username"),for:"id_username",validation:this.state.errors.username},void 0,(0,i.Z)("input",{type:"text",id:"id_username",className:"form-control","aria-describedby":"id_username_status",disabled:this.state.isLoading,onChange:this.bindInput("username"),value:this.state.username})),(0,i.Z)(V.Z,{label:gettext("E-mail"),for:"id_email",validation:this.state.errors.email},void 0,(0,i.Z)("input",{type:"text",id:"id_email",className:"form-control","aria-describedby":"id_email_status",disabled:this.state.isLoading,onChange:this.bindInput("email"),value:this.state.email})),(0,i.Z)(V.Z,{label:gettext("Password"),for:"id_password",validation:this.state.errors.password,extra:(0,i.Z)(X,{password:this.state.password,inputs:[this.state.username,this.state.email]})},void 0,(0,i.Z)("input",{type:"password",id:"id_password",className:"form-control","aria-describedby":"id_password_status",disabled:this.state.isLoading,onChange:this.bindInput("password"),value:this.state.password})),ae.ZP.component({form:this}),(0,i.Z)(ee.Z,{errors:this.state.errors,privacyPolicy:this.state.privacyPolicy,termsOfService:this.state.termsOfService,onPrivacyPolicyChange:this.handlePrivacyPolicyChange,onTermsOfServiceChange:this.handleTermsOfServiceChange})),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",disabled:this.state.isLoading,type:"button"},void 0,gettext("Cancel")),(0,i.Z)(q.Z,{className:"btn-primary",loading:this.state.isLoading},void 0,gettext("Register account"))))))}}]),n}(Y.Z),pe=function(e){(0,l.Z)(n,e);var t=ce(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"getLead",value:function(){return"user"===this.props.activation?gettext("%(username)s, your account has been created but you need to activate it before you will be able to sign in."):"admin"===this.props.activation?gettext("%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in."):void 0}},{key:"getSubscript",value:function(){return"user"===this.props.activation?gettext("We have sent an e-mail to %(email)s with link that you have to click to activate your account."):"admin"===this.props.activation?gettext("We will send an e-mail to %(email)s when this takes place."):void 0}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-dialog modal-message modal-register",role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,W||(W=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Registration complete"))),(0,i.Z)("div",{className:"modal-body"},void 0,K||(K=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"info_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,interpolate(this.getLead(),{username:this.props.username},!0)),(0,i.Z)("p",{},void 0,interpolate(this.getSubscript(),{email:this.props.email},!0)),(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))))}}]),n}(p().Component),he=function(e){(0,l.Z)(n,e);var t=ce(n);function n(e){var a;return(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"completeRegistration",(function(e){"active"===e.activation?(se.Z.hide(),ne.Z.signIn(e)):a.setState({complete:e})})),a.state={complete:!1},a}return(0,r.Z)(n,[{key:"render",value:function(){return this.state.complete?(0,i.Z)(pe,{activation:this.state.complete.activation,email:this.state.complete.email,username:this.state.complete.username}):p().createElement(de,(0,b.Z)({callback:this.completeRegistration},this.props))}}]),n}(p().Component);var fe,ve,me,Ze=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"showRegisterForm",(function(){"closed"===misago.get("SETTINGS").account_activation?Z.Z.info(gettext("New registrations are currently disabled.")):t.state.isLoaded?se.Z.show((0,i.Z)(he,{criteria:t.state.criteria})):(t.setState({isLoading:!0}),Promise.all([ae.ZP.load(),m.Z.get(misago.get("AUTH_CRITERIA_API"))]).then((function(e){t.setState({isLoading:!1,isLoaded:!0,criteria:e[1]}),se.Z.show((0,i.Z)(he,{criteria:e[1]}))}),(function(){t.setState({isLoading:!1}),Z.Z.error(gettext("Registration is currently unavailable due to an error."))})))})),t.state={isLoading:!1,isLoaded:!1,criteria:null},t}return(0,r.Z)(s,[{key:"getClassName",value:function(){return this.props.className+(this.state.isLoading?" btn-loading":"")}},{key:"render",value:function(){return(0,i.Z)("button",{className:"btn "+this.getClassName(),disabled:this.state.isLoading,onClick:this.showRegisterForm,type:"button"},void 0,gettext("Register"),this.state.isLoading?ue||(ue=(0,i.Z)(C.Z,{})):null)}}]),s}(p().Component),ge=n(14467),be=n(8621);function ye(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var _e,Ne=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showSignInModal",value:function(){se.Z.show(ge.Z)}},{key:"render",value:function(){var e=s.Z.get("SETTINGS").DELEGATE_AUTH;return(0,i.Z)("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},void 0,(0,i.Z)("li",{className:"guest-preview"},void 0,(0,i.Z)("h4",{},void 0,gettext("You are browsing as guest.")),(0,i.Z)("p",{},void 0,gettext("Sign in or register to start and participate in discussions.")),e?(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-xs-12"},void 0,(0,i.Z)("a",{className:"btn btn-default btn-sign-in btn-block",href:s.Z.get("SETTINGS").LOGIN_URL},void 0,gettext("Sign in")))):(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-xs-6"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-sign-in btn-block",onClick:this.showSignInModal,type:"button"},void 0,gettext("Sign in"))),(0,i.Z)("div",{className:"col-xs-6"},void 0,(0,i.Z)(Ze,{className:"btn-primary btn-register btn-block"},void 0,gettext("Register"))))))}}]),n}(p().Component),ke=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return s.Z.get("SETTINGS").DELEGATE_AUTH?(0,i.Z)("div",{className:"nav nav-guest"},void 0,(0,i.Z)("a",{className:"btn navbar-btn btn-default btn-sign-in",href:s.Z.get("SETTINGS").LOGIN_URL},void 0,gettext("Sign in")),fe||(fe=(0,i.Z)("div",{className:"navbar-left"},void 0,(0,i.Z)(F,{})))):(0,i.Z)("div",{className:"nav nav-guest"},void 0,(0,i.Z)("button",{className:"btn navbar-btn btn-default btn-sign-in",onClick:this.showSignInModal,type:"button"},void 0,gettext("Sign in")),(0,i.Z)(Ze,{className:"navbar-btn btn-primary btn-register"},void 0,gettext("Register")),ve||(ve=(0,i.Z)("div",{className:"navbar-left"},void 0,(0,i.Z)(F,{}))))}}]),n}(Ne),xe=function(e){(0,l.Z)(n,e);var t=ye(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showGuestMenu",value:function(){be.Z.show(Ne)}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",onClick:this.showGuestMenu},void 0,me||(me=(0,i.Z)(h.ZP,{size:"64"})))}}]),n}(p().Component);var we,Re=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"setGravatar",(function(){t.callApi("gravatar")})),(0,v.Z)((0,f.Z)(t),"setGenerated",(function(){t.callApi("generated")})),t.state={isLoading:!1},t}return(0,r.Z)(s,[{key:"callApi",value:function(e){var t=this;if(this.state.isLoading)return!1;this.setState({isLoading:!0}),m.Z.post(this.props.user.api.avatar,{avatar:e}).then((function(e){t.setState({isLoading:!1}),Z.Z.success(e.detail),t.props.onComplete(e)}),(function(e){400===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))}},{key:"getGravatarButton",value:function(){return this.props.options.gravatar?(0,i.Z)(q.Z,{onClick:this.setGravatar,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-gravatar"},void 0,gettext("Download my Gravatar")):null}},{key:"getCropButton",value:function(){return this.props.options.crop_src?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-crop",disabled:this.state.isLoading,onClick:this.props.showCrop},void 0,gettext("Re-crop uploaded image")):null}},{key:"getUploadButton",value:function(){return this.props.options.upload?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-upload",disabled:this.state.isLoading,onClick:this.props.showUpload},void 0,gettext("Upload new image")):null}},{key:"getGalleryButton",value:function(){return this.props.options.galleries?(0,i.Z)(q.Z,{className:"btn-default btn-block btn-avatar-gallery",disabled:this.state.isLoading,onClick:this.props.showGallery},void 0,gettext("Pick avatar from gallery")):null}},{key:"getAvatarPreview",value:function(){var e={id:this.props.user.id,avatars:this.props.options.avatars};return this.state.isLoading?(0,i.Z)("div",{className:"avatar-preview preview-loading"},void 0,(0,i.Z)(h.ZP,{size:"200",user:e}),_e||(_e=(0,i.Z)(C.Z,{}))):(0,i.Z)("div",{className:"avatar-preview"},void 0,(0,i.Z)(h.ZP,{size:"200",user:e}))}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-index"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-5"},void 0,this.getAvatarPreview()),(0,i.Z)("div",{className:"col-md-7"},void 0,this.getGravatarButton(),(0,i.Z)(q.Z,{onClick:this.setGenerated,disabled:this.state.isLoading,className:"btn-default btn-block btn-avatar-generate"},void 0,gettext("Generate my individual avatar")),this.getCropButton(),this.getUploadButton(),this.getGalleryButton())))}}]),s}(p().Component),Ce=n(19755);var Se,Ee=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"cropAvatar",(function(){if(t.state.isLoading)return!1;t.setState({isLoading:!0});var e=t.props.upload?"crop_tmp":"crop_src",n=Ce(".crop-form"),a=n.cropit("exportZoom"),s=n.cropit("offset");m.Z.post(t.props.user.api.avatar,{avatar:e,crop:{offset:{x:s.x*a,y:s.y*a},zoom:n.cropit("zoom")*a}}).then((function(e){t.props.onComplete(e),Z.Z.success(e.detail)}),(function(e){400===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1})):t.props.showError(e)}))})),t.state={isLoading:!1,deviceRatio:1},t}return(0,r.Z)(s,[{key:"getAvatarSize",value:function(){return this.props.upload?this.props.options.crop_tmp.size:this.props.options.crop_src.size}},{key:"getImagePath",value:function(){return this.props.upload?this.props.dataUrl:this.props.options.crop_src.url}},{key:"componentDidMount",value:function(){for(var e=this,t=Ce(".crop-form"),n=this.getAvatarSize(),a=t.width();a<n;)n/=2;var s=this.getAvatarSize()/n;t.width(n),t.cropit({width:n,height:n,exportZoom:s,imageState:{src:this.getImagePath()},onImageLoaded:function(){if(e.props.upload){var n=t.cropit("zoom"),a=t.cropit("imageSize");if(a.width>a.height){var s=(a.width*n-e.getAvatarSize())/-2;t.cropit("offset",{x:s,y:0})}else if(a.width<a.height){var i=(a.height*n-e.getAvatarSize())/-2;t.cropit("offset",{x:0,y:i})}else t.cropit("offset",{x:0,y:0})}else{var o=e.props.options.crop_src.crop;o&&(t.cropit("zoom",o.zoom),t.cropit("offset",{x:o.x,y:o.y}))}}})}},{key:"componentWillUnmount",value:function(){Ce(".crop-form").cropit("disable")}},{key:"render",value:function(){return(0,i.Z)("div",{},void 0,we||(we=(0,i.Z)("div",{className:"modal-body modal-avatar-crop"},void 0,(0,i.Z)("div",{className:"crop-form"},void 0,(0,i.Z)("div",{className:"cropit-preview"}),(0,i.Z)("input",{type:"range",className:"cropit-image-zoom-input"})))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.cropAvatar,loading:this.state.isLoading,className:"btn-primary btn-block"},void 0,this.props.upload?gettext("Set avatar"):gettext("Crop image")),(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},void 0,gettext("Cancel")))))}}]),s}(p().Component),Le=n(48772);var Pe,Oe=function(e){(0,l.Z)(s,e);var t,n,a=(t=s,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,u.Z)(t);if(n){var s=(0,u.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,c.Z)(this,e)});function s(e){var t;return(0,o.Z)(this,s),t=a.call(this,e),(0,v.Z)((0,f.Z)(t),"pickFile",(function(){document.getElementById("avatar-hidden-upload").click()})),(0,v.Z)((0,f.Z)(t),"uploadFile",(function(){var e=document.getElementById("avatar-hidden-upload").files[0];if(e){var n=t.validateFile(e);if(n)Z.Z.error(n);else{t.setState({image:e,preview:URL.createObjectURL(e),progress:0});var a=new FormData;a.append("avatar","upload"),a.append("image",e),m.Z.upload(t.props.user.api.avatar,a,(function(e){t.setState({progress:e})})).then((function(e){t.setState({options:e,uploaded:e.detail}),Z.Z.info(gettext("Your image has been uploaded and you may now crop it."))}),(function(e){400===e.status||413===e.status?(Z.Z.error(e.detail),t.setState({isLoading:!1,image:null,progress:0})):t.props.showError(e)}))}}})),t.state={image:null,preview:null,progress:0,uploaded:null,dataUrl:null},t}return(0,r.Z)(s,[{key:"validateFile",value:function(e){if(e.size>this.props.options.upload.limit)return interpolate(gettext("Selected file is too big. (%(filesize)s)"),{filesize:(0,Le.Z)(e.size)},!0);var t=gettext("Selected file type is not supported.");if(-1===this.props.options.upload.allowed_mime_types.indexOf(e.type))return t;var n=!1,a=e.name.toLowerCase();return this.props.options.upload.allowed_extensions.map((function(e){a.substr(-1*e.length)===e&&(n=!0)})),!n&&t}},{key:"getUploadRequirements",value:function(e){var t=e.allowed_extensions.map((function(e){return e.substr(1)}));return interpolate(gettext("%(files)s files smaller than %(limit)s"),{files:t.join(", "),limit:(0,Le.Z)(e.limit)},!0)}},{key:"getUploadButton",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-upload"},void 0,(0,i.Z)(q.Z,{className:"btn-pick-file",onClick:this.pickFile},void 0,Se||(Se=(0,i.Z)("div",{className:"material-icon"},void 0,"input")),gettext("Select file")),(0,i.Z)("p",{className:"text-muted"},void 0,this.getUploadRequirements(this.props.options.upload)))}},{key:"getUploadProgressLabel",value:function(){return interpolate(gettext("%(progress)s % complete"),{progress:this.state.progress},!0)}},{key:"getUploadProgress",value:function(){return(0,i.Z)("div",{className:"modal-body modal-avatar-upload"},void 0,(0,i.Z)("div",{className:"upload-progress"},void 0,(0,i.Z)("img",{src:this.state.preview}),(0,i.Z)("div",{className:"progress"},void 0,(0,i.Z)("div",{className:"progress-bar",role:"progressbar","aria-valuenow":"{this.state.progress}","aria-valuemin":"0","aria-valuemax":"100",style:{width:this.state.progress+"%"}},void 0,(0,i.Z)("span",{className:"sr-only"},void 0,this.getUploadProgressLabel())))))}},{key:"renderUpload",value:function(){return(0,i.Z)("div",{},void 0,(0,i.Z)("input",{type:"file",id:"avatar-hidden-upload",className:"hidden-file-upload",onChange:this.uploadFile}),this.state.image?this.getUploadProgress():this.getUploadButton(),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:!!this.state.image,className:"btn-default btn-block"},void 0,gettext("Cancel")))))}},{key:"renderCrop",value:function(){return(0,i.Z)(Ee,{options:this.state.options,user:this.props.user,upload:this.state.uploaded,dataUrl:this.state.preview,onComplete:this.props.onComplete,showError:this.props.showError,showIndex:this.props.showIndex})}},{key:"render",value:function(){return this.state.uploaded?this.renderCrop():this.renderUpload()}}]),s}(p().Component),Te=n(69130);function Ae(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var Be,Ie,je,De=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(){var e;(0,o.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,v.Z)((0,f.Z)(e),"select",(function(){e.props.select(e.props.id)})),e}return(0,r.Z)(n,[{key:"getClassName",value:function(){return this.props.selection===this.props.id?this.props.disabled?"btn btn-avatar btn-disabled avatar-selected":"btn btn-avatar avatar-selected":this.props.disabled?"btn btn-avatar btn-disabled":"btn btn-avatar"}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",className:this.getClassName(),disabled:this.props.disabled,onClick:this.select},void 0,(0,i.Z)("img",{src:this.props.url}))}}]),n}(p().Component),Ue=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){var e=this;return(0,i.Z)("div",{className:"avatars-gallery"},void 0,(0,i.Z)("h3",{},void 0,this.props.name),(0,i.Z)("div",{className:"avatars-gallery-images"},void 0,(0,Te.Z)(this.props.images,4,null).map((function(t,n){return(0,i.Z)("div",{className:"row"},n,t.map((function(t,n){return(0,i.Z)("div",{className:"col-xs-3"},n,t?p().createElement(De,(0,b.Z)({disabled:e.props.disabled,select:e.props.select,selection:e.props.selection},t)):Pe||(Pe=(0,i.Z)("div",{className:"blank-avatar"})))})))}))))}}]),n}(p().Component),Me=function(e){(0,l.Z)(n,e);var t=Ae(n);function n(e){var a;return(0,o.Z)(this,n),a=t.call(this,e),(0,v.Z)((0,f.Z)(a),"select",(function(e){a.setState({selection:e})})),(0,v.Z)((0,f.Z)(a),"save",(function(){if(a.state.isLoading)return!1;a.setState({isLoading:!0}),m.Z.post(a.props.user.api.avatar,{avatar:"galleries",image:a.state.selection}).then((function(e){a.setState({isLoading:!1}),Z.Z.success(e.detail),a.props.onComplete(e),a.props.showIndex()}),(function(e){400===e.status?(Z.Z.error(e.detail),a.setState({isLoading:!1})):a.props.showError(e)}))})),a.state={selection:null,isLoading:!1},a}return(0,r.Z)(n,[{key:"render",value:function(){var e=this;return(0,i.Z)("div",{},void 0,(0,i.Z)("div",{className:"modal-body modal-avatar-gallery"},void 0,this.props.options.galleries.map((function(t,n){return(0,i.Z)(Ue,{name:t.name,images:t.images,selection:e.state.selection,disabled:e.state.isLoading,select:e.select},n)}))),(0,i.Z)("div",{className:"modal-footer"},void 0,(0,i.Z)("div",{className:"row"},void 0,(0,i.Z)("div",{className:"col-md-6 col-md-offset-3"},void 0,(0,i.Z)(q.Z,{onClick:this.save,loading:this.state.isLoading,disabled:!this.state.selection,className:"btn-primary btn-block"},void 0,this.state.selection?gettext("Save choice"):gettext("Select avatar")),(0,i.Z)(q.Z,{onClick:this.props.showIndex,disabled:this.state.isLoading,className:"btn-default btn-block"},void 0,gettext("Cancel"))))))}}]),n}(p().Component),ze=n(3784),He=n(6935),Fe=n(90287);function qe(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var Ye,Ve,$e,Ge,We,Ke,Je,Qe,Xe,et,tt,nt,at=function(e){(0,l.Z)(n,e);var t=qe(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"getErrorReason",value:function(){return this.props.reason?(0,i.Z)("p",{dangerouslySetInnerHTML:{__html:this.props.reason}}):null}},{key:"render",value:function(){return(0,i.Z)("div",{className:"modal-body"},void 0,Be||(Be=(0,i.Z)("div",{className:"message-icon"},void 0,(0,i.Z)("span",{className:"material-icon"},void 0,"remove_circle_outline"))),(0,i.Z)("div",{className:"message-body"},void 0,(0,i.Z)("p",{className:"lead"},void 0,this.props.message),this.getErrorReason(),(0,i.Z)("button",{className:"btn btn-default","data-dismiss":"modal",type:"button"},void 0,gettext("Ok"))))}}]),n}(p().Component),st=function(e){(0,l.Z)(n,e);var t=qe(n);function n(){var e;(0,o.Z)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return e=t.call.apply(t,[this].concat(s)),(0,v.Z)((0,f.Z)(e),"showError",(function(t){e.setState({error:t})})),(0,v.Z)((0,f.Z)(e),"showIndex",(function(){e.setState({component:Re})})),(0,v.Z)((0,f.Z)(e),"showUpload",(function(){e.setState({component:Oe})})),(0,v.Z)((0,f.Z)(e),"showCrop",(function(){e.setState({component:Ee})})),(0,v.Z)((0,f.Z)(e),"showGallery",(function(){e.setState({component:Me})})),(0,v.Z)((0,f.Z)(e),"completeFlow",(function(t){Fe.Z.dispatch((0,He.n1)(e.props.user,t.avatars)),e.setState({component:Re,options:t})})),e}return(0,r.Z)(n,[{key:"componentDidMount",value:function(){var e=this;m.Z.get(this.props.user.api.avatar).then((function(t){e.setState({component:Re,options:t,error:null})}),(function(t){e.showError(t)}))}},{key:"getBody",value:function(){return this.state?this.state.error?(0,i.Z)(at,{message:this.state.error.detail,reason:this.state.error.reason}):(0,i.Z)(this.state.component,{options:this.state.options,user:this.props.user,onComplete:this.completeFlow,showError:this.showError,showIndex:this.showIndex,showCrop:this.showCrop,showUpload:this.showUpload,showGallery:this.showGallery}):Ie||(Ie=(0,i.Z)(ze.Z,{}))}},{key:"getClassName",value:function(){return this.state&&this.state.error?"modal-dialog modal-message modal-change-avatar":"modal-dialog modal-change-avatar"}},{key:"render",value:function(){return(0,i.Z)("div",{className:this.getClassName(),role:"document"},void 0,(0,i.Z)("div",{className:"modal-content"},void 0,(0,i.Z)("div",{className:"modal-header"},void 0,(0,i.Z)("button",{type:"button",className:"close","data-dismiss":"modal","aria-label":gettext("Close")},void 0,je||(je=(0,i.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,i.Z)("h4",{className:"modal-title"},void 0,gettext("Change your avatar"))),this.getBody()))}}]),n}(p().Component);function it(e){return{user:e.auth.user}}function ot(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var rt=function(e){(0,l.Z)(n,e);var t=ot(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"changeAvatar",value:function(){se.Z.show((0,a.$j)(it)(st))}},{key:"render",value:function(){var e=this.props.user;return(0,i.Z)("ul",{className:"dropdown-menu user-dropdown dropdown-menu-right",role:"menu"},void 0,(0,i.Z)("li",{className:"dropdown-header"},void 0,(0,i.Z)("strong",{},void 0,e.username),(0,i.Z)("div",{className:"row user-stats"},void 0,(0,i.Z)("div",{className:"col-sm-3"},void 0,Ye||(Ye=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),e.posts),(0,i.Z)("div",{className:"col-sm-3"},void 0,Ve||(Ve=(0,i.Z)("span",{className:"material-icon"},void 0,"forum")),e.threads),(0,i.Z)("div",{className:"col-sm-3"},void 0,$e||($e=(0,i.Z)("span",{className:"material-icon"},void 0,"favorite")),e.followers),(0,i.Z)("div",{className:"col-sm-3"},void 0,Ge||(Ge=(0,i.Z)("span",{className:"material-icon"},void 0,"favorite_outline")),e.following))),We||(We=(0,i.Z)("li",{className:"divider"})),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:e.url},void 0,Ke||(Ke=(0,i.Z)("span",{className:"material-icon"},void 0,"account_circle")),gettext("See your profile"))),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:s.Z.get("USERCP_URL")},void 0,Je||(Je=(0,i.Z)("span",{className:"material-icon"},void 0,"done_all")),gettext("Change options"))),(0,i.Z)("li",{},void 0,(0,i.Z)("button",{className:"btn-link",onClick:this.changeAvatar,type:"button"},void 0,Qe||(Qe=(0,i.Z)("span",{className:"material-icon"},void 0,"portrait")),gettext("Change avatar"))),!!e.acl.can_use_private_threads&&(0,i.Z)("li",{},void 0,(0,i.Z)("a",{href:s.Z.get("PRIVATE_THREADS_URL")},void 0,Xe||(Xe=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),gettext("Private threads"),(0,i.Z)(lt,{user:e}))),et||(et=(0,i.Z)("li",{className:"divider"})),(0,i.Z)("li",{className:"dropdown-buttons"},void 0,(0,i.Z)("button",{className:"btn btn-default btn-block",onClick:function(){return document.getElementById("hidden-logout-form").submit()},type:"button"},void 0,gettext("Log out"))))}}]),n}(p().Component);function lt(e){var t=e.user;return t.unread_private_threads?(0,i.Z)("span",{className:"badge"},void 0,t.unread_private_threads):null}function ct(e){var t=e.user;return(0,i.Z)("ul",{className:"ul nav navbar-nav nav-user"},void 0,tt||(tt=(0,i.Z)("li",{},void 0,(0,i.Z)(F,{}))),(0,i.Z)(ut,{user:t}),(0,i.Z)("li",{className:"dropdown"},void 0,(0,i.Z)("a",{"aria-haspopup":"true","aria-expanded":"false",className:"dropdown-toggle","data-toggle":"dropdown",href:t.url,role:"button"},void 0,(0,i.Z)(h.ZP,{user:t,size:"64"})),(0,i.Z)(rt,{user:t})))}function ut(e){var t=e.user;if(!t.acl.can_use_private_threads)return null;var n;return n=t.unread_private_threads?gettext("You have unread private threads!"):gettext("Private threads"),(0,i.Z)("li",{},void 0,(0,i.Z)("a",{className:"navbar-icon",href:s.Z.get("PRIVATE_THREADS_URL"),title:n},void 0,nt||(nt=(0,i.Z)("span",{className:"material-icon"},void 0,"message")),t.unread_private_threads>0&&(0,i.Z)("span",{className:"badge"},void 0,t.unread_private_threads)))}function dt(e){return{user:e.auth.user}}var pt,ht,ft=function(e){(0,l.Z)(n,e);var t=ot(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"showUserMenu",value:function(){be.Z.showConnected("user-menu",(0,a.$j)(dt)(rt))}},{key:"render",value:function(){return(0,i.Z)("button",{type:"button",onClick:this.showUserMenu},void 0,(0,i.Z)(h.ZP,{user:this.props.user,size:"50"}))}}]),n}(p().Component);function vt(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,u.Z)(e);if(t){var s=(0,u.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,c.Z)(this,n)}}var mt=function(e){(0,l.Z)(n,e);var t=vt(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return this.props.isAuthenticated?(0,i.Z)(ct,{user:this.props.user}):pt||(pt=(0,i.Z)(ke,{}))}}]),n}(p().Component),Zt=function(e){(0,l.Z)(n,e);var t=vt(n);function n(){return(0,o.Z)(this,n),t.apply(this,arguments)}return(0,r.Z)(n,[{key:"render",value:function(){return this.props.isAuthenticated?(0,i.Z)(ft,{user:this.props.user}):ht||(ht=(0,i.Z)(xe,{}))}}]),n}(p().Component);function gt(e){return e.auth}var bt=n(4869);s.Z.addInitializer({name:"component:user-menu",initializer:function(){(0,bt.Z)((0,a.$j)(gt)(mt),"user-menu-mount"),(0,bt.Z)((0,a.$j)(gt)(Zt),"user-menu-compact-mount")},after:"store"})},77031:function(e,t,n){"use strict";var a,s=n(22928),i=n(15671),o=n(43144),r=n(79340),l=n(6215),c=n(61120),u=n(57588),d=n.n(u),p=n(37424),h=n(97326),f=n(4942),v=n(59131),m=n(69987),Z=n(94417),g=function(e,t){var n=e;return"rank"===t.component?n+=t.slug:n+=t.component,n+"/"},b=function(e){var t=e.baseUrl,n=e.page,i=e.pages;return(0,s.Z)("div",{className:"nav-container"},void 0,(0,s.Z)("div",{className:"dropdown hidden-sm hidden-md hidden-lg"},void 0,(0,s.Z)("button",{className:"btn btn-default btn-block btn-outline dropdown-toggle",type:"button","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},void 0,a||(a=(0,s.Z)("span",{className:"material-icon"},void 0,"menu")),n.name),(0,s.Z)("ul",{className:"dropdown-menu stick-to-bottom"},void 0,i.map((function(e){var n=g(t,e);return(0,s.Z)("li",{},n,(0,s.Z)(m.rU,{to:n},void 0,e.name))})))),(0,s.Z)("ul",{className:"nav nav-pills hidden-xs",role:"menu"},void 0,i.map((function(e){var n=g(t,e);return(0,s.Z)(Z.Z,{path:n},n,(0,s.Z)(m.rU,{to:n},void 0,e.name))}))))};var y,_,N=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getEmptyMessage",value:function(){return interpolate(gettext("No users have posted any new messages during last %(days)s days."),{days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead"},void 0,this.getEmptyMessage())))}}]),u}(d().Component),k=n(19605),x=n(44039);var w=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"getClassName",value:function(){return this.props.hiddenOnMobile?"list-group-item hidden-xs hidden-sm":"list-group-item"}},{key:"render",value:function(){return(0,s.Z)("li",{className:this.getClassName()},void 0,y||(y=(0,s.Z)("div",{className:"rank-user-avatar"},void 0,(0,s.Z)("span",{},void 0,(0,s.Z)(k.ZP,{size:"50"})))),(0,s.Z)("div",{className:"rank-user"},void 0,(0,s.Z)("div",{className:"user-name"},void 0,(0,s.Z)("span",{className:"item-title"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,80)+"px"}},void 0," "))),(0,s.Z)("div",{className:"user-details"},void 0,(0,s.Z)("span",{className:"user-status"},void 0,_||(_=(0,s.Z)("span",{className:"status-icon ui-preview-text"},void 0," ")),(0,s.Z)("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:x.e(30,50)+"px"}},void 0," ")),(0,s.Z)("span",{className:"rank-name"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,50)+"px"}},void 0," ")),(0,s.Z)("span",{className:"user-title hidden-xs hidden-sm"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(30,50)+"px"}},void 0," "))),(0,s.Z)("div",{className:"user-compact-stats visible-xs-block"},void 0,(0,s.Z)("span",{className:"rank-position"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("span",{className:"rank-posts-counted"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))))),(0,s.Z)("div",{className:"rank-position hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("div",{className:"rank-posts-counted hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))),(0,s.Z)("div",{className:"rank-posts-total hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(20,30)+"px"}},void 0," ")),(0,s.Z)("small",{},void 0,gettext("Total posts"))))}}]),u}(d().Component);var R,C=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead ui-preview"},void 0,(0,s.Z)("span",{className:"ui-preview-text",style:{width:x.e(50,220)+"px"}},void 0," ")),(0,s.Z)("div",{className:"active-posters ui-preview"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,[0,1,2].map((function(e){return(0,s.Z)(w,{hiddenOnMobile:e>0},e)}))))))}}]),u}(d().Component),S=n(24678),E=n(32233);var L=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getClassName",value:function(){return this.props.rank.css_class?"list-group-item list-group-rank-"+this.props.rank.css_class:"list-group-item"}},{key:"getUserStatus",value:function(){return this.props.user.status?(0,s.Z)(S.ZP,{user:this.props.user,status:this.props.user.status},void 0,(0,s.Z)(S.Jj,{user:this.props.user,status:this.props.user.status}),(0,s.Z)(S.pg,{user:this.props.user,status:this.props.user.status,className:"status-label hidden-xs hidden-sm"})):(0,s.Z)("span",{className:"user-status"},void 0,R||(R=(0,s.Z)("span",{className:"status-icon ui-preview-text"},void 0," ")),(0,s.Z)("span",{className:"status-label ui-preview-text hidden-xs hidden-sm",style:{width:x.e(30,50)+"px"}},void 0," "))}},{key:"getRankName",value:function(){if(!this.props.rank.is_tab)return(0,s.Z)("span",{className:"rank-name item-title"},void 0,this.props.rank.name);var e=E.Z.get("USERS_LIST_URL")+this.props.rank.slug+"/";return(0,s.Z)(m.rU,{to:e,className:"rank-name item-title"},void 0,this.props.rank.name)}},{key:"getUserTitle",value:function(){return this.props.user.title?(0,s.Z)("span",{className:"user-title hidden-xs hidden-sm"},void 0,this.props.user.title):null}},{key:"render",value:function(){return(0,s.Z)("li",{className:this.getClassName()},void 0,(0,s.Z)("div",{className:"rank-user-avatar"},void 0,(0,s.Z)("a",{href:this.props.user.url},void 0,(0,s.Z)(k.ZP,{user:this.props.user,size:50,size2x:64}))),(0,s.Z)("div",{className:"rank-user"},void 0,(0,s.Z)("div",{className:"user-name"},void 0,(0,s.Z)("a",{href:this.props.user.url,className:"item-title"},void 0,this.props.user.username)),(0,s.Z)("div",{className:"user-details"},void 0,this.getUserStatus(),this.getRankName(),this.getUserTitle()),(0,s.Z)("div",{className:"user-compact-stats visible-xs-block"},void 0,(0,s.Z)("span",{className:"rank-position"},void 0,(0,s.Z)("strong",{},void 0,"#",this.props.counter),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("span",{className:"rank-posts-counted"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.meta.score),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))))),(0,s.Z)("div",{className:"rank-position hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,"#",this.props.counter),(0,s.Z)("small",{},void 0,gettext("Rank"))),(0,s.Z)("div",{className:"rank-posts-counted hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.meta.score),(0,s.Z)("small",{},void 0,gettext("Ranked posts"))),(0,s.Z)("div",{className:"rank-posts-total hidden-xs"},void 0,(0,s.Z)("strong",{},void 0,this.props.user.posts),(0,s.Z)("small",{},void 0,gettext("Total posts"))))}}]),u}(d().Component);var P=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getLeadMessage",value:function(){var e=ngettext("%(posters)s top poster from last %(days)s days.","%(posters)s top posters from last %(days)s days.",this.props.count);return interpolate(e,{posters:this.props.count,days:this.props.trackedPeriod},!0)}},{key:"render",value:function(){return(0,s.Z)("div",{className:"active-posters-list"},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:misago.get("USERS_LIST_URL"),page:this.props.page,pages:misago.get("USERS_LISTS")}),(0,s.Z)("p",{className:"lead"},void 0,this.getLeadMessage()),(0,s.Z)("div",{className:"active-posters ui-ready"},void 0,(0,s.Z)("ul",{className:"list-group"},void 0,this.props.users.map((function(e,t){return(0,s.Z)(L,{user:e,rank:e.rank,counter:t+1},e.id)}))))))}}]),u}(d().Component),O=n(6935),T=n(55547),A=n(90287),B=n(53328);var I=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(e){var t;return(0,i.Z)(this,u),t=a.call(this,e),(0,f.Z)((0,h.Z)(t),"update",(function(e){A.Z.dispatch((0,O.ZB)(e.results)),t.setState({isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count})})),E.Z.has("USERS")?t.initWithPreloadedData(E.Z.pop("USERS")):t.initWithoutPreloadedData(),t.startPolling(),t}return(0,o.Z)(u,[{key:"initWithPreloadedData",value:function(e){this.state={isLoaded:!0,trackedPeriod:e.tracked_period,count:e.count},A.Z.dispatch((0,O.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(){T.Z.start({poll:"active-posters",url:E.Z.get("USERS_API"),data:{list:"active"},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){B.Z.set({title:this.props.route.extra.name,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){T.Z.stop("active-posters")}},{key:"render",value:function(){var e={name:this.props.route.extra.name};return this.state.isLoaded?this.state.count>0?(0,s.Z)(P,{page:e,users:this.props.users,trackedPeriod:this.state.trackedPeriod,count:this.state.count}):(0,s.Z)(N,{page:e,trackedPeriod:this.state.trackedPeriod}):(0,s.Z)(C,{page:e})}}]),u}(d().Component);var j,D=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"getClassName",value:function(){return this.props.copy&&this.props.copy.length&&1===function(e,t){if(e=(e+"").toLowerCase(),(t=(t+"").toLowerCase()).length<=0)return 0;for(var n=0,a=0,s=t.length;(a=e.indexOf(t,a))>=0;)n+=1,a+=s;return n}(this.props.copy,"<p")&&-1===this.props.copy.indexOf("<br")?"page-lead lead":"page-lead"}},{key:"render",value:function(){return this.props.copy&&this.props.copy.length?(0,s.Z)("div",{className:this.getClassName(),dangerouslySetInnerHTML:{__html:this.props.copy}}):null}}]),u}(d().Component),U=n(40429),M=function(e){var t=e.users;return(0,s.Z)(U.Z,{cols:4,isReady:!0,showStatus:!0,users:t})};var z,H,F,q,Y,V,$,G,W,K=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){var e;(0,i.Z)(this,u);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e=a.call.apply(a,[this].concat(n)),(0,f.Z)((0,h.Z)(e),"render",(function(){return j||(j=(0,s.Z)(U.Z,{cols:4,isReady:!1}))})),e}return(0,o.Z)(u,[{key:"shouldComponentUpdate",value:function(){return!1}}]),u}(d().Component),J=K,Q=n(92490),X=function(e){var t=e.users;return t.more?(0,s.Z)("p",{},void 0,interpolate(ngettext("There is %(more)s more member with this role.","There are %(more)s more members with this role.",t.more),{more:t.more},!0)):(0,s.Z)("p",{},void 0,gettext("There are no more members with this role."))},ee=function(e){var t=e.baseUrl,n=e.users;return(0,s.Z)("div",{className:"misago-pagination"},void 0,n.isLoaded&&n.first?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t,title:gettext("Go to first page")},void 0,z||(z=(0,s.Z)("span",{className:"material-icon"},void 0,"first_page"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to first page"),type:"button",disabled:!0},void 0,H||(H=(0,s.Z)("span",{className:"material-icon"},void 0,"first_page"))),n.isLoaded&&n.previous?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+(n.previous>1?n.previous+"/":""),title:gettext("Go to previous page")},void 0,F||(F=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_left"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to previous page"),type:"button",disabled:!0},void 0,q||(q=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_left"))),n.isLoaded&&n.next?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.next+"/",title:gettext("Go to next page")},void 0,Y||(Y=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_right"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to next page"),type:"button",disabled:!0},void 0,V||(V=(0,s.Z)("span",{className:"material-icon"},void 0,"chevron_right"))),n.isLoaded&&n.last?(0,s.Z)(m.rU,{className:"btn btn-default btn-outline btn-icon",to:t+n.last+"/",title:gettext("Go to last page")},void 0,$||($=(0,s.Z)("span",{className:"material-icon"},void 0,"last_page"))):(0,s.Z)("button",{className:"btn btn-default btn-outline btn-icon",title:gettext("Go to last page"),type:"button",disabled:!0},void 0,G||(G=(0,s.Z)("span",{className:"material-icon"},void 0,"last_page"))))},te=function(e){var t=e.baseUrl,n=e.users;return(0,s.Z)(Q.o8,{},void 0,(0,s.Z)(Q.Z2,{},void 0,(0,s.Z)(Q.Eg,{},void 0,(0,s.Z)(ee,{baseUrl:t,users:n}))),(0,s.Z)(Q.Z2,{auto:!0},void 0,(0,s.Z)(Q.Eg,{},void 0,(0,s.Z)(X,{users:n}))))};var ne=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(e){var t;return(0,i.Z)(this,u),t=a.call(this,e),(0,f.Z)((0,h.Z)(t),"update",(function(e){A.Z.dispatch((0,O.ZB)(e.results)),e.isLoaded=!0,t.setState(e)})),E.Z.has("USERS")?t.initWithPreloadedData(E.Z.pop("USERS")):t.initWithoutPreloadedData(),t.startPolling(e.params.page||1),t}return(0,o.Z)(u,[{key:"initWithPreloadedData",value:function(e){this.state=Object.assign(e,{isLoaded:!0}),A.Z.dispatch((0,O.ZB)(e.results))}},{key:"initWithoutPreloadedData",value:function(){this.state={isLoaded:!1}}},{key:"startPolling",value:function(e){T.Z.start({poll:"rank-users",url:E.Z.get("USERS_API"),data:{rank:this.props.route.rank.id,page:e},frequency:9e4,update:this.update})}},{key:"componentDidMount",value:function(){B.Z.set({title:this.props.route.rank.name,page:this.props.params.page||null,parent:gettext("Users")})}},{key:"componentWillUnmount",value:function(){T.Z.stop("rank-users")}},{key:"componentWillReceiveProps",value:function(e){this.props.params.page!==e.params.page&&(B.Z.set({title:this.props.route.rank.name,page:e.params.page||null,parent:gettext("Users")}),this.setState({isLoaded:!1}),T.Z.stop("rank-users"),this.startPolling(e.params.page))}},{key:"getClassName",value:function(){return this.props.route.rank.css_class?"rank-users-list rank-users-"+this.props.route.rank.css_class:"rank-users-list"}},{key:"getRankDescription",value:function(){return this.props.route.rank.description?(0,s.Z)("div",{className:"rank-description"},void 0,(0,s.Z)(D,{copy:this.props.route.rank.description.html})):null}},{key:"getComponent",value:function(){return this.state.isLoaded?this.state.count>0?(0,s.Z)(M,{users:this.props.users}):(0,s.Z)("p",{className:"lead"},void 0,gettext("There are no users with this rank at the moment.")):W||(W=(0,s.Z)(J,{}))}},{key:"render",value:function(){return(0,s.Z)("div",{className:this.getClassName()},void 0,(0,s.Z)(v.Z,{},void 0,(0,s.Z)(b,{baseUrl:E.Z.get("USERS_LIST_URL"),page:{name:this.props.route.rank.name},pages:E.Z.get("USERS_LISTS")}),this.getRankDescription(),this.getComponent(),(0,s.Z)(te,{baseUrl:E.Z.get("USERS_LIST_URL")+this.props.route.rank.slug+"/",users:this.state})))}}]),u}(d().Component),ae=n(82125),se=n(99755);var ie=function(e){(0,r.Z)(u,e);var t,n,a=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,c.Z)(t);if(n){var s=(0,c.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,l.Z)(this,e)});function u(){return(0,i.Z)(this,u),a.apply(this,arguments)}return(0,o.Z)(u,[{key:"render",value:function(){return(0,s.Z)("div",{className:"page page-users-lists"},void 0,(0,s.Z)(se.sP,{},void 0,(0,s.Z)(se.mr,{styleName:"users-lists"},void 0,(0,s.Z)(se.gC,{styleName:"users-lists"},void 0,(0,s.Z)("h1",{},void 0,gettext("Users"))))),this.props.children)}}]),u}(ae.Z);function oe(e){return{tick:e.tick.tick,user:e.auth.user,users:e.users}}function re(){var e=[];return E.Z.get("USERS_LISTS").forEach((function(t){"rank"===t.component?(e.push({path:E.Z.get("USERS_LIST_URL")+t.slug+"/:page/",component:(0,p.$j)(oe)(ne),rank:t}),e.push({path:E.Z.get("USERS_LIST_URL")+t.slug+"/",component:(0,p.$j)(oe)(ne),rank:t})):"active-posters"===t.component&&e.push({path:E.Z.get("USERS_LIST_URL")+t.component+"/",component:(0,p.$j)(oe)(I),extra:{name:t.name}})})),e}var le=n(39633);E.Z.addInitializer({name:"component:users",initializer:function(e){e.has("USERS_LISTS")&&(0,le.Z)({root:E.Z.get("USERS_LIST_URL"),component:ie,paths:re()})},after:"store"})},97751:function(e,t,n){"use strict";var a=n(32233),s=n(96142);a.Z.addInitializer({name:"include",initializer:function(e){s.Z.init(e.get("STATIC_URL"))}})},76093:function(e,t,n){"use strict";var a=n(32233),s=n(62833);a.Z.addInitializer({name:"local-storage",initializer:function(){s.Z.init("misago_")}})},19764:function(e,t,n){"use strict";var a=n(32233),s=n(8621);a.Z.addInitializer({name:"dropdown",initializer:function(){var e=document.getElementById("mobile-navbar-dropdown-mount");e&&s.Z.init(e)},before:"store"})},47549:function(e,t,n){"use strict";var a=n(32233),s=n(59801);a.Z.addInitializer({name:"modal",initializer:function(){var e=document.getElementById("modal-mount");e&&s.Z.init(e)},before:"store"})},22331:function(e,t,n){"use strict";var a=n(30381),s=n.n(a),i=n(32233),o=n(19755);i.Z.addInitializer({name:"moment",initializer:function(){s().locale(o("html").attr("lang"))}})},21513:function(e,t,n){"use strict";var a=n(32233),s=n(53328);a.Z.addInitializer({name:"page-title",initializer:function(e){s.Z.init(e.get("SETTINGS").forum_index_title,e.get("SETTINGS").forum_name)}})},98749:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(53904),o=n(55547);a.Z.addInitializer({name:"polls",initializer:function(){o.Z.init(s.Z,i.Z)}})},98251:function(e,t,n){"use strict";var a=n(32233),s=n(78657),i=n(27950),o=n(53904);a.Z.addInitializer({name:"posting",initializer:function(){i.Z.init(s.Z,o.Z,document.getElementById("posting-placeholder"))}})},6720:function(e,t,n){"use strict";var a=n(32233),s=n(35486),i=n(90287);a.Z.addInitializer({name:"reducer:auth",initializer:function(e){i.Z.addReducer("auth",s.ZP,Object.assign({isAuthenticated:e.get("isAuthenticated"),isAnonymous:!e.get("isAuthenticated"),user:e.get("user")},s.E3))},before:"store"})},10846:function(e,t,n){"use strict";var a=n(32233),s=n(8154),i=n(90287);a.Z.addInitializer({name:"reducer:participants",initializer:function(){var e=null;a.Z.has("THREAD")&&(e=a.Z.get("THREAD").participants),i.Z.addReducer("participants",s.ZP,e||[])},before:"store"})},18255:function(e,t,n){"use strict";var a=n(32233),s=n(59752),i=n(90287);a.Z.addInitializer({name:"reducer:poll",initializer:function(){var e;e=a.Z.has("THREAD")&&a.Z.get("THREAD").poll?(0,s.ZB)(a.Z.get("THREAD").poll):{isBusy:!1},i.Z.addReducer("poll",s.ZP,e)},before:"store"})},14113:function(e,t,n){"use strict";var a=n(32233),s=n(21981),i=n(90287);a.Z.addInitializer({name:"reducer:posts",initializer:function(){var e;e=a.Z.has("POSTS")?(0,s.ZB)(a.Z.get("POSTS")):{isLoaded:!1,isBusy:!1},i.Z.addReducer("posts",s.ZP,e)},before:"store"})},24444:function(e,t,n){"use strict";var a=n(32233),s=n(58598),i=n(90287);a.Z.addInitializer({name:"reducer:profile-details",initializer:function(){var e=null;a.Z.has("PROFILE_DETAILS")&&(e=a.Z.get("PROFILE_DETAILS")),i.Z.addReducer("profile-details",s.ZP,e||{})},before:"store"})},1764:function(e,t,n){"use strict";var a=n(32233),s=n(27519),i=n(90287);a.Z.addInitializer({name:"reducer:profile-hydrate",initializer:function(){a.Z.has("PROFILE")&&i.Z.dispatch((0,s.ZB)(a.Z.get("PROFILE")))},after:"store"})},68351:function(e,t,n){"use strict";var a=n(32233),s=n(27519),i=n(90287);a.Z.addInitializer({name:"reducer:profile",initializer:function(){i.Z.addReducer("profile",s.ZP,{})},before:"store"})},81521:function(e,t,n){"use strict";var a=n(32233),s=n(16427),i=n(90287);a.Z.addInitializer({name:"reducer:search",initializer:function(){i.Z.addReducer("search",s.ZP,Object.assign({},s.E3,{providers:a.Z.get("SEARCH_PROVIDERS")||[],query:a.Z.get("SEARCH_QUERY")||""}))},before:"store"})},19984:function(e,t,n){"use strict";var a=n(32233),s=n(77751),i=n(90287);a.Z.addInitializer({name:"reducer:selection",initializer:function(){i.Z.addReducer("selection",s.ZP,[])},before:"store"})},41229:function(e,t,n){"use strict";var a=n(32233),s=n(27346),i=n(90287);a.Z.addInitializer({name:"reducer:snackbar",initializer:function(){i.Z.addReducer("snackbar",s.ZP,s.E3)},before:"store"})},43589:function(e,t,n){"use strict";var a=n(32233),s=n(7738),i=n(90287);a.Z.addInitializer({name:"reducer:thread",initializer:function(){var e;e=a.Z.has("THREAD")?(0,s.ZB)(a.Z.get("THREAD")):{isBusy:!1},i.Z.addReducer("thread",s.ZP,e)},before:"store"})},24108:function(e,t,n){"use strict";var a=n(32233),s=n(61340),i=n(90287);a.Z.addInitializer({name:"reducer:threads",initializer:function(){i.Z.addReducer("threads",s.ZP,[])},before:"store"})},33934:function(e,t,n){"use strict";var a=n(32233),s=n(85586),i=n(90287);a.Z.addInitializer({name:"reducer:tick",initializer:function(){i.Z.addReducer("tick",s.ZP,s.E3)},before:"store"})},85577:function(e,t,n){"use strict";var a=n(32233),s=n(48927),i=n(90287);a.Z.addInitializer({name:"reducer:username-history",initializer:function(){i.Z.addReducer("username-history",s.ZP,[])},before:"store"})},83526:function(e,t,n){"use strict";var a=n(32233),s=n(6935),i=n(90287);a.Z.addInitializer({name:"reducer:users",initializer:function(){i.Z.addReducer("users",s.ZP,[])},before:"store"})},43060:function(e,t,n){"use strict";var a=n(32233),s=n(53904),i=n(90287);a.Z.addInitializer({name:"snackbar",initializer:function(){s.Z.init(i.Z)},after:"store"})},92292:function(e,t,n){"use strict";var a=n(32233),s=n(90287);a.Z.addInitializer({name:"store",initializer:function(){s.Z.init()},before:"_end"})},33409:function(e,t,n){"use strict";var a=n(32233),s=n(85586),i=n(90287);a.Z.addInitializer({name:"tick-start",initializer:function(){window.setInterval((function(){i.Z.dispatch((0,s.bq)())}),5e4)},after:"store"})},31341:function(e,t,n){"use strict";var a=n(32233),s=n(96142),i=n(59940);a.Z.addInitializer({name:"zxcvbn",initializer:function(){i.Z.init(s.Z)}})},35486:function(e,t,n){"use strict";n.d(t,{E3:function(){return s},ZP:function(){return d},r$:function(){return l},w7:function(){return u},zB:function(){return c}});var a=n(6935),s={signedIn:!1,signedOut:!1},i="PATCH_USER",o="SIGN_IN",r="SIGN_OUT";function l(e){return{type:i,patch:e}}function c(e){return{type:o,user:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return{type:r,soft:e}}function d(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:var n=Object.assign({},e);return n.user=Object.assign({},e.user,t.patch),n;case o:return Object.assign({},e,{signedIn:t.user});case r:return Object.assign({},e,{isAuthenticated:!1,isAnonymous:!0,signedOut:!t.soft});case a.oB:if(e.isAuthenticated&&e.user.id===t.userId){var l=Object.assign({},e);return l.user=Object.assign({},e.user,{avatars:t.avatars}),l}return e;case a.D9:if(e.isAuthenticated&&e.user.id===t.userId){var c=Object.assign({},e);return c.user=Object.assign({},e.user,{username:t.username,slug:t.slug}),c}return e;default:return e}}},8154:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i},gx:function(){return s}});var a="REPLACE_PARTICIPANTS";function s(e){return{type:a,state:e}}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===a?t.state:e}},59752:function(e,t,n){"use strict";n.d(t,{Ar:function(){return p},Od:function(){return f},ZB:function(){return u},ZH:function(){return r},ZP:function(){return v},b9:function(){return l},gx:function(){return h},n6:function(){return d}});var a=n(30381),s=n.n(a),i="BUSY_POLL",o="RELEASE_POLL",r="REMOVE_POLL",l="REPLACE_POLL",c="UPDATE_POLL";function u(e){var t=!1;for(var n in e.choices)if(e.choices[n].selected){t=!0;break}return Object.assign({},e,{posted_on:s()(e.posted_on),hasSelectedChoices:t,endsOn:e.length?s()(e.posted_on).add(e.length,"days"):null,isBusy:!1})}function d(){return{type:i}}function p(){return{type:o}}function h(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:u(e)}}function f(){return{type:r}}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:return Object.assign({},e,{isBusy:!0});case o:return Object.assign({},e,{isBusy:!1});case r:return{isBusy:!1};case l:return t.state;case c:return Object.assign({},e,t.data);default:return e}}},92747:function(e,t,n){"use strict";n.d(t,{Qu:function(){return o},ZB:function(){return r},ZP:function(){return u},r$:function(){return c}});var a=n(30381),s=n.n(a),i=n(6935),o="PATCH_POST";function r(e){return Object.assign({},e,{posted_on:s()(e.posted_on),updated_on:s()(e.updated_on),hidden_on:s()(e.hidden_on),attachments:e.attachments?e.attachments.map(l):null,poster:e.poster?(0,i.Ru)(e.poster):null,isSelected:!1,isBusy:!1,isDeleted:!1})}function l(e){return Object.assign({},e,{uploaded_on:s()(e.uploaded_on)})}function c(e,t){return{type:o,post:e,patch:t}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===o&&e.id==t.post.id?Object.assign({},e,t.patch):e}},21981:function(e,t,n){"use strict";n.d(t,{R3:function(){return m},Rz:function(){return Z},Vx:function(){return g},Ys:function(){return d},ZB:function(){return f},ZP:function(){return b},_H:function(){return p},kR:function(){return h},zD:function(){return v}});var a=n(92747),s="APPEND_POSTS",i="SELECT_POST",o="DESELECT_POST",r="DESELECT_POSTS",l="LOAD_POSTS",c="UNLOAD_POSTS",u="UPDATE_POSTS";function d(e){return{type:i,post:e}}function p(e){return{type:o,post:e}}function h(){return{type:r}}function f(e){return Object.assign({},e,{results:e.results.map(a.ZB),isLoaded:!0,isBusy:!1,isSelected:!1})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:f(e)}}function m(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:s,state:t?e:f(e)}}function Z(){return{type:c}}function g(e){return{type:u,update:e}}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case i:var n=e.results.map((function(e){return e.id==t.post.id?Object.assign({},e,{isSelected:!0}):e}));return Object.assign({},e,{results:n});case o:var d=e.results.map((function(e){return e.id==t.post.id?Object.assign({},e,{isSelected:!1}):e}));return Object.assign({},e,{results:d});case r:var p=e.results.map((function(e){return Object.assign({},e,{isSelected:!1})}));return Object.assign({},e,{results:p});case s:var h=e.results.slice(),f=e.results.map((function(e){return e.id}));return t.state.results.map((function(e){-1===f.indexOf(e.id)&&h.push(e)})),Object.assign({},t.state,{results:h});case l:return t.state;case c:return Object.assign({},e,{isLoaded:!1});case u:return Object.assign({},e,t.update);case a.Qu:var v=e.results.map((function(e){return(0,a.ZP)(e,t)}));return Object.assign({},e,{results:v});default:return e}}},58598:function(e,t,n){"use strict";n.d(t,{ZP:function(){return i},zD:function(){return s}});var a="LOAD_DETAILS";function s(e){return{type:a,newState:e}}function i(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===a?t.newState:e}},27519:function(e,t,n){"use strict";n.d(t,{ZB:function(){return l},ZP:function(){return u},r$:function(){return c}});var a=n(30381),s=n.n(a),i=n(6935),o="HYDRATE_PROFILE",r="PATCH_PROFILE";function l(e){return{type:o,profile:e}}function c(e){return{type:r,patch:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return Object.assign({},t.profile,{joined_on:s()(t.profile.joined_on),status:(0,i.$q)(t.profile.status)});case r:return Object.assign({},e,t.patch);case i.oB:return e.id===t.userId?Object.assign({},e,{avatars:t.avatars}):e;case i.D9:return e.id===t.userId?Object.assign({},e,{username:t.username,slug:t.slug}):e;default:return e}}},16427:function(e,t,n){"use strict";n.d(t,{E3:function(){return o},P0:function(){return l},Vx:function(){return r},ZP:function(){return c}});var a="REPLACE_SEARCH",s="UPDATE_SEARCH",i="UPDATE_SEARCH_PROVIDER",o={isLoading:!1,query:"",providers:[]};function r(e){return{type:s,update:e}}function l(e){return{type:i,provider:e}}function c(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case a:return t.state;case s:return Object.assign({},e,t.update);case i:return Object.assign({},e,{providers:e.providers.map((function(e){return e.id===t.provider.id?t.provider:e}))});default:return e}}},77751:function(e,t,n){"use strict";n.d(t,{$6:function(){return r},YP:function(){return l},ZP:function(){return u},wc:function(){return c}});var a=n(20370),s="SELECT_ALL",i="SELECT_NONE",o="SELECT_ITEM";function r(e){return{type:s,items:e}}function l(){return{type:i}}function c(e){return{type:o,item:e}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case s:return t.items;case i:return[];case o:return(0,a.ZN)(e,t.item);default:return e}}},27346:function(e,t,n){"use strict";n.d(t,{E3:function(){return a},OV:function(){return o},ZP:function(){return l},p2:function(){return r}});var a={type:"info",message:"",isVisible:!1},s="SHOW_SNACKBAR",i="HIDE_SNACKBAR";function o(e,t){return{type:s,message:e,messageType:t}}function r(){return{type:i}}function l(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===s?{type:t.messageType,message:t.message,isVisible:!0}:t.type===i?Object.assign({},e,{isVisible:!1}):e}},7738:function(e,t,n){"use strict";n.d(t,{Ar:function(){return h},Vx:function(){return v},ZB:function(){return d},ZP:function(){return Z},gx:function(){return f},n6:function(){return p},y8:function(){return m}});var a=n(30381),s=n.n(a),i=n(59752),o="BUSY_THREAD",r="RELEASE_THREAD",l="REPLACE_THREAD",c="UPDATE_THREAD",u="UPDATE_THREAD_ACL";function d(e){return Object.assign({},e,{started_on:s()(e.started_on),last_post_on:s()(e.last_post_on),best_answer_marked_on:e.best_answer_marked_on?s()(e.best_answer_marked_on):null,isBusy:!1})}function p(){return{type:o}}function h(){return{type:r}}function f(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return{type:l,state:t?e:d(e)}}function v(e){return{type:c,data:e}}function m(e){return{type:u,data:e}}function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return Object.assign({},e,{isBusy:!0});case r:return Object.assign({},e,{isBusy:!1});case i.ZH:return Object.assign({},e,{poll:null});case i.b9:return Object.assign({},e,{poll:t.state});case l:return t.state;case c:return Object.assign({},e,t.data);case u:var n=Object.assign({},e.acl,t.data);return Object.assign({},e,{acl:n});default:return e}}},61340:function(e,t,n){"use strict";n.d(t,{R3:function(){return h},V8:function(){return v},ZB:function(){return m},ZP:function(){return b},l8:function(){return f},r$:function(){return Z}});var a=n(30381),s=n.n(a),i=n(89759),o="APPEND_THREADS",r="DELETE_THREAD",l="FILTER_THREADS",c="HYDRATE_THREADS",u="PATCH_THREAD",d="SORT_THREADS",p=["can_announce","can_approve","can_close","can_hide","can_move","can_merge","can_pin","can_review"];function h(e,t){return{type:o,items:e,sorting:t}}function f(e){return{type:r,thread:e}}function v(e,t){return{type:l,category:e,categoriesMap:t}}function m(e){return{type:c,items:e}}function Z(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:u,thread:e,patch:t,sorting:n}}function g(e){return Object.assign({},e,{started_on:s()(e.started_on),last_post_on:s()(e.last_post_on),moderation:(t=e.acl,n=[],p.forEach((function(e){t[e]&&n.push(e)})),n)});var t,n}function b(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:var n=(0,i.Z)(t.items.map(g),e);return n.sort(t.sorting);case r:return e.filter((function(e){return e.id!==t.thread.id}));case l:return e.filter((function(e){var n=t.categoriesMap[e.category];return n.lft>=t.category.lft&&n.rght<=t.category.rght||2==e.weight}));case c:return t.items.map(g);case u:var a=e.map((function(e){return e.id===t.thread.id?Object.assign({},e,t.patch):e}));return t.sorting?a.sort(t.sorting):a;case d:return e.sort(t.sorting);default:return e}}},85586:function(e,t,n){"use strict";n.d(t,{E3:function(){return a},ZP:function(){return o},bq:function(){return i}});var a={tick:0},s="TICK";function i(){return{type:s}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t.type===s?Object.assign({},e,{tick:e.tick+1}):e}},48927:function(e,t,n){"use strict";n.d(t,{KP:function(){return u},R3:function(){return d},ZB:function(){return p},ZP:function(){return f}});var a=n(30381),s=n.n(a),i=n(6935),o=n(89759),r="ADD_NAME_CHANGE",l="APPEND_HISTORY",c="HYDRATE_HISTORY";function u(e,t,n){return{type:r,change:e,user:t,changedBy:n}}function d(e){return{type:l,items:e}}function p(e){return{type:c,items:e}}function h(e){return Object.assign({},e,{changed_on:s()(e.changed_on)})}function f(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case r:var n=e.slice();return n.unshift({id:Math.floor(Date.now()/1e3),changed_by:t.changedBy,changed_by_username:t.changedBy.username,changed_on:s()(),new_username:t.change.username,old_username:t.user.username}),n;case l:return(0,o.Z)(e,t.items.map(h));case c:return t.items.map(h);case i.oB:return e.map((function(e){return(e=Object.assign({},e)).changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{avatars:t.avatars})),e}));case i.D9:return e.map((function(e){return(e=Object.assign({},e)).changed_by&&e.changed_by.id===t.userId&&(e.changed_by=Object.assign({},e.changed_by,{username:t.username,slug:t.slug})),Object.assign({},e)}));default:return e}}},6935:function(e,t,n){"use strict";n.d(t,{$q:function(){return p},D9:function(){return c},R3:function(){return u},Ru:function(){return h},ZB:function(){return d},ZP:function(){return m},_S:function(){return v},n1:function(){return f},oB:function(){return l}});var a=n(30381),s=n.n(a),i=n(89759),o="APPEND_USERS",r="HYDRATE_USERS",l="UPDATE_AVATAR",c="UPDATE_USERNAME";function u(e){return{type:o,items:e}}function d(e){return{type:r,items:e}}function p(e){return e?Object.assign({},e,{last_click:e.last_click?s()(e.last_click):null,banned_until:e.banned_until?s()(e.banned_until):null}):null}function h(e){return Object.assign({},e,{joined_on:s()(e.joined_on),status:p(e.status)})}function f(e,t){return{type:l,userId:e.id,avatars:t}}function v(e,t,n){return{type:c,userId:e.id,username:t,slug:n}}function m(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;switch(t.type){case o:return(0,i.Z)(e,t.items.map(h));case r:return t.items.map(h);case l:return e.map((function(e){return(e=Object.assign({},e)).id===t.userId&&(e.avatars=t.avatars),e}));default:return e}}},78657:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(19755),o=function(){function e(){(0,a.Z)(this,e),this._cookieName=null,this._csrfToken=null,this._locks={}}return(0,s.Z)(e,[{key:"init",value:function(e){this._cookieName=e}},{key:"getCsrfToken",value:function(){if(-1!==document.cookie.indexOf(this._cookieName)){var e=new RegExp(this._cookieName+"=([^;]*)"),t=document.cookie.match(e)[0];return t?t.split("=")[1]:null}return null}},{key:"request",value:function(e,t,n){var a=this;return new Promise((function(s,o){var r={url:t,method:e,headers:{"X-CSRFToken":a.getCsrfToken()},data:n?JSON.stringify(n):null,contentType:"application/json; charset=utf-8",dataType:"json",success:function(e){s(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};i.ajax(r)}))}},{key:"get",value:function(e,t,n){if(t&&(e+="?"+i.param(t)),n){var a=this;return this._locks[n]&&(this._locks[n].url=e),this._locks[n]&&this._locks[n].waiter?{then:function(){}}:this._locks[n]&&this._locks[n].wait?(this._locks[n].waiter=!0,new Promise((function(t,s){var i=function e(i){a._locks[n].wait?window.setTimeout((function(){e(i)}),300):a._locks[n].url!==i?e(a._locks[n].url):(a._locks[n].waiter=!1,a.request("GET",a._locks[n].url).then((function(s){a._locks[n].url===i?t(s):(a._locks[n].waiter=!0,e(a._locks[n].url))}),(function(t){a._locks[n].url===i?s(t):(a._locks[n].waiter=!0,e(a._locks[n].url))})))};window.setTimeout((function(){i(e)}),300)}))):(this._locks[n]={url:e,wait:!0,waiter:!1},new Promise((function(t,s){a.request("GET",e).then((function(s){a._locks[n].wait=!1,a._locks[n].url===e&&t(s)}),(function(t){a._locks[n].wait=!1,a._locks[n].url===e&&s(t)}))})))}return this.request("GET",e)}},{key:"post",value:function(e,t){return this.request("POST",e,t)}},{key:"patch",value:function(e,t){return this.request("PATCH",e,t)}},{key:"put",value:function(e,t){return this.request("PUT",e,t)}},{key:"delete",value:function(e,t){return this.request("DELETE",e,t)}},{key:"upload",value:function(e,t,n){var a=this;return new Promise((function(s,o){var r={url:e,method:"POST",headers:{"X-CSRFToken":a.getCsrfToken()},data:t,contentType:!1,processData:!1,xhr:function(){var e=new window.XMLHttpRequest;return e.upload.addEventListener("progress",(function(e){e.lengthComputable&&n(Math.round(e.loaded/e.total*100))}),!1),e},success:function(e){s(e)},error:function(e){var t=e.responseJSON||{};t.status=e.status,0===t.status&&(t.detail=gettext("Lost connection with application.")),413!==t.status||t.detail||(t.detail=gettext("Upload was rejected by server as too large.")),404===t.status&&(t.detail&&"NOT FOUND"!==t.detail||(t.detail=gettext("Action link is invalid."))),500!==t.status||t.detail||(t.detail=gettext("Unknown error has occured.")),t.statusText=e.statusText,o(t)}};i.ajax(r)}))}}]),e}();t.Z=new o},98274:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(35486),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t,n){this._store=e,this._local=t,this._modal=n,this.syncSession(),this.watchState()}},{key:"syncSession",value:function(){var e=this._store.getState().auth;e.isAuthenticated?this._local.set("auth",{isAuthenticated:!0,username:e.user.username}):this._local.set("auth",{isAuthenticated:!1})}},{key:"watchState",value:function(){var e=this,t=this._store.getState().auth;this._local.watch("auth",(function(n){n.isAuthenticated?e._store.dispatch((0,i.zB)({username:n.username})):t.isAuthenticated&&e._store.dispatch((0,i.w7)())})),this._modal.hide()}},{key:"signIn",value:function(e){this._store.dispatch((0,i.zB)(e)),this._local.set("auth",{isAuthenticated:!0,username:e.username}),this._modal.hide()}},{key:"signOut",value:function(){this._store.dispatch((0,i.w7)()),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}},{key:"softSignOut",value:function(){this._store.dispatch((0,i.w7)(!0)),this._local.set("auth",{isAuthenticated:!1}),this._modal.hide()}}]),e}();t.Z=new o},93825:function(e,t,n){"use strict";var a,s=n(22928),i=n(79340),o=n(6215),r=n(61120),l=n(15671),c=n(43144),u=n(57588),d=n.n(u),p=n(96359);function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,a=(0,r.Z)(e);if(t){var s=(0,r.Z)(this).constructor;n=Reflect.construct(a,arguments,s)}else n=a.apply(this,arguments);return(0,o.Z)(this,n)}}var f=function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,[{key:"init",value:function(e,t,n,a){this._context=e,this._ajax=t,this._include=n,this._snackbar=a}}]),e}(),v=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){return new Promise((function(e){e()}))}},{key:"validator",value:function(){return null}},{key:"component",value:function(){return null}}]),n}(f),m=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){var e=this;return new Promise((function(t,n){e._ajax.get(e._context.get("CAPTCHA_API")).then((function(n){e.question=n.question,e.helpText=n.help_text,t()}),(function(){e._snackbar.error(gettext("Failed to load CAPTCHA.")),n()}))}))}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return(0,s.Z)(p.Z,{label:this.question,for:"id_captcha",labelClass:e.labelClass||"",controlClass:e.controlClass||"",validation:e.form.state.errors.captcha,helpText:this.helpText||null},void 0,(0,s.Z)("input",{"aria-describedby":"id_captcha_status",className:"form-control",disabled:e.form.state.isLoading,id:"id_captcha",onChange:e.form.bindInput("captcha"),type:"text",value:e.form.state.captcha}))}}]),n}(f),Z=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"componentDidMount",value:function(){var e=this;grecaptcha.render("recaptcha",{sitekey:this.props.siteKey,callback:function(t){e.props.binding({target:{value:t}})}})}},{key:"render",value:function(){return a||(a=(0,s.Z)("div",{id:"recaptcha"}))}}]),n}(d().Component),g=function(e){(0,i.Z)(n,e);var t=h(n);function n(){return(0,l.Z)(this,n),t.apply(this,arguments)}return(0,c.Z)(n,[{key:"load",value:function(){return this._include.include("https://www.google.com/recaptcha/api.js",!0),new Promise((function(e){!function t(){"undefined"==typeof grecaptcha?window.setTimeout((function(){t()}),200):e()}()}))}},{key:"validator",value:function(){return[]}},{key:"component",value:function(e){return(0,s.Z)(p.Z,{label:gettext("Please solve the quick test"),for:"id_captcha",labelClass:e.labelClass||"",controlClass:e.controlClass||"",validation:e.form.state.errors.captcha,helpText:gettext("This test helps us prevent automated spam registrations on our site.")},void 0,(0,s.Z)(Z,{binding:e.form.bindInput("captcha"),siteKey:this._context.get("SETTINGS").recaptcha_site_key}))}}]),n}(f),b=function(){function e(){(0,l.Z)(this,e)}return(0,c.Z)(e,[{key:"init",value:function(e,t,n,a){switch(e.get("SETTINGS").captcha_type){case"no":this._captcha=new v;break;case"qa":this._captcha=new m;break;case"re":this._captcha=new g}this._captcha.init(e,t,n,a)}},{key:"load",value:function(){return this._captcha.load()}},{key:"validator",value:function(){return this._captcha.validator()}},{key:"component",value:function(e){return this._captcha.component(e)}}]),e}();t.ZP=new b},96142:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(19755),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._staticUrl=e,this._included=[]}},{key:"include",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];-1===this._included.indexOf(e)&&(this._included.push(e),this._include(e,t))}},{key:"_include",value:function(e,t){i.ajax({url:(t?"":this._staticUrl)+e,cache:!0,dataType:"script"})}}]),e}();t.Z=new o},62833:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=window.localStorage,o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){var t=this;this._prefix=e,this._watchers=[],window.addEventListener("storage",(function(e){var n=JSON.parse(e.newValue);t._watchers.forEach((function(t){t.key===e.key&&e.oldValue!==e.newValue&&t.callback(n)}))}))}},{key:"set",value:function(e,t){i.setItem(this._prefix+e,JSON.stringify(t))}},{key:"get",value:function(e){var t=i.getItem(this._prefix+e);return t?JSON.parse(t):null}},{key:"watch",value:function(e,t){this._watchers.push({key:this._prefix+e,callback:t})}}]),e}();t.Z=new o},8621:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(4869),o=n(19755),r=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._element=e,this._component=null}},{key:"show",value:function(e){this._component===e?this.hide():(this._component=e,(0,i.Z)(e,this._element.id),o(this._element).addClass("open"))}},{key:"showConnected",value:function(e,t){this._component===e?this.hide():(this._component=e,(0,i.Z)(t,this._element.id,!0),o(this._element).addClass("open"))}},{key:"hide",value:function(){o(this._element).removeClass("open"),this._component=null}}]),e}();t.Z=new r},59801:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(73935),o=n.n(i),r=n(4869),l=n(19755),c=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){var t=this;this._element=e,this._modal=l(e).modal({show:!1}),this._modal.on("hidden.bs.modal",(function(){o().unmountComponentAtNode(t._element)}))}},{key:"show",value:function(e){(0,r.Z)(e,this._element.id),this._modal.modal("show")}},{key:"hide",value:function(){this._modal.modal("hide")}}]),e}();t.Z=new c},53328:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t){this._indexTitle=e,this._forumName=t}},{key:"set",value:function(e){if(e){"string"==typeof e&&(e={title:e});var t=e.title;e.page>1&&(t+=" ("+interpolate(gettext("page: %(page)s"),{page:e.page},!0)+")"),e.parent&&(t+=" | "+e.parent),document.title=t+" | "+this._forumName}else document.title=this._indexTitle||this._forumName}}]),e}();t.Z=new i},55547:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e,t){this._ajax=e,this._snackbar=t,this._polls={}}},{key:"start",value:function(e){var t=this;this.stop(e.poll);var n=function n(){t._polls[e.poll]=e,t._ajax.get(e.url,e.data||null).then((function(a){t._polls[e.poll]._stopped||(e.update(a),t._polls[e.poll].timeout=window.setTimeout(n,e.frequency))}),(function(n){t._polls[e.poll]._stopped||(e.error?e.error(n):t._snackbar.apiError(n))}))};e.delayed?this._polls[e.poll]={timeout:window.setTimeout(n,e.frequency)}:n()}},{key:"stop",value:function(e){this._polls[e]&&(window.clearTimeout(this._polls[e].timeout),this._polls[e]._stopped=!0)}}]),e}();t.Z=new i},27950:function(e,t,n){"use strict";n.d(t,{Z:function(){return ft}});var a=n(15671),s=n(43144),i=n(4942),o=n(57588),r=n.n(o),l=n(73935),c=n.n(l),u=n(91876),d=n(22928),p=n(97326),h=n(79340),f=n(6215),v=n(61120),m=n(57026),Z=n(87462);var g,b,y,_=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){e.props.replaceSelection(e.props.execAction)})),e}return(0,s.Z)(r,[{key:"render",value:function(){return(0,d.Z)("button",{className:"btn btn-icon "+this.props.className,disabled:this.props.disabled,onClick:this.onClick,title:this.props.title,type:"button"},void 0,this.props.children)}}]),r}(r().Component),N=n(19755);function k(e){return r().createElement(_,(0,Z.Z)({execAction:x,title:gettext("Insert code")},e),g||(g=(0,d.Z)("span",{className:"material-icon"},void 0,"functions")))}function x(e,t){t("\n\n```"+N.trim(prompt(gettext("Enter name of syntax of your code (optional)")+":"))+"\n"+e+"\n```\n\n")}function w(e){return r().createElement(_,(0,Z.Z)({execAction:R,title:gettext("Emphase selection")},e),b||(b=(0,d.Z)("span",{className:"material-icon"},void 0,"format_italic")))}function R(e,t){e.length&&t("*"+e+"*")}function C(e){return r().createElement(_,(0,Z.Z)({execAction:S,title:gettext("Insert horizontal ruler")},e),y||(y=(0,d.Z)("span",{className:"material-icon"},void 0,"remove")))}function S(e,t){t("\n\n- - - - -\n\n")}var E=n(19755),L=new RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");function P(e){return L.test(E.trim(e))}var O,T=n(19755);function A(e){return r().createElement(_,(0,Z.Z)({execAction:B,title:gettext("Insert image")},e),O||(O=(0,d.Z)("span",{className:"material-icon"},void 0,"insert_photo")))}function B(e,t){var n="",a="";e.length&&(P(e)?n=e:a=e),(n=T.trim(prompt(gettext("Enter link to image")+":",n))).length&&((a=T.trim(prompt(gettext("Enter image label (optional)")+":",a))).length>0?t(""):t("!("+n+")"))}var I,j,D,U,M=n(19755);function z(e){return r().createElement(_,(0,Z.Z)({execAction:H,title:gettext("Insert link")},e),I||(I=(0,d.Z)("span",{className:"material-icon"},void 0,"insert_link")))}function H(e,t){var n="",a="";if(e.length&&(P(e)?n=e:a=e),0===(n=M.trim(prompt(gettext("Enter link address")+":",n)||"")).length)return!1;a=M.trim(prompt(gettext("Enter link label (optional)")+":",a)),n.length&&(a.length>0?t("["+a+"]("+n+")"):t(n))}function F(e){return r().createElement(_,(0,Z.Z)({execAction:q,title:gettext("Insert spoiler")},e),j||(j=(0,d.Z)("span",{className:"material-icon"},void 0,"not_interested")))}function q(e,t){t("\n\n[spoiler]\n"+e+"\n[/spoiler]\n\n")}function Y(e){return r().createElement(_,(0,Z.Z)({execAction:V,title:gettext("Strikethrough selection")},e),D||(D=(0,d.Z)("span",{className:"material-icon"},void 0,"format_strikethrough")))}function V(e,t){e.length&&t("~~"+e+"~~")}function $(e){return r().createElement(_,(0,Z.Z)({execAction:G,title:gettext("Bolder selection")},e),U||(U=(0,d.Z)("span",{className:"material-icon"},void 0,"format_bold")))}function G(e,t){e.length&&t("**"+e+"**")}var W,K=n(19755);function J(e){return r().createElement(_,(0,Z.Z)({execAction:Q,title:gettext("Insert quote")},e),W||(W=(0,d.Z)("span",{className:"material-icon"},void 0,"format_quote")))}function Q(e,t){var n=K.trim(prompt(gettext("Enter quote autor, prefix usernames with @")+":",n));t(n?'\n\n[quote="'+n+'"]\n'+e+"\n[/quote]\n\n":"\n\n[quote]\n"+e+"\n[/quote]\n\n")}var X,ee=n(32233),te=n(89627),ne=n(48772);var ae,se=function(e){(0,h.Z)(l,e);var t,n,o=(t=l,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function l(){var e;(0,a.Z)(this,l);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onInsert",(function(){e.props.replaceSelection(e.insertAttachment)})),(0,i.Z)((0,p.Z)(e),"insertAttachment",(function(t,n){var a=e.props.item;a.is_image?a.url.thumb?n("[]("+a.url.index+")"):n("[]("+a.url.index+")"):n("["+a.filename+"]("+a.url.index+")")})),(0,i.Z)((0,p.Z)(e),"onRemove",(function(){e.updateItem({isRemoved:!0})})),(0,i.Z)((0,p.Z)(e),"onUndo",(function(){e.updateItem({isRemoved:!1})})),(0,i.Z)((0,p.Z)(e),"updateItem",(function(t){var n=e.props.attachments.map((function(n){return n.id===e.props.item.id?Object.assign({},n,t):n}));e.props.onAttachmentsChange(n)})),e}return(0,s.Z)(l,[{key:"render",value:function(){return(0,d.Z)("li",{className:"editor-attachment-complete"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-xs-12 col-sm-8 col-md-9"},void 0,r().createElement(ie,this.props),(0,d.Z)("div",{className:"editor-attachment-details"},void 0,r().createElement(le,this.props),r().createElement(ce,this.props))),(0,d.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3 xs-margin-top-half"},void 0,r().createElement(ue,(0,Z.Z)({onInsert:this.onInsert,onRemove:this.onRemove,onUndo:this.onUndo},this.props)))))}}]),l}(r().Component);function ie(e){return e.item.is_image?r().createElement(oe,e):r().createElement(re,e)}function oe(e){var t=e.item.url.thumb||e.item.url.index;return(0,d.Z)("div",{className:"editor-attachment-image"},void 0,(0,d.Z)("a",{href:e.item.url.index+"?shva=1",style:{backgroundImage:"url('"+t+"?shva=1')"},target:"_blank"}))}function re(e){return X||(X=(0,d.Z)("div",{className:"editor-attachment-icon"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,"insert_drive_file")))}function le(e){return(0,d.Z)("h4",{},void 0,(0,d.Z)("a",{className:"item-title",href:e.item.url.index+"?shva=1",target:"_blank"},void 0,e.item.filename))}function ce(e){var t;t=e.item.url.uploader?interpolate('<a href="%(url)s" class="item-title">%(user)s</a>',{url:(0,te.Z)(e.item.url.uploader),user:(0,te.Z)(e.item.uploader_name)},!0):interpolate('<span class="item-title">%(user)s</span>',{user:(0,te.Z)(e.item.uploader_name)},!0);var n=interpolate('<abbr title="%(absolute)s">%(relative)s</abbr>',{absolute:(0,te.Z)(e.item.uploaded_on.format("LLL")),relative:(0,te.Z)(e.item.uploaded_on.fromNow())},!0),a=interpolate((0,te.Z)(gettext("%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.")),{filetype:e.item.filetype,size:(0,ne.Z)(e.item.size),uploader:t,uploaded_on:n},!0);return(0,d.Z)("p",{dangerouslySetInnerHTML:{__html:a}})}function ue(e){return(0,d.Z)("div",{className:"editor-attachment-actions"},void 0,(0,d.Z)("div",{className:"row"},void 0,r().createElement(de,e),r().createElement(pe,e),r().createElement(he,e)))}function de(e){return e.item.isRemoved?null:(0,d.Z)("div",{className:"col-xs-6"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onInsert,type:"button"},void 0,gettext("Insert")))}function pe(e){return e.item.isRemoved&&e.item.acl.can_delete?null:(0,d.Z)("div",{className:"col-xs-6"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onRemove,type:"button"},void 0,gettext("Remove")))}function he(e){return e.item.isRemoved?(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("button",{className:"btn btn-default btn-sm btn-block",onClick:e.onUndo,type:"button"},void 0,gettext("Undo removal"))):null}var fe=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){var t=e.props.attachments.filter((function(t){return t.key!==e.props.item.key}));e.props.onAttachmentsChange(t)})),e}return(0,s.Z)(r,[{key:"render",value:function(){var e=interpolate("<strong>%(name)s</strong>",{name:(0,te.Z)(this.props.item.filename)},!0),t=interpolate(gettext("Error uploading %(filename)s"),{filename:e,progress:this.props.item.progress+"%"},!0);return(0,d.Z)("li",{className:"editor-attachment-error"},void 0,ae||(ae=(0,d.Z)("div",{className:"editor-attachment-error-icon"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,"warning"))),(0,d.Z)("div",{className:"editor-attachment-error-message"},void 0,(0,d.Z)("h4",{dangerouslySetInnerHTML:{__html:t+":"}}),(0,d.Z)("p",{},void 0,this.props.item.error),(0,d.Z)("button",{className:"btn btn-default btn-sm",onClick:this.onClick,type:"button"},void 0,gettext("Dismiss"))))}}]),r}(r().Component);function ve(e){var t=interpolate("<strong>%(name)s</strong>",{name:(0,te.Z)(e.item.filename)},!0),n=interpolate(gettext("Uploading %(filename)s... %(progress)s"),{filename:t,progress:e.item.progress+"%"},!0);return(0,d.Z)("li",{className:"editor-attachment-upload"},void 0,(0,d.Z)("div",{className:"editor-attachment-progress-bar"},void 0,(0,d.Z)("div",{className:"editor-attachment-progress",style:{width:e.item.progress+"%"}})),(0,d.Z)("p",{className:"editor-attachment-upload-message",dangerouslySetInnerHTML:{__html:n}}))}function me(e){return e.item.id?r().createElement(se,e):e.item.error?r().createElement(fe,e):r().createElement(ve,e)}function Ze(e){return(0,d.Z)("ul",{className:"list-unstyled editor-attachments-list"},void 0,e.attachments.map((function(t){return r().createElement(me,(0,Z.Z)({item:t,key:t.id||t.key},e))})))}var ge=n(30381),be=n.n(ge),ye=n(78657),_e=n(53904);var Ne,ke=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onChange",(function(t){var n=t.target.files[0];if(n){var a={id:null,key:xe(),progress:0,error:null,filename:n.name};e.props.onAttachmentsChange([a].concat(e.props.attachments));var s=new FormData;s.append("upload",n),ye.Z.upload(ee.Z.get("ATTACHMENTS_API"),s,(function(t){a.progress=t,e.props.onAttachmentsChange(e.props.attachments.concat())})).then((function(t){t.uploaded_on=be()(t.uploaded_on),Object.assign(a,t),e.props.onAttachmentsChange(e.props.attachments.concat())}),(function(t){400===t.status||413===t.status?(a.error=t.detail,e.props.onAttachmentsChange(e.props.attachments.concat())):_e.Z.apiError(t)}))}})),e}return(0,s.Z)(r,[{key:"render",value:function(){return(0,d.Z)("input",{id:"editor-upload-field",onChange:this.onChange,type:"file"})}}]),r}(r().Component);function xe(){return"upld-"+Math.round((new Date).getTime())}function we(e){return ee.Z.get("user").acl.max_attachment_size?(0,d.Z)("div",{className:"editor-attachments"},void 0,r().createElement(Ze,e),r().createElement(ke,e)):null}var Re,Ce=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(){var e;(0,a.Z)(this,r);for(var t=arguments.length,n=new Array(t),s=0;s<t;s++)n[s]=arguments[s];return e=o.call.apply(o,[this].concat(n)),(0,i.Z)((0,p.Z)(e),"onClick",(function(){document.getElementById("editor-upload-field").click()})),e}return(0,s.Z)(r,[{key:"render",value:function(){return ee.Z.get("user").acl.max_attachment_size?(0,d.Z)("button",{className:"btn btn-icon "+this.props.className,disabled:this.props.disabled,onClick:this.onClick,title:gettext("Upload file"),type:"button"},void 0,Ne||(Ne=(0,d.Z)("span",{className:"material-icon"},void 0,"file_upload"))):null}}]),r}(r().Component),Se=n(69092);function Ee(e){return(0,d.Z)("div",{className:"modal-dialog",role:"document"},void 0,(0,d.Z)("div",{className:"modal-content"},void 0,(0,d.Z)("div",{className:"modal-header"},void 0,(0,d.Z)("button",{"aria-label":gettext("Close"),className:"close","data-dismiss":"modal",type:"button"},void 0,Re||(Re=(0,d.Z)("span",{"aria-hidden":"true"},void 0,"×"))),(0,d.Z)("h4",{className:"modal-title"},void 0,gettext("Preview message"))),(0,d.Z)("div",{className:"modal-body markup-preview"},void 0,(0,d.Z)(Se.Z,{markup:e.markup}))))}var Le=n(19755),Pe="editor-textarea";function Oe(){return document.getElementById(Pe)}function Te(e,t){return{start:e,end:t}}function Ae(){var e=Oe();if(document.selection){e.focus();var t=document.selection.createRange(),n=t.text.length;return t.moveStart("character",-e.value.length),Te(t.text.length-n,t.text.length)}if(e.selectionStart||"0"==e.selectionStart)return Te(e.selectionStart,e.selectionEnd)}function Be(e,t){var n=Oe(),a=n.value,s=a.substring(0,e.start);return n.value=a.substring(0,e.start)+t+a.substring(e.end),function(e){var t=Oe();if(t.setSelectionRange)t.focus(),t.setSelectionRange(e.start,e.end);else if(t.createTextRange){var n=t.createTextRange();n.collapse(!0),n.moveStart("character",e.start),n.moveEnd("character",e.end),n.select()}}(Te(s.length+t.length,s.length+t.length)),n.value}var Ie,je=n(82211),De=n(59801),Ue=n(19755);var Me=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"onPreviewClick",(function(){t.state.isPreviewLoading||(t.setState({isPreviewLoading:!0}),ye.Z.post(ee.Z.get("PARSE_MARKUP_API"),{post:t.props.value}).then((function(e){De.Z.show((0,d.Z)(Ee,{markup:e.parsed})),t.setState({isPreviewLoading:!1})}),(function(e){400===e.status?_e.Z.error(e.detail):_e.Z.apiError(e),t.setState({isPreviewLoading:!1})})))})),(0,i.Z)((0,p.Z)(t),"replaceSelection",(function(e){var n;e((n=Ae(),Le.trim(document.getElementById(Pe).value.substring(n.start,n.end))),t._replaceSelection)})),(0,i.Z)((0,p.Z)(t),"_replaceSelection",(function(e){var n;t.props.onChange({target:{value:(n=e,Be(Ae(),n))}})})),t.state={isPreviewLoading:!1},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){var e=this;Ue("#editor-textarea").atwho({at:"@",displayTpl:'<li><img src="${avatar}" alt="">${username}</li>',insertTpl:"@${username}",searchKey:"username",callbacks:{remoteFilter:function(e,t){Ue.getJSON(ee.Z.get("MENTION_API"),{q:e},t)}}}),Ue("#editor-textarea").on("inserted.atwho",(function(t,n,a){e.props.onChange(t)}))}},{key:"render",value:function(){return(0,d.Z)("div",{className:"editor-border"},void 0,(0,d.Z)("textarea",{className:"form-control",value:this.props.value,disabled:this.props.loading,id:"editor-textarea",onChange:this.props.onChange,rows:"9"}),(0,d.Z)("div",{className:"editor-footer"},void 0,(0,d.Z)("div",{className:"buttons-list pull-left"},void 0,(0,d.Z)($,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(w,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(Y,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(C,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(z,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(A,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(J,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(F,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(k,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,replaceSelection:this.replaceSelection}),(0,d.Z)(Ce,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading})),(0,d.Z)(je.Z,{className:"btn-default btn-sm pull-left",disabled:this.props.loading||this.state.isPreviewLoading,onClick:this.onPreviewClick,type:"button"},void 0,gettext("Preview")),(0,d.Z)(je.Z,{className:"btn-primary btn-sm pull-right",loading:this.props.loading},void 0,this.props.submitLabel||gettext("Post")),(0,d.Z)("button",{className:"btn btn-default btn-sm pull-right",disabled:this.props.loading,onClick:this.props.onCancel,type:"button"},void 0,gettext("Cancel")),Ie||(Ie=(0,d.Z)("div",{className:"clearfix visible-xs-block"})),(0,d.Z)(ze,{canProtect:this.props.canProtect,disabled:this.props.loading,onProtect:this.props.onProtect,onUnprotect:this.props.onUnprotect,protect:this.props.protect})),(0,d.Z)(we,{attachments:this.props.attachments,onAttachmentsChange:this.props.onAttachmentsChange,placeholder:this.props.placeholder,replaceSelection:this.replaceSelection}))}}]),r}(r().Component);function ze(e){if(!e.canProtect)return null;var t=e.protect?gettext("Protected"):gettext("Protect");return(0,d.Z)("button",{className:"btn btn-icon btn-default btn-protect btn-sm pull-right",disabled:e.disabled,onClick:e.protect?e.onUnprotect:e.onProtect,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.protect?"lock":"lock_outline"),(0,d.Z)("span",{className:"btn-text hidden-md hidden-lg"},void 0,t))}var He=n(43345);function Fe(e){return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("div",{className:"container"},void 0,e.children))}var qe,Ye,Ve=n(37848);function $e(e){return qe||(qe=(0,d.Z)(Fe,{className:"posting-loader"},void 0,(0,d.Z)(Ve.Z,{})))}function Ge(e){return(0,d.Z)(Fe,{className:"posting-message"},void 0,(0,d.Z)("div",{className:"message-body"},void 0,(0,d.Z)("p",{},void 0,Ye||(Ye=(0,d.Z)("span",{className:"material-icon"},void 0,"error_outline")),e.message),(0,d.Z)("button",{type:"button",className:"btn btn-default",onClick:ft.close},void 0,gettext("Dismiss"))))}function We(e){if(!e.showOptions)return null;var t=e.columns,n="col-xs-12 xs-margin-top";n+=1===t?" col-sm-2":" sm-margin-top",n+=3===t?" col-md-3":" col-md-2",n+=" posting-options";var a="col-xs-"+12/t,s="btn-text";return s+=3===t?" visible-sm-inline-block":2===t?" hidden-md hidden-lg":" hidden-sm",(0,d.Z)("div",{className:n},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)(Qe,{className:a,disabled:e.disabled,onPinGlobally:e.onPinGlobally,onPinLocally:e.onPinLocally,onUnpin:e.onUnpin,pin:e.pin,show:e.options.pin,textClassName:s}),(0,d.Z)(Je,{className:a,disabled:e.disabled,hide:e.hide,onHide:e.onHide,onUnhide:e.onUnhide,show:e.options.hide,textClassName:s}),(0,d.Z)(Ke,{className:a,close:e.close,disabled:e.disabled,onClose:e.onClose,onOpen:e.onOpen,show:e.options.close,textClassName:s})))}function Ke(e){if(!e.show)return null;var t=e.close?gettext("Closed"):gettext("Open");return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:e.close?e.onOpen:e.onClose,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.close?"lock":"lock_outline"),(0,d.Z)("span",{className:e.textClassName},void 0,t)))}function Je(e){if(!e.show)return null;var t=e.hide?gettext("Hidden"):gettext("Not hidden");return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:e.hide?e.onUnhide:e.onHide,title:t,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,e.hide?"visibility_off":"visibility"),(0,d.Z)("span",{className:e.textClassName},void 0,t)))}function Qe(e){if(!e.show)return null;var t=null,n=null,a=null;switch(e.pin){case 0:t="radio_button_unchecked",n=e.onPinLocally,a=gettext("Unpinned");break;case 1:t="bookmark_outline",n=e.onPinGlobally,a=gettext("Pinned locally"),n=2==e.show?e.onPinGlobally:e.onUnpin;break;case 2:t="bookmark",n=e.onUnpin,a=gettext("Pinned globally")}return(0,d.Z)("div",{className:e.className},void 0,(0,d.Z)("button",{className:"btn btn-default btn-block",disabled:e.disabled,onClick:n,title:a,type:"button"},void 0,(0,d.Z)("span",{className:"material-icon"},void 0,t),(0,d.Z)("span",{className:e.textClassName},void 0,a)))}function Xe(e){var t=e.filter((function(e){return e.id&&!e.isRemoved}));return t.map((function(e){return e.id}))}function et(e){return e.map((function(e){return Object.assign({},e,{uploaded_on:be()(e.uploaded_on)})}))}var tt,nt=n(12891);var at=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){var n=null,a=!1,s=null,i=e.map((function(e){return!1===e.post||n&&e.id!=t.state.category||(n=e.id,s=e.post),e.post&&(e.post.close||e.post.hide||e.post.pin)&&(a=!0),Object.assign(e,{disabled:!1===e.post,label:e.name,value:e.id})}));t.setState({isReady:!0,showOptions:a,categories:i,category:n,categoryOptions:s})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard thread?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onTitleChange",(function(e){t.changeValue("title",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onCategoryChange",(function(e){var n=t.state.categories.find((function(t){return e.target.value==t.value})),a=t.state.pin;n.post.pin&&n.post.pin<a&&(a=n.post.pin),t.setState({category:n.id,categoryOptions:n.post,pin:a})})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),(0,i.Z)((0,p.Z)(t),"onClose",(function(){t.changeValue("close",!0)})),(0,i.Z)((0,p.Z)(t),"onOpen",(function(){t.changeValue("close",!1)})),(0,i.Z)((0,p.Z)(t),"onPinGlobally",(function(){t.changeValue("pin",2)})),(0,i.Z)((0,p.Z)(t),"onPinLocally",(function(){t.changeValue("pin",1)})),(0,i.Z)((0,p.Z)(t),"onUnpin",(function(){t.changeValue("pin",0)})),(0,i.Z)((0,p.Z)(t),"onHide",(function(){t.changeValue("hide",!0)})),(0,i.Z)((0,p.Z)(t),"onUnhide",(function(){t.changeValue("hide",!1)})),t.state={isReady:!1,isLoading:!1,isErrored:!1,showOptions:!1,categoryOptions:null,title:"",category:e.category||null,categories:[],post:"",attachments:[],close:!1,hide:!1,pin:0,validators:{title:(0,nt.jn)(),post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config).then(this.loadSuccess,this.loadError)}},{key:"clean",value:function(){if(!this.state.title.trim().length)return _e.Z.error(gettext("You have to enter thread title.")),!1;if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return e.title?(_e.Z.error(e.title[0]),!1):!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{title:this.state.title,category:this.state.category,post:this.state.post,attachments:Xe(this.state.attachments),close:this.state.close,hide:this.state.hide,pin:this.state.pin})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your thread has been posted.")),window.location=e.url,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.category||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){if(this.state.isErrored)return(0,d.Z)(Ge,{message:this.state.isErrored});if(!this.state.isReady)return tt||(tt=(0,d.Z)($e,{}));var e=0;this.state.categoryOptions.close&&(e+=1),this.state.categoryOptions.hide&&(e+=1),this.state.categoryOptions.pin&&(e+=1);var t=null;return t=1===e?"col-sm-6":"col-sm-8",t+=3===e?" col-md-6":e?" col-md-7":" col-md-9",(0,d.Z)(Fe,{className:"posting-form",withFirstRow:!0},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:t},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onTitleChange,placeholder:gettext("Thread title"),type:"text",value:this.state.title})),(0,d.Z)("div",{className:"col-xs-12 col-sm-4 col-md-3 xs-margin-top"},void 0,(0,d.Z)(m.Z,{choices:this.state.categories,disabled:this.state.isLoading,onChange:this.onCategoryChange,value:this.state.category})),(0,d.Z)(We,{close:this.state.close,columns:e,disabled:this.state.isLoading,hide:this.state.hide,onClose:this.onClose,onHide:this.onHide,onOpen:this.onOpen,onPinGlobally:this.onPinGlobally,onPinLocally:this.onPinLocally,onUnhide:this.onUnhide,onUnpin:this.onUnpin,options:this.state.categoryOptions,pin:this.state.pin,showOptions:this.state.showOptions})),(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post thread"),value:this.state.post})))))}}]),r}(He.Z);function st(e){var t=e.split(",").map((function(e){return e.trim().toLowerCase()})).filter((function(e){return e.length>0}));return t.filter((function(e,n){return t.indexOf(e)==n}))}var it,ot=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard private thread?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onToChange",(function(e){t.changeValue("to",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onTitleChange",(function(e){t.changeValue("title",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})}));var n=(e.to||[]).map((function(e){return e.username})).join(", ");return t.state={isLoading:!1,to:n,title:"",post:"",attachments:[],validators:{title:(0,nt.jn)(),post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"clean",value:function(){if(!st(this.state.to).length)return _e.Z.error(gettext("You have to enter at least one recipient.")),!1;if(!this.state.title.trim().length)return _e.Z.error(gettext("You have to enter thread title.")),!1;if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return e.title?(_e.Z.error(e.title[0]),!1):!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{to:st(this.state.to),title:this.state.title,post:this.state.post,attachments:Xe(this.state.attachments)})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your thread has been posted.")),window.location=e.url,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.to||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return(0,d.Z)(Fe,{className:"posting-form",withFirstRow:!0},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit},void 0,(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onToChange,placeholder:gettext("Comma separated list of user names, eg.: Danny, Lisa"),type:"text",value:this.state.to}))),(0,d.Z)("div",{className:"row first-row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)("input",{className:"form-control",disabled:this.state.isLoading,onChange:this.onTitleChange,placeholder:gettext("Thread title"),type:"text",value:this.state.title}))),(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-xs-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post thread"),value:this.state.post})))))}}]),r}(He.Z);var rt,lt=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){t.setState({isReady:!0,post:e.post?'[quote="@'+e.poster+'"]\n'+e.post+"\n[/quote]":""})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"appendData",(function(e){var n=e.post?'[quote="@'+e.poster+'"]\n'+e.post+"\n[/quote]\n\n":"";t.setState((function(e,t){return e.post.length>0?{post:e.post+"\n\n"+n}:{post:n}}))})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard your reply?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),t.state={isReady:!1,isLoading:!1,isErrored:!1,post:"",attachments:[],validators:{post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config,this.props.context||null).then(this.loadSuccess,this.loadError)}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.context,n=e.context;t&&n&&t.reply===n.reply||ye.Z.get(e.config,e.context||null).then(this.appendData,_e.Z.apiError)}},{key:"clean",value:function(){if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.post(this.props.submit,{post:this.state.post,attachments:Xe(this.state.attachments)})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Your reply has been posted.")),window.location=e.url.index,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,d.Z)(Fe,{className:"posting-form"},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit,method:"POST"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,submitLabel:gettext("Post reply"),value:this.state.post}))))):this.state.isErrored?(0,d.Z)(Ge,{message:this.state.isErrored}):it||(it=(0,d.Z)($e,{}))}}]),r}(He.Z);var ct=function(e){(0,h.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,v.Z)(t);if(n){var s=(0,v.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,f.Z)(this,e)});function r(e){var t;return(0,a.Z)(this,r),t=o.call(this,e),(0,i.Z)((0,p.Z)(t),"loadSuccess",(function(e){t.setState({isReady:!0,post:e.post,attachments:et(e.attachments),protect:e.is_protected,canProtect:e.can_protect})})),(0,i.Z)((0,p.Z)(t),"loadError",(function(e){t.setState({isErrored:e.detail})})),(0,i.Z)((0,p.Z)(t),"onCancel",(function(){window.confirm(gettext("Are you sure you want to discard changes?"))&&ft.close()})),(0,i.Z)((0,p.Z)(t),"onProtect",(function(){t.setState({protect:!0})})),(0,i.Z)((0,p.Z)(t),"onUnprotect",(function(){t.setState({protect:!1})})),(0,i.Z)((0,p.Z)(t),"onPostChange",(function(e){t.changeValue("post",e.target.value)})),(0,i.Z)((0,p.Z)(t),"onAttachmentsChange",(function(e){t.setState({attachments:e})})),t.state={isReady:!1,isLoading:!1,isErrored:!1,post:"",attachments:[],protect:!1,canProtect:!1,validators:{post:(0,nt.Jh)()},errors:{}},t}return(0,s.Z)(r,[{key:"componentDidMount",value:function(){ye.Z.get(this.props.config).then(this.loadSuccess,this.loadError)}},{key:"clean",value:function(){if(!this.state.post.trim().length)return _e.Z.error(gettext("You have to enter a message.")),!1;var e=this.validate();return!e.post||(_e.Z.error(e.post[0]),!1)}},{key:"send",value:function(){return ye.Z.put(this.props.submit,{post:this.state.post,attachments:Xe(this.state.attachments),protect:this.state.protect})}},{key:"handleSuccess",value:function(e){_e.Z.success(gettext("Reply has been edited.")),window.location=e.url.index,this.setState({isLoading:!0})}},{key:"handleError",value:function(e){if(400===e.status){var t=[].concat(e.non_field_errors||[],e.category||[],e.title||[],e.post||[],e.attachments||[]);_e.Z.error(t[0])}else _e.Z.apiError(e)}},{key:"render",value:function(){return this.state.isReady?(0,d.Z)(Fe,{className:"posting-form"},void 0,(0,d.Z)("form",{onSubmit:this.handleSubmit,method:"POST"},void 0,(0,d.Z)("div",{className:"row"},void 0,(0,d.Z)("div",{className:"col-md-12"},void 0,(0,d.Z)(Me,{attachments:this.state.attachments,canProtect:this.state.canProtect,loading:this.state.isLoading,onAttachmentsChange:this.onAttachmentsChange,onCancel:this.onCancel,onChange:this.onPostChange,onProtect:this.onProtect,onUnprotect:this.onUnprotect,protect:this.state.protect,submitLabel:gettext("Edit reply"),value:this.state.post}))))):this.state.isErrored?(0,d.Z)(Ge,{message:this.state.isErrored}):rt||(rt=(0,d.Z)($e,{}))}}]),r}(He.Z);function ut(e){return"START"===e.mode?r().createElement(at,e):"START_PRIVATE"===e.mode?r().createElement(ot,e):"REPLY"===e.mode?r().createElement(lt,e):"EDIT"===e.mode?r().createElement(ct,e):null}var dt=n(4869),pt=n(19755),ht=function(){function e(){var t=this;(0,a.Z)(this,e),(0,i.Z)(this,"close",(function(){t._isOpen&&!t._isClosing&&(t._isClosing=!0,t._placeholder.removeClass("slide-in"),window.setTimeout((function(){c().unmountComponentAtNode(document.getElementById("posting-mount")),t._isClosing=!1,t._isOpen=!1}),300))}))}return(0,s.Z)(e,[{key:"init",value:function(e,t,n){this._ajax=e,this._snackbar=t,this._placeholder=pt(n),this._mode=null,this._isOpen=!1,this._isClosing=!1}},{key:"open",value:function(e){if(!1===this._isOpen)this._mode=e.mode,this._isOpen=e.submit,this._realOpen(e);else if(this._isOpen!==e.submit){var t=gettext("You are already working on other message. Do you want to discard it?");"POLL"==this._mode&&(t=gettext("You are already working on a poll. Do you want to discard it?")),window.confirm(t)&&(this._mode=e.mode,this._isOpen=e.submit,this._realOpen(e))}else"REPLY"==this._mode&&"REPLY"==e.mode&&this._realOpen(e)}},{key:"_realOpen",value:function(e){"POLL"==e.mode?(0,dt.Z)(r().createElement(u.y,e),"posting-mount"):(0,dt.Z)(r().createElement(ut,e),"posting-mount"),this._placeholder.addClass("slide-in"),pt("html, body").animate({scrollTop:this._placeholder.offset().top},1e3)}}]),e}(),ft=new ht},53904:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(27346),o=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._store=e,this._timeout=null}},{key:"alert",value:function(e,t){var n=this;this._timeout?(window.clearTimeout(this._timeout),this._store.dispatch((0,i.p2)()),this._timeout=window.setTimeout((function(){n._timeout=null,n.alert(e,t)}),300)):(this._store.dispatch((0,i.OV)(e,t)),this._timeout=window.setTimeout((function(){n._store.dispatch((0,i.p2)()),n._timeout=null}),5e3))}},{key:"info",value:function(e){this.alert(e,"info")}},{key:"success",value:function(e){this.alert(e,"success")}},{key:"warning",value:function(e){this.alert(e,"warning")}},{key:"error",value:function(e){this.alert(e,"error")}},{key:"apiError",value:function(e){var t=e.detail;t||(t=404===e.status?gettext("Action link is invalid."):gettext("Unknown error has occured.")),403===e.status&&"Permission denied"===t&&(t=gettext("You don't have permission to perform this action.")),this.error(t)}}]),e}();t.Z=new o},90287:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=n(41438),o=function(){function e(){(0,a.Z)(this,e),this._store=null,this._reducers={},this._initialState={}}return(0,s.Z)(e,[{key:"addReducer",value:function(e,t,n){this._reducers[e]=t,this._initialState[e]=n}},{key:"init",value:function(){this._store=(0,i.createStore)((0,i.combineReducers)(this._reducers),this._initialState)}},{key:"getStore",value:function(){return this._store}},{key:"getState",value:function(){return this._store.getState()}},{key:"dispatch",value:function(e){return this._store.dispatch(e)}}]),e}();t.Z=new o},59940:function(e,t,n){"use strict";var a=n(15671),s=n(43144),i=function(){function e(){(0,a.Z)(this,e)}return(0,s.Z)(e,[{key:"init",value:function(e){this._include=e,this._isLoaded=!1}},{key:"scorePassword",value:function(e,t){return this._isLoaded?zxcvbn(e,t).score:0}},{key:"load",value:function(){return this._isLoaded?this._loadedPromise():(this._include.include("misago/js/zxcvbn.js"),this._loadingPromise())}},{key:"_loadingPromise",value:function(){var e=this;return new Promise((function(t,n){!function a(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;(s+=1)>200?n():"undefined"==typeof zxcvbn?window.setTimeout((function(){a(s)}),200):(e._isLoaded=!0,t())}()}))}},{key:"_loadedPromise",value:function(){return new Promise((function(e){e()}))}}]),e}();t.Z=new i},93051:function(e,t,n){"use strict";n.d(t,{Z:function(){return _}});var a,s=n(22928),i=n(30381),o=n.n(i),r=n(57588),l=n.n(r),c=n(73935),u=n.n(c),d=n(37424),p=n(15671),h=n(43144),f=n(79340),v=n(6215),m=n(61120);var Z=function(e){(0,f.Z)(r,e);var t,n,i=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,a=(0,m.Z)(t);if(n){var s=(0,m.Z)(this).constructor;e=Reflect.construct(a,arguments,s)}else e=a.apply(this,arguments);return(0,v.Z)(this,e)});function r(){return(0,p.Z)(this,r),i.apply(this,arguments)}return(0,h.Z)(r,[{key:"getReasonMessage",value:function(){return this.props.message.html?(0,s.Z)("div",{className:"lead",dangerouslySetInnerHTML:{__html:this.props.message.html}}):(0,s.Z)("p",{className:"lead"},void 0,this.props.message.plain)}},{key:"getExpirationMessage",value:function(){if(this.props.expires){if(this.props.expires.isAfter(o()())){var e=interpolate(gettext("This ban expires on %(expires_on)s."),{expires_on:this.props.expires.format("LL, LT")},!0),t=interpolate(gettext("This ban expires %(expires_on)s."),{expires_on:this.props.expires.fromNow()},!0);return(0,s.Z)("abbr",{title:e},void 0,t)}return gettext("This ban has expired.")}return gettext("This ban is permanent.")}},{key:"render",value:function(){return(0,s.Z)("div",{className:"page page-error page-error-banned"},void 0,(0,s.Z)("div",{className:"container"},void 0,(0,s.Z)("div",{className:"message-panel"},void 0,a||(a=(0,s.Z)("div",{className:"message-icon"},void 0,(0,s.Z)("span",{className:"material-icon"},void 0,"highlight_off"))),(0,s.Z)("div",{className:"message-body"},void 0,this.getReasonMessage(),(0,s.Z)("p",{className:"message-footnote"},void 0,this.getExpirationMessage())))))}}]),r}(l().Component),g=n(32233),b=n(90287),y=(0,d.$j)((function(e){return e.tick}))(Z);function _(e,t){if(u().render((0,s.Z)(d.zt,{store:b.Z.getStore()},void 0,(0,s.Z)(y,{message:e.message,expires:e.expires_on?o()(e.expires_on):null})),document.getElementById("page-mount")),void 0===t||t){var n=g.Z.get("SETTINGS").forum_name;document.title=gettext("You are banned")+" | "+n,window.history.pushState({},"",g.Z.get("BANNED_URL"))}}},69130:function(e,t,n){"use strict";function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=[],s=[];if(e.forEach((function(e){s.push(e),s.length===t&&(a.push(s),s=[])})),!1!==n&&s.length>0&&s.length<t)for(var i=s.length;i<t;i++)s.push(n);return s.length&&a.push(s),a}n.d(t,{Z:function(){return a}})},89759:function(e,t,n){"use strict";function a(e,t){var n=[];return e.concat(t).filter((function(e){return-1===n.indexOf(e.id)&&(n.push(e.id),!0)}))}n.d(t,{Z:function(){return a}})},89627:function(e,t,n){"use strict";n.d(t,{Z:function(){return s}});var a={"&":"&","<":"<",">":">",'"':""","'":"'"};function s(e){return e.replace(/[&<>"']/g,(function(e){return a[e]}))}},48772:function(e,t,n){"use strict";function a(e){return e>1073741824?s(e/1073741824)+" GB":e>1048576?s(e/1048576)+" MB":e>1024?s(e/1024)+" KB":s(e)+" B"}function s(e){return e.toFixed(1)}n.d(t,{Z:function(){return a}})},4869:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var a=n(22928),s=(n(57588),n(73935)),i=n.n(s),o=n(37424),r=n(90287);function l(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=document.getElementById(t),l=e.props?e:(0,a.Z)(e,{});s&&(n?i().render((0,a.Z)(o.zt,{store:r.Z.getStore()},void 0,l),s):i().render(l,s))}},44039:function(e,t,n){"use strict";function a(e,t){return Math.floor(Math.random()*(t-e+1))+e}n.d(t,{e:function(){return a}})},39633:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var a=n(22928),s=(n(57588),n(73935)),i=n.n(s),o=n(37424),r=n(69987),l=n(90287),c=document.getElementById("page-mount");function u(e){var t={component:e.component||null,childRoutes:[]};e.root?t.childRoutes=[{path:e.root,onEnter:function(t,n){n(null,e.paths[0].path)}}].concat(e.paths):t.childRoutes=e.paths,i().render((0,a.Z)(o.zt,{store:l.Z.getStore()},void 0,(0,a.Z)(r.F0,{routes:t,history:r.mW})),c)}},20370:function(e,t,n){"use strict";function a(e,t){if(-1===e.indexOf(t)){var n=e.slice();return n.push(t),n}return e.filter((function(e){return e!==t}))}n.d(t,{ZN:function(){return a}})},55210:function(e,t,n){"use strict";n.d(t,{BS:function(){return d},C1:function(){return o},Do:function(){return c},Ei:function(){return u},HR:function(){return p},Vb:function(){return v},fT:function(){return r},gS:function(){return h},jA:function(){return l},lG:function(){return f}});var a=n(19755),s=/^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i,i=new RegExp("^[0-9a-z]+$","i");function o(e){return function(t){if(!1===t||null===t||0===a.trim(t).length)return e||gettext("This field is required.")}}function r(e){var t=gettext("You have to accept the terms of service.");return o(e||t)}function l(e){var t=gettext("You have to accept the privacy policy.");return o(e||t)}function c(e){return function(t){if(!s.test(t))return e||gettext("Enter a valid email address.")}}function u(e,t){return function(n){var s="",i=a.trim(n).length;if(i<e)return s=t?t(e,i):ngettext("Ensure this value has at least %(limit_value)s character (it has %(show_value)s).","Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).",e),interpolate(s,{limit_value:e,show_value:i},!0)}}function d(e,t){return function(n){var s="",i=a.trim(n).length;if(i>e)return s=t?t(e,i):ngettext("Ensure this value has at most %(limit_value)s character (it has %(show_value)s).","Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).",e),interpolate(s,{limit_value:e,show_value:i},!0)}}function p(e){return u(e,(function(e){return ngettext("Username must be at least %(limit_value)s character long.","Username must be at least %(limit_value)s characters long.",e)}))}function h(e){return d(e,(function(e){return ngettext("Username cannot be longer than %(limit_value)s character.","Username cannot be longer than %(limit_value)s characters.",e)}))}function f(){return function(e){if(!i.test(a.trim(e)))return gettext("Username can only contain latin alphabet letters and digits.")}}function v(e){return function(t){var n=t.length;if(n<e){var a=ngettext("Valid password must be at least %(limit_value)s character long.","Valid password must be at least %(limit_value)s characters long.",e);return interpolate(a,{limit_value:e,show_value:n},!0)}}}},46700:function(e,t,n){var a={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function s(e){var t=i(e);return n(t)}function i(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}s.keys=function(){return Object.keys(a)},s.resolve=i,e.exports=s,s.id=46700}},n={};function a(e){var s=n[e];if(void 0!==s)return s.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=t,e=[],a.O=function(t,n,s,i){if(!n){var o=1/0;for(u=0;u<e.length;u++){n=e[u][0],s=e[u][1],i=e[u][2];for(var r=!0,l=0;l<n.length;l++)(!1&i||o>=i)&&Object.keys(a.O).every((function(e){return a.O[e](n[l])}))?n.splice(l--,1):(r=!1,i<o&&(o=i));if(r){e.splice(u--,1);var c=s();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,s,i]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=function(e){return(e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},function(){var e={174:0};a.O.j=function(t){return 0===e[t]};var t=function(t,n){var s,i,o=n[0],r=n[1],l=n[2],c=0;if(o.some((function(t){return 0!==e[t]}))){for(s in r)a.o(r,s)&&(a.m[s]=r[s]);if(l)var u=l(a)}for(t&&t(n);c<o.length;c++)i=o[c],a.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return a.O(u)},n=self.webpackChunkmisago=self.webpackChunkmisago||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}(),a.O(void 0,[736],(function(){return a(32233)})),a.O(void 0,[736],(function(){return a(58339)})),a.O(void 0,[736],(function(){return a(64109)})),a.O(void 0,[736],(function(){return a(46226)})),a.O(void 0,[736],(function(){return a(93240)})),a.O(void 0,[736],(function(){return a(75147)})),a.O(void 0,[736],(function(){return a(4894)})),a.O(void 0,[736],(function(){return a(29223)})),a.O(void 0,[736],(function(){return a(3026)})),a.O(void 0,[736],(function(){return a(94795)})),a.O(void 0,[736],(function(){return a(95563)})),a.O(void 0,[736],(function(){return a(32488)})),a.O(void 0,[736],(function(){return a(11768)})),a.O(void 0,[736],(function(){return a(61323)})),a.O(void 0,[736],(function(){return a(15049)})),a.O(void 0,[736],(function(){return a(61814)})),a.O(void 0,[736],(function(){return a(95920)})),a.O(void 0,[736],(function(){return a(59203)})),a.O(void 0,[736],(function(){return a(72168)})),a.O(void 0,[736],(function(){return a(47806)})),a.O(void 0,[736],(function(){return a(77031)})),a.O(void 0,[736],(function(){return a(97751)})),a.O(void 0,[736],(function(){return a(76093)})),a.O(void 0,[736],(function(){return a(19764)})),a.O(void 0,[736],(function(){return a(47549)})),a.O(void 0,[736],(function(){return a(22331)})),a.O(void 0,[736],(function(){return a(21513)})),a.O(void 0,[736],(function(){return a(98749)})),a.O(void 0,[736],(function(){return a(98251)})),a.O(void 0,[736],(function(){return a(6720)})),a.O(void 0,[736],(function(){return a(10846)})),a.O(void 0,[736],(function(){return a(18255)})),a.O(void 0,[736],(function(){return a(14113)})),a.O(void 0,[736],(function(){return a(24444)})),a.O(void 0,[736],(function(){return a(1764)})),a.O(void 0,[736],(function(){return a(68351)})),a.O(void 0,[736],(function(){return a(81521)})),a.O(void 0,[736],(function(){return a(19984)})),a.O(void 0,[736],(function(){return a(41229)})),a.O(void 0,[736],(function(){return a(43589)})),a.O(void 0,[736],(function(){return a(24108)})),a.O(void 0,[736],(function(){return a(33934)})),a.O(void 0,[736],(function(){return a(85577)})),a.O(void 0,[736],(function(){return a(83526)})),a.O(void 0,[736],(function(){return a(43060)})),a.O(void 0,[736],(function(){return a(92292)})),a.O(void 0,[736],(function(){return a(33409)}));var s=a.O(void 0,[736],(function(){return a(31341)}));s=a.O(s)}(); //# sourceMappingURL=misago.js.map \ No newline at end of file diff --git a/misago/static/misago/js/misago.js.map b/misago/static/misago/js/misago.js.map index 0f3f9ae9fd..0b2e90d609 100644 --- a/misago/static/misago/js/misago.js.map +++ b/misago/static/misago/js/misago.js.map @@ -1 +1 @@ -{"version":3,"file":"misago.js","mappings":"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","sources":["webpack://misago/webpack/runtime/chunk loaded","webpack://misago/./highlight/highlight.pack.js","webpack://misago/./src/components/FlexRow/FlexRow.jsx","webpack://misago/./src/components/FlexRow/FlexRowCol.jsx","webpack://misago/./src/components/FlexRow/FlexRowSection.jsx","webpack://misago/./src/components/PageContainer.jsx","webpack://misago/./src/components/PageHeader/PageHeader.jsx","webpack://misago/./src/components/PageHeader/PageHeaderBanner.jsx","webpack://misago/./src/components/PageHeader/PageHeaderContainer.jsx","webpack://misago/./src/components/PageHeader/PageHeaderDetails.jsx","webpack://misago/./src/components/PageHeader/PageHeaderHTMLMessage.jsx","webpack://misago/./src/components/PageHeader/PageHeaderMessage.jsx","webpack://misago/./src/components/PageHeader/PageHeaderPlain.jsx","webpack://misago/./src/components/RegisterLegalFootnote.js","webpack://misago/./src/components/StartSocialAuth.js","webpack://misago/./src/components/ThreadFlags.jsx","webpack://misago/./src/components/ThreadReplies.jsx","webpack://misago/./src/components/Toolbar/Toolbar.jsx","webpack://misago/./src/components/Toolbar/ToolbarItem.jsx","webpack://misago/./src/components/Toolbar/ToolbarSection.jsx","webpack://misago/./src/components/Toolbar/ToolbarSpacer.jsx","webpack://misago/./src/components/avatar.js","webpack://misago/./src/components/button.js","webpack://misago/./src/components/category-select.js","webpack://misago/./src/components/edit-details/blankslate.js","webpack://misago/./src/components/edit-details/loader.js","webpack://misago/./src/components/edit-details/field-input.js","webpack://misago/./src/components/edit-details/fieldset.js","webpack://misago/./src/components/edit-details/form.js","webpack://misago/./src/components/edit-details/index.js","webpack://misago/./src/components/form-group.js","webpack://misago/./src/components/form.js","webpack://misago/./src/components/li.js","webpack://misago/./src/components/loader.js","webpack://misago/./src/components/merge-conflict.js","webpack://misago/./src/services/one-box.js","webpack://misago/./src/components/misago-markup.js","webpack://misago/./src/components/modal-loader.js","webpack://misago/./src/components/modal-message.js","webpack://misago/./src/components/panel-loader.js","webpack://misago/./src/components/panel-message.js","webpack://misago/./src/components/poll/results/chart.js","webpack://misago/./src/components/poll/results/modal.js","webpack://misago/./src/components/poll/results/options.js","webpack://misago/./src/components/poll/info.js","webpack://misago/./src/components/poll/results/index.js","webpack://misago/./src/components/poll/voting/help.js","webpack://misago/./src/components/poll/voting/select.js","webpack://misago/./src/components/poll/voting/utils.js","webpack://misago/./src/components/poll/voting/index.js","webpack://misago/./src/components/poll/poll.js","webpack://misago/./src/components/poll/form/choices-control.js","webpack://misago/./src/components/poll/form/index.js","webpack://misago/./src/components/post-feed/post/body.js","webpack://misago/./src/components/post-feed/post/header.js","webpack://misago/./src/components/post-feed/post/post-side/button.js","webpack://misago/./src/components/post-feed/post/post-side/anonymous.js","webpack://misago/./src/components/post-feed/post/post-side/user-title.js","webpack://misago/./src/components/post-feed/post/post-side/registered.js","webpack://misago/./src/components/post-feed/post/post-side/index.js","webpack://misago/./src/components/post-feed/post/index.js","webpack://misago/./src/components/post-feed/preview.js","webpack://misago/./src/components/post-feed/index.js","webpack://misago/./src/components/posting/utils/validators.js","webpack://misago/./src/components/select.js","webpack://misago/./src/components/sign-in.js","webpack://misago/./src/components/user-status.js","webpack://misago/./src/components/username-history/list-empty.js","webpack://misago/./src/components/username-history/change.js","webpack://misago/./src/components/username-history/list-ready.js","webpack://misago/./src/components/username-history/change-preview.js","webpack://misago/./src/components/username-history/list-preview.js","webpack://misago/./src/components/username-history/root.js","webpack://misago/./src/components/users-list/card/stats.js","webpack://misago/./src/components/users-list/card/user-title.js","webpack://misago/./src/components/users-list/card/index.js","webpack://misago/./src/components/users-list/preview/card.js","webpack://misago/./src/components/users-list/preview/index.js","webpack://misago/./src/components/users-list/index.js","webpack://misago/./src/components/with-dropdown.js","webpack://misago/./src/components/yes-no-switch.js","webpack://misago/./src/utils/ordered-list.js","webpack://misago/./src/index.js","webpack://misago/./src/initializers/ajax.js","webpack://misago/./src/initializers/auth-sync.js","webpack://misago/./src/initializers/auth.js","webpack://misago/./src/initializers/captcha.js","webpack://misago/./src/components/accept-agreement.js","webpack://misago/./src/initializers/components/accept-agreement.js","webpack://misago/./src/components/auth-message.js","webpack://misago/./src/initializers/components/auth-message.js","webpack://misago/./src/initializers/components/banned-page.js","webpack://misago/./src/components/categories/blankslate.js","webpack://misago/./src/components/categories/category/list-item/description.js","webpack://misago/./src/components/categories/category/list-item/icon.js","webpack://misago/./src/components/categories/category/list-item/main.js","webpack://misago/./src/components/categories/category/list-item/last-thread.js","webpack://misago/./src/components/categories/category/list-item/stats.js","webpack://misago/./src/components/categories/category/list-item/subcategories/list-item.js","webpack://misago/./src/components/categories/category/list-item/subcategories/index.js","webpack://misago/./src/components/categories/category/list-item/index.js","webpack://misago/./src/components/categories/category/index.js","webpack://misago/./src/components/categories/categories-list.js","webpack://misago/./src/components/categories/index.js","webpack://misago/./src/initializers/components/categories.js","webpack://misago/./src/components/options/navs.js","webpack://misago/./src/components/options/delete-account.js","webpack://misago/./src/components/options/edit-details.js","webpack://misago/./src/components/options/download-data.js","webpack://misago/./src/components/options/forum-options.js","webpack://misago/./src/components/options/change-username/form-loading.js","webpack://misago/./src/components/options/change-username/form-locked.js","webpack://misago/./src/components/options/change-username/form.js","webpack://misago/./src/components/options/change-username/root.js","webpack://misago/./src/components/options/sign-in-credentials/change-email.js","webpack://misago/./src/components/options/sign-in-credentials/change-password.js","webpack://misago/./src/components/options/sign-in-credentials/UnusablePasswordMessage.js","webpack://misago/./src/components/options/sign-in-credentials/root.js","webpack://misago/./src/components/options/root.js","webpack://misago/./src/initializers/components/options.js","webpack://misago/./src/components/profile/ban-details.js","webpack://misago/./src/components/profile/details/form.js","webpack://misago/./src/components/profile/details/empty-message.js","webpack://misago/./src/components/profile/details/field-value.js","webpack://misago/./src/components/profile/details/field.js","webpack://misago/./src/components/profile/details/group.js","webpack://misago/./src/components/profile/details/groups-list.js","webpack://misago/./src/components/profile/details/header.js","webpack://misago/./src/data/profile-details.js","webpack://misago/./src/components/profile/details/index.js","webpack://misago/./src/components/profile/feed/route.js","webpack://misago/./src/components/quick-search.js","webpack://misago/./src/components/profile/followers.js","webpack://misago/./src/components/profile/follows.js","webpack://misago/./src/components/profile/username-history.js","webpack://misago/./src/components/profile/follow-button.js","webpack://misago/./src/components/profile/message-button.js","webpack://misago/./src/components/profile/moderation/avatar-controls.js","webpack://misago/./src/components/profile/moderation/change-username.js","webpack://misago/./src/components/profile/moderation/delete-account.js","webpack://misago/./src/components/profile/moderation/nav.js","webpack://misago/./src/components/profile/ProfileDataList.jsx","webpack://misago/./src/components/profile/ProfileHeader.jsx","webpack://misago/./src/components/profile/ProfileNav.js","webpack://misago/./src/components/profile/root.js","webpack://misago/./src/components/profile/feed/index.js","webpack://misago/./src/initializers/components/profile.js","webpack://misago/./src/components/request-activation-link.js","webpack://misago/./src/initializers/components/request-activation-link.js","webpack://misago/./src/components/request-password-reset.js","webpack://misago/./src/initializers/components/request-password-reset.js","webpack://misago/./src/components/reset-password-form.js","webpack://misago/./src/initializers/components/reset-password-form.js","webpack://misago/./src/components/search/form.js","webpack://misago/./src/components/search/sidenav.js","webpack://misago/./src/components/search/page.js","webpack://misago/./src/components/search/threads/results.js","webpack://misago/./src/components/search/threads/index.js","webpack://misago/./src/components/search/users/index.js","webpack://misago/./src/components/search/index.js","webpack://misago/./src/initializers/components/search.js","webpack://misago/./src/components/snackbar.js","webpack://misago/./src/initializers/components/snackbar.js","webpack://misago/./src/components/social-auth/header.js","webpack://misago/./src/components/social-auth/register.js","webpack://misago/./src/components/social-auth/complete.js","webpack://misago/./src/components/social-auth/index.js","webpack://misago/./src/initializers/components/social-auth.js","webpack://misago/./src/components/add-participant.js","webpack://misago/./src/components/participants/add-participant.js","webpack://misago/./src/components/participants/cards-list/make-owner.js","webpack://misago/./src/components/participants/cards-list/actions.js","webpack://misago/./src/components/participants/cards-list/remove.js","webpack://misago/./src/components/participants/cards-list/card.js","webpack://misago/./src/components/participants/cards-list/index.js","webpack://misago/./src/components/participants/index.js","webpack://misago/./src/components/participants/utils.js","webpack://misago/./src/components/posts-list/event/icon.js","webpack://misago/./src/components/posts-list/event/controls.js","webpack://misago/./src/components/posts-list/event/info.js","webpack://misago/./src/components/posts-list/event/message.js","webpack://misago/./src/components/posts-list/event/unread-label.js","webpack://misago/./src/components/posts-list/waypoint.js","webpack://misago/./src/components/posts-list/event/index.js","webpack://misago/./src/components/posts-list/post/attachments/attachment.js","webpack://misago/./src/components/posts-list/post/attachments/index.js","webpack://misago/./src/components/posts-list/post/body.js","webpack://misago/./src/components/posts-list/post/flags.js","webpack://misago/./src/components/posts-list/post/controls/actions.js","webpack://misago/./src/components/post-likes.js","webpack://misago/./src/components/posts-list/post/footer.js","webpack://misago/./src/components/posts-list/post/controls/move.js","webpack://misago/./src/components/post-changelog/diff.js","webpack://misago/./src/components/post-changelog/footer.js","webpack://misago/./src/components/post-changelog/toolbar.js","webpack://misago/./src/components/post-changelog/utils.js","webpack://misago/./src/components/post-changelog/index.js","webpack://misago/./src/components/posts-list/post/controls/split.js","webpack://misago/./src/components/posts-list/post/controls/dropdown.js","webpack://misago/./src/components/posts-list/post/controls/index.js","webpack://misago/./src/components/posts-list/post/select.js","webpack://misago/./src/components/posts-list/post/header.js","webpack://misago/./src/components/posts-list/post/post-side/anonymous.js","webpack://misago/./src/components/posts-list/post/post-side/has-visible-title.js","webpack://misago/./src/components/posts-list/post/post-side/user-postcount.js","webpack://misago/./src/components/posts-list/post/post-side/user-status.js","webpack://misago/./src/components/posts-list/post/post-side/user-title.js","webpack://misago/./src/components/posts-list/post/post-side/registered.js","webpack://misago/./src/components/posts-list/post/post-side/index.js","webpack://misago/./src/components/posts-list/post/index.js","webpack://misago/./src/components/posts-list/post/preview.js","webpack://misago/./src/components/posts-list/index.js","webpack://misago/./src/components/ThreadStarterCard.jsx","webpack://misago/./src/components/thread/moderation/thread/ThreadChangeTitleModal.jsx","webpack://misago/./src/components/thread/moderation/thread/merge.js","webpack://misago/./src/components/thread/moderation/thread/move.js","webpack://misago/./src/components/thread/moderation/thread/controls.js","webpack://misago/./src/components/thread/moderation/thread/index.js","webpack://misago/./src/components/thread/ThreadModeration.jsx","webpack://misago/./src/components/thread/ThreadSubscriptionButton.jsx","webpack://misago/./src/components/Breadcrumbs/Breadcrumbs.jsx","webpack://misago/./src/components/Breadcrumbs/BreadcrumbsCategory.jsx","webpack://misago/./src/components/Breadcrumbs/BreadcrumbsRootCategory.jsx","webpack://misago/./src/components/thread/ThreadHeader/ThreadHeaderBreadcrumbs.jsx","webpack://misago/./src/components/thread/ThreadHeader/index.js","webpack://misago/./src/components/thread/ThreadHeader/ThreadHeader.jsx","webpack://misago/./src/components/thread/ThreadPagination.jsx","webpack://misago/./src/components/thread/ThreadPostsLeft.jsx","webpack://misago/./src/components/thread/moderation/posts/errors-list.js","webpack://misago/./src/components/thread/moderation/posts/actions.js","webpack://misago/./src/components/thread/moderation/posts/move.js","webpack://misago/./src/components/thread/moderation/posts/split.js","webpack://misago/./src/components/thread/moderation/posts/dropdown.js","webpack://misago/./src/components/thread/ThreadPostsModeration.jsx","webpack://misago/./src/components/thread/ThreadReplyButton.jsx","webpack://misago/./src/components/thread/ThreadToolbarBottom.jsx","webpack://misago/./src/components/thread/ThreadPollButton.jsx","webpack://misago/./src/components/thread/ThreadShortcutsButton.jsx","webpack://misago/./src/components/thread/ThreadToolbarTop.jsx","webpack://misago/./src/components/thread/route.js","webpack://misago/./src/components/thread/root.js","webpack://misago/./src/initializers/components/thread.js","webpack://misago/./src/components/threads/compare.js","webpack://misago/./src/components/threads/ThreadsCategoryPicker.jsx","webpack://misago/./src/components/threads/ThreadsListPicker.jsx","webpack://misago/./src/components/threads/moderation/errors-list.js","webpack://misago/./src/components/threads/moderation/merge.js","webpack://misago/./src/components/threads/moderation/move.js","webpack://misago/./src/components/threads/moderation/controls.js","webpack://misago/./src/components/threads/ThreadsToolbarModeration.jsx","webpack://misago/./src/components/threads/ThreadsToolbar.jsx","webpack://misago/./src/components/threads/container.js","webpack://misago/./src/components/threads/utils.js","webpack://misago/./src/components/ThreadsList/ThreadsListEmpty.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemActivity.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemCategory.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemCheckbox.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemIcon.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemLastPoster.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemSubscriptionOptions.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemSubscription.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItem.jsx","webpack://misago/./src/components/UIPreview/UIPreviewText.js","webpack://misago/./src/components/ThreadsList/ThreadsListLoader.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListUpdatePrompt.jsx","webpack://misago/./src/components/ThreadsList/index.js","webpack://misago/./src/components/ThreadsList/ThreadsList.jsx","webpack://misago/./src/components/threads/route.js","webpack://misago/./src/initializers/components/threads.js","webpack://misago/./src/components/threads/root.js","webpack://misago/./src/components/navbar-search/clean-results.js","webpack://misago/./src/components/navbar-search/dropdown/constants.js","webpack://misago/./src/components/navbar-search/dropdown/input.js","webpack://misago/./src/components/navbar-search/dropdown/dropdown-menu.js","webpack://misago/./src/components/navbar-search/dropdown/empty.js","webpack://misago/./src/components/navbar-search/dropdown/loader.js","webpack://misago/./src/components/navbar-search/dropdown/result/footer.js","webpack://misago/./src/components/navbar-search/dropdown/result/header.js","webpack://misago/./src/components/navbar-search/dropdown/result/thread.js","webpack://misago/./src/components/navbar-search/dropdown/result/user.js","webpack://misago/./src/components/navbar-search/dropdown/result/result.js","webpack://misago/./src/components/navbar-search/dropdown/result/index.js","webpack://misago/./src/components/navbar-search/dropdown/flatten-results.js","webpack://misago/./src/components/navbar-search/dropdown/index.js","webpack://misago/./src/components/navbar-search/index.js","webpack://misago/./src/components/password-strength.js","webpack://misago/./src/components/register.js","webpack://misago/./src/components/register-button.js","webpack://misago/./src/components/user-menu/guest-nav.js","webpack://misago/./src/components/change-avatar/index.js","webpack://misago/./src/components/change-avatar/crop.js","webpack://misago/./src/components/change-avatar/upload.js","webpack://misago/./src/components/change-avatar/gallery.js","webpack://misago/./src/components/change-avatar/root.js","webpack://misago/./src/components/user-menu/user-nav.js","webpack://misago/./src/components/user-menu/root.js","webpack://misago/./src/initializers/components/user-menu.js","webpack://misago/./src/components/users/UsersNav.js","webpack://misago/./src/components/users/active-posters/list-empty.js","webpack://misago/./src/components/users/active-posters/list-item-preview.js","webpack://misago/./src/components/users/active-posters/list-preview.js","webpack://misago/./src/components/users/active-posters/list-item.js","webpack://misago/./src/components/users/active-posters/list-ready.js","webpack://misago/./src/components/users/active-posters/root.js","webpack://misago/./src/components/page-lead.js","webpack://misago/./src/utils/string-count.js","webpack://misago/./src/components/users/rank/RankUsersList.js","webpack://misago/./src/components/users/rank/RankUsersListLoader.js","webpack://misago/./src/components/users/rank/RankUsersLeft.jsx","webpack://misago/./src/components/users/rank/RankUsersPagination.jsx","webpack://misago/./src/components/users/rank/RankUsersToolbar.jsx","webpack://misago/./src/components/users/rank/root.js","webpack://misago/./src/components/users/root.js","webpack://misago/./src/initializers/components/users.js","webpack://misago/./src/initializers/include.js","webpack://misago/./src/initializers/local-storage.js","webpack://misago/./src/initializers/mobile-navbar-dropdown.js","webpack://misago/./src/initializers/modal.js","webpack://misago/./src/initializers/moment-locale.js","webpack://misago/./src/initializers/page-title.js","webpack://misago/./src/initializers/polls.js","webpack://misago/./src/initializers/posting.js","webpack://misago/./src/initializers/reducers/auth.js","webpack://misago/./src/initializers/reducers/participants.js","webpack://misago/./src/initializers/reducers/poll.js","webpack://misago/./src/initializers/reducers/posts.js","webpack://misago/./src/initializers/reducers/profile-details.js","webpack://misago/./src/initializers/reducers/profile-hydrate.js","webpack://misago/./src/initializers/reducers/profile.js","webpack://misago/./src/initializers/reducers/search.js","webpack://misago/./src/initializers/reducers/selection.js","webpack://misago/./src/initializers/reducers/snackbar.js","webpack://misago/./src/initializers/reducers/thread.js","webpack://misago/./src/initializers/reducers/threads.js","webpack://misago/./src/initializers/reducers/tick.js","webpack://misago/./src/initializers/reducers/username-history.js","webpack://misago/./src/initializers/reducers/users.js","webpack://misago/./src/initializers/snackbar.js","webpack://misago/./src/initializers/store.js","webpack://misago/./src/initializers/tick-start.js","webpack://misago/./src/initializers/zxcvbn.js","webpack://misago/./src/reducers/auth.js","webpack://misago/./src/reducers/participants.js","webpack://misago/./src/reducers/poll.js","webpack://misago/./src/reducers/post.js","webpack://misago/./src/reducers/posts.js","webpack://misago/./src/reducers/profile-details.js","webpack://misago/./src/reducers/profile.js","webpack://misago/./src/reducers/search.js","webpack://misago/./src/reducers/selection.js","webpack://misago/./src/reducers/snackbar.js","webpack://misago/./src/reducers/thread.js","webpack://misago/./src/reducers/threads.js","webpack://misago/./src/reducers/tick.js","webpack://misago/./src/reducers/username-history.js","webpack://misago/./src/reducers/users.js","webpack://misago/./src/services/ajax.js","webpack://misago/./src/services/auth.js","webpack://misago/./src/services/captcha.js","webpack://misago/./src/services/include.js","webpack://misago/./src/services/local-storage.js","webpack://misago/./src/services/mobile-navbar-dropdown.js","webpack://misago/./src/services/modal.js","webpack://misago/./src/services/page-title.js","webpack://misago/./src/services/polls.js","webpack://misago/./src/components/editor/actions/action.js","webpack://misago/./src/components/editor/actions/code.js","webpack://misago/./src/components/editor/actions/emphasis.js","webpack://misago/./src/components/editor/actions/hr.js","webpack://misago/./src/utils/is-url.js","webpack://misago/./src/components/editor/actions/image.js","webpack://misago/./src/components/editor/actions/link.js","webpack://misago/./src/components/editor/actions/spoiler.js","webpack://misago/./src/components/editor/actions/strikethrough.js","webpack://misago/./src/components/editor/actions/strong.js","webpack://misago/./src/components/editor/actions/quote.js","webpack://misago/./src/components/editor/attachments/attachment/complete.js","webpack://misago/./src/components/editor/attachments/attachment/error.js","webpack://misago/./src/components/editor/attachments/attachment/upload.js","webpack://misago/./src/components/editor/attachments/attachment/index.js","webpack://misago/./src/components/editor/attachments/list.js","webpack://misago/./src/components/editor/attachments/uploader.js","webpack://misago/./src/components/editor/attachments/index.js","webpack://misago/./src/components/editor/attachments/upload-button.js","webpack://misago/./src/components/editor/markup-preview.js","webpack://misago/./src/components/editor/textutils.js","webpack://misago/./src/components/editor/index.js","webpack://misago/./src/components/posting/utils/container.js","webpack://misago/./src/components/posting/utils/loader.js","webpack://misago/./src/components/posting/utils/message.js","webpack://misago/./src/components/posting/utils/options.js","webpack://misago/./src/components/posting/utils/attachments.js","webpack://misago/./src/components/posting/start.js","webpack://misago/./src/components/posting/utils/usernames.js","webpack://misago/./src/components/posting/start-private.js","webpack://misago/./src/components/posting/reply.js","webpack://misago/./src/components/posting/edit.js","webpack://misago/./src/components/posting/index.js","webpack://misago/./src/services/posting.js","webpack://misago/./src/services/snackbar.js","webpack://misago/./src/services/store.js","webpack://misago/./src/services/zxcvbn.js","webpack://misago/./src/components/banned-page.js","webpack://misago/./src/utils/banned-page.js","webpack://misago/./src/utils/batch.js","webpack://misago/./src/utils/concat-unique.js","webpack://misago/./src/utils/escape-html.js","webpack://misago/./src/utils/file-size.js","webpack://misago/./src/utils/mount-component.js","webpack://misago/./src/utils/random.js","webpack://misago/./src/utils/routed-component.js","webpack://misago/./src/utils/sets.js","webpack://misago/./src/utils/validators.js","webpack://misago/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://misago/webpack/bootstrap","webpack://misago/webpack/runtime/compat get default export","webpack://misago/webpack/runtime/define property getters","webpack://misago/webpack/runtime/global","webpack://misago/webpack/runtime/harmony module decorator","webpack://misago/webpack/runtime/hasOwnProperty shorthand","webpack://misago/webpack/runtime/make namespace object","webpack://misago/webpack/runtime/node module decorator","webpack://misago/webpack/runtime/jsonp chunk loading","webpack://misago/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*! highlight.js v9.9.0 | BSD3 License | git.io/hljslicense */\n!function(e){var n=\"object\"==typeof window&&window||\"object\"==typeof self&&self;\"undefined\"!=typeof undefined?e(exports):n&&(n.hljs=e({}),\"function\"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return I[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function i(e){return k.test(e)}function a(e){var n,t,r,a,o=e.className+\" \";if(o+=e.parentNode?e.parentNode.className:\"\",t=B.exec(o))return R(t[1])?t[1]:\"no-highlight\";for(o=o.split(/\\s+/),n=0,r=o.length;r>n;n++)if(a=o[n],i(a)||R(a))return a}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,i){for(var a=e.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(n.push({event:\"start\",offset:i,node:a}),i=r(a,i),t(a).match(/br|hr|img|input/)||n.push({event:\"stop\",offset:i,node:a}));return i}(e,0),n}function c(e,r,i){function a(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset<r[0].offset?e:r:\"start\"===r[0].event?e:r:e.length?e:r}function o(e){function r(e){return\" \"+e.nodeName+'=\"'+n(e.value)+'\"'}l+=\"<\"+t(e)+w.map.call(e.attributes,r).join(\"\")+\">\"}function u(e){l+=\"</\"+t(e)+\">\"}function c(e){(\"start\"===e.event?o:u)(e.node)}for(var s=0,l=\"\",f=[];e.length||r.length;){var g=a();if(l+=n(i.substring(s,g[0].offset)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=a();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else\"start\"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(i.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),\"m\"+(e.cI?\"i\":\"\")+(r?\"g\":\"\"))}function r(i,a){if(!i.compiled){if(i.compiled=!0,i.k=i.k||i.bK,i.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(\" \").forEach(function(e){var t=e.split(\"|\");u[t[0]]=[n,t[1]?Number(t[1]):1]})};\"string\"==typeof i.k?c(\"keyword\",i.k):E(i.k).forEach(function(e){c(e,i.k[e])}),i.k=u}i.lR=t(i.l||/\\w+/,!0),a&&(i.bK&&(i.b=\"\\\\b(\"+i.bK.split(\" \").join(\"|\")+\")\\\\b\"),i.b||(i.b=/\\B|\\b/),i.bR=t(i.b),i.e||i.eW||(i.e=/\\B|\\b/),i.e&&(i.eR=t(i.e)),i.tE=n(i.e)||\"\",i.eW&&a.tE&&(i.tE+=(i.e?\"|\":\"\")+a.tE)),i.i&&(i.iR=t(i.i)),null==i.r&&(i.r=1),i.c||(i.c=[]);var s=[];i.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push(\"self\"===e?i:e)}),i.c=s,i.c.forEach(function(e){r(e,i)}),i.starts&&r(i.starts,a);var l=i.c.map(function(e){return e.bK?\"\\\\.?(\"+e.b+\")\\\\.?\":e.b}).concat([i.tE,i.i]).map(n).filter(Boolean);i.t=l.length?t(l.join(\"|\"),!0):{exec:function(){return null}}}}r(e)}function l(e,t,i,a){function o(e,n){var t,i;for(t=0,i=n.c.length;i>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!i&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var i=r?\"\":y.classPrefix,a='<span class=\"'+i,o=t?\"\":C;return a+=e+'\">',a+n+o}function p(){var e,t,r,i;if(!E.k)return n(B);for(i=\"\",t=0,E.lR.lastIndex=0,r=E.lR.exec(B);r;)i+=n(B.substring(t,r.index)),e=g(E,r),e?(M+=e[1],i+=h(e[0],n(r[0]))):i+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(B);return i+n(B.substr(t))}function d(){var e=\"string\"==typeof E.sL;if(e&&!x[E.sL])return n(B);var t=e?l(E.sL,B,!0,L[E.sL]):f(B,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(L[E.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){k+=null!=E.sL?d():p(),B=\"\"}function v(e){k+=e.cN?h(e.cN,\"\",!0):\"\",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(B+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?B+=n:(t.eB&&(B+=n),b(),t.rB||t.eB||(B=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var i=E;i.skip?B+=n:(i.rE||i.eE||(B+=n),b(),i.eE&&(B=n));do E.cN&&(k+=C),E.skip||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,\"\"),i.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme \"'+n+'\" for mode \"'+(E.cN||\"<unnamed>\")+'\"');return B+=n,n.length||1}var N=R(e);if(!N)throw new Error('Unknown language: \"'+e+'\"');s(N);var w,E=a||N,L={},k=\"\";for(w=E;w!==N;w=w.parent)w.cN&&(k=h(w.cN,\"\",!0)+k);var B=\"\",M=0;try{for(var I,j,O=0;;){if(E.t.lastIndex=O,I=E.t.exec(t),!I)break;j=m(t.substring(O,I.index),I[0]),O=I.index+j}for(m(t.substr(O)),w=E;w.parent;w=w.parent)w.cN&&(k+=C);return{r:M,value:k,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf(\"Illegal\"))return{r:0,value:n(t)};throw T}}function f(e,t){t=t||y.languages||E(x);var r={r:0,value:n(e)},i=r;return t.filter(R).forEach(function(n){var t=l(n,e,!1);t.language=n,t.r>i.r&&(i=t),t.r>r.r&&(i=r,r=t)}),i.language&&(r.second_best=i),r}function g(e){return y.tabReplace||y.useBR?e.replace(M,function(e,n){return y.useBR&&\"\\n\"===e?\"<br>\":y.tabReplace?n.replace(/\\t/g,y.tabReplace):void 0}):e}function h(e,n,t){var r=n?L[n]:t,i=[e.trim()];return e.match(/\\bhljs\\b/)||i.push(\"hljs\"),-1===e.indexOf(r)&&i.push(r),i.join(\" \").trim()}function p(e){var n,t,r,o,s,p=a(e);i(p)||(y.useBR?(n=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),n.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ \\/]*>/g,\"\\n\")):n=e,s=n.textContent,r=p?l(p,s,!0):f(s),t=u(n),t.length&&(o=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=g(r.value),e.innerHTML=r.value,e.className=h(e.className,p,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function d(e){y=o(y,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll(\"pre code\");w.forEach.call(e,p)}}function v(){addEventListener(\"DOMContentLoaded\",b,!1),addEventListener(\"load\",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function N(){return E(x)}function R(e){return e=(e||\"\").toLowerCase(),x[e]||x[L[e]]}var w=[],E=Object.keys,x={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\\blang(?:uage)?-([\\w-]+)\\b/i,M=/((^(<[^>]+>|\\t|)+|(?:\\n)))/gm,C=\"</span>\",y={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},I={\"&\":\"&\",\"<\":\"<\",\">\":\">\"};return e.highlight=l,e.highlightAuto=f,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=R,e.inherit=o,e.IR=\"[a-zA-Z]\\\\w*\",e.UIR=\"[a-zA-Z_]\\\\w*\",e.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",e.CNR=\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",e.BNR=\"\\\\b(0b[01]+)\",e.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",e.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0},e.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[e.BE]},e.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\\b/},e.C=function(n,t,r){var i=e.inherit({cN:\"comment\",b:n,e:t,c:[]},r||{});return i.c.push(e.PWM),i.c.push({cN:\"doctag\",b:\"(?:TODO|FIXME|NOTE|BUG|XXX):\",r:0}),i},e.CLCM=e.C(\"//\",\"$\"),e.CBCM=e.C(\"/\\\\*\",\"\\\\*/\"),e.HCM=e.C(\"#\",\"$\"),e.NM={cN:\"number\",b:e.NR,r:0},e.CNM={cN:\"number\",b:e.CNR,r:0},e.BNM={cN:\"number\",b:e.BNR,r:0},e.CSSNM={cN:\"number\",b:e.NR+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",r:0},e.RM={cN:\"regexp\",b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:\"title\",b:e.IR,r:0},e.UTM={cN:\"title\",b:e.UIR,r:0},e.METHOD_GUARD={b:\"\\\\.\\\\s*\"+e.UIR,r:0},e});hljs.registerLanguage(\"xml\",function(s){var e=\"[A-Za-z0-9\\\\._:-]+\",t={eW:!0,i:/</,r:0,c:[{cN:\"attr\",b:e,r:0},{b:/=\\s*/,r:0,c:[{cN:\"string\",endsParent:!0,v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\"'=<>`]+/}]}]}]};return{aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xjb\",\"xsd\",\"xsl\",\"plist\"],cI:!0,c:[{cN:\"meta\",b:\"<!DOCTYPE\",e:\">\",r:10,c:[{b:\"\\\\[\",e:\"\\\\]\"}]},s.C(\"<!--\",\"-->\",{r:10}),{b:\"<\\\\!\\\\[CDATA\\\\[\",e:\"\\\\]\\\\]>\",r:10},{b:/<\\?(php)?/,e:/\\?>/,sL:\"php\",c:[{b:\"/\\\\*\",e:\"\\\\*/\",skip:!0}]},{cN:\"tag\",b:\"<style(?=\\\\s|>|$)\",e:\">\",k:{name:\"style\"},c:[t],starts:{e:\"</style>\",rE:!0,sL:[\"css\",\"xml\"]}},{cN:\"tag\",b:\"<script(?=\\\\s|>|$)\",e:\">\",k:{name:\"script\"},c:[t],starts:{e:\"</script>\",rE:!0,sL:[\"actionscript\",\"javascript\",\"handlebars\",\"xml\"]}},{cN:\"meta\",v:[{b:/<\\?xml/,e:/\\?>/,r:10},{b:/<\\?\\w+/,e:/\\?>/}]},{cN:\"tag\",b:\"</?\",e:\"/?>\",c:[{cN:\"name\",b:/[^\\/><\\s]+/,r:0},t]}]}});hljs.registerLanguage(\"markdown\",function(e){return{aliases:[\"md\",\"mkdown\",\"mkd\"],c:[{cN:\"section\",v:[{b:\"^#{1,6}\",e:\"$\"},{b:\"^.+?\\\\n[=-]{2,}$\"}]},{b:\"<\",e:\">\",sL:\"xml\",r:0},{cN:\"bullet\",b:\"^([*+-]|(\\\\d+\\\\.))\\\\s+\"},{cN:\"strong\",b:\"[*_]{2}.+?[*_]{2}\"},{cN:\"emphasis\",v:[{b:\"\\\\*.+?\\\\*\"},{b:\"_.+?_\",r:0}]},{cN:\"quote\",b:\"^>\\\\s+\",e:\"$\"},{cN:\"code\",v:[{b:\"^```w*s*$\",e:\"^```s*$\"},{b:\"`.+?`\"},{b:\"^( {4}|\t)\",e:\"$\",r:0}]},{b:\"^[-\\\\*]{3,}\",e:\"$\"},{b:\"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",rB:!0,c:[{cN:\"string\",b:\"\\\\[\",e:\"\\\\]\",eB:!0,rE:!0,r:0},{cN:\"link\",b:\"\\\\]\\\\(\",e:\"\\\\)\",eB:!0,eE:!0},{cN:\"symbol\",b:\"\\\\]\\\\[\",e:\"\\\\]\",eB:!0,eE:!0}],r:10},{b:/^\\[[^\\n]+\\]:/,rB:!0,c:[{cN:\"symbol\",b:/\\[/,e:/\\]/,eB:!0,eE:!0},{cN:\"link\",b:/:\\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage(\"ini\",function(e){var b={cN:\"string\",c:[e.BE],v:[{b:\"'''\",e:\"'''\",r:10},{b:'\"\"\"',e:'\"\"\"',r:10},{b:'\"',e:'\"'},{b:\"'\",e:\"'\"}]};return{aliases:[\"toml\"],cI:!0,i:/\\S/,c:[e.C(\";\",\"$\"),e.HCM,{cN:\"section\",b:/^\\s*\\[+/,e:/\\]+/},{b:/^[a-z0-9\\[\\]_-]+\\s*=\\s*/,e:\"$\",rB:!0,c:[{cN:\"attr\",b:/[a-z0-9\\[\\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:\"literal\",b:/\\bon|off|true|false|yes|no\\b/},{cN:\"variable\",v:[{b:/\\$[\\w\\d\"][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},b,{cN:\"number\",b:/([\\+\\-]+)?[\\d]+_[\\d_]+/},e.NM]}]}]}});hljs.registerLanguage(\"python\",function(e){var r={cN:\"meta\",b:/^(>>>|\\.\\.\\.) /},b={cN:\"string\",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},e.ASM,e.QSM]},a={cN:\"number\",r:0,v:[{b:e.BNR+\"[lLjJ]?\"},{b:\"\\\\b(0o[0-7]+)[lLjJ]?\"},{b:e.CNR+\"[lLjJ]?\"}]},l={cN:\"params\",b:/\\(/,e:/\\)/,c:[\"self\",r,a,b]};return{aliases:[\"py\",\"gyp\"],k:{keyword:\"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False\",built_in:\"Ellipsis NotImplemented\"},i:/(<\\/|->|\\?)|=>/,c:[r,a,b,e.HCM,{v:[{cN:\"function\",bK:\"def\"},{cN:\"class\",bK:\"class\"}],e:/:/,i:/[${=;\\n,]/,c:[e.UTM,l,{b:/->/,eW:!0,k:\"None\"}]},{cN:\"meta\",b:/^[\\t ]*@/,e:/$/},{b:/\\b(print|exec)\\(/}]}});hljs.registerLanguage(\"css\",function(e){var c=\"[a-zA-Z-][a-zA-Z0-9_-]*\",t={b:/[A-Z\\_\\.\\-]+\\s*:/,rB:!0,e:\";\",eW:!0,c:[{cN:\"attribute\",b:/\\S/,e:\":\",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\\w-]+\\(/,rB:!0,c:[{cN:\"built_in\",b:/[\\w-]+/},{b:/\\(/,e:/\\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"number\",b:\"#[0-9A-Fa-f]+\"},{cN:\"meta\",b:\"!important\"}]}}]};return{cI:!0,i:/[=\\/|'\\$]/,c:[e.CBCM,{cN:\"selector-id\",b:/#[A-Za-z0-9_-]+/},{cN:\"selector-class\",b:/\\.[A-Za-z0-9_-]+/},{cN:\"selector-attr\",b:/\\[/,e:/\\]/,i:\"$\"},{cN:\"selector-pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},{b:\"@(font-face|page)\",l:\"[a-z-]+\",k:\"font-face page\"},{b:\"@\",e:\"[{;]\",i:/:/,c:[{cN:\"keyword\",b:/\\w+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:\"selector-tag\",b:c,r:0},{b:\"{\",e:\"}\",i:/\\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage(\"less\",function(e){var r=\"[\\\\w-]+\",t=\"(\"+r+\"|@{\"+r+\"})\",a=[],c=[],s=function(e){return{cN:\"string\",b:\"~?\"+e+\".*?\"+e}},b=function(e,r,t){return{cN:e,b:r,r:t}},n={b:\"\\\\(\",e:\"\\\\)\",c:c,r:0};c.push(e.CLCM,e.CBCM,s(\"'\"),s('\"'),e.CSSNM,{b:\"(url|data-uri)\\\\(\",starts:{cN:\"string\",e:\"[\\\\)\\\\n]\",eE:!0}},b(\"number\",\"#[0-9A-Fa-f]+\\\\b\"),n,b(\"variable\",\"@@?\"+r,10),b(\"variable\",\"@{\"+r+\"}\"),b(\"built_in\",\"~?`[^`]*?`\"),{cN:\"attribute\",b:r+\"\\\\s*:\",e:\":\",rB:!0,eE:!0},{cN:\"meta\",b:\"!important\"});var i=c.concat({b:\"{\",e:\"}\",c:a}),o={bK:\"when\",eW:!0,c:[{bK:\"and not\"}].concat(c)},u={b:t+\"\\\\s*:\",rB:!0,e:\"[;}]\",r:0,c:[{cN:\"attribute\",b:t,e:\":\",eE:!0,starts:{eW:!0,i:\"[<=$]\",r:0,c:c}}]},l={cN:\"keyword\",b:\"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b\",starts:{e:\"[;{}]\",rE:!0,c:c,r:0}},C={cN:\"variable\",v:[{b:\"@\"+r+\"\\\\s*:\",r:15},{b:\"@\"+r}],starts:{e:\"[;}]\",rE:!0,c:i}},p={v:[{b:\"[\\\\.#:&\\\\[>]\",e:\"[;{}]\"},{b:t,e:\"{\"}],rB:!0,rE:!0,i:\"[<='$\\\"]\",r:0,c:[e.CLCM,e.CBCM,o,b(\"keyword\",\"all\\\\b\"),b(\"variable\",\"@{\"+r+\"}\"),b(\"selector-tag\",t+\"%?\",0),b(\"selector-id\",\"#\"+t),b(\"selector-class\",\"\\\\.\"+t,0),b(\"selector-tag\",\"&\",0),{cN:\"selector-attr\",b:\"\\\\[\",e:\"\\\\]\"},{cN:\"selector-pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},{b:\"\\\\(\",e:\"\\\\)\",c:i},{b:\"!important\"}]};return a.push(e.CLCM,e.CBCM,l,C,u,p),{cI:!0,i:\"[=>'/<($\\\"]\",c:a}});hljs.registerLanguage(\"scss\",function(e){var t=\"[a-zA-Z-][a-zA-Z0-9_-]*\",i={cN:\"variable\",b:\"(\\\\$\"+t+\")\\\\b\"},r={cN:\"number\",b:\"#[0-9A-Fa-f]+\"};({cN:\"attribute\",b:\"[A-Z\\\\_\\\\.\\\\-]+\",e:\":\",eE:!0,i:\"[^\\\\s]\",starts:{eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"meta\",b:\"!important\"}]}});return{cI:!0,i:\"[=/|']\",c:[e.CLCM,e.CBCM,{cN:\"selector-id\",b:\"\\\\#[A-Za-z0-9_-]+\",r:0},{cN:\"selector-class\",b:\"\\\\.[A-Za-z0-9_-]+\",r:0},{cN:\"selector-attr\",b:\"\\\\[\",e:\"\\\\]\",i:\"$\"},{cN:\"selector-tag\",b:\"\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b\",r:0},{b:\":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)\"},{b:\"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)\"},i,{cN:\"attribute\",b:\"\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b\",i:\"[^\\\\s]\"},{b:\"\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\"},{b:\":\",e:\";\",c:[i,r,e.CSSNM,e.QSM,e.ASM,{cN:\"meta\",b:\"!important\"}]},{b:\"@\",e:\"[{;]\",k:\"mixin include extend for if else each while charset import debug media page content font-face namespace warn\",c:[i,e.QSM,e.ASM,r,e.CSSNM,{b:\"\\\\s[A-Za-z0-9_.-]+\",r:0}]}]}});hljs.registerLanguage(\"json\",function(e){var i={literal:\"true false null\"},n=[e.QSM,e.CNM],r={e:\",\",eW:!0,eE:!0,c:n,k:i},t={b:\"{\",e:\"}\",c:[{cN:\"attr\",b:/\"/,e:/\"/,c:[e.BE],i:\"\\\\n\"},e.inherit(r,{b:/:/})],i:\"\\\\S\"},c={b:\"\\\\[\",e:\"\\\\]\",c:[e.inherit(r)],i:\"\\\\S\"};return n.splice(n.length,0,t,c),{c:n,k:i,i:\"\\\\S\"}});hljs.registerLanguage(\"javascript\",function(e){var r=\"[A-Za-z$_][0-9A-Za-z$_]*\",t={keyword:\"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as\",literal:\"true false null undefined NaN Infinity\",built_in:\"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"},a={cN:\"number\",v:[{b:\"\\\\b(0[bB][01]+)\"},{b:\"\\\\b(0[oO][0-7]+)\"},{b:e.CNR}],r:0},n={cN:\"subst\",b:\"\\\\$\\\\{\",e:\"\\\\}\",k:t,c:[]},c={cN:\"string\",b:\"`\",e:\"`\",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:[\"js\",\"jsx\"],k:t,c:[{cN:\"meta\",r:10,b:/^\\s*['\"]use (strict|asm)['\"]/},{cN:\"meta\",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\\s*/,r:0,c:[{b:r+\"\\\\s*:\",rB:!0,r:0,c:[{cN:\"attr\",b:r,r:0}]}]},{b:\"(\"+e.RSR+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",k:\"return throw case\",c:[e.CLCM,e.CBCM,e.RM,{cN:\"function\",b:\"(\\\\(.*?\\\\)|\"+r+\")\\\\s*=>\",rB:!0,e:\"\\\\s*=>\",c:[{cN:\"params\",v:[{b:r},{b:/\\(\\s*\\)/},{b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\\/\\w+|\\w+\\/)>/,sL:\"xml\",c:[{b:/<\\w+\\s*\\/>/,skip:!0},{b:/<\\w+/,e:/(\\/\\w+|\\w+\\/)>/,skip:!0,c:[{b:/<\\w+\\s*\\/>/,skip:!0},\"self\"]}]}],r:0},{cN:\"function\",bK:\"function\",e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,c:s}],i:/\\[|%/},{b:/\\$[(.]/},e.METHOD_GUARD,{cN:\"class\",bK:\"class\",e:/[{;=]/,eE:!0,i:/[:\"\\[\\]]/,c:[{bK:\"extends\"},e.UTM]},{bK:\"constructor\",e:/\\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage(\"bash\",function(e){var t={cN:\"variable\",v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},s={cN:\"string\",b:/\"/,e:/\"/,c:[e.BE,t,{cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},a={cN:\"string\",b:/'/,e:/'/};return{aliases:[\"sh\",\"zsh\"],l:/-?[a-z\\._]+/,k:{keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",_:\"-ne -eq -lt -gt -f -d -e -s -l -a\"},c:[{cN:\"meta\",b:/^#![^\\n]+sh\\s*$/,r:10},{cN:\"function\",b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,s,a,t]}});","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRow = ({ children, className }) => (\n <div className={classnames(\"flex-row\", className)}>{children}</div>\n)\n\nexport default FlexRow\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRowCol = ({ children, className, shrink }) => (\n <div\n className={classnames(\"flex-row-col\", className, {\n \"flex-row-col-shrink\": shrink,\n })}\n >\n {children}\n </div>\n)\n\nexport default FlexRowCol\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRowSection = ({ auto, children, className }) => (\n <div\n className={classnames(\n \"flex-row-section\",\n { \"flex-row-section-auto\": auto },\n className\n )}\n >\n {children}\n </div>\n)\n\nexport default FlexRowSection\n","import React from \"react\"\n\nconst PageContainer = ({ children }) => (\n <div className=\"container page-container\">{children}</div>\n)\n\nexport default PageContainer\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeader = ({ children, className, styleName }) => (\n <div\n className={classnames(\n \"page-header\",\n className,\n styleName && \"page-header-\" + styleName\n )}\n >\n <div className=\"page-header-bg-image\">\n <div className=\"page-header-bg-overlay\">\n <div className=\"page-header-image\" />\n {children}\n </div>\n </div>\n </div>\n)\n\nexport default PageHeader\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderBanner = ({ children, className, styleName }) => (\n <div\n className={classnames(\n \"page-header-banner\",\n className,\n styleName && \"page-header-banner-\" + styleName\n )}\n >\n <div className=\"page-header-banner-bg-image\">\n <div className=\"page-header-banner-bg-overlay\">{children}</div>\n </div>\n </div>\n)\n\nexport default PageHeaderBanner\n","import React from \"react\"\n\nconst PageHeaderContainer = ({ children }) => (\n <div className=\"container page-header-container\">{children}</div>\n)\n\nexport default PageHeaderContainer\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderDetails = ({ children, className }) => (\n <div className={classnames(\"page-header-details\", className)}>{children}</div>\n)\n\nexport default PageHeaderDetails\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderHTMLMessage = ({ className, message }) => (\n <div\n className={classnames(\"page-header-message\", className)}\n dangerouslySetInnerHTML={{ __html: message }}\n />\n)\n\nexport default PageHeaderHTMLMessage\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderMessage = ({ children, className }) => (\n <div className={classnames(\"page-header-message\", className)}>{children}</div>\n)\n\nexport default PageHeaderMessage\n","import React from \"react\"\nimport PageHeader from \"./PageHeader\"\nimport PageHeaderBanner from \"./PageHeaderBanner\"\nimport PageHeaderContainer from \"./PageHeaderContainer\"\nimport PageHeaderDetails from \"./PageHeaderDetails\"\n\nconst PageHeaderPlain = ({ styleName, header, message }) => (\n <PageHeaderContainer>\n <PageHeader styleName={styleName}>\n <PageHeaderBanner styleName={styleName}>\n <h1>{header}</h1>\n </PageHeaderBanner>\n {message && (\n <PageHeaderDetails styleName={styleName}>{message}</PageHeaderDetails>\n )}\n </PageHeader>\n </PageHeaderContainer>\n)\n\nexport default PageHeaderPlain\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst AGREEMENT_URL = '<a href=\"%(url)s\" target=\"_blank\">%(agreement)s</a>'\n\nconst RegisterLegalFootnote = (props) => {\n const {\n errors,\n privacyPolicy,\n termsOfService,\n onPrivacyPolicyChange,\n onTermsOfServiceChange,\n } = props\n\n const termsOfServiceId = misago.get(\"TERMS_OF_SERVICE_ID\")\n const termsOfServiceUrl = misago.get(\"TERMS_OF_SERVICE_URL\")\n\n const privacyPolicyId = misago.get(\"PRIVACY_POLICY_ID\")\n const privacyPolicyUrl = misago.get(\"PRIVACY_POLICY_URL\")\n\n if (!termsOfServiceId && !privacyPolicyId) return null\n\n return (\n <div>\n <LegalAgreement\n agreement={gettext(\"the terms of service\")}\n checked={termsOfService !== null}\n errors={errors.termsOfService}\n url={termsOfServiceUrl}\n value={termsOfServiceId}\n onChange={onTermsOfServiceChange}\n />\n <LegalAgreement\n agreement={gettext(\"the privacy policy\")}\n checked={privacyPolicy !== null}\n errors={errors.privacyPolicy}\n url={privacyPolicyUrl}\n value={privacyPolicyId}\n onChange={onPrivacyPolicyChange}\n />\n </div>\n )\n}\n\nconst LegalAgreement = (props) => {\n const { agreement, checked, errors, url, value, onChange } = props\n\n if (!url) return null\n\n const agreementHtml = interpolate(\n AGREEMENT_URL,\n { agreement: escapeHtml(agreement), url: escapeHtml(url) },\n true\n )\n const label = interpolate(\n gettext(\"I have read and accept %(agreement)s.\"),\n { agreement: agreementHtml },\n true\n )\n\n return (\n <div className=\"checkbox legal-footnote\">\n <label>\n <input\n checked={checked}\n type=\"checkbox\"\n value={value}\n onChange={onChange}\n />\n <span dangerouslySetInnerHTML={{ __html: label }} />\n </label>\n {errors &&\n errors.map((error, i) => (\n <div className=\"help-block errors\" key={i}>\n {error}\n </div>\n ))}\n </div>\n )\n}\n\nexport default RegisterLegalFootnote\n","import React from \"react\"\nimport misago from \"misago\"\n\nconst StartSocialAuth = (props) => {\n const { buttonClassName, buttonLabel, formLabel, header, labelClassName } =\n props\n const socialAuth = misago.get(\"SOCIAL_AUTH\")\n\n if (socialAuth.length === 0) return null\n\n return (\n <div className=\"form-group form-social-auth\">\n <FormHeader className={labelClassName} text={header} />\n <div className=\"row\">\n {socialAuth.map(({ id, name, button_text, button_color, url }) => {\n const className = \"btn btn-block btn-default btn-social-\" + id\n const style = button_color ? { color: button_color } : null\n const finalButtonLabel =\n button_text || interpolate(buttonLabel, { site: name }, true)\n\n return (\n <div className={buttonClassName || \"col-xs-12\"} key={id}>\n <a className={className} style={style} href={url}>\n {finalButtonLabel}\n </a>\n </div>\n )\n })}\n </div>\n <hr />\n <FormHeader className={labelClassName} text={formLabel} />\n </div>\n )\n}\n\nconst FormHeader = ({ className, text }) => {\n if (!text) return null\n return <h5 className={className || \"\"}>{text}</h5>\n}\n\nexport default StartSocialAuth\n","import React from \"react\"\n\nconst ThreadFlags = ({ thread }) => (\n <ul className=\"thread-flags\">\n {thread.weight == 2 && (\n <li\n className=\"thread-flag-pinned-globally\"\n title={gettext(\"Pinned globally\")}\n >\n <span className=\"material-icon\">bookmark</span>\n </li>\n )}\n {thread.weight == 1 && (\n <li\n className=\"thread-flag-pinned-locally\"\n title={gettext(\"Pinned in category\")}\n >\n <span className=\"material-icon\">bookmark_outline</span>\n </li>\n )}\n {thread.best_answer && (\n <li className=\"thread-flag-answered\" title={gettext(\"Answered\")}>\n <span className=\"material-icon\">check_circle</span>\n </li>\n )}\n {thread.has_poll && (\n <li className=\"thread-flag-poll\" title={gettext(\"Poll\")}>\n <span className=\"material-icon\">poll</span>\n </li>\n )}\n {(thread.is_unapproved || thread.has_unapproved_posts) && (\n <li\n className=\"thread-flag-unapproved\"\n title={\n thread.is_unapproved\n ? gettext(\"Awaiting approval\")\n : gettext(\"Has unapproved posts\")\n }\n >\n <span className=\"material-icon\">visibility</span>\n </li>\n )}\n {thread.is_closed && (\n <li className=\"thread-flag-closed\" title={gettext(\"Closed\")}>\n <span className=\"material-icon\">lock</span>\n </li>\n )}\n {thread.is_hidden && (\n <li className=\"thread-flag-hidden\" title={gettext(\"Hidden\")}>\n <span className=\"material-icon\">visibility_off</span>\n </li>\n )}\n </ul>\n)\n\nexport default ThreadFlags\n","import React from \"react\"\n\nconst ThreadReplies = ({ thread }) => (\n <span\n className=\"threads-replies\"\n title={interpolate(\n ngettext(\"%(replies)s reply\", \"%(replies)s replies\", thread.replies),\n { replies: thread.replies },\n true\n )}\n >\n <span className=\"material-icon\">chat_bubble_outline</span>\n {thread.replies > 980\n ? Math.round(thread.replies / 1000) + \"K\"\n : thread.replies}\n </span>\n)\n\nexport default ThreadReplies\n","import React from \"react\"\n\nconst Toolbar = ({ children }) => <nav className=\"toolbar\">{children}</nav>\n\nexport default Toolbar\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarItem = ({ children, className, shrink }) => (\n <div\n className={classnames(\"toolbar-item\", className, {\n \"toolbar-item-shrink\": shrink,\n })}\n >\n {children}\n </div>\n)\n\nexport default ToolbarItem\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarSection = ({ auto, children, className }) => (\n <div\n className={classnames(\n \"toolbar-section\",\n { \"toolbar-section-auto\": auto },\n className\n )}\n >\n {children}\n </div>\n)\n\nexport default ToolbarSection\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarSpacer = ({ className }) => (\n <div className={classnames(\"toolbar-spacer\", className)} />\n)\n\nexport default ToolbarSpacer\n","import React from \"react\"\nimport misago from \"misago\"\n\nexport default function (props) {\n const size = props.size || 100\n const size2x = props.size2x || size\n\n return (\n <img\n alt=\"\"\n className={props.className || \"user-avatar\"}\n src={getSrc(props.user, size)}\n srcSet={getSrc(props.user, size2x)}\n width={size}\n height={size}\n />\n )\n}\n\nexport function getSrc(user, size) {\n if (user && user.id) {\n // just avatar hash, size and user id\n return resolveAvatarForSize(user.avatars, size).url\n } else {\n // just append avatar size to file to produce no-avatar placeholder\n return misago.get(\"BLANK_AVATAR_URL\")\n }\n}\n\nexport function resolveAvatarForSize(avatars, size) {\n let avatar = avatars[0]\n avatars.forEach((av) => {\n if (av.size >= size) {\n avatar = av\n }\n })\n return avatar\n}\n","import React from \"react\"\nimport Loader from \"./loader\"\n\nexport default class Button extends React.Component {\n render() {\n let className = \"btn \" + this.props.className\n let disabled = this.props.disabled\n\n if (this.props.loading) {\n className += \" btn-loading\"\n disabled = true\n }\n\n return (\n <button\n className={className}\n disabled={disabled}\n onClick={this.props.onClick}\n type={this.props.onClick ? \"button\" : \"submit\"}\n >\n {this.props.children}\n {this.props.loading ? <Loader /> : null}\n </button>\n )\n }\n}\n\nButton.defaultProps = {\n className: \"btn-default\",\n\n type: \"submit\",\n\n loading: false,\n disabled: false,\n\n onClick: null,\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <select\n className={props.className || \"form-control\"}\n disabled={props.disabled || false}\n id={props.id || null}\n onChange={props.onChange}\n value={props.value}\n >\n {props.choices.map((item) => {\n return (\n <option\n disabled={item.disabled || false}\n key={item.value}\n value={item.value}\n >\n {\"- - \".repeat(item.level) + item.label}\n </option>\n )\n })}\n </select>\n )\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default function ({ display }) {\n if (!display) return null\n\n return (\n <PanelMessage\n helpText={gettext(\"No profile details are editable at this time.\")}\n message={gettext(\"This option is currently unavailable.\")}\n />\n )\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({ display }) {\n if (!display) return null\n\n return (\n <div className=\"panel-body\">\n <Loader />\n </div>\n )\n}\n","import React from \"react\"\nimport Select from \"misago/components/select\"\n\nexport default class extends React.Component {\n onChange = (ev) => {\n const { field, onChange } = this.props\n onChange(field.fieldname, ev.target.value)\n }\n\n render() {\n const { disabled, field, value } = this.props\n const { input } = field\n\n if (input.type === \"select\") {\n return (\n <Select\n choices={input.choices}\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n value={value}\n />\n )\n }\n\n if (input.type === \"textarea\") {\n return (\n <textarea\n className=\"form-control\"\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n rows=\"4\"\n type=\"text\"\n value={value}\n />\n )\n }\n\n if (input.type === \"text\") {\n return (\n <input\n className=\"form-control\"\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n type=\"text\"\n value={value}\n />\n )\n }\n\n return null\n }\n}\n","import React from \"react\"\nimport FieldInput from \"./field-input\"\nimport FormGroup from \"misago/components/form-group\"\n\nexport default function ({ disabled, errors, fields, name, onChange, value }) {\n return (\n <fieldset>\n <legend>{name}</legend>\n {fields.map((field) => {\n return (\n <FormGroup\n for={\"id_\" + field.fieldname}\n helpText={field.help_text}\n key={field.fieldname}\n label={field.label}\n validation={errors[field.fieldname]}\n >\n <FieldInput\n disabled={disabled}\n field={field}\n onChange={onChange}\n value={value[field.fieldname]}\n />\n </FormGroup>\n )\n })}\n </fieldset>\n )\n}\n","import React from \"react\"\nimport Fieldset from \"./fieldset\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n errors: {},\n }\n\n const groups = props.groups.length\n for (let i = 0; i < groups; i++) {\n const group = props.groups[i]\n const fields = group.fields.length\n for (let f = 0; f < fields; f++) {\n const fieldname = group.fields[f].fieldname\n const initial = group.fields[f].initial\n this.state[fieldname] = initial\n }\n }\n }\n\n send() {\n const data = Object.assign({}, this.state, {\n errors: null,\n isLoading: null,\n })\n\n return ajax.post(this.props.api, data)\n }\n\n handleSuccess(data) {\n this.props.onSuccess(data)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({ errors: rejection })\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onChange = (name, value) => {\n this.setState({\n [name]: value,\n })\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel-body\">\n {this.props.groups.map((group, i) => {\n return (\n <Fieldset\n disabled={this.state.isLoading}\n errors={this.state.errors}\n fields={group.fields}\n name={group.name}\n key={i}\n onChange={this.onChange}\n value={this.state}\n />\n )\n })}\n </div>\n <div className=\"panel-footer text-right\">\n <CancelButton\n disabled={this.state.isLoading}\n onCancel={this.props.onCancel}\n />{\" \"}\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </form>\n )\n }\n}\n\nexport function CancelButton({ onCancel, disabled }) {\n if (!onCancel) return null\n\n return (\n <button\n className=\"btn btn-default\"\n disabled={disabled}\n onClick={onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n )\n}\n","import React from \"react\"\nimport Blankslate from \"./blankslate\"\nimport Loader from \"./loader\"\nimport Form from \"./form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n loading: true,\n groups: null,\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.api).then(\n (groups) => {\n this.setState({\n loading: false,\n\n groups,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n if (this.props.cancel) {\n this.props.cancel()\n }\n }\n )\n }\n\n render() {\n const { groups, loading } = this.state\n\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Edit details\")}</h3>\n </div>\n <Loader display={loading} />\n <Blankslate display={!loading && !groups.length} />\n <FormDisplay\n api={this.props.api}\n display={!loading && groups.length}\n groups={groups}\n onCancel={this.props.onCancel}\n onSuccess={this.props.onSuccess}\n />\n </div>\n )\n }\n}\n\nexport function FormDisplay({ api, display, groups, onCancel, onSuccess }) {\n if (!display) return null\n\n return (\n <Form api={api} groups={groups} onCancel={onCancel} onSuccess={onSuccess} />\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n isValidated() {\n return typeof this.props.validation !== \"undefined\"\n }\n\n getClassName() {\n let className = \"form-group\"\n if (this.isValidated()) {\n className += \" has-feedback\"\n if (this.props.validation === null) {\n className += \" has-success\"\n } else {\n className += \" has-error\"\n }\n }\n return className\n }\n\n getFeedback() {\n if (this.props.validation) {\n return (\n <div className=\"help-block errors\">\n {this.props.validation.map((error, i) => {\n return <p key={this.props.for + \"FeedbackItem\" + i}>{error}</p>\n })}\n </div>\n )\n } else {\n return null\n }\n }\n\n getFeedbackDescription() {\n if (this.isValidated()) {\n return (\n <span id={this.props.for + \"_status\"} className=\"sr-only\">\n {this.props.validation ? gettext(\"(error)\") : gettext(\"(success)\")}\n </span>\n )\n } else {\n return null\n }\n }\n\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <label\n className={\"control-label \" + (this.props.labelClass || \"\")}\n htmlFor={this.props.for || \"\"}\n >\n {this.props.label + \":\"}\n </label>\n <div className={this.props.controlClass || \"\"}>\n {this.props.children}\n {this.getFeedbackDescription()}\n {this.getFeedback()}\n {this.getHelpText()}\n {this.props.extra || null}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { required } from \"misago/utils/validators\"\nimport snackbar from \"misago/services/snackbar\"\n\nlet validateRequired = required()\n\nexport default class extends React.Component {\n validate() {\n let errors = {}\n if (!this.state.validators) {\n return errors\n }\n\n let validators = {\n required: this.state.validators.required || this.state.validators,\n optional: this.state.validators.optional || {},\n }\n\n let validatedFields = []\n\n // add required fields to validation\n for (let name in validators.required) {\n if (\n validators.required.hasOwnProperty(name) &&\n validators.required[name]\n ) {\n validatedFields.push(name)\n }\n }\n\n // add optional fields to validation\n for (let name in validators.optional) {\n if (\n validators.optional.hasOwnProperty(name) &&\n validators.optional[name]\n ) {\n validatedFields.push(name)\n }\n }\n\n // validate fields values\n for (let i in validatedFields) {\n let name = validatedFields[i]\n let fieldErrors = this.validateField(name, this.state[name])\n\n if (fieldErrors === null) {\n errors[name] = null\n } else if (fieldErrors) {\n errors[name] = fieldErrors\n }\n }\n\n return errors\n }\n\n isValid() {\n let errors = this.validate()\n for (let field in errors) {\n if (errors.hasOwnProperty(field)) {\n if (errors[field] !== null) {\n return false\n }\n }\n }\n\n return true\n }\n\n validateField(name, value) {\n let errors = []\n if (!this.state.validators) {\n return errors\n }\n\n let validators = {\n required: (this.state.validators.required || this.state.validators)[name],\n optional: (this.state.validators.optional || {})[name],\n }\n\n let requiredError = validateRequired(value) || false\n\n if (validators.required) {\n if (requiredError) {\n errors = [requiredError]\n } else {\n for (let i in validators.required) {\n let validationError = validators.required[i](value)\n if (validationError) {\n errors.push(validationError)\n }\n }\n }\n\n return errors.length ? errors : null\n } else if (requiredError === false && validators.optional) {\n for (let i in validators.optional) {\n let validationError = validators.optional[i](value)\n if (validationError) {\n errors.push(validationError)\n }\n }\n\n return errors.length ? errors : null\n }\n\n return false // false === field wasn't validated\n }\n\n bindInput = (name) => {\n return (event) => {\n this.changeValue(name, event.target.value)\n }\n }\n\n changeValue = (name, value) => {\n let newState = {\n [name]: value,\n }\n\n const formErrors = this.state.errors || {}\n formErrors[name] = this.validateField(name, newState[name])\n newState.errors = formErrors\n\n this.setState(newState)\n }\n\n clean() {\n return true\n }\n\n send() {\n return null\n }\n\n handleSuccess(success) {\n return\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n }\n\n handleSubmit = (event) => {\n // we don't reload page on submissions\n if (event) {\n event.preventDefault()\n }\n\n if (this.state.isLoading) {\n return\n }\n\n if (this.clean()) {\n this.setState({ isLoading: true })\n let promise = this.send()\n\n if (promise) {\n promise.then(\n (success) => {\n this.setState({ isLoading: false })\n this.handleSuccess(success)\n },\n (rejection) => {\n this.setState({ isLoading: false })\n this.handleError(rejection)\n }\n )\n } else {\n this.setState({ isLoading: false })\n }\n }\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n isActive() {\n if (this.props.isControlled) {\n return this.props.isActive\n } else {\n if (this.props.path) {\n return document.location.pathname.indexOf(this.props.path) === 0\n } else {\n return false\n }\n }\n }\n\n getClassName() {\n if (this.isActive()) {\n return (\n (this.props.className || \"\") +\n \" \" +\n (this.props.activeClassName || \"active\")\n )\n } else {\n return this.props.className || \"\"\n }\n }\n\n render() {\n return <li className={this.getClassName()}>{this.props.children}</li>\n }\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className={props.className || \"loader\"}>\n <div className=\"loader-spinning-wheel\" />\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"./button\"\nimport Form from \"./form\"\nimport FormGroup from \"./form-group\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n bestAnswer: \"0\",\n poll: \"0\",\n }\n }\n\n clean() {\n if (this.props.polls && this.state.poll === \"0\") {\n const confirmation = window.confirm(\n gettext(\"Are you sure you want to delete all polls?\")\n )\n return confirmation\n }\n\n return true\n }\n\n send() {\n const data = Object.assign({}, this.props.data, {\n best_answer: this.state.bestAnswer,\n poll: this.state.poll,\n })\n\n return ajax.post(this.props.api, data)\n }\n\n handleSuccess = (success) => {\n this.props.onSuccess(success)\n modal.hide()\n }\n\n handleError = (rejection) => {\n this.props.onError(rejection)\n }\n\n onBestAnswerChange = (event) => {\n this.changeValue(\"bestAnswer\", event.target.value)\n }\n\n onPollChange = (event) => {\n this.changeValue(\"poll\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge threads\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <BestAnswerSelect\n choices={this.props.bestAnswers}\n onChange={this.onBestAnswerChange}\n value={this.state.bestAnswer}\n />\n <PollSelect\n choices={this.props.polls}\n onChange={this.onPollChange}\n value={this.state.poll}\n />\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Merge threads\")}\n </Button>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport function BestAnswerSelect({ choices, onChange, value }) {\n if (!choices) return null\n\n return (\n <FormGroup\n label={gettext(\"Best answer\")}\n helpText={gettext(\n \"Please select the best answer for your newly merged thread. No posts will be deleted during the merge.\"\n )}\n for=\"id_best_answer\"\n >\n <select\n className=\"form-control\"\n id=\"id_best_answer\"\n onChange={onChange}\n value={value}\n >\n {choices.map((choice) => {\n return (\n <option value={choice[0]} key={choice[0]}>\n {choice[1]}\n </option>\n )\n })}\n </select>\n </FormGroup>\n )\n}\n\nexport function PollSelect({ choices, onChange, value }) {\n if (!choices) return null\n\n return (\n <FormGroup\n label={gettext(\"Poll\")}\n helpText={gettext(\n \"Please select the poll for your newly merged thread. Rejected polls will be permanently deleted and cannot be recovered.\"\n )}\n for=\"id_poll\"\n >\n <select\n className=\"form-control\"\n id=\"id_poll\"\n onChange={onChange}\n value={value}\n >\n {choices.map((choice) => {\n return (\n <option value={choice[0]} key={choice[0]}>\n {choice[1]}\n </option>\n )\n })}\n </select>\n </FormGroup>\n )\n}\n","const ytRegExp = new RegExp(\n \"^.*(?:(?:youtu.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)??v(?:i)?=|&v(?:i)?=))([^#&?]*).*\"\n)\n\nexport class OneBox {\n constructor() {\n this._youtube = {}\n }\n\n render = (domnode) => {\n if (!domnode) return\n this.highlightCode(domnode)\n this.embedYoutubePlayers(domnode)\n }\n\n highlightCode(domnode) {\n const codeblocks = domnode.querySelectorAll(\"pre>code\")\n for (let i = 0; i < codeblocks.length; i++) {\n const code = codeblocks[i]\n hljs.highlightBlock(code)\n }\n }\n\n embedYoutubePlayers(domnode) {\n const anchors = domnode.querySelectorAll(\"p>a\")\n for (let i = 0; i < anchors.length; i++) {\n const a = anchors[i]\n const p = a.parentNode\n const onlyChild = p.childNodes.length === 1\n\n if (!this._youtube[a.href]) {\n this._youtube[a.href] = parseYoutubeUrl(a.href)\n }\n\n const youtubeMovie = this._youtube[a.href]\n if (onlyChild && !!youtubeMovie && youtubeMovie.data !== false) {\n this.swapYoutubePlayer(a, youtubeMovie)\n }\n }\n }\n\n swapYoutubePlayer(element, youtube) {\n let url = \"https://www.youtube.com/embed/\"\n url += youtube.video\n url += \"?rel=0\"\n if (youtube.start) {\n url += \"&start=\" + youtube.start\n }\n\n const player = $(\n '<iframe class=\"embed-responsive-item\" src=\"' +\n url +\n '\" allowfullscreen></iframe>'\n )\n $(element).replaceWith(player)\n player.wrap('<div class=\"embed-responsive embed-responsive-16by9\"></div>')\n }\n}\n\nexport default new OneBox()\n\nexport function parseYoutubeUrl(url) {\n const cleanedUrl = cleanUrl(url)\n const video = getVideoIdFromUrl(cleanedUrl)\n\n if (!video) return null\n\n let start = 0\n if (cleanedUrl.indexOf(\"?\") > 0) {\n const query = cleanedUrl.substr(cleanedUrl.indexOf(\"?\") + 1)\n const timebit = query.split(\"&\").filter((i) => {\n return i.substr(0, 2) === \"t=\"\n })[0]\n\n if (timebit) {\n const bits = timebit.substr(2).split(\"m\")\n if (bits[0].substr(-1) === \"s\") {\n start += parseInt(bits[0].substr(0, bits[0].length - 1))\n } else {\n start += parseInt(bits[0]) * 60\n if (!!bits[1] && bits[1].substr(-1) === \"s\") {\n start += parseInt(bits[1].substr(0, bits[1].length - 1))\n }\n }\n }\n }\n\n return {\n start,\n video,\n }\n}\n\nexport function cleanUrl(url) {\n let clean = url\n\n if (url.substr(0, 8) === \"https://\") {\n clean = clean.substr(8)\n } else if (url.substr(0, 7) === \"http://\") {\n clean = clean.substr(7)\n }\n\n if (clean.substr(0, 4) === \"www.\") {\n clean = clean.substr(4)\n }\n\n return clean\n}\n\nexport function getVideoIdFromUrl(url) {\n if (url.indexOf(\"youtu\") === -1) return null\n\n const video = url.match(ytRegExp)\n if (video) {\n return video[1]\n }\n return null\n}\n","import React from \"react\"\nimport onebox from \"misago/services/one-box\"\n\nexport default class extends React.Component {\n componentDidMount() {\n onebox.render(this.documentNode)\n $(this.documentNode).find(\".spoiler-reveal\").click(revealSpoiler)\n }\n\n componentDidUpdate(prevProps, prevState) {\n onebox.render(this.documentNode)\n $(this.documentNode).find(\".spoiler-reveal\").click(revealSpoiler)\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return nextProps.markup !== this.props.markup\n }\n\n render() {\n return (\n <article\n className=\"misago-markup\"\n dangerouslySetInnerHTML={{ __html: this.props.markup }}\n ref={(node) => {\n this.documentNode = node\n }}\n />\n )\n }\n}\n\nfunction revealSpoiler(event) {\n var btn = event.target\n $(btn).parent().parent().addClass(\"revealed\")\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"modal-body modal-loader\">\n <Loader />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default class extends PanelMessage {\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">\n {this.props.icon || \"info_outline\"}\n </span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getHelpText()}\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"panel-body panel-body-loading\">\n <Loader className=\"loader loader-spaced\" />\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">\n {this.props.icon || \"info_outline\"}\n </span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getHelpText()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"poll-choices-bars\">\n {props.poll.choices.map((choice) => {\n return (\n <PollChoice choice={choice} key={choice.hash} poll={props.poll} />\n )\n })}\n </div>\n )\n}\n\nexport function PollChoice(props) {\n let proc = 0\n if (props.choice.votes && props.poll.votes) {\n proc = Math.ceil((props.choice.votes * 100) / props.poll.votes)\n }\n\n return (\n <dl className=\"dl-horizontal\">\n <dt>{props.choice.label}</dt>\n <dd>\n <div className=\"progress\">\n <div\n className=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow={proc}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n style={{ width: proc + \"%\" }}\n >\n <span className=\"sr-only\">\n {getVotesLabel(props.votes, props.proc)}\n </span>\n </div>\n </div>\n <ul className=\"list-unstyled list-inline poll-chart\">\n <ChoiceVotes proc={proc} votes={props.choice.votes} />\n <UserChoice selected={props.choice.selected} />\n </ul>\n </dd>\n </dl>\n )\n}\n\nexport function ChoiceVotes(props) {\n return (\n <li className=\"poll-chart-votes\">\n {getVotesLabel(props.votes, props.proc)}\n </li>\n )\n}\n\nexport function getVotesLabel(votes, proc) {\n const message = ngettext(\n \"%(votes)s vote, %(proc)s% of total.\",\n \"%(votes)s votes, %(proc)s% of total.\",\n votes\n )\n\n return interpolate(\n message,\n {\n votes: votes,\n proc: proc,\n },\n true\n )\n}\n\nexport function UserChoice(props) {\n if (!props.selected) return null\n\n return (\n <li className=\"poll-chart-selected\">\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Your choice.\")}\n </li>\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: true,\n error: null,\n data: [],\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.poll.api.votes).then(\n (data) => {\n const hydratedData = data.map((choice) => {\n return Object.assign({}, choice, {\n voters: choice.voters.map((voter) => {\n return Object.assign({}, voter, {\n voted_on: moment(voter.voted_on),\n })\n }),\n })\n })\n\n this.setState({\n isLoading: false,\n data: hydratedData,\n })\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n error: rejection.detail,\n })\n }\n )\n }\n\n render() {\n return (\n <div\n className={\n \"modal-dialog\" + (this.state.error ? \" modal-message\" : \" modal-sm\")\n }\n role=\"document\"\n >\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Poll votes\")}</h4>\n </div>\n\n <ModalBody\n data={this.state.data}\n error={this.state.error}\n isLoading={this.state.isLoading}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function ModalBody(props) {\n if (props.isLoading) {\n return <Loader />\n } else if (props.error) {\n return <Message icon=\"error_outline\" message={props.error} />\n }\n\n return <ChoicesList data={props.data} />\n}\n\nexport function ChoicesList(props) {\n return (\n <div className=\"modal-body modal-poll-votes\">\n <ul className=\"list-unstyled votes-details\">\n {props.data.map((choice) => {\n return <ChoiceDetails key={choice.hash} {...choice} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function ChoiceDetails(props) {\n return (\n <li>\n <h4>{props.label}</h4>\n <VotesCount votes={props.votes} />\n <VotesList voters={props.voters} />\n <hr />\n </li>\n )\n}\n\nexport function VotesCount(props) {\n const message = ngettext(\n \"%(votes)s user has voted for this choice.\",\n \"%(votes)s users have voted for this choice.\",\n props.votes\n )\n\n const label = interpolate(\n message,\n {\n votes: props.votes,\n },\n true\n )\n\n return <p>{label}</p>\n}\n\nexport function VotesList(props) {\n if (!props.voters.length) return null\n\n return (\n <ul className=\"list-unstyled\">\n {props.voters.map((user) => {\n return <Voter key={user.username} {...user} />\n })}\n </ul>\n )\n}\n\nexport function Voter(props) {\n if (props.url) {\n return (\n <li>\n <a className=\"item-title\" href={props.url}>\n {props.username}\n </a>{\" \"}\n <VoteDate voted_on={props.voted_on} />\n </li>\n )\n }\n\n return (\n <li>\n <strong>{props.username}</strong> <VoteDate voted_on={props.voted_on} />\n </li>\n )\n}\n\nexport function VoteDate(props) {\n return (\n <abbr className=\"text-muted\" title={props.voted_on.format(\"LLL\")}>\n {props.voted_on.fromNow()}\n </abbr>\n )\n}\n","import React from \"react\"\nimport Modal from \"./modal\"\nimport * as poll from \"misago/reducers/poll\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n const { isPollOver, poll, showVoting, thread } = props\n\n if (!isVisible(isPollOver, poll.acl, poll)) return null\n\n const controls = []\n\n const canVote = poll.acl.can_vote\n const canChangeVote = !poll.hasSelectedChoices || poll.allow_revotes\n\n if (canVote && canChangeVote) controls.push(0)\n if (poll.is_public || poll.acl.can_see_votes) controls.push(1)\n if (poll.acl.can_edit) controls.push(2)\n if (poll.acl.can_delete) controls.push(3)\n\n return (\n <div className=\"row poll-options\">\n <ChangeVote\n controls={controls}\n isPollOver={isPollOver}\n poll={poll}\n showVoting={showVoting}\n />\n <SeeVotes controls={controls} poll={poll} />\n <Edit controls={controls} poll={poll} thread={thread} />\n <Delete controls={controls} poll={poll} />\n </div>\n )\n}\n\nexport function isVisible(isPollOver, acl, poll) {\n return (\n poll.is_public ||\n acl.can_delete ||\n acl.can_edit ||\n acl.can_see_votes ||\n (acl.can_vote &&\n !isPollOver &&\n (!poll.hasSelectedChoices || poll.allow_revotes))\n )\n}\n\nexport function getClassName(controls, control) {\n let className = \"col-xs-6\"\n\n if (controls.length === 1) {\n className = \"col-xs-12\"\n }\n\n if (controls.length === 3 && controls[0] === control) {\n className = \"col-xs-12\"\n }\n\n return className + \" col-sm-3 col-md-2\"\n}\n\nexport function ChangeVote(props) {\n const canVote = props.poll.acl.can_vote\n const canChangeVote =\n !props.poll.hasSelectedChoices || props.poll.allow_revotes\n\n if (!(canVote && canChangeVote)) return null\n\n return (\n <div className={getClassName(props.controls, 0)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={props.poll.isBusy}\n onClick={props.showVoting}\n type=\"button\"\n >\n {gettext(\"Vote\")}\n </button>\n </div>\n )\n}\n\nexport class SeeVotes extends React.Component {\n onClick = () => {\n modal.show(<Modal poll={this.props.poll} />)\n }\n\n render() {\n const seeVotes =\n this.props.poll.is_public || this.props.poll.acl.can_see_votes\n if (!seeVotes) return null\n\n return (\n <div className={getClassName(this.props.controls, 1)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"See votes\")}\n </button>\n </div>\n )\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n submit: this.props.poll.api.index,\n\n thread: this.props.thread,\n poll: this.props.poll,\n\n mode: \"POLL\",\n })\n }\n\n render() {\n if (!this.props.poll.acl.can_edit) return null\n\n return (\n <div className={getClassName(this.props.controls, 2)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Edit\")}\n </button>\n </div>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n const deletePoll = window.confirm(\n gettext(\n \"Are you sure you want to delete this poll? This action is not reversible.\"\n )\n )\n if (!deletePoll) return false\n\n store.dispatch(poll.busy())\n\n ajax\n .delete(this.props.poll.api.index)\n .then(this.handleSuccess, this.handleError)\n }\n\n handleSuccess = (newThreadAcl) => {\n snackbar.success(\"Poll has been deleted\")\n store.dispatch(poll.remove())\n store.dispatch(thread.updateAcl(newThreadAcl))\n }\n\n handleError = (rejection) => {\n snackbar.apiError(rejection)\n store.dispatch(poll.release())\n }\n\n render() {\n if (!this.props.poll.acl.can_delete) return null\n\n return (\n <div className={getClassName(this.props.controls, 3)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Delete\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled list-inline poll-details\">\n <PollVotes votes={props.poll.votes} />\n <PollLength poll={props.poll} />\n <PollIsPublic poll={props.poll} />\n <PollCreation poll={props.poll} />\n </ul>\n )\n}\n\nexport function PollCreation(props) {\n const message = interpolate(\n escapeHtml(gettext(\"Posted by %(poster)s %(posted_on)s.\")),\n {\n poster: getPoster(props.poll),\n posted_on: getPostedOn(props.poll),\n },\n true\n )\n\n return (\n <li\n className=\"poll-info-creation\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function getPoster(poll) {\n if (poll.url.poster) {\n return interpolate(\n USER_URL,\n {\n url: escapeHtml(poll.url.poster),\n user: escapeHtml(poll.poster_name),\n },\n true\n )\n }\n\n return interpolate(\n USER_SPAN,\n {\n user: escapeHtml(poll.poster_name),\n },\n true\n )\n}\n\nexport function getPostedOn(poll) {\n return interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(poll.posted_on.format(\"LLL\")),\n relative: escapeHtml(poll.posted_on.fromNow()),\n },\n true\n )\n}\n\nexport function PollLength(props) {\n if (!props.poll.length) {\n return null\n }\n\n const message = interpolate(\n escapeHtml(gettext(\"Voting ends %(ends_on)s.\")),\n {\n ends_on: getEndsOn(props.poll),\n },\n true\n )\n\n return (\n <li\n className=\"poll-info-ends-on\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function getEndsOn(poll) {\n return interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(poll.endsOn.format(\"LLL\")),\n relative: escapeHtml(poll.endsOn.fromNow()),\n },\n true\n )\n}\n\nexport function PollVotes(props) {\n const message = ngettext(\"%(votes)s vote.\", \"%(votes)s votes.\", props.votes)\n const label = interpolate(\n message,\n {\n votes: props.votes,\n },\n true\n )\n\n return <li className=\"poll-info-votes\">{label}</li>\n}\n\nexport function PollIsPublic(props) {\n if (!props.poll.is_public) {\n return null\n }\n\n return <li className=\"poll-info-public\">{gettext(\"Votes are public.\")}</li>\n}\n","import React from \"react\"\nimport Chart from \"./chart\"\nimport Options from \"./options\"\nimport PollInfo from \"../info\"\n\nexport default function (props) {\n return (\n <div className=\"panel panel-default panel-poll\">\n <div className=\"panel-body\">\n <h2>{props.poll.question}</h2>\n <PollInfo poll={props.poll} />\n <Chart poll={props.poll} />\n <Options\n isPollOver={props.isPollOver}\n poll={props.poll}\n showVoting={props.showVoting}\n thread={props.thread}\n />\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled list-inline poll-help\">\n <PollChoicesLeft choicesLeft={props.choicesLeft} />\n <PollAllowRevote poll={props.poll} />\n </ul>\n )\n}\n\nexport function PollChoicesLeft({ choicesLeft }) {\n if (choicesLeft === 0) {\n return (\n <li className=\"poll-help-choices-left\">\n {gettext(\"You can't select any more choices.\")}\n </li>\n )\n }\n\n const message = ngettext(\n \"You can select %(choices)s more choice.\",\n \"You can select %(choices)s more choices.\",\n choicesLeft\n )\n\n const label = interpolate(\n message,\n {\n choices: choicesLeft,\n },\n true\n )\n\n return <li className=\"poll-help-choices-left\">{label}</li>\n}\n\nexport function PollAllowRevote(props) {\n if (props.poll.allow_revotes) {\n return (\n <li className=\"poll-help-allow-revotes\">\n {gettext(\"You can change your vote later.\")}\n </li>\n )\n }\n\n return <li className=\"poll-help-no-revotes\">{gettext(\"Votes are final.\")}</li>\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled poll-select-choices\">\n {props.choices.map((choice) => {\n return (\n <ChoiceSelect\n choice={choice}\n key={choice.hash}\n toggleChoice={props.toggleChoice}\n />\n )\n })}\n </ul>\n )\n}\n\nexport class ChoiceSelect extends React.Component {\n onClick = () => {\n this.props.toggleChoice(this.props.choice.hash)\n }\n\n render() {\n return (\n <li className=\"poll-select-choice\">\n <button\n className={this.props.choice.selected ? \"btn btn-selected\" : \"btn\"}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {this.props.choice.selected\n ? \"check_box\"\n : \"check_box_outline_blank\"}\n </span>\n <strong>{this.props.choice.label}</strong>\n </button>\n </li>\n )\n }\n}\n","export function getChoiceFromHash(choices, hash) {\n for (const i in choices) {\n const choice = choices[i]\n if (choice.hash === hash) {\n return choice\n }\n }\n\n return null\n}\n\nexport function getChoicesLeft(poll, choices) {\n let selection = []\n for (const i in choices) {\n const choice = choices[i]\n if (choice.selected) {\n selection.push(choice)\n }\n }\n\n return poll.allowed_choices - selection.length\n}\n","import React from \"react\"\nimport ChoicesHelp from \"./help\"\nimport ChoicesSelect from \"./select\"\nimport { getChoicesLeft, getChoiceFromHash } from \"./utils\"\nimport PollInfo from \"../info\"\nimport { Delete, Edit, getClassName } from \"../results/options\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport * as poll from \"misago/reducers/poll\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n choices: props.poll.choices,\n choicesLeft: getChoicesLeft(props.poll, props.poll.choices),\n }\n }\n\n toggleChoice = (hash) => {\n const choice = getChoiceFromHash(this.state.choices, hash)\n\n let choices = null\n if (!choice.selected) {\n choices = this.selectChoice(choice, hash)\n } else {\n choices = this.deselectChoice(choice, hash)\n }\n\n this.setState({\n choices,\n choicesLeft: getChoicesLeft(this.props.poll, choices),\n })\n }\n\n selectChoice = (choice, hash) => {\n const choicesLeft = getChoicesLeft(this.props.poll, this.state.choices)\n\n if (!choicesLeft) {\n for (const i in this.state.choices.slice()) {\n const item = this.state.choices[i]\n if (item.selected && item.hash != hash) {\n item.selected = false\n break\n }\n }\n }\n\n return this.state.choices.map((choice) => {\n return Object.assign({}, choice, {\n selected: choice.hash == hash ? true : choice.selected,\n })\n })\n }\n\n deselectChoice = (choice, hash) => {\n return this.state.choices.map((choice) => {\n return Object.assign({}, choice, {\n selected: choice.hash == hash ? false : choice.selected,\n })\n })\n }\n\n clean() {\n if (this.state.choicesLeft === this.props.poll.allowed_choices) {\n snackbar.error(gettext(\"You need to select at least one choice\"))\n return false\n }\n\n return true\n }\n\n send() {\n let data = []\n for (const i in this.state.choices.slice()) {\n const item = this.state.choices[i]\n if (item.selected) {\n data.push(item.hash)\n }\n }\n\n return ajax.post(this.props.poll.api.votes, data)\n }\n\n handleSuccess(data) {\n store.dispatch(poll.replace(data))\n snackbar.success(gettext(\"Your vote has been saved.\"))\n\n this.props.showResults()\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n const controls = []\n\n if (this.props.poll.acl.can_vote) controls.push(0)\n if (this.props.poll.is_public || this.props.poll.acl.can_see_votes)\n controls.push(1)\n if (this.props.poll.acl.can_edit) controls.push(2)\n if (this.props.poll.acl.can_delete) controls.push(3)\n\n return (\n <div className=\"panel panel-default panel-poll\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel-body\">\n <h2>{this.props.poll.question}</h2>\n <PollInfo poll={this.props.poll} />\n <ChoicesSelect\n choices={this.state.choices}\n toggleChoice={this.toggleChoice}\n />\n <ChoicesHelp\n choicesLeft={this.state.choicesLeft}\n poll={this.props.poll}\n />\n </div>\n <div className=\"panel-footer\">\n <div className=\"row\">\n <div className={getClassName(controls, 0)}>\n <Button\n className=\"btn-primary btn-block btn-sm\"\n loading={this.state.isLoading}\n >\n {gettext(\"Save your vote\")}\n </Button>\n </div>\n <div className={getClassName(controls, 1)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.state.isLoading}\n onClick={this.props.showResults}\n type=\"button\"\n >\n {gettext(\"See results\")}\n </button>\n </div>\n <Edit\n controls={controls}\n poll={this.props.poll}\n thread={this.props.thread}\n />\n <Delete controls={controls} poll={this.props.poll} />\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Results from \"./results\"\nimport Voting from \"./voting\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n let showResults = true\n if (props.user.id && !props.poll.hasSelectedChoices) {\n showResults = false\n }\n\n this.state = {\n showResults,\n }\n }\n\n showResults = () => {\n this.setState({\n showResults: true,\n })\n }\n\n showVoting = () => {\n this.setState({\n showResults: false,\n })\n }\n\n render() {\n if (!this.props.thread.poll) return null\n\n const isPollOver = getIsPollOver(this.props.poll)\n\n if (\n !isPollOver &&\n this.props.poll.acl.can_vote &&\n !this.state.showResults\n ) {\n return <Voting showResults={this.showResults} {...this.props} />\n } else {\n return (\n <Results\n isPollOver={isPollOver}\n showVoting={this.showVoting}\n {...this.props}\n />\n )\n }\n }\n}\n\nexport function getIsPollOver(poll) {\n if (poll.length) {\n return moment().isAfter(poll.endsOn)\n }\n return false\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n onAdd = () => {\n let choices = this.props.choices.slice()\n choices.push({\n hash: generateRandomHash(),\n label: \"\",\n })\n\n this.props.setChoices(choices)\n }\n\n onChange = (hash, label) => {\n const choices = this.props.choices.map((choice) => {\n if (choice.hash === hash) {\n choice.label = label\n }\n\n return choice\n })\n this.props.setChoices(choices)\n }\n\n onDelete = (hash) => {\n const choices = this.props.choices.filter((choice) => {\n return choice.hash !== hash\n })\n this.props.setChoices(choices)\n }\n\n render() {\n return (\n <div className=\"poll-choices-control\">\n <ul className=\"list-group\">\n {this.props.choices.map((choice) => {\n return (\n <PollChoice\n canDelete={this.props.choices.length > 2}\n choice={choice}\n disabled={this.props.disabled}\n key={choice.hash}\n onChange={this.onChange}\n onDelete={this.onDelete}\n />\n )\n })}\n </ul>\n <button\n className=\"btn btn-default btn-sm\"\n disabled={this.props.disabled}\n onClick={this.onAdd}\n type=\"button\"\n >\n {gettext(\"Add choice\")}\n </button>\n </div>\n )\n }\n}\n\nexport class PollChoice extends React.Component {\n onChange = (event) => {\n this.props.onChange(this.props.choice.hash, event.target.value)\n }\n\n onDelete = () => {\n const deleteItem = window.confirm(\n gettext(\"Are you sure you want to delete this choice?\")\n )\n if (deleteItem) {\n this.props.onDelete(this.props.choice.hash)\n }\n }\n\n render() {\n return (\n <li className=\"list-group-item\">\n <button\n className=\"btn\"\n disabled={!this.props.canDelete || this.props.disabled}\n onClick={this.onDelete}\n title={gettext(\"Delete this choice\")}\n type=\"button\"\n >\n <span className=\"material-icon\">close</span>\n </button>\n <input\n disabled={this.props.disabled}\n maxLength=\"255\"\n placeholder={gettext(\"choice label\")}\n type=\"text\"\n onChange={this.onChange}\n value={this.props.choice.label}\n />\n </li>\n )\n }\n}\n\nexport function generateRandomHash() {\n let randomHash = \"\"\n while (randomHash.length != 12) {\n randomHash = Math.random()\n .toString(36)\n .replace(/[^a-zA-Z0-9]+/g, \"\")\n .substr(1, 12)\n }\n return randomHash\n}\n","import React from \"react\"\nimport ChoicesControl from \"./choices-control\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport * as poll from \"misago/reducers/poll\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n const poll = props.poll || {\n question: \"\",\n choices: [\n {\n hash: \"choice-10000\",\n label: \"\",\n },\n {\n hash: \"choice-20000\",\n label: \"\",\n },\n ],\n length: 0,\n allowed_choices: 1,\n allow_revotes: 0,\n is_public: 0,\n }\n\n this.state = {\n isLoading: false,\n isEdit: !!poll.question,\n\n question: poll.question,\n choices: poll.choices,\n length: poll.length,\n allowed_choices: poll.allowed_choices,\n allow_revotes: poll.allow_revotes,\n is_public: poll.is_public,\n\n validators: {\n question: [],\n choices: [],\n length: [],\n allowed_choices: [],\n },\n\n errors: {},\n }\n }\n\n setChoices = (choices) => {\n const errors = Object.assign({}, errors, { choices: null })\n\n this.setState({\n choices,\n errors,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard poll?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n send() {\n const data = {\n question: this.state.question,\n choices: this.state.choices,\n length: this.state.length,\n allowed_choices: this.state.allowed_choices,\n allow_revotes: this.state.allow_revotes,\n is_public: this.state.is_public,\n }\n\n if (this.state.isEdit) {\n return ajax.put(this.props.poll.api.index, data)\n } else {\n return ajax.post(this.props.thread.api.poll, data)\n }\n }\n\n handleSuccess(data) {\n store.dispatch(poll.replace(data))\n\n if (this.state.isEdit) {\n snackbar.success(gettext(\"Poll has been edited.\"))\n } else {\n snackbar.success(gettext(\"Poll has been posted.\"))\n }\n\n posting.close()\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.non_field_errors) {\n rejection.allowed_choices = rejection.non_field_errors\n }\n\n this.setState({\n errors: Object.assign({}, rejection),\n })\n\n snackbar.error(gettext(\"Form contains errors.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"poll-form\">\n <div className=\"container\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-body\">\n <fieldset>\n <legend>{gettext(\"Question and choices\")}</legend>\n\n <FormGroup\n label={gettext(\"Poll question\")}\n for=\"id_questions\"\n validation={this.state.errors.question}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_questions\"\n onChange={this.bindInput(\"question\")}\n type=\"text\"\n maxLength=\"255\"\n value={this.state.question}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Available choices\")}\n validation={this.state.errors.choices}\n >\n <ChoicesControl\n choices={this.state.choices}\n disabled={this.state.isLoading}\n setChoices={this.setChoices}\n />\n </FormGroup>\n </fieldset>\n\n <fieldset>\n <legend>{gettext(\"Voting\")}</legend>\n\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Poll length\")}\n helpText={gettext(\n \"Enter number of days for which voting in this poll should be possible or zero to run this poll indefinitely.\"\n )}\n for=\"id_length\"\n validation={this.state.errors.length}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_length\"\n onChange={this.bindInput(\"length\")}\n type=\"text\"\n value={this.state.length}\n />\n </FormGroup>\n </div>\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Allowed choices\")}\n for=\"id_allowed_choices\"\n validation={this.state.errors.allowed_choices}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_allowed_choices\"\n onChange={this.bindInput(\"allowed_choices\")}\n type=\"text\"\n maxLength=\"255\"\n value={this.state.allowed_choices}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"row\">\n <PollPublicSwitch\n bindInput={this.bindInput}\n disabled={this.state.isLoading}\n isEdit={this.state.isEdit}\n value={this.state.is_public}\n />\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Allow vote changes\")}\n for=\"id_allow_revotes\"\n >\n <YesNoSwitch\n id=\"id_allow_revotes\"\n disabled={this.state.isLoading}\n iconOn=\"check\"\n iconOff=\"close\"\n labelOn={gettext(\n \"Allow participants to change their vote\"\n )}\n labelOff={gettext(\n \"Don't allow participants to change their vote\"\n )}\n onChange={this.bindInput(\"allow_revotes\")}\n value={this.state.allow_revotes}\n />\n </FormGroup>\n </div>\n </div>\n </fieldset>\n </div>\n <div className=\"panel-footer text-right\">\n <button\n className=\"btn btn-default\"\n disabled={this.state.isLoading}\n onClick={this.onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>{\" \"}\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {this.state.isEdit\n ? gettext(\"Save changes\")\n : gettext(\"Post poll\")}\n </Button>\n </div>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport function PollPublicSwitch(props) {\n if (props.isEdit) return null\n\n return (\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Make voting public\")}\n helpText={gettext(\n \"Making voting public will allow everyone to access detailed list of votes, showing which users voted for which choices and at which times. This option can't be changed after poll's creation. Moderators may see voting details for all polls.\"\n )}\n for=\"id_is_public\"\n >\n <YesNoSwitch\n id=\"id_is_public\"\n disabled={props.disabled}\n iconOn=\"visibility\"\n iconOff=\"visibility_off\"\n labelOn={gettext(\"Votes are public\")}\n labelOff={gettext(\"Votes are hidden\")}\n onChange={props.bindInput(\"is_public\")}\n value={props.value}\n />\n </FormGroup>\n </div>\n )\n}\n","import React from \"react\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nexport default function (props) {\n if (props.post.content) {\n return <Default {...props} />\n } else {\n return <Invalid {...props} />\n }\n}\n\nexport function Default(props) {\n return (\n <div className=\"post-body\">\n <MisagoMarkup markup={props.post.content} />\n </div>\n )\n}\n\nexport function Invalid(props) {\n return (\n <div className=\"post-body post-body-invalid\">\n <p className=\"lead\">\n {gettext(\"This post's contents cannot be displayed.\")}\n </p>\n <p className=\"text-muted\">\n {gettext(\"This error is caused by invalid post content manipulation.\")}\n </p>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n const { category, thread } = post\n\n const tooltip = interpolate(\n gettext(\"posted %(posted_on)s\"),\n {\n posted_on: post.posted_on.format(\"LL, LT\"),\n },\n true\n )\n\n return (\n <div className=\"post-heading\">\n <a className=\"btn btn-link item-title\" href={thread.url}>\n {thread.title}\n </a>\n <a className=\"btn btn-link post-category\" href={category.url.index}>\n {category.name}\n </a>\n <a\n href={post.url.index}\n className=\"btn btn-link posted-on\"\n title={tooltip}\n >\n {post.posted_on.fromNow()}\n </a>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n return (\n <a className=\"btn btn-default btn-icon pull-right\" href={post.url.index}>\n <span className=\"btn-text-left hidden-xs\">{gettext(\"See post\")}</span>\n <span className=\"material-icon\">chevron_right</span>\n </a>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport GoToButton from \"./button\"\n\nexport default function ({ post }) {\n return (\n <div className=\"post-side post-side-anonymous\">\n <GoToButton post={post} />\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={50} />\n </span>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <span className=\"item-title\">{post.poster_name}</span>\n </div>\n <span className=\"user-title user-title-anonymous\">\n {gettext(\"Removed user\")}\n </span>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title || rank.name\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <a className={className} href={rank.url}>\n {userTitle}\n </a>\n )\n }\n\n return <span className={className}>{userTitle}</span>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport GoToButton from \"./button\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ post, poster }) {\n return (\n <div className=\"post-side post-side-registered\">\n <GoToButton post={post} />\n <div className=\"media\">\n <div className=\"media-left\">\n <a href={poster.url}>\n <Avatar className=\"poster-avatar\" size={50} user={poster} />\n </a>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a className=\"item-title\" href={poster.url}>\n {poster.username}\n </a>\n </div>\n <UserTitle title={poster.title} rank={poster.rank} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Anonymous from \"./anonymous\"\nimport Registered from \"./registered\"\n\nexport default function ({ post, poster }) {\n if (poster && poster.id) {\n return <Registered post={post} poster={poster} />\n }\n\n return <Anonymous post={post} />\n}\n","import React from \"react\"\nimport Body from \"./body\"\nimport Header from \"./header\"\nimport PostSide from \"./post-side\"\n\nexport default function ({ post, poster }) {\n const user = poster || post.poster\n\n let className = \"post\"\n if (user && user.rank.css_class) {\n className += \" post-\" + user.rank.css_class\n }\n\n return (\n <li className={className} id={\"post-\" + post.id}>\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <PostSide post={post} poster={user} />\n <Header post={post} />\n <Body post={post} />\n </div>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default function () {\n return (\n <ul className=\"posts-list post-feed ui-preview\">\n <li className=\"post\">\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <div className=\"post-side post-side-anonymous\">\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={50} />\n </span>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <span className=\"item-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n <span className=\"user-title user-title-anonymous\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n </div>\n </div>\n <div className=\"post-heading\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"post-body\">\n <article className=\"misago-markup\">\n <p>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n \n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n \n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </p>\n </article>\n </div>\n </div>\n </div>\n </li>\n </ul>\n )\n}\n","import React from \"react\"\nimport Post from \"./post\"\nimport Preview from \"./preview\"\n\nexport default function ({ isReady, posts, poster }) {\n if (!isReady) {\n return <Preview />\n }\n\n return (\n <ul className=\"posts-list post-feed ui-ready\">\n {posts.map((post) => {\n return <Post key={post.id} post={post} poster={poster} />\n })}\n </ul>\n )\n}\n","import { maxLength, minLength } from \"misago/utils/validators\"\nimport misago from \"misago\"\n\nexport function getTitleValidators() {\n return [getTitleLengthMin(), getTitleLengthMax()]\n}\n\nexport function getPostValidators() {\n if (misago.get(\"SETTINGS\").post_length_max) {\n return [validatePostLengthMin(), validatePostLengthMax()]\n } else {\n return [validatePostLengthMin()]\n }\n}\n\nexport function getTitleLengthMin() {\n return minLength(\n misago.get(\"SETTINGS\").thread_title_length_min,\n (limitValue, length) => {\n const message = ngettext(\n \"Thread title should be at least %(limit_value)s character long (it has %(show_value)s).\",\n \"Thread title should be at least %(limit_value)s characters long (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function getTitleLengthMax() {\n return maxLength(\n misago.get(\"SETTINGS\").thread_title_length_max,\n (limitValue, length) => {\n const message = ngettext(\n \"Thread title cannot be longer than %(limit_value)s character (it has %(show_value)s).\",\n \"Thread title cannot be longer than %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function validatePostLengthMin() {\n return minLength(\n misago.get(\"SETTINGS\").post_length_min,\n (limitValue, length) => {\n const message = ngettext(\n \"Posted message should be at least %(limit_value)s character long (it has %(show_value)s).\",\n \"Posted message should be at least %(limit_value)s characters long (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function validatePostLengthMax() {\n return maxLength(\n misago.get(\"SETTINGS\").post_length_max || 1000000,\n (limitValue, length) => {\n const message = ngettext(\n \"Posted message cannot be longer than %(limit_value)s character (it has %(show_value)s).\",\n \"Posted message cannot be longer than %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getChoice() {\n let choice = null\n this.props.choices.map((item) => {\n if (item.value === this.props.value) {\n choice = item\n }\n })\n return choice\n }\n\n getIcon() {\n return this.getChoice().icon\n }\n\n getLabel() {\n return this.getChoice().label\n }\n\n change = (value) => {\n return () => {\n this.props.onChange({\n target: {\n value: value,\n },\n })\n }\n }\n\n render() {\n return (\n <div className=\"btn-group btn-select-group\">\n <button\n type=\"button\"\n className=\"btn btn-select dropdown-toggle\"\n id={this.props.id || null}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-describedby={this.props[\"aria-describedby\"] || null}\n disabled={this.props.disabled || false}\n >\n <Icon icon={this.getIcon()} />\n {this.getLabel()}\n </button>\n <ul className=\"dropdown-menu\">\n {this.props.choices.map((item, i) => {\n return (\n <li key={i}>\n <button\n type=\"button\"\n className=\"btn-link\"\n onClick={this.change(item.value)}\n >\n <Icon icon={item.icon} />\n {item.label}\n </button>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n\nexport function Icon({ icon }) {\n if (!icon) return null\n\n return <span className=\"material-icon\">{icon}</span>\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport StartSocialAuth from \"misago/components/StartSocialAuth\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n showActivation: false,\n\n username: \"\",\n password: \"\",\n\n validators: {\n username: [],\n password: [],\n },\n }\n }\n\n clean() {\n if (!this.isValid()) {\n snackbar.error(gettext(\"Fill out both fields.\"))\n return false\n } else {\n return true\n }\n }\n\n send() {\n return ajax.post(misago.get(\"AUTH_API\"), {\n username: this.state.username,\n password: this.state.password,\n })\n }\n\n handleSuccess() {\n let form = $(\"#hidden-login-form\")\n\n form.append('<input type=\"text\" name=\"username\" />')\n form.append('<input type=\"password\" name=\"password\" />')\n\n // fill out form with user credentials and submit it, this will tell\n // Misago to redirect user back to right page, and will trigger browser's\n // key ring feature\n form.find('input[type=\"hidden\"]').val(ajax.getCsrfToken())\n form.find('input[name=\"redirect_to\"]').val(window.location.pathname)\n form.find('input[name=\"username\"]').val(this.state.username)\n form.find('input[name=\"password\"]').val(this.state.password)\n form.submit()\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.code === \"inactive_admin\") {\n snackbar.info(rejection.detail)\n } else if (rejection.code === \"inactive_user\") {\n snackbar.info(rejection.detail)\n this.setState({\n showActivation: true,\n })\n } else if (rejection.code === \"banned\") {\n showBannedPage(rejection.detail)\n modal.hide()\n } else {\n snackbar.error(rejection.detail)\n }\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n modal.hide()\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n getActivationButton() {\n if (!this.state.showActivation) return null\n\n return (\n <a\n className=\"btn btn-success btn-block\"\n href={misago.get(\"REQUEST_ACTIVATION_URL\")}\n >\n {gettext(\"Activate account\")}\n </a>\n )\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-sm modal-sign-in\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Sign in\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <StartSocialAuth\n buttonLabel={gettext(\"Sign in with %(site)s\")}\n formLabel={gettext(\"Or use your forum account:\")}\n labelClassName=\"text-center\"\n />\n\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n className=\"form-control input-lg\"\n disabled={this.state.isLoading}\n id=\"id_username\"\n onChange={this.bindInput(\"username\")}\n placeholder={gettext(\"Username or e-mail\")}\n type=\"text\"\n value={this.state.username}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n className=\"form-control input-lg\"\n disabled={this.state.isLoading}\n id=\"id_password\"\n onChange={this.bindInput(\"password\")}\n placeholder={gettext(\"Password\")}\n type=\"password\"\n value={this.state.password}\n />\n </div>\n </div>\n </div>\n <div className=\"modal-footer\">\n {this.getActivationButton()}\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Sign in\")}\n </Button>\n <a\n className=\"btn btn-default btn-block\"\n href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}\n >\n {gettext(\"Forgot password?\")}\n </a>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClass() {\n return getStatusClassName(this.props.status)\n }\n\n render() {\n return <span className={this.getClass()}>{this.props.children}</span>\n }\n}\n\nexport class StatusIcon extends React.Component {\n getIcon() {\n if (this.props.status.is_banned) {\n return \"remove_circle_outline\"\n } else if (this.props.status.is_hidden) {\n return \"help_outline\"\n } else if (this.props.status.is_online_hidden) {\n return \"label\"\n } else if (this.props.status.is_offline_hidden) {\n return \"label_outline\"\n } else if (this.props.status.is_online) {\n return \"lens\"\n } else if (this.props.status.is_offline) {\n return \"panorama_fish_eye\"\n }\n }\n\n render() {\n return <span className=\"material-icon status-icon\">{this.getIcon()}</span>\n }\n}\n\nexport class StatusLabel extends React.Component {\n getHelp() {\n return getStatusDescription(this.props.user, this.props.status)\n }\n\n getLabel() {\n if (this.props.status.is_banned) {\n return gettext(\"Banned\")\n } else if (this.props.status.is_hidden) {\n return gettext(\"Hidden\")\n } else if (this.props.status.is_online_hidden) {\n return gettext(\"Online (hidden)\")\n } else if (this.props.status.is_offline_hidden) {\n return gettext(\"Offline (hidden)\")\n } else if (this.props.status.is_online) {\n return gettext(\"Online\")\n } else if (this.props.status.is_offline) {\n return gettext(\"Offline\")\n }\n }\n\n render() {\n return (\n <span\n className={this.props.className || \"status-label\"}\n title={this.getHelp()}\n >\n {this.getLabel()}\n </span>\n )\n }\n}\n\nexport function getStatusClassName(status) {\n let className = \"\"\n if (status.is_banned) {\n className = \"banned\"\n } else if (status.is_hidden) {\n className = \"offline\"\n } else if (status.is_online_hidden) {\n className = \"online\"\n } else if (status.is_offline_hidden) {\n className = \"offline\"\n } else if (status.is_online) {\n className = \"online\"\n } else if (status.is_offline) {\n className = \"offline\"\n }\n\n return \"user-status user-\" + className\n}\n\nexport function getStatusDescription(user, status) {\n if (status.is_banned) {\n if (status.banned_until) {\n return interpolate(\n gettext(\"%(username)s is banned until %(ban_expires)s\"),\n {\n username: user.username,\n ban_expires: status.banned_until.format(\"LL, LT\"),\n },\n true\n )\n } else {\n return interpolate(\n gettext(\"%(username)s is banned\"),\n {\n username: user.username,\n },\n true\n )\n }\n } else if (status.is_hidden) {\n return interpolate(\n gettext(\"%(username)s is hiding presence\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_online_hidden) {\n return interpolate(\n gettext(\"%(username)s is online (hidden)\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_offline_hidden) {\n return interpolate(\n gettext(\"%(username)s was last seen %(last_click)s (hidden)\"),\n {\n username: user.username,\n last_click: status.last_click.fromNow(),\n },\n true\n )\n } else if (status.is_online) {\n return interpolate(\n gettext(\"%(username)s is online\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_offline) {\n return interpolate(\n gettext(\"%(username)s was last seen %(last_click)s\"),\n {\n username: user.username,\n last_click: status.last_click.fromNow(),\n },\n true\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getEmptyMessage() {\n if (this.props.emptyMessage) {\n return this.props.emptyMessage\n } else {\n return gettext(\"No name changes have been recorded for your account.\")\n }\n }\n\n render() {\n return (\n <div className=\"username-history ui-ready\">\n <ul className=\"list-group\">\n <li className=\"list-group-item empty-message\">\n {this.getEmptyMessage()}\n </li>\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default class extends React.Component {\n renderUserAvatar() {\n if (this.props.change.changed_by) {\n return (\n <a\n href={this.props.change.changed_by.url}\n className=\"user-avatar-wrapper\"\n >\n <Avatar user={this.props.change.changed_by} size=\"100\" />\n </a>\n )\n } else {\n return (\n <span className=\"user-avatar-wrapper\">\n <Avatar size=\"100\" />\n </span>\n )\n }\n }\n\n renderUsername() {\n if (this.props.change.changed_by) {\n return (\n <a href={this.props.change.changed_by.url} className=\"item-title\">\n {this.props.change.changed_by.username}\n </a>\n )\n } else {\n return (\n <span className=\"item-title\">\n {this.props.change.changed_by_username}\n </span>\n )\n }\n }\n\n render() {\n return (\n <li className=\"list-group-item\" key={this.props.change.id}>\n <div className=\"change-avatar\">{this.renderUserAvatar()}</div>\n <div className=\"change-author\">{this.renderUsername()}</div>\n <div className=\"change\">\n <span className=\"old-username\">{this.props.change.old_username}</span>\n <span className=\"material-icon\">arrow_forward</span>\n <span className=\"new-username\">{this.props.change.new_username}</span>\n </div>\n <div className=\"change-date\">\n <abbr title={this.props.change.changed_on.format(\"LLL\")}>\n {this.props.change.changed_on.fromNow()}\n </abbr>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport Change from \"misago/components/username-history/change\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"username-history ui-ready\">\n <ul className=\"list-group\">\n {this.props.changes.map((change) => {\n return <Change change={change} key={change.id} />\n })}\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n getClassName() {\n if (this.props.hiddenOnMobile) {\n return \"list-group-item hidden-xs hidden-sm\"\n } else {\n return \"list-group-item\"\n }\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"change-avatar\">\n <span className=\"user-avatar\">\n <Avatar size=\"100\" />\n </span>\n </div>\n <div className=\"change-author\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 100) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"change\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n <span className=\"material-icon\">arrow_forward</span>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"change-date\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(80, 140) + \"px\" }}\n >\n \n </span>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ChangePreview from \"misago/components/username-history/change-preview\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"username-history ui-preview\">\n <ul className=\"list-group\">\n {[0, 1, 2].map((i) => {\n return <ChangePreview hiddenOnMobile={i > 0} key={i} />\n })}\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ListEmpty from \"misago/components/username-history/list-empty\"\nimport ListReady from \"misago/components/username-history/list-ready\"\nimport ListPreview from \"misago/components/username-history/list-preview\"\n\nexport default class extends React.Component {\n render() {\n if (this.props.isLoaded) {\n if (this.props.changes.length) {\n return <ListReady changes={this.props.changes} />\n } else {\n return <ListEmpty emptyMessage={this.props.emptyMessage} />\n }\n } else {\n return <ListPreview />\n }\n }\n}\n","import React from \"react\"\nimport UserStatus, { StatusLabel } from \"misago/components/user-status\"\n\nexport default function ({ showStatus, user }) {\n return (\n <ul className=\"list-unstyled\">\n <Status showStatus={showStatus} user={user} />\n <JoinDate user={user} />\n <li className=\"user-stat-divider\" />\n <Posts user={user} />\n <Threads user={user} />\n <Followers user={user} />\n </ul>\n )\n}\n\nexport function Status({ showStatus, user }) {\n if (!showStatus) return null\n\n return (\n <li className=\"user-stat-status\">\n <UserStatus status={user.status}>\n <StatusLabel status={user.status} user={user} />\n </UserStatus>\n </li>\n )\n}\n\nexport function JoinDate({ user }) {\n const { joined_on } = user\n\n let title = interpolate(\n gettext(\"Joined on %(joined_on)s\"),\n {\n joined_on: joined_on.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"Joined %(joined_on)s\"),\n {\n joined_on: joined_on.fromNow(),\n },\n true\n )\n\n return (\n <li className=\"user-stat-join-date\">\n <abbr title={title}>{message}</abbr>\n </li>\n )\n}\n\nexport function Posts({ user }) {\n const className = getStatClassName(\"user-stat-posts\", user.posts)\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", user.posts)\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n posts: user.posts,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Threads({ user }) {\n const className = getStatClassName(\"user-stat-threads\", user.threads)\n const message = ngettext(\n \"%(threads)s thread\",\n \"%(threads)s threads\",\n user.threads\n )\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n threads: user.threads,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Followers({ user }) {\n const className = getStatClassName(\"user-stat-followers\", user.followers)\n const message = ngettext(\n \"%(followers)s follower\",\n \"%(followers)s followers\",\n user.followers\n )\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n followers: user.followers,\n },\n true\n )}\n </li>\n )\n}\n\nexport function getStatClassName(className, stat) {\n if (stat === 0) {\n return className + \" user-stat-empty\"\n }\n return className\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title || rank.name\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <a className={className} href={rank.url}>\n {userTitle}\n </a>\n )\n }\n\n return <span className={className}>{userTitle}</span>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Stats from \"./stats\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ showStatus, user }) {\n const { rank } = user\n\n let className = \"panel user-card\"\n if (rank.css_class) {\n className += \" user-card-\" + rank.css_class\n }\n\n return (\n <div className={className}>\n <div className=\"panel-body\">\n <div className=\"row\">\n <div className=\"col-xs-3 user-card-left\">\n <div className=\"user-card-small-avatar\">\n <a href={user.url}>\n <Avatar size=\"50\" size2x=\"80\" user={user} />\n </a>\n </div>\n </div>\n <div className=\"col-xs-9 col-sm-12 user-card-body\">\n <div className=\"user-card-avatar\">\n <a href={user.url}>\n <Avatar size=\"150\" size2x=\"200\" user={user} />\n </a>\n </div>\n\n <div className=\"user-card-username\">\n <a href={user.url}>{user.username}</a>\n </div>\n <div className=\"user-card-title\">\n <UserTitle rank={rank} title={user.title} />\n </div>\n\n <div className=\"user-card-stats\">\n <Stats showStatus={showStatus} user={user} />\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"panel user-card user-card-preview\">\n <div className=\"panel-body\">\n <div className=\"row\">\n <div className=\"col-xs-3 user-card-left\">\n <div className=\"user-card-small-avatar\">\n <span>\n <Avatar size=\"50\" size2x=\"80\" />\n </span>\n </div>\n </div>\n <div className=\"col-xs-9 col-sm-12 user-card-body\">\n <div className=\"user-card-avatar\">\n <span>\n <Avatar size=\"150\" size2x=\"200\" />\n </span>\n </div>\n\n <div className=\"user-card-username\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(60, 150) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"user-card-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(60, 150) + \"px\" }}\n >\n \n </span>\n </div>\n\n <div className=\"user-card-stats\">\n <ul className=\"list-unstyled\">\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li className=\"user-stat-divider\" />\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Card from \"./card\"\n\nexport default function ({ colClassName, cols }) {\n const list = Array.apply(null, { length: cols }).map(Number.call, Number)\n\n return (\n <div className=\"users-cards-list ui-preview\">\n <div className=\"row\">\n {list.map((i) => {\n let className = colClassName\n if (i !== 0) className += \" hidden-xs\"\n if (i === 3) className += \" hidden-sm\"\n\n return (\n <div className={className} key={i}>\n <Card />\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Card from \"./card\"\nimport Preview from \"./preview\"\n\nexport default function ({ cols, isReady, showStatus, users }) {\n let colClassName = \"col-xs-12 col-sm-4\"\n if (cols === 4) {\n colClassName += \" col-md-3\"\n }\n\n if (!isReady) {\n return <Preview colClassName={colClassName} cols={cols} />\n }\n\n return (\n <div className=\"users-cards-list ui-ready\">\n <div className=\"row\">\n {users.map((user) => {\n return (\n <div className={colClassName} key={user.id}>\n <Card showStatus={showStatus} user={user} />\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n dropdown: false,\n }\n }\n\n toggleNav = () => {\n this.setState({\n dropdown: !this.state.dropdown,\n })\n }\n\n hideNav = () => {\n this.setState({\n dropdown: false,\n })\n }\n\n getCompactNavClassName() {\n if (this.state.dropdown) {\n return \"compact-nav open\"\n } else {\n return \"compact-nav\"\n }\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.value) {\n return \"btn btn-yes-no btn-yes-no-on\"\n } else {\n return \"btn btn-yes-no btn-yes-no-off\"\n }\n }\n\n getIcon() {\n if (!!this.props.value) {\n return this.props.iconOn || \"check_box\"\n } else {\n return this.props.iconOff || \"check_box_outline_blank\"\n }\n }\n\n getLabel() {\n if (!!this.props.value) {\n return this.props.labelOn || gettext(\"yes\")\n } else {\n return this.props.labelOff || gettext(\"no\")\n }\n }\n\n toggle = () => {\n this.props.onChange({\n target: {\n value: !this.props.value,\n },\n })\n }\n\n render() {\n return (\n <button\n type=\"button\"\n onClick={this.toggle}\n className={this.getClassName()}\n id={this.props.id || null}\n aria-describedby={this.props[\"aria-describedby\"] || null}\n disabled={this.props.disabled || false}\n >\n <span className=\"material-icon\">{this.getIcon()}</span>\n <span className=\"btn-text\">{this.getLabel()}</span>\n </button>\n )\n }\n}\n","class OrderedList {\n constructor(items) {\n this.isOrdered = false\n this._items = items || []\n }\n\n add(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n\n after: order ? order.after || null : null,\n before: order ? order.before || null : null,\n })\n }\n\n get(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item\n }\n }\n\n return value\n }\n\n has(key) {\n return this.get(key) !== undefined\n }\n\n values() {\n var values = []\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item)\n }\n return values\n }\n\n order(values_only) {\n if (!this.isOrdered) {\n this._items = this._order(this._items)\n this.isOrdered = true\n }\n\n if (values_only || typeof values_only === \"undefined\") {\n return this.values()\n } else {\n return this._items\n }\n }\n\n orderedValues() {\n return this.order(true)\n }\n\n _order(unordered) {\n // Index of unordered items\n var index = []\n unordered.forEach(function (item) {\n index.push(item.key)\n })\n\n // Ordered items\n var ordered = []\n var ordering = []\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item)\n ordering.push(item.key)\n }\n })\n\n // Second pass: register items that\n // specify their before to \"_end\"\n unordered.forEach(function (item) {\n if (item.before === \"_end\") {\n ordered.push(item)\n ordering.push(item.key)\n }\n })\n\n // Third pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after)\n if (insertAt !== -1) {\n insertAt += 1\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before)\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item)\n ordering.splice(insertAt, 0, item.key)\n }\n }\n }\n\n var iterations = 200\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1\n unordered.forEach(insertItem)\n }\n\n return ordered\n }\n}\n\nexport default OrderedList\n","import \"bootstrap/js/transition\"\nimport \"bootstrap/js/affix\"\nimport \"bootstrap/js/modal\"\nimport \"bootstrap/js/dropdown\"\nimport \"at-js\"\nimport \"cropit\"\nimport \"waypoints\"\nimport \"jquery-caret\"\nimport \"highlight\"\nimport OrderedList from \"misago/utils/ordered-list\"\nimport \"misago/style/index.less\"\n\nexport class Misago {\n constructor() {\n this._initializers = []\n this._context = {}\n }\n\n addInitializer(initializer) {\n this._initializers.push({\n key: initializer.name,\n\n item: initializer.initializer,\n\n after: initializer.after,\n before: initializer.before,\n })\n }\n\n init(context) {\n this._context = context\n\n var initOrder = new OrderedList(this._initializers).orderedValues()\n initOrder.forEach((initializer) => {\n initializer(this)\n })\n }\n\n // context accessors\n has(key) {\n return !!this._context[key]\n }\n\n get(key, fallback) {\n if (this.has(key)) {\n return this._context[key]\n } else {\n return fallback || undefined\n }\n }\n\n pop(key) {\n if (this.has(key)) {\n let value = this._context[key]\n this._context[key] = null\n return value\n } else {\n return undefined\n }\n }\n}\n\n// create singleton\nvar misago = new Misago()\n\n// expose it globally\nwindow.misago = misago\n\n// and export it for tests and stuff\nexport default misago\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\n\nexport default function initializer() {\n ajax.init(misago.get(\"CSRF_COOKIE_NAME\"))\n}\n\nmisago.addInitializer({\n name: \"ajax\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport { patch } from \"misago/reducers/auth\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nconst AUTH_SYNC_RATE = 45 // sync user with backend every 45 seconds\n\nexport default function initializer(context) {\n if (context.get(\"isAuthenticated\")) {\n window.setInterval(function () {\n ajax.get(context.get(\"AUTH_API\")).then(\n function (data) {\n store.dispatch(patch(data))\n },\n function (rejection) {\n snackbar.apiError(rejection)\n }\n )\n }, AUTH_SYNC_RATE * 1000)\n }\n}\n\nmisago.addInitializer({\n name: \"auth-sync\",\n initializer: initializer,\n after: \"auth\",\n})\n","import misago from \"misago/index\"\nimport auth from \"misago/services/auth\"\nimport modal from \"misago/services/modal\"\nimport store from \"misago/services/store\"\nimport storage from \"misago/services/local-storage\"\n\nexport default function initializer() {\n auth.init(store, storage, modal)\n}\n\nmisago.addInitializer({\n name: \"auth\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport captcha from \"misago/services/captcha\"\nimport include from \"misago/services/include\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default function initializer(context) {\n captcha.init(context, ajax, include, snackbar)\n}\n\nmisago.addInitializer({\n name: \"captcha\",\n initializer: initializer,\n})\n","import React from \"react\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class AcceptAgreement extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = { submiting: false }\n }\n\n handleDecline = () => {\n if (this.state.submiting) return\n\n const confirmation = window.confirm(\n gettext(\n \"Declining will result in immediate deactivation and deletion of your account. This action is not reversible.\"\n )\n )\n if (!confirmation) return\n\n this.setState({ submiting: true })\n\n ajax.post(this.props.api, { accept: false }).then(() => {\n window.location.reload(true)\n })\n }\n\n handleAccept = () => {\n if (this.state.submiting) return\n\n this.setState({ submiting: true })\n\n ajax.post(this.props.api, { accept: true }).then(() => {\n window.location.reload(true)\n })\n }\n\n render() {\n return (\n <div>\n <button\n className=\"btn btn-default\"\n disabled={this.state.submiting}\n type=\"buton\"\n onClick={this.handleDecline}\n >\n {gettext(\"Decline\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.submiting}\n type=\"buton\"\n onClick={this.handleAccept}\n >\n {gettext(\"Accept and continue\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport AcceptAgreement from \"misago/components/accept-agreement\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer(context) {\n if (document.getElementById(\"required-agreement-mount\")) {\n mount(\n <AcceptAgreement api={context.get(\"REQUIRED_AGREEMENT_API\")} />,\n \"required-agreement-mount\",\n false\n )\n }\n}\n\nmisago.addInitializer({\n name: \"component:accept-agreement\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nexport default class extends React.Component {\n refresh() {\n window.location.reload()\n }\n\n getMessage() {\n if (this.props.signedIn) {\n return interpolate(\n gettext(\n \"You have signed in as %(username)s. Please refresh the page before continuing.\"\n ),\n { username: this.props.signedIn.username },\n true\n )\n } else if (this.props.signedOut) {\n return interpolate(\n gettext(\n \"%(username)s, you have been signed out. Please refresh the page before continuing.\"\n ),\n { username: this.props.user.username },\n true\n )\n }\n }\n\n render() {\n let className = \"auth-message\"\n if (this.props.signedIn || this.props.signedOut) {\n className += \" show\"\n }\n\n return (\n <div className={className}>\n <div className=\"container\">\n <p className=\"lead\">{this.getMessage()}</p>\n <p>\n <button\n className=\"btn btn-default\"\n type=\"button\"\n onClick={this.refresh}\n >\n {gettext(\"Reload page\")}\n </button>\n <span className=\"hidden-xs hidden-sm\">\n {\" \" + gettext(\"or press F5 key.\")}\n </span>\n </p>\n </div>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return {\n user: state.auth.user,\n signedIn: state.auth.signedIn,\n signedOut: state.auth.signedOut,\n }\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport AuthMessage, { select } from \"misago/components/auth-message\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(AuthMessage), \"auth-message-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:auth-message\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport default function initializer(context) {\n if (context.has(\"BAN_MESSAGE\")) {\n showBannedPage(context.get(\"BAN_MESSAGE\"), false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:banmed-page\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"categories-list\">\n <ul className=\"list-group\">\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {gettext(\n \"No categories exist or you don't have permission to see them.\"\n )}\n </p>\n </li>\n </ul>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n if (!category.description) return null\n\n return (\n <div\n className=\"category-description\"\n dangerouslySetInnerHTML={{\n __html: category.description.html,\n }}\n />\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n return (\n <div className={getClassName(category)} title={getTitle(category)}>\n <span className=\"material-icon\">{getIcon(category)}</span>\n </div>\n )\n}\n\nexport function getClassName(category) {\n if (category.is_read) {\n return \"read-status item-read\"\n }\n\n return \"read-status item-new\"\n}\n\nexport function getTitle(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return gettext(\"This category has no new posts. (closed)\")\n }\n\n return gettext(\"This category has new posts. (closed)\")\n }\n\n if (category.is_read) {\n return gettext(\"This category has no new posts.\")\n }\n\n return gettext(\"This category has new posts.\")\n}\n\nexport function getIcon(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return \"lock_outline\"\n }\n\n return \"lock\"\n }\n\n if (category.is_read) {\n return \"chat_bubble_outline\"\n }\n\n return \"chat_bubble\"\n}\n","import React from \"react\"\nimport Description from \"./description\"\nimport Icon from \"./icon\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-xs-12 col-sm-6 col-md-6 category-main\">\n <div className=\"media\">\n <div className=\"media-left\">\n <Icon category={category} />\n </div>\n <div className=\"media-body\">\n <h4 className=\"media-heading\">\n <a href={category.url.index}>{category.name}</a>\n </h4>\n <Description category={category} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-xs-12 col-sm-6 col-md-4 category-last-thread\">\n <LastThread category={category} />\n <Empty category={category} />\n <Private category={category} />\n <Protected category={category} />\n </div>\n )\n}\n\nexport function LastThread({ category }) {\n if (!category.acl.can_browse) return null\n if (!category.acl.can_see_all_threads) return null\n if (!category.last_thread_title) return null\n\n return (\n <div className=\"media\">\n <div className=\"media-left hidden-xs\">\n <LastPosterAvatar category={category} />\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a\n className=\"item-title thread-title\"\n href={category.url.last_thread_new}\n title={category.last_thread_title}\n >\n {category.last_thread_title}\n </a>\n </div>\n <ul className=\"list-inline\">\n <li className=\"category-last-thread-poster\">\n <LastPosterName category={category} />\n </li>\n <li className=\"divider\">—</li>\n <li className=\"category-last-thread-date\">\n <a href={category.url.last_post}>\n {category.last_post_on.fromNow()}\n </a>\n </li>\n </ul>\n </div>\n </div>\n )\n}\n\nexport function LastPosterAvatar({ category }) {\n if (category.last_poster) {\n return (\n <a\n className=\"last-poster-avatar\"\n href={category.last_poster.url}\n title={category.last_poster_name}\n >\n <Avatar\n className=\"media-object\"\n size={40}\n user={category.last_poster}\n />\n </a>\n )\n }\n\n return (\n <span className=\"last-poster-avatar\" title={category.last_poster_name}>\n <Avatar className=\"media-object\" size={40} />\n </span>\n )\n}\n\nexport function LastPosterName({ category }) {\n if (category.last_poster) {\n return (\n <a className=\"item-title\" href={category.last_poster.url}>\n {category.last_poster_name}\n </a>\n )\n }\n\n return <span className=\"item-title\">{category.last_poster_name}</span>\n}\n\nexport function Empty({ category }) {\n if (!category.acl.can_browse) return null\n if (!category.acl.can_see_all_threads) return null\n if (category.last_thread_title) return null\n\n return (\n <Message\n message={gettext(\n \"This category is empty. No threads were posted within it so far.\"\n )}\n />\n )\n}\n\nexport function Private({ category }) {\n if (!category.acl.can_browse) return null\n if (category.acl.can_see_all_threads) return null\n\n return (\n <Message\n message={gettext(\n \"This category is private. You can see only your own threads within it.\"\n )}\n />\n )\n}\n\nexport function Protected({ category }) {\n if (category.acl.can_browse) return null\n\n return (\n <Message\n message={gettext(\n \"This category is protected. You can't browse its contents.\"\n )}\n />\n )\n}\n\nexport function Message({ message }) {\n return (\n <div className=\"media category-thread-message\">\n <div className=\"media-left\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"media-body\">\n <p>{message}</p>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-md-2 hidden-xs hidden-sm\">\n <ul className=\"list-unstyled category-stats\">\n <Threads threads={category.threads} />\n <Posts posts={category.posts} />\n </ul>\n </div>\n )\n}\n\nexport function Threads({ threads }) {\n const message = ngettext(\"%(threads)s thread\", \"%(threads)s threads\", threads)\n\n return (\n <li className=\"category-stat-threads\">\n {interpolate(\n message,\n {\n threads: threads,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Posts({ posts }) {\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", posts)\n\n return (\n <li className=\"category-stat-posts\">\n {interpolate(\n message,\n {\n posts: posts,\n },\n true\n )}\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n let className = \"btn btn-default btn-block btn-sm btn-subcategory\"\n if (!category.is_read) {\n className += \" btn-subcategory-new\"\n }\n\n return (\n <div className=\"col-xs-12 col-sm-4 col-md-3\">\n <a className={className} href={category.url.index}>\n <span className=\"material-icon\">{getIcon(category)}</span>\n <span className=\"icon-text\">{category.name}</span>\n </a>\n </div>\n )\n}\n\nexport function getIcon(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return \"lock_outline\"\n }\n\n return \"lock\"\n }\n\n if (category.is_read) {\n return \"chat_bubble_outline\"\n }\n\n return \"chat_bubble\"\n}\n","import React from \"react\"\nimport ListItem from \"./list-item\"\n\nexport default function ({ category, isFirst }) {\n if (isFirst) return null\n if (category.subcategories.length === 0) return null\n\n return (\n <div className=\"row subcategories-list\">\n {category.subcategories.map((category) => {\n return <ListItem category={category} key={category.id} />\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport Main from \"./main\"\nimport LastThread from \"./last-thread\"\nimport Stats from \"./stats\"\nimport Subcategories from \"./subcategories\"\n\nexport default function ({ category, isFirst }) {\n let className = \"list-group-item\"\n\n if (category.description) {\n className += \" list-group-category-has-description\"\n } else {\n className += \" list-group-category-no-description\"\n }\n\n if (isFirst) {\n className += \" list-group-item-first\"\n }\n if (category.css_class) {\n className += \" list-group-category-has-flavor\"\n className += \" list-group-item-category-\" + category.css_class\n }\n\n return (\n <li className={className}>\n <div className=\"row\">\n <Main category={category} />\n <Stats category={category} />\n <LastThread category={category} />\n </div>\n <Subcategories category={category} isFirst={isFirst} />\n </li>\n )\n}\n","import React from \"react\"\nimport ListItem from \"./list-item\"\n\nexport default function ({ category }) {\n let className = \"list-group list-group-category\"\n if (category.css_class) {\n className += \" list-group-category-has-flavor\"\n className += \" list-group-category-\" + category.css_class\n }\n\n return (\n <ul className={className}>\n <ListItem category={category} isFirst={true} />\n {category.subcategories.map((category) => {\n return (\n <ListItem category={category} isFirst={false} key={category.id} />\n )\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport Category from \"./category\"\n\nexport default function ({ categories }) {\n return (\n <div className=\"categories-list\">\n {categories.map((category) => {\n return <Category category={category} key={category.id} />\n })}\n </div>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport Blankslate from \"./blankslate\"\nimport CategoriesList from \"./categories-list\"\nimport misago from \"misago/index\"\nimport polls from \"misago/services/polls\"\n\nconst hydrate = function (category) {\n return Object.assign({}, category, {\n last_post_on: category.last_post_on ? moment(category.last_post_on) : null,\n subcategories: category.subcategories.map(hydrate),\n })\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n categories: misago.get(\"CATEGORIES\").map(hydrate),\n }\n\n this.startPolling(misago.get(\"CATEGORIES_API\"))\n }\n\n startPolling(api) {\n polls.start({\n poll: \"categories\",\n url: api,\n frequency: 180 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n this.setState({\n categories: data.map(hydrate),\n })\n }\n\n render() {\n const { categories } = this.state\n\n if (categories.length === 0) {\n return <Blankslate />\n }\n\n return <CategoriesList categories={categories} />\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n }\n}\n","import { connect } from \"react-redux\"\nimport Categories, { select } from \"misago/components/categories\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"categories-mount\")) {\n mount(connect(select)(Categories), \"categories-mount\")\n }\n}\n\nmisago.addInitializer({\n name: \"component:categories\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nexport function SideNav(props) {\n return (\n <div className=\"list-group nav-side\">\n {props.options.map((option) => {\n return (\n <Link\n to={props.baseUrl + option.component + \"/\"}\n className=\"list-group-item\"\n activeClassName=\"active\"\n key={option.component}\n >\n <span className=\"material-icon\">{option.icon}</span>\n {option.name}\n </Link>\n )\n })}\n </div>\n )\n}\n\nexport function CompactNav(props) {\n return (\n <ul className={props.className || \"dropdown-menu\"} role=\"menu\">\n {props.options.map((option) => {\n return (\n <Li\n path={props.baseUrl + option.component + \"/\"}\n key={option.component}\n >\n <Link\n to={props.baseUrl + option.component + \"/\"}\n onClick={props.hideNav}\n >\n <span className=\"material-icon hidden-sm\">{option.icon}</span>\n {option.name}\n </Link>\n </Li>\n )\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n password: \"\",\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Delete account\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n onPasswordChange = (event) => {\n this.setState({ password: event.target.value })\n }\n\n handleSubmit = (event) => {\n event.preventDefault()\n\n const { isLoading, password } = this.state\n const { user } = this.props\n\n if (password.length == 0) {\n snackbar.error(\n gettext(\"Enter your password to confirm account deletion.\")\n )\n return false\n }\n\n if (isLoading) return false\n this.setState({ isLoading: true })\n\n ajax.post(user.api.delete, { password }).then(\n (success) => {\n window.location.href = misago.get(\"MISAGO_PATH\")\n },\n (rejection) => {\n this.setState({ isLoading: false })\n if (rejection.password) {\n snackbar.error(rejection.password[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-danger panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Delete account\")}</h3>\n </div>\n <div className=\"panel-body\">\n <p className=\"lead\">\n {gettext(\n \"You are going to delete your account. This action is nonreversible, and will result in following data being deleted:\"\n )}\n </p>\n\n <p>\n -{\" \"}\n {gettext(\n \"Stored IP addresses associated with content that you have posted will be deleted.\"\n )}\n </p>\n <p>\n -{\" \"}\n {gettext(\n \"Your username will become available for other user to rename to or for new user to register their account with.\"\n )}\n </p>\n <p>\n -{\" \"}\n {gettext(\n \"Your e-mail will become available for use in new account registration.\"\n )}\n </p>\n\n <hr />\n\n <p>\n {gettext(\n \"All your posted content will NOT be deleted, but username associated with it will be changed to one shared by all deleted accounts.\"\n )}\n </p>\n </div>\n <div className=\"panel-footer\">\n <div className=\"input-group\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n name=\"password-confirmation\"\n type=\"password\"\n placeholder={gettext(\n \"Enter your password to confirm account deletion.\"\n )}\n value={this.state.password}\n onChange={this.onPasswordChange}\n />\n <span className=\"input-group-btn\">\n <Button className=\"btn-danger\" loading={this.state.isLoading}>\n {gettext(\"Delete my account\")}\n </Button>\n </span>\n </div>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/edit-details\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n componentDidMount() {\n title.set({\n title: gettext(\"Edit details\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n onSuccess = () => {\n snackbar.info(gettext(\"Your details have been updated.\"))\n }\n\n render() {\n return (\n <Form api={this.props.user.api.edit_details} onSuccess={this.onSuccess} />\n )\n }\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class DownloadData extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n isSubmiting: false,\n downloads: [],\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Download your data\"),\n parent: gettext(\"Change your options\"),\n })\n\n this.handleLoadDownloads()\n }\n\n handleLoadDownloads = () => {\n ajax.get(this.props.user.api.data_downloads).then(\n (data) => {\n this.setState({\n isLoading: false,\n downloads: data,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n handleRequestDataDownload = () => {\n this.setState({ isSubmiting: true })\n ajax.post(this.props.user.api.request_data_download).then(\n () => {\n this.handleLoadDownloads()\n snackbar.success(\n gettext(\"Your request for data download has been registered.\")\n )\n this.setState({ isSubmiting: false })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n this.setState({ isSubmiting: false })\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Download your data\")}</h3>\n </div>\n <div className=\"panel-body\">\n <p>\n {gettext(\n 'To download your data from the site, click the \"Request data download\" button. Depending on amount of data to be archived and number of users wanting to download their data at same time it may take up to few days for your download to be prepared. An e-mail with notification will be sent to you when your data is ready to be downloaded.'\n )}\n </p>\n\n <p>\n {gettext(\n \"The download will only be available for limited amount of time, after which it will be deleted from the site and marked as expired.\"\n )}\n </p>\n </div>\n <table className=\"table\">\n <thead>\n <tr>\n <th>{gettext(\"Requested on\")}</th>\n <th className=\"col-md-4\">{gettext(\"Download\")}</th>\n </tr>\n </thead>\n <tbody>\n {this.state.downloads.map((item) => {\n return (\n <tr key={item.id}>\n <td style={rowStyle}>\n {moment(item.requested_on).fromNow()}\n </td>\n <td>\n <DownloadButton\n exportFile={item.file}\n status={item.status}\n />\n </td>\n </tr>\n )\n })}\n {this.state.downloads.length == 0 ? (\n <tr>\n <td colSpan=\"2\">{gettext(\"You have no data downloads.\")}</td>\n </tr>\n ) : null}\n </tbody>\n </table>\n <div className=\"panel-footer text-right\">\n <Button\n className=\"btn-primary\"\n loading={this.state.isSubmiting}\n type=\"button\"\n onClick={this.handleRequestDataDownload}\n >\n {gettext(\"Request data download\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n}\n\nconst rowStyle = {\n verticalAlign: \"middle\",\n}\n\nconst STATUS_PENDING = 0\nconst STATUS_PROCESSING = 1\n\nconst DownloadButton = ({ exportFile, status }) => {\n if (status === STATUS_PENDING || status === STATUS_PROCESSING) {\n return (\n <Button\n className=\"btn-info btn-sm btn-block\"\n disabled={true}\n type=\"button\"\n >\n {gettext(\"Download is being prepared\")}\n </Button>\n )\n }\n\n if (exportFile) {\n return (\n <a className=\"btn btn-success btn-sm btn-block\" href={exportFile}>\n {gettext(\"Download your data\")}\n </a>\n )\n }\n\n return (\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={true}\n type=\"button\"\n >\n {gettext(\"Download is expired\")}\n </Button>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Select from \"misago/components/select\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport { patch } from \"misago/reducers/auth\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n is_hiding_presence: props.user.is_hiding_presence,\n limits_private_thread_invites_to:\n props.user.limits_private_thread_invites_to,\n subscribe_to_started_threads: props.user.subscribe_to_started_threads,\n subscribe_to_replied_threads: props.user.subscribe_to_replied_threads,\n\n errors: {},\n }\n\n this.privateThreadInvitesChoices = [\n {\n value: 0,\n icon: \"help_outline\",\n label: gettext(\"Everybody\"),\n },\n {\n value: 1,\n icon: \"done_all\",\n label: gettext(\"Users I follow\"),\n },\n {\n value: 2,\n icon: \"highlight_off\",\n label: gettext(\"Nobody\"),\n },\n ]\n\n this.subscribeToChoices = [\n {\n value: 0,\n icon: \"star_border\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"star_half\",\n label: gettext(\"Notify\"),\n },\n {\n value: 2,\n icon: \"star\",\n label: gettext(\"Notify with e-mail\"),\n },\n ]\n }\n\n send() {\n return ajax.post(this.props.user.api.options, {\n is_hiding_presence: this.state.is_hiding_presence,\n limits_private_thread_invites_to:\n this.state.limits_private_thread_invites_to,\n subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n subscribe_to_replied_threads: this.state.subscribe_to_replied_threads,\n })\n }\n\n handleSuccess() {\n store.dispatch(\n patch({\n is_hiding_presence: this.state.is_hiding_presence,\n limits_private_thread_invites_to:\n this.state.limits_private_thread_invites_to,\n subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n subscribe_to_replied_threads: this.state.subscribe_to_replied_threads,\n })\n )\n snackbar.success(gettext(\"Your forum options have been changed.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(gettext(\"Please reload page and try again.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Forum options\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change forum options\")}</h3>\n </div>\n <div className=\"panel-body\">\n <fieldset>\n <legend>{gettext(\"Privacy settings\")}</legend>\n\n <FormGroup\n label={gettext(\"Hide my presence\")}\n helpText={gettext(\n \"If you hide your presence, only members with permission to see hidden users will see when you are online.\"\n )}\n for=\"id_is_hiding_presence\"\n >\n <YesNoSwitch\n id=\"id_is_hiding_presence\"\n disabled={this.state.isLoading}\n iconOn=\"visibility_off\"\n iconOff=\"visibility\"\n labelOn={gettext(\"Hide my presence from other users\")}\n labelOff={gettext(\"Show my presence to other users\")}\n onChange={this.bindInput(\"is_hiding_presence\")}\n value={this.state.is_hiding_presence}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Private thread invitations\")}\n for=\"id_limits_private_thread_invites_to\"\n >\n <Select\n id=\"id_limits_private_thread_invites_to\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"limits_private_thread_invites_to\")}\n value={this.state.limits_private_thread_invites_to}\n choices={this.privateThreadInvitesChoices}\n />\n </FormGroup>\n </fieldset>\n\n <fieldset>\n <legend>{gettext(\"Automatic subscriptions\")}</legend>\n\n <FormGroup\n label={gettext(\"Threads I start\")}\n for=\"id_subscribe_to_started_threads\"\n >\n <Select\n id=\"id_subscribe_to_started_threads\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"subscribe_to_started_threads\")}\n value={this.state.subscribe_to_started_threads}\n choices={this.subscribeToChoices}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Threads I reply to\")}\n for=\"id_subscribe_to_replied_threads\"\n >\n <Select\n id=\"id_subscribe_to_replied_threads\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"subscribe_to_replied_threads\")}\n value={this.state.subscribe_to_replied_threads}\n choices={this.subscribeToChoices}\n />\n </FormGroup>\n </fieldset>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport PanelLoader from \"misago/components/panel-loader\"\n\nexport default function () {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <PanelLoader />\n </div>\n )\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default class extends React.Component {\n getHelpText() {\n if (this.props.options.next_on) {\n return interpolate(\n gettext(\"You will be able to change your username %(next_change)s.\"),\n { next_change: this.props.options.next_on.fromNow() },\n true\n )\n } else {\n return gettext(\"You have used up available name changes.\")\n }\n }\n\n render() {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <PanelMessage\n helpText={this.getHelpText()}\n message={gettext(\"You can't change your username at the moment.\")}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n username: \"\",\n\n validators: {\n username: [\n validators.usernameContent(),\n validators.usernameMinLength(props.options.length_min),\n validators.usernameMaxLength(props.options.length_max),\n ],\n },\n\n isLoading: false,\n }\n }\n\n getHelpText() {\n let phrases = []\n\n if (this.props.options.changes_left > 0) {\n let message = ngettext(\n \"You can change your username %(changes_left)s more time.\",\n \"You can change your username %(changes_left)s more times.\",\n this.props.options.changes_left\n )\n\n phrases.push(\n interpolate(\n message,\n {\n changes_left: this.props.options.changes_left,\n },\n true\n )\n )\n }\n\n if (this.props.user.acl.name_changes_expire > 0) {\n let message = ngettext(\n \"Used changes become available again after %(name_changes_expire)s day.\",\n \"Used changes become available again after %(name_changes_expire)s days.\",\n this.props.user.acl.name_changes_expire\n )\n\n phrases.push(\n interpolate(\n message,\n {\n name_changes_expire: this.props.user.acl.name_changes_expire,\n },\n true\n )\n )\n }\n\n return phrases.length ? phrases.join(\" \") : null\n }\n\n clean() {\n let errors = this.validate()\n if (errors.username) {\n snackbar.error(errors.username[0])\n return false\n }\n if (this.state.username.trim() === this.props.user.username) {\n snackbar.info(gettext(\"Your new username is same as current one.\"))\n return false\n } else {\n return true\n }\n }\n\n send() {\n return ajax.post(this.props.user.api.username, {\n username: this.state.username,\n })\n }\n\n handleSuccess(success) {\n this.setState({\n username: \"\",\n })\n\n this.props.complete(success.username, success.slug, success.options)\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup\n label={gettext(\"New username\")}\n for=\"id_username\"\n helpText={this.getHelpText()}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change username\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport FormLoading from \"misago/components/options/change-username/form-loading\"\nimport FormLocked from \"misago/components/options/change-username/form-locked\"\nimport Form from \"misago/components/options/change-username/form\"\nimport UsernameHistory from \"misago/components/username-history/root\"\nimport misago from \"misago/index\"\nimport { hydrate, addNameChange } from \"misago/reducers/username-history\"\nimport { updateUsername } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n options: null,\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Change username\"),\n parent: gettext(\"Change your options\"),\n })\n\n Promise.all([\n ajax.get(this.props.user.api.username),\n ajax.get(misago.get(\"USERNAME_CHANGES_API\"), {\n user: this.props.user.id,\n }),\n ]).then((data) => {\n store.dispatch(hydrate(data[1].results))\n\n this.setState({\n isLoaded: true,\n options: {\n changes_left: data[0].changes_left,\n length_min: data[0].length_min,\n length_max: data[0].length_max,\n next_on: data[0].next_on ? moment(data[0].next_on) : null,\n },\n })\n })\n }\n\n onComplete = (username, slug, options) => {\n this.setState({\n options,\n })\n\n store.dispatch(\n addNameChange({ username, slug }, this.props.user, this.props.user)\n )\n store.dispatch(updateUsername(this.props.user, username, slug))\n\n snackbar.success(gettext(\"Your username has been changed successfully.\"))\n }\n\n getChangeForm() {\n if (!this.state.isLoaded) {\n return <FormLoading />\n }\n\n if (this.state.options.changes_left === 0) {\n return <FormLocked options={this.state.options} />\n }\n\n return (\n <Form\n complete={this.onComplete}\n options={this.state.options}\n user={this.props.user}\n />\n )\n }\n\n render() {\n return (\n <div>\n {this.getChangeForm()}\n <UsernameHistory\n changes={this.props[\"username-history\"]}\n isLoaded={this.state.isLoaded}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n new_email: \"\",\n password: \"\",\n\n validators: {\n new_email: [validators.email()],\n password: [],\n },\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.new_email.trim().length,\n this.state.password.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n if (errors.new_email) {\n snackbar.error(errors.new_email[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.user.api.change_email, {\n new_email: this.state.new_email,\n password: this.state.password,\n })\n }\n\n handleSuccess(response) {\n this.setState({\n new_email: \"\",\n password: \"\",\n })\n\n snackbar.success(response.detail)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.new_email) {\n snackbar.error(rejection.new_email)\n } else {\n snackbar.error(rejection.password)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change e-mail address\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup label={gettext(\"New e-mail\")} for=\"id_new_email\">\n <input\n type=\"text\"\n id=\"id_new_email\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"new_email\")}\n value={this.state.new_email}\n />\n </FormGroup>\n\n <hr />\n\n <FormGroup\n label={gettext(\"Your current password\")}\n for=\"id_confirm_email\"\n >\n <input\n type=\"password\"\n id=\"id_confirm_email\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change e-mail\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n new_password: \"\",\n repeat_password: \"\",\n password: \"\",\n\n validators: {\n new_password: [],\n repeat_password: [],\n password: [],\n },\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.new_password.trim().length,\n this.state.repeat_password.trim().length,\n this.state.password.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n if (errors.new_password) {\n snackbar.error(errors.new_password[0])\n return false\n }\n\n if (this.state.new_password !== this.state.repeat_password) {\n snackbar.error(gettext(\"New passwords are different.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.user.api.change_password, {\n new_password: this.state.new_password,\n password: this.state.password,\n })\n }\n\n handleSuccess(response) {\n this.setState({\n new_password: \"\",\n repeat_password: \"\",\n password: \"\",\n })\n\n snackbar.success(response.detail)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.new_password) {\n snackbar.error(rejection.new_password)\n } else {\n snackbar.error(rejection.password)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change password\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup label={gettext(\"New password\")} for=\"id_new_password\">\n <input\n type=\"password\"\n id=\"id_new_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"new_password\")}\n value={this.state.new_password}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Repeat password\")}\n for=\"id_repeat_password\"\n >\n <input\n type=\"password\"\n id=\"id_repeat_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"repeat_password\")}\n value={this.state.repeat_password}\n />\n </FormGroup>\n\n <hr />\n\n <FormGroup\n label={gettext(\"Your current password\")}\n for=\"id_confirm_password\"\n >\n <input\n type=\"password\"\n id=\"id_confirm_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change password\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\n\nconst UnusablePasswordMessage = () => {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change email or password\")}</h3>\n </div>\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You need to set a password for your account to be able to change your username or email.\"\n )}\n </p>\n <p className=\"help-block\">\n <a\n className=\"btn btn-primary\"\n href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}\n >\n {gettext(\"Set password\")}\n </a>\n </p>\n </div>\n </div>\n </div>\n )\n}\n\nexport default UnusablePasswordMessage\n","import React from \"react\"\nimport ChangeEmail from \"misago/components/options/sign-in-credentials/change-email\"\nimport ChangePassword from \"misago/components/options/sign-in-credentials/change-password\"\nimport misago from \"misago/index\"\nimport title from \"misago/services/page-title\"\nimport UnusablePasswordMessage from \"./UnusablePasswordMessage\"\n\nexport default class extends React.Component {\n componentDidMount() {\n title.set({\n title: gettext(\"Change email or password\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n render() {\n if (!this.props.user.has_usable_password) {\n return <UnusablePasswordMessage />\n }\n\n return (\n <div>\n <ChangeEmail user={this.props.user} />\n <ChangePassword user={this.props.user} />\n\n <p className=\"message-line\">\n <span className=\"material-icon\">warning</span>\n <a href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}>\n {gettext(\"Change forgotten password\")}\n </a>\n </p>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport { SideNav, CompactNav } from \"misago/components/options/navs\"\nimport DeleteAccount from \"misago/components/options/delete-account\"\nimport EditDetails from \"misago/components/options/edit-details\"\nimport DownloadData from \"misago/components/options/download-data\"\nimport ChangeForumOptions from \"misago/components/options/forum-options\"\nimport ChangeUsername from \"misago/components/options/change-username/root\"\nimport ChangeSignInCredentials from \"misago/components/options/sign-in-credentials/root\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport PageContainer from \"../PageContainer\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n render() {\n const page = misago.get(\"USER_OPTIONS\").filter((page) => {\n const url = misago.get(\"USERCP_URL\") + page.component + \"/\"\n return this.props.location.pathname.substr(0, url.length) === url\n })[0]\n\n return (\n <div className=\"page page-options\">\n <PageHeaderContainer>\n <PageHeader styleName=\"options\">\n <PageHeaderBanner styleName=\"options\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol auto>\n <h1>{gettext(\"Change your options\")}</h1>\n </FlexRowCol>\n <FlexRowCol className=\"hidden-xs hidden-md hidden-lg\" shrink>\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Menu\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">menu</span>\n </button>\n <CompactNav\n className=\"dropdown-menu dropdown-menu-right\"\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n <FlexRowSection className=\"hidden-sm hidden-md hidden-lg\">\n <FlexRowCol>\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-block dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </button>\n <CompactNav\n className=\"dropdown-menu\"\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n </FlexRow>\n </PageHeaderBanner>\n </PageHeader>\n </PageHeaderContainer>\n <PageContainer>\n <div className=\"row\">\n <div className=\"col-md-3 hidden-xs hidden-sm\">\n <SideNav\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n <div className=\"col-md-9\">{this.props.children}</div>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n user: store.auth.user,\n \"username-history\": store[\"username-history\"],\n }\n}\n\nexport function paths() {\n const paths = [\n {\n path: misago.get(\"USERCP_URL\") + \"forum-options/\",\n component: connect(select)(ChangeForumOptions),\n },\n {\n path: misago.get(\"USERCP_URL\") + \"edit-details/\",\n component: connect(select)(EditDetails),\n },\n ]\n\n const delegateAuth = misago.get(\"SETTINGS\").DELEGATE_AUTH\n if (!delegateAuth) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"change-username/\",\n component: connect(select)(ChangeUsername),\n })\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"sign-in-credentials/\",\n component: connect(select)(ChangeSignInCredentials),\n })\n }\n\n if (misago.get(\"ENABLE_DOWNLOAD_OWN_DATA\")) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"download-data/\",\n component: connect(select)(DownloadData),\n })\n }\n\n if (!delegateAuth && misago.get(\"ENABLE_DELETE_OWN_ACCOUNT\")) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"delete-account/\",\n component: connect(select)(DeleteAccount),\n })\n }\n\n return paths\n}\n","import Options, { paths } from \"misago/components/options/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"USER_OPTIONS\")) {\n mount({\n root: misago.get(\"USERCP_URL\"),\n component: Options,\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:options\",\n initializer: initializer,\n after: \"store\",\n})\n","import moment from \"moment\"\nimport React from \"react\"\nimport PanelLoader from \"misago/components/panel-loader\"\nimport PanelMessage from \"misago/components/panel-message\"\nimport misago from \"misago/index\"\nimport polls from \"misago/services/polls\"\nimport title from \"misago/services/page-title\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"PROFILE_BAN\")) {\n this.initWithPreloadedData(misago.pop(\"PROFILE_BAN\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling(props.profile.api.ban)\n }\n\n initWithPreloadedData(ban) {\n if (ban.expires_on) {\n ban.expires_on = moment(ban.expires_on)\n }\n\n this.state = {\n isLoaded: true,\n ban,\n }\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling(api) {\n polls.start({\n poll: \"ban-details\",\n url: api,\n frequency: 90 * 1000,\n update: this.update,\n error: this.error,\n })\n }\n\n update = (ban) => {\n if (ban.expires_on) {\n ban.expires_on = moment(ban.expires_on)\n }\n\n this.setState({\n isLoaded: true,\n error: null,\n\n ban,\n })\n }\n\n error = (error) => {\n this.setState({\n isLoaded: true,\n error: error.detail,\n ban: null,\n })\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Ban details\"),\n parent: this.props.profile.username,\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"ban-details\")\n }\n\n getUserMessage() {\n if (this.state.ban.user_message) {\n return (\n <div className=\"panel-body ban-message ban-user-message\">\n <h4>{gettext(\"User-shown ban message\")}</h4>\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.state.ban.user_message.html,\n }}\n />\n </div>\n )\n } else {\n return null\n }\n }\n\n getStaffMessage() {\n if (this.state.ban.staff_message) {\n return (\n <div className=\"panel-body ban-message ban-staff-message\">\n <h4>{gettext(\"Team-shown ban message\")}</h4>\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.state.ban.staff_message.html,\n }}\n />\n </div>\n )\n } else {\n return null\n }\n }\n\n getExpirationMessage() {\n if (this.state.ban.expires_on) {\n if (this.state.ban.expires_on.isAfter(moment())) {\n let title = interpolate(\n gettext(\"This ban expires on %(expires_on)s.\"),\n {\n expires_on: this.state.ban.expires_on.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"This ban expires %(expires_on)s.\"),\n {\n expires_on: this.state.ban.expires_on.fromNow(),\n },\n true\n )\n\n return <abbr title={title}>{message}</abbr>\n } else {\n return gettext(\"This ban has expired.\")\n }\n } else {\n return interpolate(\n gettext(\"%(username)s's ban is permanent.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getPanelBody() {\n if (this.state.ban) {\n if (Object.keys(this.state.ban).length) {\n return (\n <div>\n {this.getUserMessage()}\n {this.getStaffMessage()}\n\n <div className=\"panel-body ban-expires\">\n <h4>{gettext(\"Ban expiration\")}</h4>\n <p className=\"lead\">{this.getExpirationMessage()}</p>\n </div>\n </div>\n )\n } else {\n return (\n <div>\n <PanelMessage\n message={gettext(\"No ban is active at the moment.\")}\n />\n </div>\n )\n }\n } else if (this.state.error) {\n return (\n <div>\n <PanelMessage icon=\"error_outline\" message={this.state.error} />\n </div>\n )\n } else {\n return (\n <div>\n <PanelLoader />\n </div>\n )\n }\n }\n\n render() {\n return (\n <div className=\"profile-ban-details\">\n <div className=\"panel panel-default\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Ban details\")}</h3>\n </div>\n\n {this.getPanelBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/edit-details\"\n\nexport default function ({ api, display, onCancel, onSuccess }) {\n if (!display) return null\n\n return <Form api={api} onCancel={onCancel} onSuccess={onSuccess} />\n}\n","import React from \"react\"\n\nexport default function ({ isAuthenticated, profile }) {\n let message = null\n if (isAuthenticated) {\n message = gettext(\"You are not sharing any details with others.\")\n } else {\n message = interpolate(\n gettext(\"%(username)s is not sharing any details with others.\"),\n {\n username: profile.username,\n },\n true\n )\n }\n\n return (\n <div className=\"panel panel-default\">\n <div className=\"panel-body text-center lead\">{message}</div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ html, text, url }) {\n if (html) {\n return (\n <div\n className=\"form-control-static col-md-9\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n }\n\n return (\n <div className=\"form-control-static col-md-9\">\n <SafeValue text={text} url={url} />\n </div>\n )\n}\n\nexport function SafeValue({ text, url }) {\n if (url) {\n return (\n <p>\n <a href={url} target=\"_blank\" rel=\"nofollow\">\n {text || url}\n </a>\n </p>\n )\n }\n\n if (text) {\n return <p>{text}</p>\n }\n\n return null\n}\n","import React from \"react\"\nimport FieldValue from \"./field-value\"\n\nexport default function (props) {\n return (\n <div className=\"form-group\">\n <strong className=\"control-label col-md-3\">{props.name}:</strong>\n <FieldValue {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport Field from \"./field\"\n\nexport default function ({ fields, name }) {\n return (\n <div className=\"panel panel-default panel-profile-details-group\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{name}</h3>\n </div>\n <div className=\"panel-body\">\n <div className=\"form-horizontal\">\n {fields.map(({ fieldname, html, name, text, url }) => {\n return (\n <Field\n key={fieldname}\n name={name}\n html={html}\n text={text}\n url={url}\n />\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport EmptyMessage from \"./empty-message\"\nimport Group from \"./group\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({\n display,\n groups,\n isAuthenticated,\n loading,\n profile,\n}) {\n if (!display) return null\n\n if (loading) {\n return <Loader />\n }\n\n if (!groups.length) {\n return <EmptyMessage isAuthenticated={isAuthenticated} profile={profile} />\n }\n\n return (\n <div>\n {groups.map((group, i) => {\n return <Group fields={group.fields} key={i} name={group.name} />\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\n\nconst ProfileDetailsHeader = ({ onEdit, showEditButton }) => (\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{gettext(\"Details\")}</h3>\n </ToolbarItem>\n </ToolbarSection>\n {showEditButton && (\n <ToolbarSection>\n <ToolbarItem>\n <button\n className=\"btn btn-default btn-outline btn-block\"\n onClick={onEdit}\n type=\"button\"\n >\n {gettext(\"Edit\")}\n </button>\n </ToolbarItem>\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ProfileDetailsHeader\n","import React from \"react\"\nimport { load } from \"misago/reducers/profile-details\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n componentDidMount() {\n const { data, dispatch, user } = this.props\n if (data && data.id === user.id) return\n\n ajax.get(this.props.user.api.details).then(\n (data) => {\n dispatch(load(data))\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n return this.props.children\n }\n}\n","import React from \"react\"\nimport Form from \"./form\"\nimport GroupsList from \"./groups-list\"\nimport Header from \"./header\"\nimport ProfileDetailsData from \"misago/data/profile-details\"\nimport { load as loadDetails } from \"misago/reducers/profile-details\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n editing: false,\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Details\"),\n parent: this.props.profile.username,\n })\n }\n\n onCancel = () => {\n this.setState({ editing: false })\n }\n\n onEdit = () => {\n this.setState({ editing: true })\n }\n\n onSuccess = (newDetails) => {\n const { dispatch, isAuthenticated, profile } = this.props\n\n let message = null\n if (isAuthenticated) {\n message = gettext(\"Your details have been updated.\")\n } else {\n message = interpolate(\n gettext(\"%(username)s's details have been updated.\"),\n {\n username: profile.username,\n },\n true\n )\n }\n\n snackbar.info(message)\n dispatch(loadDetails(newDetails))\n this.setState({ editing: false })\n }\n\n render() {\n const { dispatch, isAuthenticated, profile, profileDetails } = this.props\n const loading = profileDetails.id !== profile.id\n\n return (\n <ProfileDetailsData\n data={profileDetails}\n dispatch={dispatch}\n user={profile}\n >\n <div className=\"profile-details\">\n <Header\n onEdit={this.onEdit}\n showEditButton={!!profileDetails.edit && !this.state.editing}\n />\n <GroupsList\n display={!this.state.editing}\n groups={profileDetails.groups}\n isAuthenticated={isAuthenticated}\n loading={loading}\n profile={profile}\n />\n <Form\n api={profile.api.edit_details}\n dispatch={dispatch}\n display={this.state.editing}\n onCancel={this.onCancel}\n onSuccess={this.onSuccess}\n />\n </div>\n </ProfileDetailsData>\n )\n }\n}\n","import React from \"react\"\nimport PostFeed from \"misago/components/post-feed\"\nimport Button from \"misago/components/button\"\nimport * as posts from \"misago/reducers/posts\"\nimport title from \"misago/services/page-title\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n loadItems(start = 0) {\n ajax\n .get(this.props.api, {\n start: start || 0,\n })\n .then(\n (data) => {\n if (start === 0) {\n store.dispatch(posts.load(data))\n } else {\n store.dispatch(posts.append(data))\n }\n\n this.setState({\n isLoading: false,\n })\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.apiError(rejection)\n }\n )\n }\n\n loadMore = () => {\n this.setState({\n isLoading: true,\n })\n\n this.loadItems(this.props.posts.next)\n }\n\n componentDidMount() {\n title.set({\n title: this.props.title,\n parent: this.props.profile.username,\n })\n\n this.loadItems()\n }\n\n render() {\n return (\n <div className=\"profile-feed\">\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.props.header}</h3>\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n <Feed\n isLoading={this.state.isLoading}\n loadMore={this.loadMore}\n {...this.props}\n />\n </div>\n )\n }\n}\n\nexport function Feed(props) {\n if (props.posts.isLoaded && !props.posts.results.length) {\n return <p className=\"lead\">{props.emptyMessage}</p>\n }\n\n return (\n <div>\n <PostFeed\n isReady={props.posts.isLoaded}\n posts={props.posts.results}\n poster={props.profile}\n />\n <LoadMoreButton\n isLoading={props.isLoading}\n loadMore={props.loadMore}\n next={props.posts.next}\n />\n </div>\n )\n}\n\nexport function LoadMoreButton(props) {\n if (!props.next) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={props.isLoading}\n onClick={props.loadMore}\n >\n {gettext(\"Show older activity\")}\n </Button>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.className) {\n return \"form-search \" + this.props.className\n } else {\n return \"form-search\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <input\n type=\"text\"\n className=\"form-control\"\n value={this.props.value}\n onChange={this.props.onChange}\n placeholder={this.props.placeholder || gettext(\"Search...\")}\n />\n <span className=\"material-icon\">search</span>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Search from \"misago/components/quick-search\"\nimport UsersList from \"misago/components/users-list\"\nimport misago from \"misago/index\"\nimport { hydrate, append } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.setSpecialProps()\n\n if (misago.has(this.PRELOADED_DATA_KEY)) {\n this.initWithPreloadedData(misago.pop(this.PRELOADED_DATA_KEY))\n } else {\n this.initWithoutPreloadedData()\n }\n }\n\n setSpecialProps() {\n this.PRELOADED_DATA_KEY = \"PROFILE_FOLLOWERS\"\n this.TITLE = gettext(\"Followers\")\n this.API_FILTER = \"followers\"\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n isBusy: false,\n\n search: \"\",\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n isBusy: false,\n\n search: \"\",\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n }\n\n this.loadUsers()\n }\n\n loadUsers(page = 1, search = null) {\n const apiUrl = this.props.profile.api[this.API_FILTER]\n\n ajax\n .get(\n apiUrl,\n {\n search: search,\n page: page || 1,\n },\n \"user-\" + this.API_FILTER\n )\n .then(\n (data) => {\n if (page === 1) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n componentDidMount() {\n title.set({\n title: this.TITLE,\n parent: this.props.profile.username,\n })\n }\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadUsers(this.state.page + 1, this.state.search)\n }\n\n search = (ev) => {\n this.setState({\n isLoaded: false,\n isBusy: true,\n\n search: ev.target.value,\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n })\n\n this.loadUsers(1, ev.target.value)\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(users)s user.\",\n \"Found %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"You have %(users)s follower.\",\n \"You have %(users)s followers.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s has %(users)s follower.\",\n \"%(username)s has %(users)s followers.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n users: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\"Search returned no users matching specified criteria.\")\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"You have no followers.\")\n } else {\n return interpolate(\n gettext(\"%(username)s has no followers.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getMoreButton() {\n if (!this.state.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy}\n onClick={this.loadMore}\n >\n {interpolate(\n gettext(\"Show more (%(more)s)\"),\n {\n more: this.state.more,\n },\n true\n )}\n </Button>\n </div>\n )\n }\n\n getListBody() {\n if (this.state.isLoaded && this.state.count === 0) {\n return <p className=\"lead\">{this.getEmptyMessage()}</p>\n }\n\n return (\n <div>\n <UsersList\n cols={3}\n isReady={this.state.isLoaded}\n users={this.props.users}\n />\n\n {this.getMoreButton()}\n </div>\n )\n }\n\n getClassName() {\n return \"profile-\" + this.API_FILTER\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.getLabel()}</h3>\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection>\n <ToolbarItem>\n <Search\n value={this.state.search}\n onChange={this.search}\n placeholder={gettext(\"Search users...\")}\n />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n\n {this.getListBody()}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Followers from \"misago/components/profile/followers\"\n\nexport default class extends Followers {\n setSpecialProps() {\n this.PRELOADED_DATA_KEY = \"PROFILE_FOLLOWS\"\n this.TITLE = gettext(\"Follows\")\n this.API_FILTER = \"follows\"\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(users)s user.\",\n \"Found %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"You are following %(users)s user.\",\n \"You are following %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s is following %(users)s user.\",\n \"%(username)s is following %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n users: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\"Search returned no users matching specified criteria.\")\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"You are not following any users.\")\n } else {\n return interpolate(\n gettext(\"%(username)s is not following any users.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Search from \"misago/components/quick-search\"\nimport UsernameHistory from \"misago/components/username-history/root\"\nimport misago from \"misago/index\"\nimport { hydrate, append } from \"misago/reducers/username-history\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"PROFILE_NAME_HISTORY\")) {\n this.initWithPreloadedData(misago.pop(\"PROFILE_NAME_HISTORY\"))\n } else {\n this.initWithoutPreloadedData()\n }\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n isBusy: false,\n\n search: \"\",\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n isBusy: false,\n\n search: \"\",\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n }\n\n this.loadChanges()\n }\n\n loadChanges(page = 1, search = null) {\n ajax\n .get(\n misago.get(\"USERNAME_CHANGES_API\"),\n {\n user: this.props.profile.id,\n search: search,\n page: page || 1,\n },\n \"search-username-history\"\n )\n .then(\n (data) => {\n if (page === 1) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Username history\"),\n parent: this.props.profile.username,\n })\n }\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadChanges(this.state.page + 1, this.state.search)\n }\n\n search = (ev) => {\n this.setState({\n isLoaded: false,\n isBusy: true,\n\n search: ev.target.value,\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n })\n\n this.loadChanges(1, ev.target.value)\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(changes)s username change.\",\n \"Found %(changes)s username changes.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n changes: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"Your username was changed %(changes)s time.\",\n \"Your username was changed %(changes)s times.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n changes: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s's username was changed %(changes)s time.\",\n \"%(username)s's username was changed %(changes)s times.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n changes: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\n \"Search returned no username changes matching specified criteria.\"\n )\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"No name changes have been recorded for your account.\")\n } else {\n return interpolate(\n gettext(\"%(username)s's username was never changed.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getMoreButton() {\n if (!this.state.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy}\n onClick={this.loadMore}\n >\n {interpolate(\n gettext(\"Show older (%(more)s)\"),\n {\n more: this.state.more,\n },\n true\n )}\n </Button>\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"profile-username-history\">\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.getLabel()}</h3>\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection>\n <ToolbarItem>\n <Search\n value={this.state.search}\n onChange={this.search}\n placeholder={gettext(\"Search history...\")}\n />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n\n <UsernameHistory\n isLoaded={this.state.isLoaded}\n emptyMessage={this.getEmptyMessage()}\n changes={this.props[\"username-history\"]}\n />\n\n {this.getMoreButton()}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport { patch } from \"misago/reducers/profile\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n getClassName() {\n if (this.props.profile.is_followed) {\n return this.props.className + \" btn-default btn-following\"\n } else {\n return this.props.className + \" btn-default btn-follow\"\n }\n }\n\n getIcon() {\n if (this.props.profile.is_followed) {\n return \"favorite\"\n } else {\n return \"favorite_border\"\n }\n }\n\n getLabel() {\n if (this.props.profile.is_followed) {\n return gettext(\"Following\")\n } else {\n return gettext(\"Follow\")\n }\n }\n\n action = () => {\n this.setState({\n isLoading: true,\n })\n\n if (this.props.profile.is_followed) {\n store.dispatch(\n patch({\n is_followed: false,\n followers: this.props.profile.followers - 1,\n })\n )\n } else {\n store.dispatch(\n patch({\n is_followed: true,\n followers: this.props.profile.followers + 1,\n })\n )\n }\n\n ajax.post(this.props.profile.api.follow).then(\n (data) => {\n this.setState({\n isLoading: false,\n })\n\n store.dispatch(patch(data))\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n })\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n return (\n <Button\n className={this.getClassName()}\n disabled={this.state.isLoading}\n onClick={this.action}\n >\n <span className=\"material-icon\">{this.getIcon()}</span>\n {this.getLabel()}\n </Button>\n )\n }\n}\n","import React from \"react\"\nimport posting from \"misago/services/posting\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"START_PRIVATE\",\n submit: misago.get(\"PRIVATE_THREADS_API\"),\n\n to: [this.props.profile],\n })\n }\n\n render() {\n const canMessage = this.props.user.acl.can_start_private_threads\n const isProfileOwner = this.props.user.id === this.props.profile.id\n\n if (!canMessage || isProfileOwner) return null\n\n return (\n <button\n className={this.props.className}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">comment</span>\n {gettext(\"Message\")}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport { updateAvatar } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n error: null,\n\n is_avatar_locked: \"\",\n avatar_lock_user_message: \"\",\n avatar_lock_staff_message: \"\",\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.moderate_avatar).then(\n (options) => {\n this.setState({\n isLoaded: true,\n\n is_avatar_locked: options.is_avatar_locked,\n avatar_lock_user_message: options.avatar_lock_user_message || \"\",\n avatar_lock_staff_message: options.avatar_lock_staff_message || \"\",\n })\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(this.validate().username[0])\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.profile.api.moderate_avatar, {\n is_avatar_locked: this.state.is_avatar_locked,\n avatar_lock_user_message: this.state.avatar_lock_user_message,\n avatar_lock_staff_message: this.state.avatar_lock_staff_message,\n })\n }\n\n handleSuccess(apiResponse) {\n store.dispatch(updateAvatar(this.props.profile, apiResponse.avatar_hash))\n snackbar.success(gettext(\"Avatar controls have been changed.\"))\n }\n\n getFormBody() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Lock avatar\")}\n helpText={gettext(\n \"Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one.\"\n )}\n for=\"id_is_avatar_locked\"\n >\n <YesNoSwitch\n id=\"id_is_avatar_locked\"\n disabled={this.state.isLoading}\n iconOn=\"lock_outline\"\n iconOff=\"lock_open\"\n labelOn={gettext(\"Disallow user from changing avatar\")}\n labelOff={gettext(\"Allow user to change avatar\")}\n onChange={this.bindInput(\"is_avatar_locked\")}\n value={this.state.is_avatar_locked}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"User message\")}\n helpText={gettext(\n \"Optional message for user explaining why he/she is prohibited form changing avatar.\"\n )}\n for=\"id_avatar_lock_user_message\"\n >\n <textarea\n id=\"id_avatar_lock_user_message\"\n className=\"form-control\"\n rows=\"4\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"avatar_lock_user_message\")}\n value={this.state.avatar_lock_user_message}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Staff message\")}\n helpText={gettext(\n \"Optional message for forum team members explaining why user is prohibited form changing avatar.\"\n )}\n for=\"id_avatar_lock_staff_message\"\n >\n <textarea\n id=\"id_avatar_lock_staff_message\"\n className=\"form-control\"\n rows=\"4\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"avatar_lock_staff_message\")}\n value={this.state.avatar_lock_staff_message}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n type=\"button\"\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n >\n {gettext(\"Close\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </form>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n return this.getFormBody()\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error) {\n return \"modal-dialog modal-message modal-avatar-controls\"\n } else {\n return \"modal-dialog modal-avatar-controls\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Avatar controls\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport { addNameChange } from \"misago/reducers/username-history\"\nimport { updateUsername } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n error: null,\n\n username: \"\",\n validators: {\n username: [validators.usernameContent()],\n },\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.moderate_username).then(\n () => {\n this.setState({\n isLoaded: true,\n })\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(this.validate().username[0])\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.profile.api.moderate_username, {\n username: this.state.username,\n })\n }\n\n handleSuccess(apiResponse) {\n this.setState({\n username: \"\",\n })\n\n store.dispatch(\n addNameChange(apiResponse, this.props.profile, this.props.user)\n )\n store.dispatch(\n updateUsername(this.props.profile, apiResponse.username, apiResponse.slug)\n )\n\n snackbar.success(gettext(\"Username has been changed.\"))\n }\n\n getFormBody() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"New username\")} for=\"id_username\">\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change username\")}\n </Button>\n </div>\n </form>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n return this.getFormBody()\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error) {\n return \"modal-dialog modal-message modal-rename-user\"\n } else {\n return \"modal-dialog modal-rename-user\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change username\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n isDeleted: false,\n error: null,\n\n countdown: 5,\n confirm: false,\n\n with_content: false,\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.delete).then(\n () => {\n this.setState({\n isLoaded: true,\n })\n\n this.countdown()\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n countdown = () => {\n window.setTimeout(() => {\n if (this.state.countdown > 1) {\n this.setState({\n countdown: this.state.countdown - 1,\n })\n this.countdown()\n } else if (!this.state.confirm) {\n this.setState({\n confirm: true,\n })\n }\n }, 1000)\n }\n\n send() {\n return ajax.post(this.props.profile.api.delete, {\n with_content: this.state.with_content,\n })\n }\n\n handleSuccess() {\n polls.stop(\"user-profile\")\n\n if (this.state.with_content) {\n this.setState({\n isDeleted: interpolate(\n gettext(\n \"%(username)s's account, threads, posts and other content has been deleted.\"\n ),\n {\n username: this.props.profile.username,\n },\n true\n ),\n })\n } else {\n this.setState({\n isDeleted: interpolate(\n gettext(\n \"%(username)s's account has been deleted and other content has been hidden.\"\n ),\n {\n username: this.props.profile.username,\n },\n true\n ),\n })\n }\n }\n\n getButtonLabel() {\n if (this.state.confirm) {\n return interpolate(\n gettext(\"Delete %(username)s\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n } else {\n return interpolate(\n gettext(\"Please wait... (%(countdown)ss)\"),\n {\n countdown: this.state.countdown,\n },\n true\n )\n }\n }\n\n getForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"User content\")} for=\"id_with_content\">\n <YesNoSwitch\n id=\"id_with_content\"\n disabled={this.state.isLoading}\n labelOn={gettext(\"Delete together with user's account\")}\n labelOff={gettext(\"Hide after deleting user's account\")}\n onChange={this.bindInput(\"with_content\")}\n value={this.state.with_content}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n type=\"button\"\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n >\n {gettext(\"Cancel\")}\n </button>\n\n <Button\n className=\"btn-danger\"\n loading={this.state.isLoading}\n disabled={!this.state.confirm}\n >\n {this.getButtonLabel()}\n </Button>\n </div>\n </form>\n )\n }\n\n getDeletedBody() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.state.isDeleted}</p>\n <p>\n <a href={misago.get(\"USERS_LIST_URL\")}>\n {gettext(\"Return to users list\")}\n </a>\n </p>\n </div>\n </div>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n if (this.state.isDeleted) {\n return this.getDeletedBody()\n } else {\n return this.getForm()\n }\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error || this.state.isDeleted) {\n return \"modal-dialog modal-message modal-delete-account\"\n } else {\n return \"modal-dialog modal-delete-account\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Delete user account\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport AvatarControls from \"misago/components/profile/moderation/avatar-controls\"\nimport ChangeUsername from \"misago/components/profile/moderation/change-username\"\nimport DeleteAccount from \"misago/components/profile/moderation/delete-account\"\nimport modal from \"misago/services/modal\"\n\nlet select = function (store) {\n return {\n tick: store.tick,\n user: store.auth,\n profile: store.profile,\n }\n}\n\nexport default class extends React.Component {\n showAvatarDialog = () => {\n modal.show(connect(select)(AvatarControls))\n }\n\n showRenameDialog = () => {\n modal.show(connect(select)(ChangeUsername))\n }\n\n showDeleteDialog = () => {\n modal.show(connect(select)(DeleteAccount))\n }\n\n render() {\n const { moderation } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right\" role=\"menu\">\n {!!moderation.avatar && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showAvatarDialog}\n >\n <span className=\"material-icon\">portrait</span>\n {gettext(\"Avatar controls\")}\n </button>\n </li>\n )}\n {!!moderation.rename && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showRenameDialog}\n >\n <span className=\"material-icon\">credit_card</span>\n {gettext(\"Change username\")}\n </button>\n </li>\n )}\n {!!moderation.delete && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showDeleteDialog}\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete account\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import React from \"react\"\nimport Status, { StatusIcon, StatusLabel } from \"../user-status\"\n\nconst ProfileDataList = ({ profile }) => (\n <ul className=\"profile-data-list\">\n {profile.is_active === false && (\n <li className=\"user-account-disabled\">\n <abbr\n title={gettext(\n \"This user's account has been disabled by administrator.\"\n )}\n >\n {gettext(\"Account disabled\")}\n </abbr>\n </li>\n )}\n <li className=\"user-status-display\">\n <Status user={profile} status={profile.status}>\n <StatusIcon user={profile} status={profile.status} />\n <StatusLabel\n user={profile}\n status={profile.status}\n className=\"status-label\"\n />\n </Status>\n </li>\n {profile.rank.is_tab ? (\n <li className=\"user-rank\">\n <a href={profile.rank.url} className=\"item-title\">\n {profile.rank.name}\n </a>\n </li>\n ) : (\n <li className=\"user-rank\">\n <span className=\"item-title\">{profile.rank.name}</span>\n </li>\n )}\n {(profile.title || profile.rank.title) && (\n <li className=\"user-title\">{profile.title || profile.rank.title}</li>\n )}\n <li className=\"user-joined-on\">\n <abbr\n title={interpolate(\n gettext(\"Joined on %(joined_on)s\"),\n {\n joined_on: profile.joined_on.format(\"LL, LT\"),\n },\n true\n )}\n >\n {interpolate(\n gettext(\"Joined %(joined_on)s\"),\n {\n joined_on: profile.joined_on.fromNow(),\n },\n true\n )}\n </abbr>\n </li>\n {profile.email && (\n <li className=\"user-email\">\n <a href={\"mailto:\" + profile.email} className=\"item-title\">\n {profile.email}\n </a>\n </li>\n )}\n </ul>\n)\n\nexport default ProfileDataList\n","import React from \"react\"\nimport Avatar from \"../avatar\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n PageHeaderDetails,\n} from \"../PageHeader\"\nimport FollowButton from \"./follow-button\"\nimport MessageButton from \"./message-button\"\nimport ModerationOptions from \"./moderation/nav\"\nimport ProfileDataList from \"./ProfileDataList\"\n\nconst ProfileHeader = ({ profile, user, moderation, message, follow }) => (\n <PageHeaderContainer>\n <PageHeader\n styleName={\n profile.rank.css_class ? \"rank-\" + profile.rank.css_class : \"profile\"\n }\n >\n <PageHeaderBanner\n styleName={\n profile.rank.css_class ? \"rank-\" + profile.rank.css_class : \"profile\"\n }\n >\n <div className=\"profile-page-header\">\n <div className=\"profile-page-header-avatar\">\n <Avatar\n className=\"user-avatar hidden-sm hidden-md hidden-lg\"\n user={profile}\n size={200}\n size2x={400}\n />\n <Avatar\n className=\"user-avatar hidden-xs hidden-md hidden-lg\"\n user={profile}\n size={64}\n size2x={128}\n />\n <Avatar\n className=\"user-avatar hidden-xs hidden-sm\"\n user={profile}\n size={128}\n size2x={256}\n />\n </div>\n <h1>{profile.username}</h1>\n </div>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"profile-page-header-details\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol>\n <ProfileDataList profile={profile} />\n </FlexRowCol>\n </FlexRowSection>\n {message && (\n <FlexRowSection>\n <FlexRowCol>\n <MessageButton\n className=\"btn btn-default btn-block btn-outline\"\n profile={profile}\n user={user}\n />\n </FlexRowCol>\n {moderation.available && !follow && (\n <FlexRowCol shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n {follow && (\n <FlexRowSection>\n <FlexRowCol>\n <FollowButton\n className=\"btn btn-block btn-outline\"\n profile={profile}\n />\n </FlexRowCol>\n {moderation.available && (\n <FlexRowCol shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n {moderation.available && !follow && !message && (\n <FlexRowSection>\n <FlexRowCol className=\"hidden-xs\" shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n <FlexRowCol className=\"hidden-sm hidden-md hidden-lg\">\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">settings</span>\n {gettext(\"Options\")}\n </button>\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n )}\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n)\n\nconst ProfileModerationButton = () => (\n <button\n className=\"btn btn-default btn-icon btn-outline dropdown-toggle\"\n type=\"button\"\n title={gettext(\"Options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">settings</span>\n </button>\n)\n\nexport default ProfileHeader\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nconst ProfileNav = ({ baseUrl, page, pages }) => (\n <div className=\"nav-container\">\n <div className=\"dropdown hidden-sm hidden-md hidden-lg\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {pages.map((page) => (\n <li key={page.component}>\n <Link to={baseUrl + page.component + \"/\"}>\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"nav nav-pills hidden-xs\" role=\"menu\">\n {pages.map((page) => (\n <Li path={baseUrl + page.component + \"/\"} key={page.component}>\n <Link to={baseUrl + page.component + \"/\"}>\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </Link>\n </Li>\n ))}\n </ul>\n </div>\n)\n\nexport default ProfileNav\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport BanDetails from \"./ban-details\"\nimport Details from \"./details\"\nimport { Posts, Threads } from \"./feed\"\nimport Followers from \"./followers\"\nimport Follows from \"./follows\"\nimport UsernameHistory from \"./username-history\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago\"\nimport { hydrate } from \"misago/reducers/profile\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport PageContainer from \"../PageContainer\"\nimport ProfileHeader from \"./ProfileHeader\"\nimport ProfileNav from \"./ProfileNav\"\n\nexport default class extends WithDropdown {\n constructor(props) {\n super(props)\n\n this.startPolling(props.profile.api.index)\n }\n\n startPolling(api) {\n polls.start({\n poll: \"user-profile\",\n url: api,\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data))\n }\n\n render() {\n const baseUrl = misago.get(\"PROFILE\").url\n const pages = misago.get(\"PROFILE_PAGES\")\n const page = pages.filter((page) => {\n const url = baseUrl + page.component + \"/\"\n return this.props.location.pathname === url\n })[0]\n const { profile, user } = this.props\n const moderation = getModeration(profile, user)\n const message = user.acl.can_start_private_threads && profile.id !== user.id\n const follow = profile.acl.can_follow && profile.id !== user.id\n\n return (\n <div className=\"page page-user-profile\">\n <ProfileHeader\n profile={this.props.profile}\n user={this.props.user}\n moderation={moderation}\n message={message}\n follow={follow}\n />\n <PageContainer>\n <ProfileNav baseUrl={baseUrl} page={page} pages={pages} />\n\n {this.props.children}\n </PageContainer>\n </div>\n )\n }\n}\n\nconst getModeration = (profile, user) => {\n const moderation = {\n available: false,\n rename: false,\n avatar: false,\n delete: false,\n }\n\n if (user.is_anonumous) return moderation\n\n moderation.rename = profile.acl.can_rename\n moderation.avatar = profile.acl.can_moderate_avatar\n moderation.delete = profile.acl.can_delete\n moderation.available =\n moderation.rename || moderation.avatar || moderation.delete\n\n return moderation\n}\n\nexport function select(store) {\n return {\n isAuthenticated: store.auth.user.id === store.profile.id,\n\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n posts: store.posts,\n profile: store.profile,\n profileDetails: store[\"profile-details\"],\n \"username-history\": store[\"username-history\"],\n }\n}\n\nconst COMPONENTS = {\n posts: Posts,\n threads: Threads,\n followers: Followers,\n follows: Follows,\n details: Details,\n \"username-history\": UsernameHistory,\n \"ban-details\": BanDetails,\n}\n\nexport function paths() {\n let paths = []\n misago.get(\"PROFILE_PAGES\").forEach(function (item) {\n paths.push(\n Object.assign({}, item, {\n path: misago.get(\"PROFILE\").url + item.component + \"/\",\n component: connect(select)(COMPONENTS[item.component]),\n })\n )\n })\n\n return paths\n}\n","import React from \"react\"\nimport Route from \"./route\"\n\nexport function Threads(props) {\n let emptyMessage = null\n if (props.user.id === props.profile.id) {\n emptyMessage = gettext(\"You have no started threads.\")\n } else {\n emptyMessage = interpolate(\n gettext(\"%(username)s started no threads.\"),\n {\n username: props.profile.username,\n },\n true\n )\n }\n\n let header = null\n if (!props.posts.isLoaded) {\n header = gettext(\"Loading...\")\n } else if (props.profile.id === props.user.id) {\n const message = ngettext(\n \"You have started %(threads)s thread.\",\n \"You have started %(threads)s threads.\",\n props.profile.threads\n )\n\n header = interpolate(\n message,\n {\n threads: props.profile.threads,\n },\n true\n )\n } else {\n const message = ngettext(\n \"%(username)s has started %(threads)s thread.\",\n \"%(username)s has started %(threads)s threads.\",\n props.profile.threads\n )\n\n header = interpolate(\n message,\n {\n username: props.profile.username,\n threads: props.profile.threads,\n },\n true\n )\n }\n\n return (\n <Route\n api={props.profile.api.threads}\n emptyMessage={emptyMessage}\n header={header}\n title={gettext(\"Threads\")}\n {...props}\n />\n )\n}\n\nexport function Posts(props) {\n let emptyMessage = null\n if (props.user.id === props.profile.id) {\n emptyMessage = gettext(\"You have posted no messages.\")\n } else {\n emptyMessage = interpolate(\n gettext(\"%(username)s posted no messages.\"),\n {\n username: props.profile.username,\n },\n true\n )\n }\n\n let header = null\n if (!props.posts.isLoaded) {\n header = gettext(\"Loading...\")\n } else if (props.profile.id === props.user.id) {\n const message = ngettext(\n \"You have posted %(posts)s message.\",\n \"You have posted %(posts)s messages.\",\n props.profile.posts\n )\n\n header = interpolate(\n message,\n {\n posts: props.profile.posts,\n },\n true\n )\n } else {\n const message = ngettext(\n \"%(username)s has posted %(posts)s message.\",\n \"%(username)s has posted %(posts)s messages.\",\n props.profile.posts\n )\n\n header = interpolate(\n message,\n {\n username: props.profile.username,\n posts: props.profile.posts,\n },\n true\n )\n }\n\n return (\n <Route\n api={props.profile.api.posts}\n emptyMessage={emptyMessage}\n header={header}\n title={gettext(\"Posts\")}\n {...props}\n />\n )\n}\n","import { connect } from \"react-redux\"\nimport Profile, { paths, select } from \"misago/components/profile/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"PROFILE\") && context.has(\"PROFILE_PAGES\")) {\n mount({\n root: misago.get(\"PROFILE\").url,\n component: connect(select)(Profile),\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:profile\",\n initializer: initializer,\n after: \"reducer:profile-hydrate\",\n})\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class RequestLinkForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n email: \"\",\n\n validators: {\n email: [validators.email()],\n },\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Enter a valid email address.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"SEND_ACTIVATION_API\"), {\n email: this.state.email,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if ([\"already_active\", \"inactive_admin\"].indexOf(rejection.code) > -1) {\n snackbar.info(rejection.detail)\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-activation-link\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder={gettext(\"Your e-mail address\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Send link\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class LinkSent extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"Activation link was sent to %(email)s\"),\n {\n email: this.props.user.email,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-activation-link well-done\">\n <div className=\"done-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n <div className=\"message-body\">\n <p>{this.getMessage()}</p>\n </div>\n <button\n className=\"btn btn-primary btn-block\"\n type=\"button\"\n onClick={this.props.callback}\n >\n {gettext(\"Request another link\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n complete = (apiResponse) => {\n this.setState({\n complete: apiResponse,\n })\n }\n\n reset = () => {\n this.setState({\n complete: false,\n })\n }\n\n render() {\n if (this.state.complete) {\n return <LinkSent user={this.state.complete} callback={this.reset} />\n } else {\n return <RequestLinkForm callback={this.complete} />\n }\n }\n}\n","import misago from \"misago/index\"\nimport RequestActivationLink from \"misago/components/request-activation-link\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"request-activation-link-mount\")) {\n mount(RequestActivationLink, \"request-activation-link-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:request-activation-link\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class RequestResetForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n email: \"\",\n\n validators: {\n email: [validators.email()],\n },\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Enter a valid email address.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"SEND_PASSWORD_RESET_API\"), {\n email: this.state.email,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if ([\"inactive_user\", \"inactive_admin\"].indexOf(rejection.code) > -1) {\n this.props.showInactivePage(rejection)\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-password-reset\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder={gettext(\"Your e-mail address\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Send link\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class LinkSent extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"Reset password link was sent to %(email)s\"),\n {\n email: this.props.user.email,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-password-reset well-done\">\n <div className=\"done-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n <div className=\"message-body\">\n <p>{this.getMessage()}</p>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-primary btn-block\"\n onClick={this.props.callback}\n >\n {gettext(\"Request another link\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport class AccountInactivePage extends React.Component {\n getActivateButton() {\n if (this.props.activation === \"inactive_user\") {\n return (\n <p>\n <a href={misago.get(\"REQUEST_ACTIVATION_URL\")}>\n {gettext(\"Activate your account.\")}\n </a>\n </p>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"page page-message page-message-info page-forgotten-password-inactive\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n\n <div className=\"message-body\">\n <p className=\"lead\">{gettext(\"Your account is inactive.\")}</p>\n <p>{this.props.message}</p>\n {this.getActivateButton()}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n complete = (apiResponse) => {\n this.setState({\n complete: apiResponse,\n })\n }\n\n reset = () => {\n this.setState({\n complete: false,\n })\n }\n\n showInactivePage(apiResponse) {\n ReactDOM.render(\n <AccountInactivePage\n activation={apiResponse.code}\n message={apiResponse.detail}\n />,\n document.getElementById(\"page-mount\")\n )\n }\n\n render() {\n if (this.state.complete) {\n return <LinkSent callback={this.reset} user={this.state.complete} />\n }\n\n return (\n <RequestResetForm\n callback={this.complete}\n showInactivePage={this.showInactivePage}\n />\n )\n }\n}\n","import misago from \"misago/index\"\nimport RequestPasswordReset from \"misago/components/request-password-reset\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"request-password-reset-mount\")) {\n mount(RequestPasswordReset, \"request-password-reset-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:request-password-reset\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport SignInModal from \"misago/components/sign-in.js\"\nimport ajax from \"misago/services/ajax\"\nimport auth from \"misago/services/auth\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class ResetPasswordForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n password: \"\",\n }\n }\n\n clean() {\n if (this.state.password.trim().length) {\n return true\n } else {\n snackbar.error(gettext(\"Enter new password.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"CHANGE_PASSWORD_API\"), {\n password: this.state.password,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-reset-password\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"password\"\n className=\"form-control\"\n placeholder={gettext(\"Enter new password\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Change password\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class PasswordChangedPage extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"%(username)s, your password has been changed successfully.\"),\n {\n username: this.props.user.username,\n },\n true\n )\n }\n\n showSignIn() {\n modal.show(SignInModal)\n }\n\n render() {\n return (\n <div className=\"page page-message page-message-success page-forgotten-password-changed\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n\n <div className=\"message-body\">\n <p className=\"lead\">{this.getMessage()}</p>\n <p>\n {gettext(\n \"You will have to sign in using new password before continuing.\"\n )}\n </p>\n <p>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.showSignIn}\n >\n {gettext(\"Sign in\")}\n </button>\n </p>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n complete = (apiResponse) => {\n auth.softSignOut()\n\n // nuke \"redirect_to\" field so we don't end\n // coming back to error page after sign in\n $('#hidden-login-form input[name=\"redirect_to\"]').remove()\n\n ReactDOM.render(\n <PasswordChangedPage user={apiResponse} />,\n document.getElementById(\"page-mount\")\n )\n }\n\n render() {\n return <ResetPasswordForm callback={this.complete} />\n }\n}\n","import misago from \"misago\"\nimport ResetPasswordForm from \"misago/components/reset-password-form\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"reset-password-form-mount\")) {\n mount(ResetPasswordForm, \"reset-password-form-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:reset-password-form\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport misago from \"misago\"\nimport Form from \"misago/components/form\"\nimport { load as updatePosts } from \"misago/reducers/posts\"\nimport { update as updateSearch } from \"misago/reducers/search\"\nimport { hydrate as updateUsers } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport {\n PageHeader,\n PageHeaderContainer,\n PageHeaderBanner,\n PageHeaderDetails,\n} from \"../PageHeader\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n query: props.search.query,\n }\n }\n\n componentDidMount() {\n if (this.state.query.length) {\n this.handleSubmit()\n }\n }\n\n onQueryChange = (event) => {\n this.changeValue(\"query\", event.target.value)\n }\n\n clean() {\n if (!this.state.query.trim().length) {\n snackbar.error(gettext(\"You have to enter search query.\"))\n return false\n }\n\n return true\n }\n\n send() {\n store.dispatch(\n updateSearch({\n isLoading: true,\n })\n )\n\n const query = this.state.query.trim()\n\n let url = window.location.href\n const urlQuery = url.indexOf(\"?q=\")\n if (urlQuery > 0) {\n url = url.substring(0, urlQuery + 3)\n }\n window.history.pushState({}, \"\", url + encodeURIComponent(query))\n\n return ajax.get(misago.get(\"SEARCH_API\"), { q: query })\n }\n\n handleSuccess(providers) {\n store.dispatch(\n updateSearch({\n query: this.state.query.trim(),\n isLoading: false,\n providers,\n })\n )\n\n providers.forEach((provider) => {\n if (provider.id === \"users\") {\n store.dispatch(updateUsers(provider.results.results))\n } else if (provider.id === \"threads\") {\n store.dispatch(updatePosts(provider.results))\n }\n })\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n\n store.dispatch(\n updateSearch({\n isLoading: false,\n })\n )\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <PageHeaderContainer>\n <PageHeader styleName=\"site-search\">\n <PageHeaderBanner styleName=\"site-search\">\n <h1>{gettext(\"Search\")}</h1>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"page-header-search-form\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n type=\"text\"\n value={this.state.query}\n placeholder={gettext(\"Search\")}\n onChange={this.onQueryChange}\n />\n </FlexRowCol>\n <FlexRowCol shrink>\n <button\n className=\"btn btn-secondary btn-icon btn-outline\"\n disabled={this.state.isLoading}\n >\n <span className=\"material-icon\">search</span>\n </button>\n </FlexRowCol>\n </FlexRowSection>\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nexport default function (props) {\n return (\n <div className=\"list-group nav-side\">\n {props.providers.map((provider) => {\n return (\n <Link\n activeClassName=\"active\"\n className=\"list-group-item\"\n key={provider.id}\n to={provider.url}\n >\n <span className=\"material-icon\">{provider.icon}</span>\n {provider.name}\n <Badge results={provider.results} />\n </Link>\n )\n })}\n </div>\n )\n}\n\nexport function Badge(props) {\n if (!props.results) return null\n\n let count = props.results.count\n if (count > 1000000) {\n count = Math.ceil(count / 1000000) + \"KK\"\n } else if (count > 1000) {\n count = Math.ceil(count / 1000) + \"K\"\n }\n\n return <span className=\"badge\">{count}</span>\n}\n","import React from \"react\"\nimport PageContainer from \"../PageContainer\"\nimport SearchForm from \"./form\"\nimport SideNav from \"./sidenav\"\n\nexport default function (props) {\n return (\n <div className=\"page page-search\">\n <SearchForm provider={props.provider} search={props.search} />\n <PageContainer>\n <div className=\"row\">\n <div className=\"col-md-3\">\n <SideNav providers={props.search.providers} />\n </div>\n <div className=\"col-md-9\">\n {props.children}\n <SearchTime provider={props.provider} search={props.search} />\n </div>\n </div>\n </PageContainer>\n </div>\n )\n}\n\nexport function SearchTime(props) {\n let time = null\n props.search.providers.forEach((p) => {\n if (p.id === props.provider.id) {\n time = p.time\n }\n })\n\n if (time === null) return null\n\n const copy = gettext(\"Search took %(time)s s to complete\")\n\n return (\n <footer className=\"search-footer\">\n <p>{interpolate(copy, { time }, true)}</p>\n </footer>\n )\n}\n","import React from \"react\"\nimport PostFeed from \"misago/components/post-feed\"\nimport Button from \"misago/components/button\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\nimport {\n update as updatePosts,\n append as appendPosts,\n} from \"misago/reducers/posts\"\nimport { updateProvider } from \"misago/reducers/search\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n return (\n <div>\n <PostFeed isReady={true} posts={props.results} />\n <LoadMore {...props} />\n </div>\n )\n}\n\nexport class LoadMore extends React.Component {\n onClick = () => {\n store.dispatch(\n updatePosts({\n isBusy: true,\n })\n )\n\n ajax\n .get(this.props.provider.api, {\n q: this.props.query,\n page: this.props.next,\n })\n .then(\n (providers) => {\n providers.forEach((provider) => {\n if (provider.id !== \"threads\") return\n store.dispatch(appendPosts(provider.results))\n store.dispatch(updateProvider(provider))\n })\n\n store.dispatch(\n updatePosts({\n isBusy: false,\n })\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n store.dispatch(\n updatePosts({\n isBusy: false,\n })\n )\n }\n )\n }\n\n render() {\n if (!this.props.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.props.isBusy}\n onClick={this.onClick}\n >\n {gettext(\"Show more\")}\n </Button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport SearchPage from \"../page\"\nimport Results from \"./results\"\n\nexport default function (props) {\n return (\n <SearchPage provider={props.route.provider} search={props.search}>\n <Blankslate\n loading={props.search.isLoading}\n query={props.search.query}\n posts={props.posts}\n >\n <Results\n provider={props.route.provider}\n query={props.search.query}\n {...props.posts}\n />\n </Blankslate>\n </SearchPage>\n )\n}\n\nexport function Blankslate({ children, loading, posts, query }) {\n if (posts && posts.count) return children\n\n if (query.length) {\n return (\n <p className=\"lead\">\n {loading\n ? gettext(\"Loading results...\")\n : gettext(\"No threads matching search query have been found.\")}\n </p>\n )\n }\n\n return (\n <p className=\"lead\">\n {gettext(\"Enter at least two characters to search threads.\")}\n </p>\n )\n}\n","import React from \"react\"\nimport SearchPage from \"../page\"\nimport UsersList from \"misago/components/users-list\"\n\nexport default function (props) {\n return (\n <SearchPage provider={props.route.provider} search={props.search}>\n <Blankslate\n loading={props.search.isLoading}\n query={props.search.query}\n users={props.users}\n >\n <UsersList\n cols={3}\n isReady={!props.search.isLoading}\n users={props.users}\n />\n </Blankslate>\n </SearchPage>\n )\n}\n\nexport function Blankslate({ children, loading, query, users }) {\n if (users.length) return children\n\n if (query.length) {\n return (\n <p className=\"lead\">\n {loading\n ? gettext(\"Loading results...\")\n : gettext(\"No users matching search query have been found.\")}\n </p>\n )\n }\n\n return (\n <p className=\"lead\">\n {gettext(\"Enter at least two characters to search users.\")}\n </p>\n )\n}\n","import { connect } from \"react-redux\"\nimport SearchThreads from \"./threads\"\nimport SearchUsers from \"./users\"\n\nconst components = {\n threads: SearchThreads,\n users: SearchUsers,\n}\n\nexport function select(store) {\n return {\n posts: store.posts,\n search: store.search,\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n }\n}\n\nexport default function (providers) {\n return providers.map((provider) => {\n return {\n path: provider.url,\n component: connect(select)(components[provider.id]),\n provider: provider,\n }\n })\n}\n","import paths from \"misago/components/search\"\nimport misago from \"misago\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.get(\"CURRENT_LINK\") === \"misago:search\") {\n mount({\n paths: paths(misago.get(\"SEARCH_PROVIDERS\")),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:search\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nconst TYPES_CLASSES = {\n info: \"alert-info\",\n success: \"alert-success\",\n warning: \"alert-warning\",\n error: \"alert-danger\",\n}\n\nexport class Snackbar extends React.Component {\n getSnackbarClass() {\n let snackbarClass = \"alerts-snackbar\"\n if (this.props.isVisible) {\n snackbarClass += \" in\"\n } else {\n snackbarClass += \" out\"\n }\n return snackbarClass\n }\n\n render() {\n return (\n <div className={this.getSnackbarClass()}>\n <p className={\"alert \" + TYPES_CLASSES[this.props.type]}>\n {this.props.message}\n </p>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return state.snackbar\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport { Snackbar, select } from \"misago/components/snackbar\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(Snackbar), \"snackbar-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:snackbar\",\n initializer: initializer,\n after: \"snackbar\",\n})\n","import React from \"react\"\n\nconst Header = ({ backendName }) => {\n const pageTitleTpl = gettext(\"Sign in with %(backend)s\")\n const pageTitle = interpolate(pageTitleTpl, { backend: backendName }, true)\n\n return (\n <div className=\"page-header-bg\">\n <div className=\"page-header\">\n <div className=\"container\">\n <h1>{pageTitle}</h1>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Header\n","import React from \"react\"\nimport misago from \"misago\"\nimport RegisterLegalFootnote from \"misago/components/RegisterLegalFootnote\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport Header from \"./header\"\n\nexport default class Register extends Form {\n constructor(props) {\n super(props)\n\n const formValidators = {\n email: [validators.email()],\n username: [validators.usernameContent()],\n }\n\n if (!!misago.get(\"TERMS_OF_SERVICE_ID\")) {\n formValidators.termsOfService = [validators.requiredTermsOfService()]\n }\n\n if (!!misago.get(\"PRIVACY_POLICY_ID\")) {\n formValidators.privacyPolicy = [validators.requiredPrivacyPolicy()]\n }\n\n this.state = {\n email: props.email || \"\",\n emailProtected: !!props.email,\n username: props.username || \"\",\n\n termsOfService: null,\n privacyPolicy: null,\n\n validators: formValidators,\n errors: {},\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.email.trim().length,\n this.state.username.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n const { validators } = this.state\n\n const checkTermsOfService = !!misago.get(\"TERMS_OF_SERVICE_ID\")\n if (checkTermsOfService && this.state.termsOfService === null) {\n snackbar.error(validators.termsOfService[0](null))\n return false\n }\n\n const checkPrivacyPolicy = !!misago.get(\"PRIVACY_POLICY_ID\")\n if (checkPrivacyPolicy && this.state.privacyPolicy === null) {\n snackbar.error(validators.privacyPolicy[0](null))\n snackbar.error(gettext(\"You need to accept the privacy policy.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.url, {\n email: this.state.email,\n username: this.state.username,\n terms_of_service: this.state.termsOfService,\n privacy_policy: this.state.privacyPolicy,\n })\n }\n\n handleSuccess(response) {\n const { onRegistrationComplete } = this.props\n onRegistrationComplete(response)\n }\n\n handleError(rejection) {\n if (rejection.status === 200) {\n // We've entered \"errored\" state because response is HTML instead of exptected JSON\n const { onRegistrationComplete } = this.props\n const { username } = this.state\n onRegistrationComplete({ activation: \"active\", step: \"done\", username })\n } else if (rejection.status === 400) {\n const stateUpdate = { errors: rejection }\n if (rejection.email) {\n stateUpdate.emailProtected = false\n }\n this.setState(stateUpdate)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n handlePrivacyPolicyChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"privacyPolicy\", value)\n }\n\n handleTermsOfServiceChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"termsOfService\", value)\n }\n\n handleToggleAgreement = (agreement, value) => {\n this.setState((prevState, props) => {\n if (prevState[agreement] === null) {\n const errors = { ...prevState.errors, [agreement]: null }\n return { errors, [agreement]: value }\n }\n\n const validator = this.state.validators[agreement][0]\n const errors = { ...prevState.errors, [agreement]: [validator(null)] }\n return { errors, [agreement]: null }\n })\n }\n\n render() {\n const { backend_name } = this.props\n const { email, emailProtected, username, isLoading } = this.state\n\n let emailHelpText = null\n if (emailProtected) {\n const emailHelpTextTpl = gettext(\n \"Your e-mail address has been verified by %(backend)s.\"\n )\n emailHelpText = interpolate(\n emailHelpTextTpl,\n { backend: backend_name },\n true\n )\n }\n\n return (\n <div className=\"page page-social-auth page-social-sauth-register\">\n <Header backendName={backend_name} />\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">\n {gettext(\"Complete your details\")}\n </h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup\n for=\"id_username\"\n label={gettext(\"Username\")}\n validation={this.state.errors.username}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={isLoading}\n onChange={this.bindInput(\"username\")}\n value={username}\n />\n </FormGroup>\n <FormGroup\n for=\"id_email\"\n label={gettext(\"E-mail address\")}\n helpText={emailHelpText}\n validation={\n emailProtected ? null : this.state.errors.email\n }\n >\n <input\n type=\"email\"\n id=\"id_email\"\n className=\"form-control\"\n disabled={isLoading || emailProtected}\n onChange={this.bindInput(\"email\")}\n value={email}\n />\n </FormGroup>\n <RegisterLegalFootnote\n errors={this.state.errors}\n privacyPolicy={this.state.privacyPolicy}\n termsOfService={this.state.termsOfService}\n onPrivacyPolicyChange={this.handlePrivacyPolicyChange}\n onTermsOfServiceChange={this.handleTermsOfServiceChange}\n />\n </div>\n <div className=\"panel-footer\">\n <Button\n className=\"btn-primary\"\n loading={this.state.isLoading}\n >\n {gettext(\"Sign in\")}\n </Button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Header from \"./header\"\nimport misago from \"misago\"\n\nconst Complete = ({ activation, backend_name, username }) => {\n let icon = \"\"\n let message = \"\"\n if (activation === \"user\") {\n message = gettext(\n \"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\"\n )\n } else if (activation === \"admin\") {\n message = gettext(\n \"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\"\n )\n } else {\n message = gettext(\n \"%(username)s, your account has been created and you have been signed in to it.\"\n )\n }\n\n if (activation === \"active\") {\n icon = \"check\"\n } else {\n icon = \"info_outline\"\n }\n\n return (\n <div className=\"page page-social-auth page-social-sauth-register\">\n <Header backendName={backend_name} />\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">\n {gettext(\"Registration completed!\")}\n </h3>\n </div>\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">{icon}</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {interpolate(message, { username }, true)}\n </p>\n <p className=\"help-block\">\n <a\n className=\"btn btn-default\"\n href={misago.get(\"MISAGO_PATH\")}\n >\n {gettext(\"Return to forum index\")}\n </a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Complete\n","import React from \"react\"\nimport Register from \"./register\"\nimport Complete from \"./complete\"\n\nexport default class SocialAuth extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n step: props.step,\n\n activation: props.activation || \"\",\n email: props.email || \"\",\n username: props.username || \"\",\n }\n }\n\n handleRegistrationComplete = ({ activation, email, step, username }) => {\n this.setState({ activation, email, step, username })\n }\n\n render() {\n const { backend_name, url } = this.props\n const { activation, email, step, username } = this.state\n\n if (step === \"register\") {\n return (\n <Register\n backend_name={backend_name}\n email={email}\n url={url}\n username={username}\n onRegistrationComplete={this.handleRegistrationComplete}\n />\n )\n }\n\n return (\n <Complete\n activation={activation}\n backend_name={backend_name}\n email={email}\n url={url}\n username={username}\n />\n )\n }\n}\n","import React from \"react\"\nimport SocialAuth from \"misago/components/social-auth\"\nimport misago from \"misago\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer(context) {\n if (context.get(\"CURRENT_LINK\") === \"misago:social-complete\") {\n const props = context.get(\"SOCIAL_AUTH_FORM\")\n mount(<SocialAuth {...props} />, \"page-mount\")\n }\n}\n\nmisago.addInitializer({\n name: \"component:social-auth\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport Form from \"./form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as participants from \"misago/reducers/participants\"\nimport { updateAcl } from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n username: \"\",\n }\n }\n\n onUsernameChange = (event) => {\n this.changeValue(\"username\", event.target.value)\n }\n\n clean() {\n if (!this.state.username.trim().length) {\n snackbar.error(gettext(\"You have to enter user name.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.patch(this.props.thread.api.index, [\n { op: \"add\", path: \"participants\", value: this.state.username },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n }\n\n handleSuccess(data) {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n snackbar.success(gettext(\"New participant has been added to thread.\"))\n\n modal.hide()\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-sm\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_username\" label={gettext(\"User to add\")}>\n <input\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onUsernameChange}\n type=\"text\"\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-block btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Add participant\")}\n </button>\n <button\n className=\"btn btn-block btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Add participant\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport AddParticipantModal from \"misago/components/add-participant\"\nimport modal from \"misago/services/modal\"\n\nexport default class extends React.Component {\n onClick = () => {\n modal.show(<AddParticipantModal thread={this.props.thread} />)\n }\n\n render() {\n if (!this.props.thread.acl.can_add_participants) return null\n\n return (\n <div className=\"col-xs-12 col-sm-3\">\n <button\n className=\"btn btn-default btn-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">person_add</span>\n {gettext(\"Add participant\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { changeOwner } from \"./actions\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.isUser = props.participant.id === props.user.id\n }\n\n onClick = () => {\n let confirmed = false\n if (this.isUser) {\n confirmed = window.confirm(\n gettext(\"Are you sure you want to take over this thread?\")\n )\n } else {\n const message = gettext(\n \"Are you sure you want to change thread owner to %(user)s?\"\n )\n confirmed = window.confirm(\n interpolate(\n message,\n {\n user: this.props.participant.username,\n },\n true\n )\n )\n }\n\n if (!confirmed) return\n\n changeOwner(this.props.thread, this.props.participant)\n }\n\n render() {\n if (this.props.participant.is_owner) return null\n if (!this.props.thread.acl.can_change_owner) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n {gettext(\"Make owner\")}\n </button>\n </li>\n )\n }\n}\n","import * as participants from \"misago/reducers/participants\"\nimport { updateAcl } from \"misago/reducers/thread\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport function leave(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"remove\", path: \"participants\", value: participant.id },\n ])\n .then(\n () => {\n snackbar.success(gettext(\"You have left this thread.\"))\n window.setTimeout(() => {\n window.location = misago.get(\"PRIVATE_THREADS_URL\")\n }, 3 * 1000)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n\nexport function remove(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"remove\", path: \"participants\", value: participant.id },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n .then(\n (data) => {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n const message = gettext(\"%(user)s has been removed from this thread.\")\n snackbar.success(\n interpolate(\n message,\n {\n user: participant.username,\n },\n true\n )\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n\nexport function changeOwner(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"replace\", path: \"owner\", value: participant.id },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n .then(\n (data) => {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n const message = gettext(\"%(user)s has been made new thread owner.\")\n snackbar.success(\n interpolate(\n message,\n {\n user: participant.username,\n },\n true\n )\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n","import React from \"react\"\nimport { remove, leave } from \"./actions\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.isUser = props.participant.id === props.user.id\n }\n\n onClick = () => {\n let confirmed = false\n if (this.isUser) {\n confirmed = window.confirm(\n gettext(\"Are you sure you want to leave this thread?\")\n )\n } else {\n const message = gettext(\n \"Are you sure you want to remove %(user)s from this thread?\"\n )\n confirmed = window.confirm(\n interpolate(\n message,\n {\n user: this.props.participant.username,\n },\n true\n )\n )\n }\n\n if (!confirmed) return\n\n if (this.isUser) {\n leave(this.props.thread, this.props.participant)\n } else {\n remove(this.props.thread, this.props.participant)\n }\n }\n\n render() {\n const isModerator = this.props.user.acl.can_moderate_private_threads\n\n if (!(this.props.userIsOwner || this.isUser || isModerator)) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n {this.isUser ? gettext(\"Leave thread\") : gettext(\"Remove\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport MakeOwner from \"./make-owner\"\nimport Remove from \"./remove\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function (props) {\n const participant = props.participant\n\n let className = \"btn btn-default\"\n if (participant.is_owner) {\n className = \"btn btn-primary\"\n }\n className += \" btn-user btn-block\"\n\n return (\n <div className=\"col-xs-12 col-sm-3 col-md-2 participant-card\">\n <div className=\"dropdown\">\n <button\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className={className}\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <Avatar size=\"34\" user={participant} />\n <span className=\"btn-text\">{participant.username}</span>\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n <UserStatus isOwner={participant.is_owner} />\n <li className=\"dropdown-header\" />\n <li>\n <a href={participant.url}>{gettext(\"See profile\")}</a>\n </li>\n <li role=\"separator\" className=\"divider\" />\n <MakeOwner {...props} />\n <Remove {...props} />\n </ul>\n </div>\n </div>\n )\n}\n\nexport function UserStatus({ isOwner }) {\n if (!isOwner) return null\n\n return (\n <li className=\"dropdown-header dropdown-header-owner\">\n <span className=\"material-icon\">start</span>\n <span className=\"icon-text\">{gettext(\"Thread owner\")}</span>\n </li>\n )\n}\n","import React from \"react\"\nimport Card from \"./card\"\n\nexport default function ({ participants, thread, user, userIsOwner }) {\n return (\n <div className=\"participants-cards\">\n <div className=\"row\">\n {participants.map((participant) => {\n return (\n <Card\n key={participant.id}\n participant={participant}\n thread={thread}\n user={user}\n userIsOwner={userIsOwner}\n />\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport AddParticipant from \"./add-participant\"\nimport CardsList from \"./cards-list\"\nimport * as utils from \"./utils\"\n\nexport default function (props) {\n if (!props.participants.length) return null\n\n return (\n <div className=\"panel panel-default panel-participants\">\n <div className=\"panel-body\">\n <CardsList\n userIsOwner={getUserIsOwner(props.user, props.participants)}\n {...props}\n />\n <div className=\"row\">\n <AddParticipant thread={props.thread} />\n <div className=\"col-xs-12 col-sm-9\">\n <p>{utils.getParticipantsCopy(props.participants)}</p>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport function getUserIsOwner(user, participants) {\n return participants[0].id === user.id\n}\n","export function getParticipantsCopy(participants) {\n const count = participants.length\n const message = ngettext(\n \"This thread has %(users)s participant.\",\n \"This thread has %(users)s participants.\",\n count\n )\n\n return interpolate(\n message,\n {\n users: count,\n },\n true\n )\n}\n","import React from \"react\"\n\nconst ICON = {\n changed_title: \"edit\",\n\n pinned_globally: \"bookmark\",\n pinned_locally: \"bookmark_border\",\n unpinned: \"panorama_fish_eye\",\n\n moved: \"arrow_forward\",\n merged: \"call_merge\",\n\n approved: \"done\",\n\n opened: \"lock_open\",\n closed: \"lock_outline\",\n\n unhid: \"visibility\",\n hid: \"visibility_off\",\n\n changed_owner: \"grade\",\n tookover: \"grade\",\n\n added_participant: \"person_add\",\n\n owner_left: \"person_outline\",\n participant_left: \"person_outline\",\n removed_participant: \"remove_circle_outline\",\n}\n\nconst EventIcon = (props) => (\n <span className=\"event-icon-bg\">\n <span className=\"material-icon\">{ICON[props.post.event_type]}</span>\n </span>\n)\n\nexport default EventIcon\n","import React from \"react\"\nimport moment from \"moment\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n if (isVisible(props.post.acl)) {\n return (\n <li className=\"event-controls\">\n <Hide {...props} />\n <Unhide {...props} />\n <Delete {...props} />\n </li>\n )\n } else {\n return null\n }\n}\n\nexport function isVisible(acl) {\n return acl.can_hide\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: this.props.user.username,\n url: Object.assign(this.props.post.url, {\n hidden_by: this.props.user.url,\n }),\n })\n )\n\n const op = { op: \"replace\", path: \"is-hidden\", value: true }\n\n ajax.patch(this.props.post.api.index, [op]).then(\n (patch) => {\n store.dispatch(post.patch(this.props.post, patch))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: false,\n })\n )\n }\n )\n }\n\n render() {\n if (!this.props.post.is_hidden) {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Hide\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: false,\n })\n )\n\n const op = { op: \"replace\", path: \"is-hidden\", value: false }\n\n ajax.patch(this.props.post.api.index, [op]).then(\n (patch) => {\n store.dispatch(post.patch(this.props.post, patch))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: true,\n })\n )\n }\n )\n }\n\n render() {\n if (this.props.post.is_hidden) {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Unhide\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n const decision = window.confirm(\n gettext(\n \"Are you sure you wish to delete this event? This action is not reversible!\"\n )\n )\n if (decision) {\n this.delete()\n }\n }\n\n delete = () => {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n ajax.delete(this.props.post.api.index).then(\n () => {\n snackbar.success(gettext(\"Event has been deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: false,\n })\n )\n }\n )\n }\n\n render() {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Delete\")}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport Controls from \"./controls\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst DATE_URL = '<a href=\"%(url)s\" title=\"%(absolute)s\">%(relative)s</a>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-inline event-info\">\n <Hidden {...props} />\n <Poster {...props} />\n <Controls {...props} />\n </ul>\n )\n}\n\nexport function Hidden(props) {\n if (props.post.is_hidden) {\n let user = null\n if (props.post.url.hidden_by) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.post.url.hidden_by),\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.post.hidden_on.format(\"LLL\")),\n relative: escapeHtml(props.post.hidden_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"Hidden by %(event_by)s %(event_on)s.\")),\n {\n event_by: user,\n event_on: date,\n },\n true\n )\n\n return (\n <li\n className=\"event-hidden-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n } else {\n return null\n }\n}\n\nexport function Poster(props) {\n let user = null\n if (props.post.poster) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.post.poster.url),\n user: escapeHtml(props.post.poster_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.post.poster_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_URL,\n {\n url: escapeHtml(props.post.url.index),\n absolute: escapeHtml(props.post.posted_on.format(\"LLL\")),\n relative: escapeHtml(props.post.posted_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"By %(event_by)s %(event_on)s.\")),\n {\n event_by: user,\n event_on: date,\n },\n true\n )\n\n return (\n <li\n className=\"event-posters\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst MESSAGE = {\n pinned_globally: gettext(\"Thread has been pinned globally.\"),\n pinned_locally: gettext(\"Thread has been pinned locally.\"),\n unpinned: gettext(\"Thread has been unpinned.\"),\n\n approved: gettext(\"Thread has been approved.\"),\n\n opened: gettext(\"Thread has been opened.\"),\n closed: gettext(\"Thread has been closed.\"),\n\n unhid: gettext(\"Thread has been revealed.\"),\n hid: gettext(\"Thread has been made hidden.\"),\n\n tookover: gettext(\"Took thread over.\"),\n\n owner_left: gettext(\"Owner has left thread. This thread is now closed.\"),\n participant_left: gettext(\"Participant has left thread.\"),\n}\n\nconst ITEM_LINK = '<a href=\"%(url)s\" class=\"item-title\">%(name)s</a>'\nconst ITEM_SPAN = '<span class=\"item-title\">%(name)s</span>'\n\nexport default function (props) {\n if (MESSAGE[props.post.event_type]) {\n return <p className=\"event-message\">{MESSAGE[props.post.event_type]}</p>\n } else if (props.post.event_type === \"changed_title\") {\n return <ChangedTitle {...props} />\n } else if (props.post.event_type === \"moved\") {\n return <Moved {...props} />\n } else if (props.post.event_type === \"merged\") {\n return <Merged {...props} />\n } else if (props.post.event_type === \"changed_owner\") {\n return <ChangedOwner {...props} />\n } else if (props.post.event_type === \"added_participant\") {\n return <AddedParticipant {...props} />\n } else if (props.post.event_type === \"removed_participant\") {\n return <RemovedParticipant {...props} />\n } else {\n return null\n }\n}\n\nexport function ChangedTitle(props) {\n const msgstring = escapeHtml(\n gettext(\"Thread title has been changed from %(old_title)s.\")\n )\n const oldTitle = interpolate(\n ITEM_SPAN,\n {\n name: escapeHtml(props.post.event_context.old_title),\n },\n true\n )\n const message = interpolate(\n msgstring,\n {\n old_title: oldTitle,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function Moved(props) {\n const msgstring = escapeHtml(\n gettext(\"Thread has been moved from %(from_category)s.\")\n )\n const fromCategory = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.from_category.url),\n name: escapeHtml(props.post.event_context.from_category.name),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n from_category: fromCategory,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function Merged(props) {\n const msgstring = escapeHtml(\n gettext(\"The %(merged_thread)s thread has been merged into this thread.\")\n )\n const mergedThread = interpolate(\n ITEM_SPAN,\n {\n name: escapeHtml(props.post.event_context.merged_thread),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n merged_thread: mergedThread,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function ChangedOwner(props) {\n const msgstring = escapeHtml(gettext(\"Changed thread owner to %(user)s.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function AddedParticipant(props) {\n const msgstring = escapeHtml(gettext(\"Added %(user)s to thread.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function RemovedParticipant(props) {\n const msgstring = escapeHtml(gettext(\"Removed %(user)s from thread.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n if (post.is_read) return null\n\n return (\n <div className=\"event-label\">\n <span className=\"label label-unread\">{gettext(\"New event\")}</span>\n </div>\n )\n}\n","import React from \"react\"\nimport * as post from \"misago/reducers/post\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n /*\n Super naive and de-facto placeholder implementation for reading posts on scroll\n */\n componentDidMount() {\n if (this.props.post.is_read) return // don't register read tracker\n\n $(this.element).waypoint({\n handler: (direction) => {\n if (direction !== \"down\" || this.props.post.is_read) return\n\n // after 1500ms run flag post as read logic\n window.setTimeout(() => {\n // check if post's bottom edge is still in viewport\n const boundingClientRect = this.element.getBoundingClientRect()\n const offsetBottom =\n boundingClientRect.height + boundingClientRect.top\n const clientHeight = document.documentElement.clientHeight\n\n if (offsetBottom < 5) return // scrolled past the post\n if (offsetBottom > clientHeight) return // scrolled back up\n\n // mark post as read\n store.dispatch(\n post.patch(this.props.post, {\n is_read: true,\n })\n )\n\n // call API to let it know we have unread post\n ajax.post(this.props.post.api.read).then(\n (data) => {\n store.dispatch(\n thread.update(this.props.thread, {\n is_read: data.thread_is_read,\n })\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }, 1000)\n },\n offset: \"bottom-in-view\",\n })\n }\n\n render() {\n return (\n <div\n className={this.props.className}\n ref={(node) => {\n if (node) this.element = node\n }}\n >\n {this.props.children}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Icon from \"./icon\"\nimport Info from \"./info\"\nimport Message from \"./message\"\nimport UnreadLabel from \"./unread-label\"\nimport Waypoint from \"../waypoint\"\n\nexport default function (props) {\n let className = \"event\"\n if (props.post.isDeleted) {\n className = \"hide\"\n } else if (props.post.is_hidden) {\n className = \"event post-hidden\"\n }\n\n return (\n <li id={\"post-\" + props.post.id} className={className}>\n <UnreadLabel post={props.post} />\n <div className=\"event-body\">\n <div className=\"event-icon\">\n <Icon {...props} />\n </div>\n <Waypoint className=\"event-content\" post={props.post}>\n <Message {...props} />\n <Info {...props} />\n </Waypoint>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport formatFilesize from \"misago/utils/file-size\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <div className=\"col-xs-12 col-md-6\">\n <AttachmentPreview {...props} />\n <div className=\"post-attachment\">\n <a\n href={props.attachment.url.index}\n className=\"attachment-name item-title\"\n >\n {props.attachment.filename}\n </a>\n <AttachmentDetails {...props} />\n </div>\n </div>\n )\n}\n\nexport function AttachmentPreview(props) {\n if (props.attachment.is_image) {\n return (\n <div className=\"post-attachment-preview\">\n <AttachmentThumbnail {...props} />\n </div>\n )\n } else {\n return (\n <div className=\"post-attachment-preview\">\n <AttachmentIcon {...props} />\n </div>\n )\n }\n}\n\nexport function AttachmentIcon(props) {\n return (\n <a href={props.attachment.url.index} className=\"material-icon\">\n insert_drive_file\n </a>\n )\n}\n\nexport function AttachmentThumbnail(props) {\n const url = props.attachment.url.thumb || props.attachment.url.index\n return (\n <a\n className=\"post-thumbnail\"\n href={props.attachment.url.index}\n style={{ backgroundImage: 'url(\"' + escapeHtml(url) + '\")' }}\n />\n )\n}\n\nexport function AttachmentDetails(props) {\n let user = null\n if (props.attachment.url.uploader) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.attachment.url.uploader),\n user: escapeHtml(props.attachment.uploader_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.attachment.uploader_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.attachment.uploaded_on.format(\"LLL\")),\n relative: escapeHtml(props.attachment.uploaded_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(\n gettext(\n \"%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.\"\n )\n ),\n {\n filetype: props.attachment.filetype,\n size: formatFilesize(props.attachment.size),\n uploader: user,\n uploaded_on: date,\n },\n true\n )\n\n return (\n <p\n className=\"post-attachment-description\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\nimport batch from \"misago/utils/batch\"\nimport Attachment from \"./attachment\"\n\nexport default function (props) {\n if (!isVisible(props.post)) {\n return null\n }\n\n return (\n <div className=\"post-attachments\">\n {batch(props.post.attachments, 2).map((row) => {\n const key = row\n .map((a) => {\n return a ? a.id : 0\n })\n .join(\"_\")\n return <Row key={key} row={row} />\n })}\n </div>\n )\n}\n\nexport function isVisible(post) {\n return (!post.is_hidden || post.acl.can_see_hidden) && post.attachments\n}\n\nexport function Row(props) {\n return (\n <div className=\"row\">\n {props.row.map((attachment) => {\n return (\n <Attachment\n attachment={attachment}\n key={attachment ? attachment.id : 0}\n />\n )\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport Waypoint from \"../waypoint\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst HIDDEN_BY_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\nconst HIDDEN_BY_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst HIDDEN_ON =\n '<abbr class=\"last-title\" title=\"%(absolute)s\">%(relative)s</abbr>'\n\nexport default function (props) {\n if (props.post.is_hidden && !props.post.acl.can_see_hidden) {\n return <Hidden {...props} />\n } else if (props.post.content) {\n return <Default {...props} />\n } else {\n return <Invalid {...props} />\n }\n}\n\nexport function Default(props) {\n return (\n <Waypoint className=\"post-body\" post={props.post}>\n <MisagoMarkup markup={props.post.content} />\n </Waypoint>\n )\n}\n\nexport function Hidden(props) {\n let user = null\n if (props.post.hidden_by) {\n user = interpolate(\n HIDDEN_BY_URL,\n {\n url: escapeHtml(props.post.url.hidden_by),\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n } else {\n user = interpolate(\n HIDDEN_BY_SPAN,\n {\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n }\n\n const date = interpolate(\n HIDDEN_ON,\n {\n absolute: escapeHtml(props.post.hidden_on.format(\"LLL\")),\n relative: escapeHtml(props.post.hidden_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"Hidden by %(hidden_by)s %(hidden_on)s.\")),\n {\n hidden_by: user,\n hidden_on: date,\n },\n true\n )\n\n return (\n <Waypoint className=\"post-body post-body-hidden\" post={props.post}>\n <p className=\"lead\">\n {gettext(\"This post is hidden. You cannot see its contents.\")}\n </p>\n <p className=\"text-muted\" dangerouslySetInnerHTML={{ __html: message }} />\n </Waypoint>\n )\n}\n\nexport function Invalid(props) {\n return (\n <Waypoint className=\"post-body post-body-invalid\" post={props.post}>\n <p className=\"lead\">\n {gettext(\"This post's contents cannot be displayed.\")}\n </p>\n <p className=\"text-muted\">\n {gettext(\"This error is caused by invalid post content manipulation.\")}\n </p>\n </Waypoint>\n )\n}\n","import React from \"react\"\n\nexport function FlagBestAnswer({ post, thread, user }) {\n if (!(isVisible(post) && post.id === thread.best_answer)) {\n return null\n }\n\n let message = null\n if (user.id && thread.best_answer_marked_by === user.id) {\n message = interpolate(\n gettext(\"Marked as best answer by you %(marked_on)s.\"),\n {\n marked_on: thread.best_answer_marked_on.fromNow(),\n },\n true\n )\n } else {\n message = interpolate(\n gettext(\"Marked as best answer by %(marked_by)s %(marked_on)s.\"),\n {\n marked_by: thread.best_answer_marked_by_name,\n marked_on: thread.best_answer_marked_on.fromNow(),\n },\n true\n )\n }\n\n return (\n <div className=\"post-status-message post-status-best-answer\">\n <span className=\"material-icon\">check_box</span>\n <p>{message}</p>\n </div>\n )\n}\n\nexport function FlagHidden(props) {\n if (!(isVisible(props.post) && props.post.is_hidden)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-hidden\">\n <span className=\"material-icon\">visibility_off</span>\n <p>\n {gettext(\n \"This post is hidden. Only users with permission may see its contents.\"\n )}\n </p>\n </div>\n )\n}\n\nexport function FlagUnapproved(props) {\n if (!(isVisible(props.post) && props.post.is_unapproved)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-unapproved\">\n <span className=\"material-icon\">remove_circle_outline</span>\n <p>\n {gettext(\n \"This post is unapproved. Only users with permission to approve posts and its author may see its contents.\"\n )}\n </p>\n </div>\n )\n}\n\nexport function FlagProtected(props) {\n if (!(isVisible(props.post) && props.post.is_protected)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-protected visible-xs-block\">\n <span className=\"material-icon\">lock_outline</span>\n <p>{gettext(\"This post is protected. Only moderators may change it.\")}</p>\n </div>\n )\n}\n\nexport function isVisible(post) {\n return !post.is_hidden || post.acl.can_see_hidden\n}\n","import moment from \"moment\"\nimport * as thread from \"misago/reducers/thread\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport function approve(props) {\n store.dispatch(\n post.patch(props.post, {\n is_unapproved: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-unapproved\", value: false }]\n\n const previousState = {\n is_unapproved: props.post.is_unapproved,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function protect(props) {\n store.dispatch(\n post.patch(props.post, {\n is_protected: true,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: true }]\n\n const previousState = {\n is_protected: props.post.is_protected,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unprotect(props) {\n store.dispatch(\n post.patch(props.post, {\n is_protected: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: false }]\n\n const previousState = {\n is_protected: props.post.is_protected,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function hide(props) {\n store.dispatch(\n post.patch(props.post, {\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(props.post.url, {\n hidden_by: props.user.url,\n }),\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: true }]\n\n const previousState = {\n is_hidden: props.post.is_hidden,\n hidden_on: props.post.hidden_on,\n hidden_by_name: props.post.hidden_by_name,\n url: props.post.url,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unhide(props) {\n store.dispatch(\n post.patch(props.post, {\n is_hidden: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: false }]\n\n const previousState = {\n is_hidden: props.post.is_hidden,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function like(props) {\n const lastLikes = props.post.last_likes || []\n const concatedLikes = [props.user].concat(lastLikes)\n const finalLikes =\n concatedLikes.length > 3 ? concatedLikes.slice(0, -1) : concatedLikes\n\n store.dispatch(\n post.patch(props.post, {\n is_liked: true,\n likes: props.post.likes + 1,\n last_likes: finalLikes,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-liked\", value: true }]\n\n const previousState = {\n is_liked: props.post.is_liked,\n likes: props.post.likes,\n last_likes: props.post.last_likes,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unlike(props) {\n store.dispatch(\n post.patch(props.post, {\n is_liked: false,\n likes: props.post.likes - 1,\n last_likes: props.post.last_likes.filter((user) => {\n return !user.id || user.id !== props.user.id\n }),\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-liked\", value: false }]\n\n const previousState = {\n is_liked: props.post.is_liked,\n likes: props.post.likes,\n last_likes: props.post.last_likes,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function patch(props, ops, previousState) {\n ajax.patch(props.post.api.index, ops).then(\n (newState) => {\n store.dispatch(post.patch(props.post, newState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(post.patch(props.post, previousState))\n }\n )\n}\n\nexport function remove(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to delete this post? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n store.dispatch(\n post.patch(props.post, {\n isDeleted: true,\n })\n )\n\n ajax.delete(props.post.api.index).then(\n () => {\n snackbar.success(gettext(\"Post has been deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(props.post, {\n isDeleted: false,\n })\n )\n }\n )\n}\n\nexport function markAsBestAnswer(props) {\n const { post, user } = props\n\n store.dispatch(\n thread.update({\n best_answer: post.id,\n best_answer_is_protected: post.is_protected,\n best_answer_marked_on: moment(),\n best_answer_marked_by: user.id,\n best_answer_marked_by_name: user.username,\n best_answer_marked_by_slug: user.slug,\n })\n )\n\n const ops = [\n { op: \"replace\", path: \"best-answer\", value: post.id },\n { op: \"add\", path: \"acl\", value: true },\n ]\n\n const previousState = {\n best_answer: props.thread.best_answer,\n best_answer_is_protected: props.thread.best_answer_is_protected,\n best_answer_marked_on: props.thread.best_answer_marked_on,\n best_answer_marked_by: props.thread.best_answer_marked_by,\n best_answer_marked_by_name: props.thread.best_answer_marked_by_name,\n best_answer_marked_by_slug: props.thread.best_answer_marked_by_slug,\n }\n\n patchThread(props, ops, previousState)\n}\n\nexport function unmarkBestAnswer(props) {\n const { post } = props\n\n store.dispatch(\n thread.update({\n best_answer: null,\n best_answer_is_protected: false,\n best_answer_marked_on: null,\n best_answer_marked_by: null,\n best_answer_marked_by_name: null,\n best_answer_marked_by_slug: null,\n })\n )\n\n const ops = [\n { op: \"remove\", path: \"best-answer\", value: post.id },\n { op: \"add\", path: \"acl\", value: true },\n ]\n\n const previousState = {\n best_answer: props.thread.best_answer,\n best_answer_is_protected: props.thread.best_answer_is_protected,\n best_answer_marked_on: props.thread.best_answer_marked_on,\n best_answer_marked_by: props.thread.best_answer_marked_by,\n best_answer_marked_by_name: props.thread.best_answer_marked_by_name,\n best_answer_marked_by_slug: props.thread.best_answer_marked_by_slug,\n }\n\n patchThread(props, ops, previousState)\n}\n\nexport function patchThread(props, ops, previousState) {\n ajax.patch(props.thread.api.index, ops).then(\n (newState) => {\n if (newState.best_answer_marked_on) {\n newState.best_answer_marked_on = moment(newState.best_answer_marked_on)\n }\n store.dispatch(thread.update(newState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(thread.update(previousState))\n }\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Avatar from \"misago/components/avatar\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n\n error: null,\n likes: [],\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.post.api.likes).then(\n (data) => {\n this.setState({\n isReady: true,\n likes: data.map(hydrateLike),\n })\n },\n (rejection) => {\n this.setState({\n isReady: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.error) {\n return (\n <ModalDialog className=\"modal-message\">\n <Message message={this.state.error} />\n </ModalDialog>\n )\n } else if (this.state.isReady) {\n if (this.state.likes.length) {\n return (\n <ModalDialog className=\"modal-sm\" likes={this.state.likes}>\n <LikesList likes={this.state.likes} />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog className=\"modal-message\">\n <Message message={gettext(\"No users have liked this post.\")} />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog className=\"modal-sm\">\n <Loader />\n </ModalDialog>\n )\n }\n}\n\nexport function hydrateLike(data) {\n return Object.assign({}, data, {\n liked_on: moment(data.liked_on),\n })\n}\n\nexport function ModalDialog({ className, children, likes }) {\n let title = gettext(\"Post Likes\")\n if (likes) {\n const likesCount = likes.length\n const message = ngettext(\"%(likes)s like\", \"%(likes)s likes\", likesCount)\n\n title = interpolate(message, { likes: likesCount }, true)\n }\n\n return (\n <div className={\"modal-dialog \" + (className || \"\")} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{title}</h4>\n </div>\n {children}\n </div>\n </div>\n )\n}\n\nexport function LikesList(props) {\n return (\n <div className=\"modal-body modal-post-likers\">\n <ul className=\"media-list\">\n {props.likes.map((like) => {\n return <LikeDetails key={like.id} {...like} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function LikeDetails(props) {\n if (props.url) {\n const user = {\n id: props.liker_id,\n avatars: props.avatars,\n }\n\n return (\n <li className=\"media\">\n <div className=\"media-left\">\n <a className=\"user-avatar\" href={props.url}>\n <Avatar size=\"50\" user={user} />\n </a>\n </div>\n <div className=\"media-body\">\n <a className=\"item-title\" href={props.url}>\n {props.username}\n </a>{\" \"}\n <LikeDate likedOn={props.liked_on} />\n </div>\n </li>\n )\n }\n\n return (\n <li className=\"media\">\n <div className=\"media-left\">\n <span className=\"user-avatar\">\n <Avatar size=\"50\" />\n </span>\n </div>\n <div className=\"media-body\">\n <strong>{props.username}</strong> <LikeDate likedOn={props.liked_on} />\n </div>\n </li>\n )\n}\n\nexport function LikeDate(props) {\n return (\n <span className=\"text-muted\" title={props.likedOn.format(\"LLL\")}>\n {props.likedOn.fromNow()}\n </span>\n )\n}\n","import React from \"react\"\nimport * as actions from \"./controls/actions\"\nimport LikesModal from \"misago/components/post-likes\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\n\nexport default function (props) {\n if (!isVisible(props.post)) return null\n\n return (\n <div className=\"post-footer\">\n <MarkAsBestAnswer {...props} />\n <MarkAsBestAnswerCompact {...props} />\n <Like {...props} />\n <Likes\n lastLikes={props.post.last_likes}\n likes={props.post.likes}\n {...props}\n />\n <LikesCompact likes={props.post.likes} {...props} />\n <Reply {...props} />\n <Edit {...props} />\n </div>\n )\n}\n\nexport function isVisible(post) {\n return (\n (!post.is_hidden || post.acl.can_see_hidden) &&\n (post.acl.can_reply ||\n post.acl.can_edit ||\n (post.acl.can_see_likes && (post.last_likes || []).length) ||\n post.acl.can_like)\n )\n}\n\nexport class MarkAsBestAnswer extends React.Component {\n onClick = () => {\n actions.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <button\n className=\"hidden-xs btn btn-default btn-sm pull-left\"\n disabled={this.props.post.isBusy || post.id === thread.best_answer}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Best answer\")}\n </button>\n )\n }\n}\n\nexport class MarkAsBestAnswerCompact extends React.Component {\n onClick = () => {\n actions.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <button\n className=\"visible-xs-inline-block btn btn-default btn-sm pull-left\"\n disabled={this.props.post.isBusy || post.id === thread.best_answer}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">check_box</span>\n </button>\n )\n }\n}\n\nexport class Like extends React.Component {\n onClick = () => {\n if (this.props.post.is_liked) {\n actions.unlike(this.props)\n } else {\n actions.like(this.props)\n }\n }\n\n render() {\n if (!this.props.post.acl.can_like) return null\n\n let className = \"btn btn-default btn-sm pull-left\"\n if (this.props.post.is_liked) {\n className = \"btn btn-success btn-sm pull-left\"\n }\n\n return (\n <button\n className={className}\n disabled={this.props.post.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {this.props.post.is_liked ? gettext(\"Liked\") : gettext(\"Like\")}\n </button>\n )\n }\n}\n\nexport class Likes extends React.Component {\n onClick = () => {\n modal.show(<LikesModal post={this.props.post} />)\n }\n\n render() {\n const hasLikes = (this.props.post.last_likes || []).length > 0\n if (!this.props.post.acl.can_see_likes || !hasLikes) return null\n\n if (this.props.post.acl.can_see_likes === 2) {\n return (\n <button\n className=\"btn btn-link btn-sm pull-left hidden-xs\"\n onClick={this.onClick}\n type=\"button\"\n >\n {getLikesMessage(this.props.likes, this.props.lastLikes)}\n </button>\n )\n }\n\n return (\n <p className=\"pull-left hidden-xs\">\n {getLikesMessage(this.props.likes, this.props.lastLikes)}\n </p>\n )\n }\n}\n\nexport class LikesCompact extends Likes {\n render() {\n const hasLikes = (this.props.post.last_likes || []).length > 0\n if (!this.props.post.acl.can_see_likes || !hasLikes) return null\n\n if (this.props.post.acl.can_see_likes === 2) {\n return (\n <button\n className=\"btn btn-link btn-sm likes-compact pull-left visible-xs-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">favorite</span>\n {this.props.likes}\n </button>\n )\n }\n\n return (\n <p className=\"likes-compact pull-left visible-xs-block\">\n <span className=\"material-icon\">favorite</span>\n {this.props.likes}\n </p>\n )\n }\n}\n\nexport function getLikesMessage(likes, users) {\n const usernames = users.slice(0, 3).map((u) => u.username)\n\n if (usernames.length == 1) {\n return interpolate(\n gettext(\"%(user)s likes this.\"),\n {\n user: usernames[0],\n },\n true\n )\n }\n\n const hiddenLikes = likes - usernames.length\n\n const otherUsers = usernames.slice(0, -1).join(\", \")\n const lastUser = usernames.slice(-1)[0]\n\n const usernamesList = interpolate(\n gettext(\"%(users)s and %(last_user)s\"),\n {\n users: otherUsers,\n last_user: lastUser,\n },\n true\n )\n\n if (hiddenLikes === 0) {\n return interpolate(\n gettext(\"%(users)s like this.\"),\n {\n users: usernamesList,\n },\n true\n )\n }\n\n const message = ngettext(\n \"%(users)s and %(likes)s other user like this.\",\n \"%(users)s and %(likes)s other users like this.\",\n hiddenLikes\n )\n\n return interpolate(\n message,\n {\n users: usernames.join(\", \"),\n likes: hiddenLikes,\n },\n true\n )\n}\n\nexport class Reply extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"REPLY\",\n\n config: this.props.thread.api.editor,\n submit: this.props.thread.api.posts.index,\n\n context: {\n reply: this.props.post.id,\n },\n })\n }\n\n render() {\n if (this.props.post.acl.can_reply) {\n return (\n <button\n className=\"btn btn-primary btn-sm pull-right\"\n type=\"button\"\n onClick={this.onClick}\n >\n {gettext(\"Reply\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"EDIT\",\n\n config: this.props.post.api.editor,\n submit: this.props.post.api.index,\n })\n }\n\n render() {\n if (this.props.post.acl.can_edit) {\n return (\n <button\n className=\"hidden-xs btn btn-default btn-sm pull-right\"\n type=\"button\"\n onClick={this.onClick}\n >\n {gettext(\"Edit\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.move, {\n new_thread: this.state.url,\n posts: [this.props.post.id],\n })\n }\n\n handleSuccess(success) {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected post was moved to the other thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to move post to\")}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Move post\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move post\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"modal-body post-changelog-diff\">\n <ul className=\"list-unstyled\">\n {props.diff.map((item, i) => {\n return <DiffItem item={item} key={i} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function DiffItem(props) {\n if (props.item[0] === \"?\") return null\n\n return (\n <li className={getItemClassName(props.item)}>{cleanItem(props.item)}</li>\n )\n}\n\nexport function getItemClassName(item) {\n let className = \"diff-item\"\n if (item[0] === \"-\") {\n className += \" diff-item-sub\"\n } else if (item[0] === \"+\") {\n className += \" diff-item-add\"\n }\n return className\n}\n\nexport function cleanItem(item) {\n return item.substr(2)\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\n\nexport default class extends React.Component {\n onClick = () => {\n this.props.revertEdit(this.props.edit.id)\n }\n\n render() {\n if (!this.props.canRevert) return null\n\n return (\n <div className=\"modal-footer visible-xs-block\">\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={gettext(\"Revert post to state from before this edit.\")}\n >\n {gettext(\"Revert\")}\n </Button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default class extends React.Component {\n goLast = () => {\n this.props.goToEdit()\n }\n\n goForward = () => {\n this.props.goToEdit(this.props.edit.next)\n }\n\n goBack = () => {\n this.props.goToEdit(this.props.edit.previous)\n }\n\n revertEdit = () => {\n this.props.revertEdit(this.props.edit.id)\n }\n\n render() {\n return (\n <div className=\"modal-toolbar post-changelog-toolbar\">\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-4\">\n <div className=\"row\">\n <div className=\"col-xs-4\">\n <GoBackBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goBack}\n />\n </div>\n <div className=\"col-xs-4\">\n <GoForwardBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goForward}\n />\n </div>\n <div className=\"col-xs-4\">\n <GoLastBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goLast}\n />\n </div>\n </div>\n </div>\n <div className=\"col-xs-12 col-sm-5 xs-margin-top-half post-change-label\">\n <Label edit={this.props.edit} />\n </div>\n <RevertBtn\n canRevert={this.props.canRevert}\n disabled={this.props.disabled}\n onClick={this.revertEdit}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function GoBackBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.previous}\n onClick={props.onClick}\n title={gettext(\"See previous change\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Button>\n )\n}\n\nexport function GoForwardBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.next}\n onClick={props.onClick}\n title={gettext(\"See next change\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Button>\n )\n}\n\nexport function GoLastBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.next}\n onClick={props.onClick}\n title={gettext(\"See previous change\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Button>\n )\n}\n\nexport function RevertBtn(props) {\n if (!props.canRevert) return null\n\n return (\n <div className=\"col-sm-3 hidden-xs\">\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={props.disabled}\n onClick={props.onClick}\n title={gettext(\"Revert post to state from before this edit.\")}\n >\n {gettext(\"Revert\")}\n </Button>\n </div>\n )\n}\n\nexport function Label(props) {\n let user = null\n if (props.edit.url.editor) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.edit.url.editor),\n user: escapeHtml(props.edit.editor_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.edit.editor_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.edit.edited_on.format(\"LLL\")),\n relative: escapeHtml(props.edit.edited_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"By %(edited_by)s %(edited_on)s.\")),\n {\n edited_by: user,\n edited_on: date,\n },\n true\n )\n\n return <p dangerouslySetInnerHTML={{ __html: message }} />\n}\n","import moment from \"moment\"\n\nexport function hydrateEdit(json) {\n return Object.assign({}, json, {\n edited_on: moment(json.edited_on),\n })\n}\n","import React from \"react\"\nimport Diff from \"./diff\"\nimport Footer from \"./footer\"\nimport Toolbar from \"./toolbar\"\nimport { hydrateEdit } from \"./utils\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isBusy: true,\n\n canRevert: props.post.acl.can_edit,\n\n error: null,\n edit: null,\n }\n }\n\n componentDidMount() {\n this.goToEdit()\n }\n\n goToEdit = (edit = null) => {\n this.setState({\n isBusy: true,\n })\n\n let url = this.props.post.api.edits\n if (edit !== null) {\n url += \"?edit=\" + edit\n }\n\n ajax.get(url).then(\n (data) => {\n this.setState({\n isReady: true,\n isBusy: false,\n edit: hydrateEdit(data),\n })\n },\n (rejection) => {\n this.setState({\n isReady: true,\n isBusy: false,\n error: rejection.detail,\n })\n }\n )\n }\n\n revertEdit = (edit) => {\n if (this.state.isBusy) return\n\n const confirmation = window.confirm(\n gettext(\n \"Are you sure you with to revert this post to the state from before this edit?\"\n )\n )\n if (!confirmation) return\n\n this.setState({\n isBusy: true,\n })\n\n const url = this.props.post.api.edits + \"?edit=\" + edit\n ajax.post(url).then(\n (data) => {\n const hydratedPost = post.hydrate(data)\n store.dispatch(post.patch(data, hydratedPost))\n\n snackbar.success(gettext(\"Post has been reverted to previous state.\"))\n modal.hide()\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n this.setState({\n isBusy: false,\n })\n }\n )\n }\n\n render() {\n if (this.state.error) {\n return (\n <ModalDialog className=\"modal-dialog modal-message\">\n <Message message={this.state.error} />\n </ModalDialog>\n )\n } else if (this.state.isReady) {\n return (\n <ModalDialog>\n <Toolbar\n canRevert={this.state.canRevert}\n disabled={this.state.isBusy}\n edit={this.state.edit}\n goToEdit={this.goToEdit}\n revertEdit={this.revertEdit}\n />\n <Diff diff={this.state.edit.diff} />\n <Footer\n canRevert={this.state.canRevert}\n disabled={this.state.isBusy}\n edit={this.state.edit}\n revertEdit={this.revertEdit}\n />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog>\n <Loader />\n </ModalDialog>\n )\n }\n}\n\nexport function ModalDialog(props) {\n return (\n <div className={props.className || \"modal-dialog\"} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Post edits history\")}</h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport Select from \"misago/components/select\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default function (props) {\n return <PostingConfig {...props} Form={ModerationForm} />\n}\n\nexport class PostingConfig extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isError: false,\n\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n post: item.post,\n })\n })\n\n this.setState({\n isLoaded: true,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.isError) {\n return <Error message={this.state.isError} />\n } else if (this.state.isLoaded) {\n return (\n <ModerationForm {...this.props} categories={this.state.categories} />\n )\n } else {\n return <Loader />\n }\n }\n}\n\nexport class ModerationForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n categories: props.categories,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.acl = {}\n this.props.categories.forEach((category) => {\n if (category.post) {\n if (!this.state.category) {\n this.state.category = category.id\n }\n\n this.acl[category.id] = {\n can_pin_threads: category.post.pin,\n can_close_threads: category.post.close,\n can_hide_threads: category.post.hide,\n }\n }\n })\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.split, {\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n posts: [this.props.post.id],\n })\n }\n\n handleSuccess(apiResponse) {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected post was split into new thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup\n label={gettext(\"Thread weight\")}\n for=\"id_weight\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup\n label={gettext(\"Hide thread\")}\n for=\"id_is_hidden\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup\n label={gettext(\"Close thread\")}\n for=\"id_is_closed\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <Modal className=\"modal-dialog\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.state.categories}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Split post\")}\n </Button>\n </div>\n </form>\n </Modal>\n )\n }\n}\n\nexport function Loader() {\n return (\n <Modal className=\"modal-dialog\">\n <ModalLoader />\n </Modal>\n )\n}\n\nexport function Error(props) {\n return (\n <Modal className=\"modal-dialog modal-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move this post at the moment.\")}\n </p>\n <p>{props.message}</p>\n </div>\n </Modal>\n )\n}\n\nexport function Modal(props) {\n return (\n <div className={props.className} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">\n {gettext(\"Split post into new thread\")}\n </h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\nimport * as moderation from \"./actions\"\nimport MoveModal from \"./move\"\nimport PostChangelog from \"misago/components/post-changelog\"\nimport SplitModal from \"./split\"\n\nexport default function (props) {\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <Permalink {...props} />\n <Edit {...props} />\n <MarkAsBestAnswer {...props} />\n <UnmarkMarkBestAnswer {...props} />\n <PostEdits {...props} />\n <Approve {...props} />\n <Move {...props} />\n <Split {...props} />\n <Protect {...props} />\n <Unprotect {...props} />\n <Hide {...props} />\n <Unhide {...props} />\n <Delete {...props} />\n </ul>\n )\n}\n\nexport class Permalink extends React.Component {\n onClick = () => {\n let permaUrl = window.location.protocol + \"//\"\n permaUrl += window.location.host\n permaUrl += this.props.post.url.index\n\n prompt(gettext(\"Permament link to this post:\"), permaUrl)\n }\n\n render() {\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">link</span>\n {gettext(\"Permament link\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"EDIT\",\n\n config: this.props.post.api.editor,\n submit: this.props.post.api.index,\n })\n }\n\n render() {\n if (!this.props.post.acl.can_edit) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">edit</span>\n {gettext(\"Edit\")}\n </button>\n </li>\n )\n }\n}\n\nexport class MarkAsBestAnswer extends React.Component {\n onClick = () => {\n moderation.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (post.id === thread.best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Mark as best answer\")}\n </button>\n </li>\n )\n }\n}\n\nexport class UnmarkMarkBestAnswer extends React.Component {\n onClick = () => {\n moderation.unmarkBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id !== thread.best_answer) return null\n if (!thread.acl.can_unmark_best_answer) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">check_box_outline_blank</span>\n {gettext(\"Unmark best answer\")}\n </button>\n </li>\n )\n }\n}\n\nexport class PostEdits extends React.Component {\n onClick = () => {\n modal.show(<PostChangelog post={this.props.post} />)\n }\n\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const message = ngettext(\n \"This post was edited %(edits)s time.\",\n \"This post was edited %(edits)s times.\",\n this.props.post.edits\n )\n\n const title = interpolate(\n message,\n {\n edits: this.props.post.edits,\n },\n true\n )\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">edit</span>\n {gettext(\"Changes history\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Approve extends React.Component {\n onClick = () => {\n moderation.approve(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_approve) return null\n if (!this.props.post.is_unapproved) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Move extends React.Component {\n onClick = () => {\n modal.show(<MoveModal {...this.props} />)\n }\n\n render() {\n if (!this.props.post.acl.can_move) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Split extends React.Component {\n onClick = () => {\n modal.show(<SplitModal {...this.props} />)\n }\n\n render() {\n if (!this.props.post.acl.can_move) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">call_split</span>\n {gettext(\"Split\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Protect extends React.Component {\n onClick = () => {\n moderation.protect(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_protect) return null\n if (this.props.post.is_protected) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Protect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unprotect extends React.Component {\n onClick = () => {\n moderation.unprotect(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_protect) return null\n if (!this.props.post.is_protected) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Remove protection\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n moderation.hide(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id === thread.best_answer) return null\n if (!post.acl.can_hide) return null\n if (post.is_hidden) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n moderation.unhide(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_unhide) return null\n if (!this.props.post.is_hidden) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n moderation.remove(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id === thread.best_answer) return null\n if (!post.acl.can_delete) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport Dropdown from \"./dropdown\"\n\nexport default function (props) {\n return (\n <div className=\"pull-right dropdown\">\n <button\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n className=\"btn btn-default btn-icon dropdown-toggle\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">expand_more</span>\n </button>\n <Dropdown {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport * as posts from \"misago/reducers/posts\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n onClick = () => {\n if (this.props.post.isSelected) {\n store.dispatch(posts.deselect(this.props.post))\n } else {\n store.dispatch(posts.select(this.props.post))\n }\n }\n\n render() {\n if (\n !(this.props.thread.acl.can_merge_posts || isVisible(this.props.post.acl))\n ) {\n return null\n }\n\n return (\n <div className=\"pull-right\">\n <button\n className=\"btn btn-default btn-icon\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {this.props.post.isSelected\n ? \"check_box\"\n : \"check_box_outline_blank\"}\n </span>\n </button>\n </div>\n )\n }\n}\n\nexport function isVisible(acl) {\n return (\n acl.can_approve ||\n acl.can_hide ||\n acl.can_protect ||\n acl.can_unhide ||\n acl.can_delete ||\n acl.can_move\n )\n}\n","import React from \"react\"\nimport Controls from \"./controls\"\nimport Select from \"./select\"\nimport {\n StatusIcon,\n getStatusClassName,\n getStatusDescription,\n} from \"misago/components/user-status\"\nimport PostChangelog from \"misago/components/post-changelog\"\nimport modal from \"misago/services/modal\"\n\nexport default function (props) {\n return (\n <div className=\"post-heading\">\n <UnreadLabel {...props} />\n <UnreadCompact {...props} />\n <PostedOn {...props} />\n <PostedOnCompact {...props} />\n <PostEdits {...props} />\n <PostEditsCompacts {...props} />\n <ProtectedLabel {...props} />\n <Select {...props} />\n <Controls {...props} />\n </div>\n )\n}\n\nexport function UnreadLabel(props) {\n if (props.post.is_read) return null\n\n return (\n <span className=\"label label-unread hidden-xs\">{gettext(\"New post\")}</span>\n )\n}\n\nexport function UnreadCompact(props) {\n if (props.post.is_read) return null\n\n return (\n <span className=\"label label-unread visible-xs-inline-block\">\n {gettext(\"New\")}\n </span>\n )\n}\n\nexport function PostedOn(props) {\n const tooltip = interpolate(\n gettext(\"posted %(posted_on)s\"),\n {\n posted_on: props.post.posted_on.format(\"LL, LT\"),\n },\n true\n )\n\n return (\n <a\n href={props.post.url.index}\n className=\"btn btn-link posted-on hidden-xs\"\n title={tooltip}\n >\n {props.post.posted_on.fromNow()}\n </a>\n )\n}\n\nexport function PostedOnCompact(props) {\n return (\n <a\n href={props.post.url.index}\n className=\"btn btn-link posted-on visible-xs-inline-block\"\n >\n {props.post.posted_on.fromNow()}\n </a>\n )\n}\n\nexport class PostEdits extends React.Component {\n onClick = () => {\n modal.show(<PostChangelog post={this.props.post} />)\n }\n\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const tooltip = ngettext(\n \"This post was edited %(edits)s time.\",\n \"This post was edited %(edits)s times.\",\n this.props.post.edits\n )\n\n const title = interpolate(\n tooltip,\n {\n edits: this.props.post.edits,\n },\n true\n )\n\n const label = ngettext(\n \"edited %(edits)s time\",\n \"edited %(edits)s times\",\n this.props.post.edits\n )\n\n return (\n <button\n className=\"btn btn-link btn-see-edits hidden-xs\"\n onClick={this.onClick}\n title={title}\n type=\"button\"\n >\n {interpolate(\n label,\n {\n edits: this.props.post.edits,\n },\n true\n )}\n </button>\n )\n }\n}\n\nexport class PostEditsCompacts extends PostEdits {\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const label = ngettext(\n \"%(edits)s edit\",\n \"%(edits)s edits\",\n this.props.post.edits\n )\n\n return (\n <button\n className=\"btn btn-link btn-see-edits visible-xs-inline-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n {interpolate(\n label,\n {\n edits: this.props.post.edits,\n },\n true\n )}\n </button>\n )\n }\n}\n\nexport function ProtectedLabel(props) {\n const postAuthor = props.post.poster && props.post.poster.id === props.user.id\n const hasAcl = props.post.acl.can_protect\n const isVisible =\n props.user.id && props.post.is_protected && (postAuthor || hasAcl)\n\n if (!isVisible) {\n return null\n }\n\n return (\n <span\n className=\"label label-protected hidden-xs\"\n title={gettext(\"This post is protected and may not be edited.\")}\n >\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"protected\")}\n </span>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Controls from \"misago/components/posts-list/post/controls\"\nimport Select from \"misago/components/posts-list/post/select\"\n\nexport default function ({ post, thread }) {\n return (\n <div className=\"post-side post-side-anonymous\">\n <Select post={post} thread={thread} />\n <Controls post={post} thread={thread} />\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={100} />\n </span>\n </div>\n <div className=\"media-body\">\n <span className=\"media-heading item-title\">{post.poster_name}</span>\n\n <span className=\"user-title user-title-anonymous\">\n {gettext(\"Removed user\")}\n </span>\n </div>\n </div>\n </div>\n )\n}\n","export default function ({ title, rank }) {\n return rank.is_tab || !!title || !!rank.title\n}\n","import React from \"react\"\nimport hasVisibleTitle from \"./has-visible-title\"\n\nexport default function ({ poster }) {\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", poster.posts)\n\n let className = \"user-postcount\"\n if (hasVisibleTitle(poster)) {\n className += \" hidden-xs hidden-sm\"\n }\n\n return (\n <span className={className}>\n {interpolate(\n message,\n {\n posts: poster.posts,\n },\n true\n )}\n </span>\n )\n}\n","import React from \"react\"\nimport UserStatus, { StatusLabel } from \"misago/components/user-status\"\nimport hasVisibleTitle from \"./has-visible-title\"\n\nexport default function ({ poster }) {\n let className = \"hidden-xs\"\n if (hasVisibleTitle(poster)) {\n className += \" hidden-sm\"\n }\n\n return (\n <span className={className}>\n <UserStatus status={poster.status}>\n <StatusLabel status={poster.status} user={poster} />\n </UserStatus>\n </span>\n )\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title\n if (!userTitle && rank.is_tab) {\n userTitle = rank.name\n }\n\n if (!userTitle) return null\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <div className={className}>\n <a href={rank.url}>{userTitle}</a>\n </div>\n )\n }\n\n return <div className={className}>{userTitle}</div>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Controls from \"misago/components/posts-list/post/controls\"\nimport Select from \"misago/components/posts-list/post/select\"\nimport UserStatus, { StatusIcon } from \"misago/components/user-status\"\nimport UserPostcount from \"./user-postcount\"\nimport UserStatusLabel from \"./user-status\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ post, thread }) {\n const { poster } = post\n\n return (\n <div className=\"post-side post-side-registered\">\n <Select post={post} thread={thread} />\n <Controls post={post} thread={thread} />\n <div className=\"media\">\n <div className=\"media-left\">\n <a href={poster.url}>\n <Avatar className=\"poster-avatar\" size={100} user={poster} />\n </a>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a className=\"item-title\" href={poster.url}>\n {poster.username}\n </a>\n <UserStatus status={poster.status}>\n <StatusIcon status={poster.status} />\n </UserStatus>\n </div>\n\n <UserTitle rank={poster.rank} title={poster.title} />\n\n <UserStatusLabel poster={poster} />\n <UserPostcount poster={poster} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Anonymous from \"./anonymous\"\nimport Registered from \"./registered\"\n\nexport default function (props) {\n if (props.post.poster) {\n return <Registered {...props} />\n }\n\n return <Anonymous {...props} />\n}\n","import React from \"react\"\nimport Attachments from \"./attachments\"\nimport Body from \"./body\"\nimport {\n FlagBestAnswer,\n FlagHidden,\n FlagUnapproved,\n FlagProtected,\n} from \"./flags\"\nimport Footer from \"./footer\"\nimport Header from \"./header\"\nimport PostSide from \"./post-side\"\n\nexport default function (props) {\n let className = \"post\"\n if (props.post.isDeleted) {\n className = \"hide\"\n } else if (props.post.is_hidden && !props.post.acl.can_see_hidden) {\n className = \"post post-hidden\"\n }\n\n if (props.post.poster && props.post.poster.rank.css_class) {\n className += \" post-\" + props.post.poster.rank.css_class\n }\n\n if (!props.post.is_read) {\n className += \" post-new\"\n }\n\n return (\n <li id={\"post-\" + props.post.id} className={className}>\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <PostSide {...props} />\n <div className=\"panel-content\">\n <Header {...props} />\n <FlagBestAnswer {...props} />\n <FlagUnapproved {...props} />\n <FlagProtected {...props} />\n <FlagHidden {...props} />\n <Body {...props} />\n <Attachments {...props} />\n <Footer {...props} />\n </div>\n </div>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nconst PostPreview = () => (\n <li className=\"post\">\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <div className=\"post-side post-side-registered\">\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size=\"100\" />\n </span>\n </div>\n <div className=\"media-body\">\n <span className=\"media-heading item-title\">\n <span className=\"ui-preview-text\" style={{ width: \"80px\" }}>\n \n </span>\n </span>\n <span className=\"user-title user-title-anonymous\">\n <span className=\"ui-preview-text\" style={{ width: \"60px\" }}>\n \n </span>\n </span>\n </div>\n </div>\n </div>\n <div className=\"panel-content\">\n <div className=\"post-body\">\n <article className=\"misago-markup\">\n <p className=\"ui-preview-text\" style={{ width: \"100%\" }}>\n \n </p>\n <p className=\"ui-preview-text\" style={{ width: \"70%\" }}>\n \n </p>\n <p\n className=\"ui-preview-text hidden-xs hidden-sm\"\n style={{ width: \"85%\" }}\n >\n \n </p>\n </article>\n </div>\n </div>\n </div>\n </div>\n </li>\n)\n\nexport default PostPreview\n","import React from \"react\"\nimport Event from \"./event\"\nimport Post from \"./post\"\nimport PostPreview from \"./post/preview\"\n\nexport default function (props) {\n if (!props.posts.isLoaded) {\n return (\n <ul className=\"posts-list ui-preview\">\n <PostPreview />\n </ul>\n )\n }\n\n return (\n <ul className=\"posts-list ui-ready\">\n {props.posts.results.map((post) => {\n return <ListItem key={post.id} post={post} {...props} />\n })}\n </ul>\n )\n}\n\nexport function ListItem(props) {\n if (props.post.is_event) {\n return <Event {...props} />\n }\n\n return <Post {...props} />\n}\n","import React from \"react\"\nimport Avatar from \"./avatar\"\n\nconst ThreadStarterCard = ({ thread }) => (\n <div className=\"thread-user-card\">\n <div className=\"thread-user-card-media\">\n {thread.starter ? (\n <a href={thread.url.starter}>\n <Avatar size={40} user={thread.starter} />\n </a>\n ) : (\n <Avatar size={40} />\n )}\n </div>\n <div className=\"thread-user-card-body\">\n <div className=\"thread-user-card-header\">\n {thread.starter ? (\n <a\n className=\"item-title\"\n href={thread.url.starter}\n title={gettext(\"Thread author\")}\n >\n {thread.starter.username}\n </a>\n ) : (\n <span className=\"item-title\" title={gettext(\"Thread author\")}>\n {thread.starter_name}\n </span>\n )}\n </div>\n <div>\n <span\n className=\"text-muted\"\n title={interpolate(\n gettext(\"Started on: %(timestamp)s\"),\n {\n timestamp: thread.started_on.format(\"LLL\"),\n },\n true\n )}\n >\n {thread.started_on.fromNow()}\n </span>\n </div>\n </div>\n </div>\n)\n\nexport default ThreadStarterCard\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport { getTitleValidators } from \"misago/components/posting/utils/validators\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: props.thread.title,\n\n validators: {\n title: getTitleValidators(),\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n return true\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.patch(this.props.thread.api.index, [\n { op: \"replace\", path: \"title\", value: this.state.title },\n ])\n }\n\n handleSuccess = (data) => {\n this.handleSuccessUnmounted(data)\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n\n modal.hide()\n }\n\n handleSuccessUnmounted = (data) => {\n store.dispatch(thread.release())\n store.dispatch(thread.update(data))\n }\n\n handleError = (rejection) => {\n store.dispatch(thread.release())\n\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_modal_title\" label={gettext(\"Thread title\")}>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_modal_title\"\n onChange={this.onChange}\n value={this.state.title}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Change title\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change title\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport MergeConflict from \"misago/components/merge-conflict\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.post(this.props.thread.api.merge, {\n other_thread: this.state.url,\n })\n }\n\n handleSuccess = (success) => {\n this.handleSuccessUnmounted(success)\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleSuccessUnmounted = (success) => {\n snackbar.success(gettext(\"Thread has been merged with other one.\"))\n window.location = success.url\n }\n\n handleError = (rejection) => {\n store.dispatch(thread.release())\n\n if (rejection.status === 400) {\n if (rejection.best_answers || rejection.polls) {\n modal.show(\n <MergeConflict\n api={this.props.thread.api.merge}\n bestAnswers={rejection.best_answers}\n data={{ other_thread: this.state.url }}\n polls={rejection.polls}\n onError={this.handleError}\n onSuccess={this.handleSuccessUnmounted}\n />\n )\n } else if (rejection.best_answer) {\n snackbar.error(rejection.best_answer[0])\n } else if (rejection.poll) {\n snackbar.error(rejection.poll[0])\n } else {\n snackbar.error(rejection.detail)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to merge with\")}\n help_text={gettext(\n \"Merge will delete current thread and move its contents to the thread specified here.\"\n )}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Merge thread\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge thread\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport * as posts from \"misago/reducers/posts\"\nimport * as thread from \"misago/reducers/thread\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isError: false,\n\n category: null,\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n let category = null\n\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n // pick first category that allows posting and if it may, override it with initial one\n if (item.post !== false && !category) {\n category = item.id\n }\n\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n })\n })\n\n this.setState({\n isReady: true,\n\n category,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.patch(this.props.thread.api.index, [\n { op: \"replace\", path: \"category\", value: this.state.category },\n ])\n }\n\n handleSuccess() {\n // refresh thread and displayed posts\n ajax\n .get(this.props.thread.api.posts.index, { page: this.props.posts.page })\n .then(\n (data) => {\n store.dispatch(thread.replace(data))\n store.dispatch(posts.load(data.post_set))\n store.dispatch(thread.release())\n\n snackbar.success(gettext(\"Thread has been moved.\"))\n modal.hide()\n },\n (rejection) => {\n store.dispatch(thread.release())\n snackbar.apiError(rejection)\n }\n )\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (event) => {\n this.changeValue(\"category\", event.target.value)\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_category\" label={gettext(\"New category\")}>\n <CategorySelect\n choices={this.state.categories}\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Move thread\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n } else if (this.state.isError) {\n return <ModalMessage message={this.state.isError} />\n } else {\n return <ModalLoading />\n }\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move thread\")}</h4>\n </div>\n )\n}\n\nexport function ModalLoading(props) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <ModalHeader />\n <ModalLoader />\n </div>\n </div>\n )\n}\n\nexport function ModalMessage(props) {\n return (\n <div className=\"modal-dialog modal-message\" role=\"document\">\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move this thread at the moment.\")}\n </p>\n <p>{props.message}</p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport ThreadChangeTitleModal from \"./ThreadChangeTitleModal\"\nimport MergeModal from \"./merge\"\nimport MoveModal from \"./move\"\n\nexport default class extends React.Component {\n callApi = (ops, successMessage) => {\n store.dispatch(thread.busy())\n\n // by the chance update thread acl too\n ops.push({ op: \"add\", path: \"acl\", value: true })\n\n ajax.patch(this.props.thread.api.index, ops).then(\n (data) => {\n store.dispatch(thread.update(data))\n store.dispatch(thread.release())\n snackbar.success(successMessage)\n },\n (rejection) => {\n store.dispatch(thread.release())\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n changeTitle = () => {\n modal.show(<ThreadChangeTitleModal thread={this.props.thread} />)\n }\n\n pinGlobally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 2,\n },\n ],\n gettext(\"Thread has been pinned globally.\")\n )\n }\n\n pinLocally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 1,\n },\n ],\n gettext(\"Thread has been pinned locally.\")\n )\n }\n\n unpin = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 0,\n },\n ],\n gettext(\"Thread has been unpinned.\")\n )\n }\n\n approve = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-unapproved\",\n value: false,\n },\n ],\n gettext(\"Thread has been approved.\")\n )\n }\n\n open = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: false,\n },\n ],\n gettext(\"Thread has been opened.\")\n )\n }\n\n close = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: true,\n },\n ],\n gettext(\"Thread has been closed.\")\n )\n }\n\n unhide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: false,\n },\n ],\n gettext(\"Thread has been made visible.\")\n )\n }\n\n hide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: true,\n },\n ],\n gettext(\"Thread has been made hidden.\")\n )\n }\n\n move = () => {\n modal.show(\n <MoveModal posts={this.props.posts} thread={this.props.thread} />\n )\n }\n\n merge = () => {\n modal.show(<MergeModal thread={this.props.thread} />)\n }\n\n delete = () => {\n if (\n !window.confirm(gettext(\"Are you sure you want to delete this thread?\"))\n ) {\n return\n }\n\n store.dispatch(thread.busy())\n\n ajax.delete(this.props.thread.api.index).then(\n (data) => {\n snackbar.success(gettext(\"Thread has been deleted.\"))\n window.location = this.props.thread.category.url.index\n },\n (rejection) => {\n store.dispatch(thread.release())\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n const { moderation } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n {!!moderation.edit && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.changeTitle}\n type=\"button\"\n >\n <span className=\"material-icon\">edit</span>\n {gettext(\"Change title\")}\n </button>\n </li>\n )}\n {!!moderation.pinGlobally && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.pinGlobally}\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark</span>\n {gettext(\"Pin globally\")}\n </button>\n </li>\n )}\n {!!moderation.pinLocally && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.pinLocally}\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark_border</span>\n {gettext(\"Pin locally\")}\n </button>\n </li>\n )}\n {!!moderation.unpin && (\n <li>\n <button className=\"btn btn-link\" onClick={this.unpin} type=\"button\">\n <span className=\"material-icon\">panorama_fish_eye</span>\n {gettext(\"Unpin\")}\n </button>\n </li>\n )}\n {!!moderation.move && (\n <li>\n <button className=\"btn btn-link\" onClick={this.move} type=\"button\">\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )}\n {!!moderation.merge && (\n <li>\n <button className=\"btn btn-link\" onClick={this.merge} type=\"button\">\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge\")}\n </button>\n </li>\n )}\n {!!moderation.approve && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.approve}\n type=\"button\"\n >\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )}\n {!!moderation.open && (\n <li>\n <button className=\"btn btn-link\" onClick={this.open} type=\"button\">\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Open\")}\n </button>\n </li>\n )}\n {!!moderation.close && (\n <li>\n <button className=\"btn btn-link\" onClick={this.close} type=\"button\">\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Close\")}\n </button>\n </li>\n )}\n {!!moderation.unhide && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.unhide}\n type=\"button\"\n >\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )}\n {!!moderation.hide && (\n <li>\n <button className=\"btn btn-link\" onClick={this.hide} type=\"button\">\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )}\n {!!moderation.delete && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.delete}\n type=\"button\"\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import ThreadModerationOptions from \"./controls\"\n\nexport default ThreadModerationOptions\n","import React from \"react\"\nimport ThreadModerationOptions from \"./moderation/thread\"\n\nconst ThreadModeration = ({ thread, posts, moderation }) => (\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Thread options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={thread.isBusy}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ThreadModerationOptions\n thread={thread}\n posts={posts}\n moderation={moderation}\n />\n </div>\n)\n\nexport default ThreadModeration\n","import classnames from \"classnames\"\nimport React from \"react\"\nimport * as actions from \"../../reducers/thread\"\nimport ajax from \"../../services/ajax\"\nimport snackbar from \"../../services/snackbar\"\nimport store from \"../../services/store\"\n\nconst ThreadSubscriptionButton = ({ stickToBottom, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-outline btn-block\"\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">{getIcon(thread.subscription)}</span>\n {getLabel(thread.subscription)}\n </button>\n <ul\n className={classnames(\"dropdown-menu dropdown-menu-right\", {\n \"stick-to-bottom\": stickToBottom,\n })}\n >\n <li>\n <button className=\"btn btn-link\" onClick={() => unsubscribe(thread)}>\n <span className=\"material-icon\">star_border</span>\n {gettext(\"Unsubscribe\")}\n </button>\n </li>\n <li>\n <button className=\"btn btn-link\" onClick={() => alert(thread)}>\n <span className=\"material-icon\">star_half</span>\n {gettext(\"Subscribe\")}\n </button>\n </li>\n <li>\n <button className=\"btn btn-link\" onClick={() => email(thread)}>\n <span className=\"material-icon\">star</span>\n {gettext(\"Subscribe with e-mail\")}\n </button>\n </li>\n </ul>\n </div>\n)\n\nfunction getIcon(subscription) {\n if (subscription === true) return \"star\"\n if (subscription === false) return \"star_half\"\n\n return \"star_border\"\n}\n\nfunction getLabel(subscription) {\n if (subscription === true) return gettext(\"E-mail\")\n if (subscription === false) return gettext(\"Enabled\")\n\n return gettext(\"Disabled\")\n}\n\nfunction alert(thread) {\n if (thread.subscription !== false) {\n update(thread, false, \"notify\")\n }\n}\n\nfunction email(thread) {\n if (thread.subscription !== true) {\n update(thread, true, \"email\")\n }\n}\n\nfunction unsubscribe(thread) {\n if (thread.subscription !== null) {\n update(thread, null, \"unsubscribe\")\n }\n}\n\nfunction update(thread, newState, value) {\n const oldState = {\n subscription: thread.subscription,\n }\n\n store.dispatch(\n actions.update({\n subscription: newState,\n })\n )\n\n ajax\n .patch(thread.api.index, [\n { op: \"replace\", path: \"subscription\", value: value },\n ])\n .then(\n (finalState) => {\n store.dispatch(actions.update(finalState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(actions.update(oldState))\n }\n )\n}\n\nexport default ThreadSubscriptionButton\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst Breadcrumbs = ({ children, className }) => (\n <ul className={classnames(\"breadcrumbs\", className)}>{children}</ul>\n)\n\nexport default Breadcrumbs\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst BreadcrumbsCategory = ({ category, className }) => (\n <li className={classnames(\"breadcrumbs-item\", className)}>\n <a href={category.url.index}>\n <span\n className=\"material-icon\"\n style={{ color: category.color || \"inherit\" }}\n >\n label\n </span>\n {!!category.short_name && (\n <span\n className=\"breadcrumbs-item-name hidden-sm hidden-md hidden-lg\"\n title={category.name}\n >\n {category.short_name}\n </span>\n )}\n {!!category.short_name && (\n <span className=\"breadcrumbs-item-name hidden-xs\">{category.name}</span>\n )}\n {!category.short_name && (\n <span className=\"breadcrumbs-item-name\">{category.name}</span>\n )}\n </a>\n </li>\n)\n\nexport default BreadcrumbsCategory\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst BreadcrumbsRootCategory = ({ category, className }) => (\n <li className={classnames(\"breadcrumbs-item\", className)}>\n <a href={category.url.index}>\n <span className=\"material-icon\">chevron_right</span>\n <span className=\"breadcrumbs-item-name\">\n {category.special_role === \"root_category\"\n ? gettext(\"Threads\")\n : gettext(\"Private threads\")}\n </span>\n </a>\n </li>\n)\n\nexport default BreadcrumbsRootCategory\n","import React from \"react\"\nimport {\n Breadcrumbs,\n BreadcrumbsCategory,\n BreadcrumbsRootCategory,\n} from \"../../Breadcrumbs\"\n\nconst ThreadHeaderBreadcrumbs = ({ breadcrumbs }) => (\n <Breadcrumbs>\n {breadcrumbs.map((category) =>\n category.special_role ? (\n <BreadcrumbsRootCategory key={category.id} category={category} />\n ) : (\n <BreadcrumbsCategory key={category.id} category={category} />\n )\n )}\n </Breadcrumbs>\n)\n\nexport default ThreadHeaderBreadcrumbs\n","import ThreadHeader from \"./ThreadHeader\"\n\nexport default ThreadHeader\n","import React from \"react\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../../FlexRow\"\nimport ThreadFlags from \"../../ThreadFlags\"\nimport ThreadReplies from \"../../ThreadReplies\"\nimport ThreadStarterCard from \"../../ThreadStarterCard\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n PageHeaderDetails,\n} from \"../../PageHeader\"\nimport ThreadModeration from \"../ThreadModeration\"\nimport ThreadSubscriptionButton from \"../ThreadSubscriptionButton\"\nimport ThreadHeaderBreadcrumbs from \"./ThreadHeaderBreadcrumbs\"\n\nconst ThreadHeader = ({ styleName, thread, posts, user, moderation }) => (\n <PageHeaderContainer>\n <PageHeader styleName={styleName}>\n <PageHeaderBanner styleName={styleName}>\n <ThreadHeaderBreadcrumbs breadcrumbs={thread.path} />\n <h1>{thread.title}</h1>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"page-header-thread-details\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol shrink>\n <ThreadStarterCard thread={thread} />\n </FlexRowCol>\n <FlexRowCol auto />\n {thread.replies > 0 && (\n <FlexRowCol shrink>\n <ThreadReplies thread={thread} />\n </FlexRowCol>\n )}\n {hasFlags(thread) && (\n <FlexRowCol shrink>\n <ThreadFlags thread={thread} />\n </FlexRowCol>\n )}\n </FlexRowSection>\n {user.is_authenticated && (\n <FlexRowSection>\n <FlexRowCol>\n <ThreadSubscriptionButton thread={thread} />\n </FlexRowCol>\n {moderation.enabled && (\n <FlexRowCol shrink>\n <ThreadModeration\n thread={thread}\n posts={posts}\n moderation={moderation}\n />\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n)\n\nconst hasFlags = (thread) => {\n return (\n thread.is_closed ||\n thread.is_hidden ||\n thread.is_unapproved ||\n thread.weight > 0 ||\n thread.best_answer ||\n thread.has_poll ||\n thread.has_unapproved_posts\n )\n}\n\nexport default ThreadHeader\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadPagination = ({ baseUrl, posts }) => (\n <div className=\"misago-pagination\">\n {posts.isLoaded && posts.first ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl}\n title={gettext(\"Go to first page\")}\n >\n <span className=\"material-icon\">first_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to first page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">first_page</span>\n </button>\n )}\n {posts.isLoaded && posts.previous ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + (posts.previous > 1 ? posts.previous + \"/\" : \"\")}\n title={gettext(\"Go to previous page\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to previous page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_left</span>\n </button>\n )}\n {posts.isLoaded && posts.next ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + posts.next + \"/\"}\n title={gettext(\"Go to next page\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to next page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_right</span>\n </button>\n )}\n {posts.isLoaded && posts.last ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + posts.last + \"/\"}\n title={gettext(\"Go to last page\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to last page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">last_page</span>\n </button>\n )}\n </div>\n)\n\nexport default ThreadPagination\n","import React from \"react\"\n\nconst ThreadPostsLeft = ({ posts }) => {\n if (posts.more) {\n return (\n <p>\n {interpolate(\n ngettext(\n \"There is %(more)s more post in this thread.\",\n \"There are %(more)s more posts in this thread.\",\n posts.more\n ),\n { more: posts.more },\n true\n )}\n </p>\n )\n }\n\n return <p>{gettext(\"There are no more posts in this thread.\")}</p>\n}\n\nexport default ThreadPostsLeft\n","import React from \"react\"\n\nexport default function ({ errors, posts }) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Moderation\")}</h4>\n </div>\n <div className=\"modal-body\">\n <p className=\"lead\">\n {gettext(\"One or more posts could not be changed:\")}\n </p>\n\n <ul className=\"list-unstyled list-errored-items\">\n {errors.map((post) => {\n return (\n <PostErrors\n errors={post.detail}\n key={post.id}\n post={posts[post.id]}\n />\n )\n })}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n\nexport function PostErrors({ errors, post }) {\n const heading = interpolate(\n gettext(\"%(username)s on %(posted_on)s\"),\n {\n posted_on: post.posted_on.format(\"LL, LT\"),\n username: post.poster_name,\n },\n true\n )\n\n return (\n <li>\n <h5>{heading}:</h5>\n {errors.map((error, i) => {\n return <p key={i}>{error}</p>\n })}\n </li>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport * as post from \"misago/reducers/post\"\nimport * as posts from \"misago/reducers/posts\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport ErrorsList from \"./errors-list\"\n\nexport function approve(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-unapproved\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_unapproved: false,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_unapproved: post.is_unapproved,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function protect(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: true }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: true,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: post.is_protected,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function unprotect(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: false,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: post.is_protected,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function hide(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: true }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(post.url, {\n hidden_by: props.user.url,\n }),\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: post.is_hidden,\n hidden_on: post.hidden_on,\n hidden_by_name: post.hidden_by_name,\n url: post.url,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function unhide(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: false,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(post.url, {\n hidden_by: props.user.url,\n }),\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: post.is_hidden,\n hidden_on: post.hidden_on,\n hidden_by_name: post.hidden_by_name,\n url: post.url,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function patch(props, ops, newState, previousState) {\n const { selection, thread } = props\n\n // patch selected items\n newState.forEach((item) => {\n post.patch(item, item)\n })\n\n // deselect all the things\n store.dispatch(posts.deselectAll())\n\n // call ajax\n const data = {\n ops,\n\n ids: selection.map((post) => {\n return post.id\n }),\n }\n\n ajax.patch(thread.api.posts.index, data).then(\n (data) => {\n data.forEach((item) => {\n store.dispatch(post.patch(item, item))\n })\n },\n (rejection) => {\n if (rejection.status !== 400) {\n // rollback all\n previousState.forEach((item) => {\n store.dispatch(post.patch(item, item))\n })\n return snackbar.apiError(rejection)\n }\n\n let errors = []\n let rollback = []\n\n rejection.forEach((item) => {\n if (item.detail) {\n errors.push(item)\n rollback.push(item.id)\n } else {\n store.dispatch(post.patch(item, item))\n }\n\n previousState.forEach((item) => {\n if (rollback.indexOf(item) !== -1) {\n store.dispatch(post.patch(item, item))\n }\n })\n })\n\n let posts = {}\n selection.forEach((item) => {\n posts[item.id] = item\n })\n\n modal.show(<ErrorsList errors={errors} posts={posts} />)\n }\n )\n}\n\nexport function merge(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to merge selected posts? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n props.selection.slice(1).map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n ajax\n .post(props.thread.api.posts.merge, {\n posts: props.selection.map((post) => post.id),\n })\n .then(\n (data) => {\n store.dispatch(post.patch(data, post.hydrate(data)))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n props.selection.slice(1).map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: false,\n })\n )\n })\n }\n )\n\n store.dispatch(posts.deselectAll())\n}\n\nexport function remove(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to delete selected posts? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n props.selection.map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n const ids = props.selection.map((post) => {\n return post.id\n })\n\n ajax.delete(props.thread.api.posts.index, ids).then(\n () => {\n return\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n props.selection.map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: false,\n })\n )\n })\n }\n )\n\n store.dispatch(posts.deselectAll())\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.move, {\n new_thread: this.state.url,\n posts: this.props.selection.map((post) => post.id),\n })\n }\n\n handleSuccess(success) {\n this.props.selection.forEach((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected posts were moved to the other thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to move posts to\")}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Move posts\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move posts\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport Select from \"misago/components/select\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\nimport ErrorsModal from \"./errors-list\"\n\nexport default function (props) {\n return <PostingConfig {...props} Form={ModerationForm} />\n}\n\nexport class PostingConfig extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isError: false,\n\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n post: item.post,\n })\n })\n\n this.setState({\n isLoaded: true,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.isError) {\n return <Error message={this.state.isError} />\n } else if (this.state.isLoaded) {\n return (\n <ModerationForm {...this.props} categories={this.state.categories} />\n )\n } else {\n return <Loader />\n }\n }\n}\n\nexport class ModerationForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n categories: props.categories,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.acl = {}\n this.props.categories.forEach((category) => {\n if (category.post) {\n if (!this.state.category) {\n this.state.category = category.id\n }\n\n this.acl[category.id] = {\n can_pin_threads: category.post.pin,\n can_close_threads: category.post.close,\n can_hide_threads: category.post.hide,\n }\n }\n })\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.split, {\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n posts: this.props.selection.map((post) => post.id),\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.selection.forEach((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected posts were split into new thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n } else if (rejection.status === 403 && Array.isArray(rejection)) {\n modal.show(<ErrorsModal errors={rejection} />)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup\n label={gettext(\"Thread weight\")}\n for=\"id_weight\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup\n label={gettext(\"Hide thread\")}\n for=\"id_is_hidden\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup\n label={gettext(\"Close thread\")}\n for=\"id_is_closed\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <Modal className=\"modal-dialog\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.state.categories}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Split posts\")}\n </Button>\n </div>\n </form>\n </Modal>\n )\n }\n}\n\nexport function Loader() {\n return (\n <Modal className=\"modal-dialog\">\n <ModalLoader />\n </Modal>\n )\n}\n\nexport function Error(props) {\n return (\n <Modal className=\"modal-dialog modal-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move selected posts at the moment.\")}\n </p>\n <p>{props.message}</p>\n <button className=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">\n {gettext(\"Ok\")}\n </button>\n </div>\n </Modal>\n )\n}\n\nexport function Modal(props) {\n return (\n <div className={props.className} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">\n {gettext(\"Split posts into new thread\")}\n </h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport modal from \"misago/services/modal\"\nimport * as moderation from \"./actions\"\nimport MoveModal from \"./move\"\nimport SplitModal from \"./split\"\n\nexport default function (props) {\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <Approve {...props} />\n <Merge {...props} />\n <Move {...props} />\n <Split {...props} />\n <Protect {...props} />\n <Unprotect {...props} />\n <Unhide {...props} />\n <Hide {...props} />\n <Delete {...props} />\n </ul>\n )\n}\n\nexport class Approve extends React.Component {\n onClick = () => {\n moderation.approve(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_approve && post.is_unapproved\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Merge extends React.Component {\n onClick = () => {\n moderation.merge(this.props)\n }\n\n render() {\n const isVisible =\n this.props.selection.length > 1 &&\n this.props.selection.find((post) => {\n return post.acl.can_merge\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Move extends React.Component {\n onClick = () => {\n modal.show(<MoveModal {...this.props} />)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_move\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Split extends React.Component {\n onClick = () => {\n modal.show(<SplitModal {...this.props} />)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_move\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">call_split</span>\n {gettext(\"Split\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Protect extends React.Component {\n onClick = () => {\n moderation.protect(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return !post.is_protected && post.acl.can_protect\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Protect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unprotect extends React.Component {\n onClick = () => {\n moderation.unprotect(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.is_protected && post.acl.can_protect\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Unprotect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n moderation.hide(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_hide && !post.is_hidden\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n moderation.unhide(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_unhide && post.is_hidden\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n moderation.remove(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_delete\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport { ThreadPostsModerationOptions } from \"./moderation/posts\"\n\nconst ThreadPostsModeration = ({ thread, user, selection, dropup }) => (\n <div className={dropup ? \"dropup\" : \"dropdown\"}>\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Posts options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={selection.length === 0}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ThreadPostsModerationOptions\n thread={thread}\n user={user}\n selection={selection}\n />\n </div>\n)\n\nexport default ThreadPostsModeration\n","import React from \"react\"\n\nconst ThreadReplyButton = ({ onClick }) => (\n <button\n className=\"btn btn-primary btn-outline btn-block\"\n type=\"button\"\n onClick={onClick}\n >\n <span className=\"material-icon\">chat</span>\n {gettext(\"Reply\")}\n </button>\n)\n\nexport default ThreadReplyButton\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadPagination from \"./ThreadPagination\"\nimport ThreadPostsLeft from \"./ThreadPostsLeft\"\nimport ThreadPostsModeration from \"./ThreadPostsModeration\"\nimport ThreadReplyButton from \"./ThreadReplyButton\"\nimport ThreadSubscriptionButton from \"./ThreadSubscriptionButton\"\n\nconst ThreadToolbarBottom = ({\n thread,\n posts,\n user,\n selection,\n moderation,\n onReply,\n}) => (\n <Toolbar>\n <ToolbarSection>\n <ToolbarItem>\n <ThreadPagination baseUrl={thread.url.index} posts={posts} />\n </ToolbarItem>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n dropup\n />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection className=\"hidden-xs hidden-sm\" auto>\n <ToolbarItem>\n <ThreadPostsLeft posts={posts} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSpacer className=\"hidden-md hidden-lg\" />\n {user.is_authenticated && (\n <ToolbarSection>\n <ToolbarItem>\n <ThreadSubscriptionButton thread={thread} />\n </ToolbarItem>\n {thread.acl.can_reply && (\n <ToolbarItem>\n <ThreadReplyButton onClick={onReply} />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem className=\"hidden-xs\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n dropup\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadToolbarBottom\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ThreadPollButton = ({ compact, onClick }) => (\n <button\n className={classnames(\"btn btn-default btn-outline\", {\n \"btn-block\": !compact,\n \"btn-icon\": compact,\n })}\n type=\"button\"\n title={compact ? gettext(\"Add poll\") : null}\n onClick={onClick}\n >\n <span className=\"material-icon\">poll</span>\n {!compact && gettext(\"Add poll\")}\n </button>\n)\n\nexport default ThreadPollButton\n","import React from \"react\"\n\nconst ThreadShortcutsButton = ({ user, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Shortcuts\")}\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark</span>\n </button>\n <ul className=\"dropdown-menu\">\n {user.is_authenticated && thread.is_new && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.new_post}>\n <span className=\"material-icon\">comment</span>\n {gettext(\"Go to new post\")}\n </a>\n </li>\n )}\n {thread.best_answer && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.best_answer}>\n <span className=\"material-icon\">check_circle</span>\n {gettext(\"Go to best answer\")}\n </a>\n </li>\n )}\n {thread.has_unapproved_posts && thread.acl.can_approve && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.unapproved_post}>\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Go to unapproved post\")}\n </a>\n </li>\n )}\n <li>\n <a className=\"btn btn-link\" href={thread.url.last_post}>\n <span className=\"material-icon\">reply</span>\n {gettext(\"Go to last post\")}\n </a>\n </li>\n </ul>\n </div>\n)\n\nexport default ThreadShortcutsButton\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadPagination from \"./ThreadPagination\"\nimport ThreadPollButton from \"./ThreadPollButton\"\nimport ThreadPostsModeration from \"./ThreadPostsModeration\"\nimport ThreadReplyButton from \"./ThreadReplyButton\"\nimport ThreadShortcutsButton from \"./ThreadShortcutsButton\"\n\nconst ThreadToolbarTop = ({\n thread,\n posts,\n user,\n selection,\n moderation,\n onPoll,\n onReply,\n}) => (\n <Toolbar>\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n <ToolbarItem className=\"hidden-xs hidden-sm\">\n <ThreadPagination baseUrl={thread.url.index} posts={posts} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSpacer />\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadPollButton onClick={onPoll} />\n </ToolbarItem>\n </ToolbarSection>\n )}\n {thread.acl.can_reply ? (\n <ToolbarSection>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n <ToolbarItem>\n <ThreadReplyButton onClick={onReply} />\n </ToolbarItem>\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadPollButton onClick={onPoll} compact />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem className=\"hidden-xs\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n ) : (\n <ToolbarSection>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarItem>\n <ThreadPollButton onClick={onPoll} />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadToolbarTop\n","import React from \"react\"\nimport Participants from \"misago/components/participants\"\nimport { Poll } from \"misago/components/poll\"\nimport PostsList from \"misago/components/posts-list\"\nimport * as participants from \"misago/reducers/participants\"\nimport * as poll from \"misago/reducers/poll\"\nimport * as posts from \"misago/reducers/posts\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\nimport snackbar from \"misago/services/snackbar\"\nimport posting from \"misago/services/posting\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport PageContainer from \"../PageContainer\"\nimport ThreadHeader from \"./ThreadHeader\"\nimport ThreadToolbarBottom from \"./ThreadToolbarBottom\"\nimport ThreadToolbarTop from \"./ThreadToolbarTop\"\n\nexport default class extends React.Component {\n componentDidMount() {\n if (this.shouldFetchData()) {\n this.fetchData()\n this.setPageTitle()\n }\n\n this.startPollingApi()\n }\n\n componentDidUpdate() {\n if (this.shouldFetchData()) {\n this.fetchData()\n this.startPollingApi()\n this.setPageTitle()\n }\n }\n\n componentWillUnmount() {\n this.stopPollingApi()\n }\n\n shouldFetchData() {\n if (this.props.posts.isLoaded) {\n const page = (this.props.params.page || 1) * 1\n return page != this.props.posts.page\n } else {\n return false\n }\n }\n\n fetchData() {\n store.dispatch(posts.unload())\n\n ajax\n .get(\n this.props.thread.api.posts.index,\n {\n page: this.props.params.page || 1,\n },\n \"posts\"\n )\n .then(\n (data) => {\n this.update(data)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n startPollingApi() {\n polls.start({\n poll: \"thread-posts\",\n\n url: this.props.thread.api.posts.index,\n data: {\n page: this.props.params.page || 1,\n },\n update: this.update,\n\n frequency: 120 * 1000,\n delayed: true,\n })\n }\n\n stopPollingApi() {\n polls.stop(\"thread-posts\")\n }\n\n setPageTitle() {\n title.set({\n title: this.props.thread.title,\n parent: this.props.thread.category.name,\n page: (this.props.params.page || 1) * 1,\n })\n }\n\n update = (data) => {\n store.dispatch(thread.replace(data))\n store.dispatch(posts.load(data.post_set))\n\n if (data.participants) {\n store.dispatch(participants.replace(data.participants))\n }\n\n if (data.poll) {\n store.dispatch(poll.replace(data.poll))\n }\n\n this.setPageTitle()\n }\n\n openPollForm = () => {\n posting.open({\n mode: \"POLL\",\n submit: this.props.thread.api.poll,\n\n thread: this.props.thread,\n poll: null,\n })\n }\n\n openReplyForm = () => {\n posting.open({\n mode: \"REPLY\",\n\n config: this.props.thread.api.editor,\n submit: this.props.thread.api.posts.index,\n })\n }\n\n render() {\n const category = this.props.thread.category\n\n let className = \"page page-thread\"\n if (category.css_class) {\n className += \" page-thread-\" + category.css_class\n }\n\n const styleName =\n category.special_role === \"private_threads\"\n ? \"private-threads\"\n : category.css_class || \"category-threads\"\n\n const threadModeration = getThreadModeration(\n this.props.thread,\n this.props.user\n )\n\n const postsModeration = getPostsModeration(\n this.props.posts.results,\n this.props.user\n )\n const selection = this.props.posts.results.filter((post) => post.isSelected)\n\n return (\n <div className={className}>\n <ThreadHeader\n styleName={styleName}\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n moderation={threadModeration}\n />\n <PageContainer>\n <Participants\n participants={this.props.participants}\n thread={this.props.thread}\n user={this.props.user}\n />\n <ThreadToolbarTop\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n selection={selection}\n moderation={postsModeration}\n onPoll={this.openPollForm}\n onReply={this.openReplyForm}\n />\n <Poll\n poll={this.props.poll}\n thread={this.props.thread}\n user={this.props.user}\n />\n <PostsList {...this.props} />\n <ThreadToolbarBottom\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n selection={selection}\n moderation={postsModeration}\n onReply={this.openReplyForm}\n />\n </PageContainer>\n </div>\n )\n }\n}\n\nconst getThreadModeration = (thread, user) => {\n const moderation = {\n enabled: false,\n edit: false,\n approve: false,\n close: false,\n open: false,\n hide: false,\n unhide: false,\n move: false,\n merge: false,\n pinGlobally: false,\n pinLocally: false,\n unpin: false,\n delete: false,\n }\n\n if (!user.is_authenticated) return moderation\n\n moderation.edit = thread.acl.can_edit\n moderation.approve = thread.acl.can_approve && thread.is_unapproved\n moderation.close = thread.acl.can_close && !thread.is_closed\n moderation.open = thread.acl.can_close && thread.is_closed\n moderation.hide = thread.acl.can_hide && !thread.is_hidden\n moderation.unhide = thread.acl.can_unhide && thread.is_hidden\n moderation.move = thread.acl.can_move\n moderation.merge = thread.acl.can_merge\n moderation.pinGlobally = thread.acl.can_pin_globally && thread.weight < 2\n moderation.pinLocally = thread.acl.can_pin && thread.weight !== 1\n moderation.unpin =\n (thread.acl.can_pin && thread.weight === 1) ||\n (thread.acl.can_pin_globally && thread.weight === 2)\n moderation.delete = thread.acl.can_delete\n\n moderation.enabled =\n moderation.edit ||\n moderation.approve ||\n moderation.close ||\n moderation.open ||\n moderation.hide ||\n moderation.unhide ||\n moderation.move ||\n moderation.merge ||\n moderation.pinGlobally ||\n moderation.pinLocally ||\n moderation.unpin ||\n moderation.delete\n\n return moderation\n}\n\nconst getPostsModeration = (posts, user) => {\n const moderation = {\n enabled: false,\n approve: false,\n move: false,\n merge: false,\n protect: false,\n hide: false,\n delete: false,\n }\n\n if (!user.is_authenticated) return moderation\n\n posts.forEach((post) => {\n if (!post.is_event) {\n if (post.acl.can_approve && post.is_unapproved) {\n moderation.approve = true\n }\n if (post.acl.can_move) moderation.move = true\n if (post.acl.can_merge) moderation.merge = true\n if (post.acl.can_protect || post.acl.can_unprotect) {\n moderation.protect = true\n }\n if (post.acl.can_hide || post.acl.can_unhide) {\n moderation.hide = true\n }\n if (post.acl.can_delete) moderation.delete = true\n\n if (\n moderation.approve ||\n moderation.move ||\n moderation.merge ||\n moderation.protect ||\n moderation.hide ||\n moderation.delete\n ) {\n moderation.enabled = true\n }\n }\n })\n\n return moderation\n}\n","import { connect } from \"react-redux\"\nimport Route from \"misago/components/thread/route\"\nimport misago from \"misago/index\"\n\nexport function select(store) {\n return {\n participants: store.participants,\n poll: store.poll,\n posts: store.posts,\n thread: store.thread,\n tick: store.tick.tick,\n user: store.auth.user,\n }\n}\n\nexport function paths() {\n const thread = misago.get(\"THREAD\")\n const basePath = thread.url.index.replace(\n thread.slug + \"-\" + thread.pk,\n \":slug\"\n )\n\n return [\n {\n path: basePath,\n component: connect(select)(Route),\n },\n {\n path: basePath + \":page/\",\n component: connect(select)(Route),\n },\n ]\n}\n","import { paths } from \"misago/components/thread/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"THREAD\") && context.has(\"POSTS\")) {\n mount({\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:thread\",\n initializer: initializer,\n after: \"store\",\n})\n","export function compareLastPostAge(a, b) {\n if (a.last_post > b.last_post) {\n return -1\n } else if (a.last_post < b.last_post) {\n return 1\n } else {\n return 0\n }\n}\n\nexport function compareGlobalWeight(a, b) {\n if (a.weight === 2 && a.weight > b.weight) {\n return -1\n } else if (b.weight === 2 && a.weight < b.weight) {\n return 1\n } else {\n return compareLastPostAge(a, b)\n }\n}\n\nexport function compareWeight(a, b) {\n if (a.weight > b.weight) {\n return -1\n } else if (a.weight < b.weight) {\n return 1\n } else {\n return compareLastPostAge(a, b)\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadsCategoryPicker = ({\n allItems,\n parentUrl,\n category,\n categories,\n list,\n}) => (\n <div className=\"dropdown threads-category-picker\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline dropdown-toggle btn-block text-ellipsis\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {category && (\n <span\n className=\"material-icon\"\n style={{ color: category.color || \"inherit\" }}\n >\n label\n </span>\n )}\n {category && category.short_name && (\n <span className={category.short_name && \"hidden-md hidden-lg\"}>\n {category.short_name}\n </span>\n )}\n {category ? (\n <span className={category.short_name && \"hidden-xs hidden-sm\"}>\n {category.name}\n </span>\n ) : (\n allItems\n )}\n </button>\n <ul className=\"dropdown-menu\">\n <li>\n <Link to={parentUrl + list.path}>{allItems}</Link>\n </li>\n <li role=\"separator\" className=\"divider\" />\n {categories.map((choice) => (\n <li key={choice.id}>\n <Link to={choice.url.index + list.path}>\n <span\n className=\"material-icon\"\n style={{ color: choice.color || \"inherit\" }}\n >\n label\n </span>\n {choice.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n)\n\nexport default ThreadsCategoryPicker\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadsListPicker = ({ baseUrl, list, lists }) => (\n <div className=\"dropdown threads-list-picker\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline dropdown-toggle btn-block\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {list.longName}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {lists.map((choice) => (\n <li key={choice.type}>\n <Link to={baseUrl + choice.path}>{choice.longName}</Link>\n </li>\n ))}\n </ul>\n </div>\n)\n\nexport default ThreadsListPicker\n","import React from \"react\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Threads moderation\")}</h4>\n </div>\n <div className=\"modal-body\">\n <p className=\"lead\">\n {gettext(\"One or more threads could not be deleted:\")}\n </p>\n\n <ul className=\"list-unstyled list-errored-items\">\n {this.props.errors.map((item) => {\n return (\n <ThreadErrors\n errors={item.errors}\n key={item.thread.id}\n thread={item.thread}\n />\n )\n })}\n </ul>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport function ThreadErrors({ errors, thread }) {\n return (\n <li>\n <h5>{thread.title}</h5>\n {errors.map((message, i) => {\n return <p>{message}</p>\n })}\n </li>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport Select from \"misago/components/select\"\nimport misago from \"misago/index\"\nimport { filterThreads } from \"misago/reducers/threads\"\nimport * as select from \"misago/reducers/selection\"\nimport ErrorsModal from \"misago/components/threads/moderation/errors-list\"\nimport MergeConflict from \"misago/components/merge-conflict\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.acl = {}\n for (const i in props.user.acl.categories) {\n if (!props.user.acl.categories.hasOwnProperty(i)) {\n continue\n }\n\n const acl = props.user.acl.categories[i]\n this.acl[acl.id] = acl\n }\n\n this.categoryChoices = []\n props.categories.forEach((category) => {\n if (category.level > 0) {\n const acl = this.acl[category.id]\n const disabled =\n !acl.can_start_threads ||\n (category.is_closed && !acl.can_close_threads)\n\n this.categoryChoices.push({\n value: category.id,\n disabled: disabled,\n level: category.level - 1,\n label: category.name,\n })\n\n if (!disabled && !this.state.category) {\n this.state.category = category.id\n }\n }\n })\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"MERGE_THREADS_API\"), this.getFormdata())\n }\n\n getFormdata = () => {\n return {\n threads: this.props.threads.map((thread) => thread.id),\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n }\n }\n\n handleSuccess = (apiResponse) => {\n // unfreeze and remove merged threads\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n this.props.deleteThread(thread)\n })\n\n // deselect all threads\n store.dispatch(select.none())\n\n // append merged thread, filter threads\n this.props.addThreads([apiResponse])\n store.dispatch(\n filterThreads(this.props.route.category, this.props.categoriesMap)\n )\n\n // hide modal\n modal.hide()\n }\n\n handleError = (rejection) => {\n if (rejection.status === 400) {\n if (rejection.best_answers || rejection.polls) {\n modal.show(\n <MergeConflict\n api={misago.get(\"MERGE_THREADS_API\")}\n bestAnswers={rejection.best_answers}\n data={this.getFormdata()}\n polls={rejection.polls}\n onError={this.handleError}\n onSuccess={this.handleSuccess}\n />\n )\n } else {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n }\n } else if (rejection.status === 403 && Array.isArray(rejection)) {\n modal.show(<ErrorsModal errors={rejection} />)\n } else if (rejection.best_answer) {\n snackbar.error(rejection.best_answer[0])\n } else if (rejection.poll) {\n snackbar.error(rejection.poll[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup label={gettext(\"Thread weight\")} for=\"id_weight\">\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup label={gettext(\"Hide thread\")} for=\"id_is_hidden\">\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup label={gettext(\"Close thread\")} for=\"id_is_closed\">\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.categoryChoices}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Merge threads\")}\n </Button>\n </div>\n </form>\n )\n }\n\n renderCantMergeMessage() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You can't move threads because there are no categories you are allowed to move them to.\"\n )}\n </p>\n <p>\n {gettext(\n \"You need permission to start threads in category to be able to merge threads to it.\"\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n\n getClassName() {\n if (!this.state.category) {\n return \"modal-dialog modal-message\"\n } else {\n return \"modal-dialog\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge threads\")}</h4>\n </div>\n {this.state.category\n ? this.renderForm()\n : this.renderCantMergeMessage()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport * as select from \"misago/reducers/selection\"\nimport { filterThreads } from \"misago/reducers/threads\"\nimport modal from \"misago/services/modal\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n category: null,\n }\n\n const acls = {}\n for (const i in props.user.acl.categories) {\n if (!props.user.acl.categories.hasOwnProperty(i)) {\n continue\n }\n\n const acl = props.user.acl.categories[i]\n acls[acl.id] = acl\n }\n\n this.categoryChoices = []\n props.categories.forEach((category) => {\n if (category.level > 0) {\n const acl = acls[category.id]\n const disabled =\n !acl.can_start_threads ||\n (category.is_closed && !acl.can_close_threads)\n\n this.categoryChoices.push({\n value: category.id,\n disabled: disabled,\n level: category.level - 1,\n label: category.name,\n })\n\n if (!disabled && !this.state.category) {\n this.state.category = category.id\n }\n }\n })\n }\n\n handleSubmit = (event) => {\n // we don't reload page on submissions\n event.preventDefault()\n\n modal.hide()\n\n const onSuccess = () => {\n store.dispatch(\n filterThreads(this.props.route.category, this.props.categoriesMap)\n )\n\n // deselect threads moved outside of visible scope\n const storeState = store.getState()\n const leftThreads = storeState.threads.map((thread) => thread.id)\n store.dispatch(\n select.all(\n storeState.selection.filter((thread) => {\n return leftThreads.indexOf(thread) !== -1\n })\n )\n )\n }\n\n this.props.callApi(\n [\n { op: \"replace\", path: \"category\", value: this.state.category },\n { op: \"replace\", path: \"flatten-categories\", value: null },\n { op: \"add\", path: \"acl\", value: true },\n ],\n gettext(\"Selected threads were moved.\"),\n onSuccess\n )\n }\n\n getClassName() {\n if (!this.state.category) {\n return \"modal-dialog modal-message\"\n } else {\n return \"modal-dialog\"\n }\n }\n\n renderForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"New category\")} for=\"id_new_category\">\n <CategorySelect\n id=\"id_new_category\"\n onChange={this.bindInput(\"category\")}\n value={this.state.category}\n choices={this.categoryChoices}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button className=\"btn btn-primary\">{gettext(\"Move threads\")}</button>\n </div>\n </form>\n )\n }\n\n renderCantMoveMessage() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You can't move threads because there are no categories you are allowed to move them to.\"\n )}\n </p>\n <p>\n {gettext(\n \"You need permission to start threads in category to be able to move threads to it.\"\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move threads\")}</h4>\n </div>\n {this.state.category\n ? this.renderForm()\n : this.renderCantMoveMessage()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ErrorsModal from \"misago/components/threads/moderation/errors-list\"\nimport MergeThreads from \"misago/components/threads/moderation/merge\"\nimport MoveThreads from \"misago/components/threads/moderation/move\"\nimport * as select from \"misago/reducers/selection\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n callApi = (ops, successMessage, onSuccess = null) => {\n // freeze threads\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // list ids\n const ids = this.props.threads.map((thread) => {\n return thread.id\n })\n\n // always return current acl\n ops.push({ op: \"add\", path: \"acl\", value: true })\n\n ajax.patch(this.props.api, { ids, ops }).then(\n (data) => {\n // unfreeze\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // update threads\n data.forEach((thread) => {\n this.props.updateThread(thread)\n })\n\n // show success message and call callback\n snackbar.success(successMessage)\n if (onSuccess) {\n onSuccess()\n }\n },\n (rejection) => {\n // unfreeze\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // escape on non-400 error\n if (rejection.status !== 400) {\n return snackbar.apiError(rejection)\n }\n\n // build errors list\n let errors = []\n let threadsMap = {}\n\n this.props.threads.forEach((thread) => {\n threadsMap[thread.id] = thread\n })\n\n rejection.forEach(({ id, detail }) => {\n if (typeof threadsMap[id] !== \"undefined\") {\n errors.push({\n errors: detail,\n thread: threadsMap[id],\n })\n }\n })\n\n modal.show(<ErrorsModal errors={errors} />)\n }\n )\n }\n\n pinGlobally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 2,\n },\n ],\n gettext(\"Selected threads were pinned globally.\")\n )\n }\n\n pinLocally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 1,\n },\n ],\n gettext(\"Selected threads were pinned locally.\")\n )\n }\n\n unpin = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 0,\n },\n ],\n gettext(\"Selected threads were unpinned.\")\n )\n }\n\n approve = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-unapproved\",\n value: false,\n },\n ],\n gettext(\"Selected threads were approved.\")\n )\n }\n\n open = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: false,\n },\n ],\n gettext(\"Selected threads were opened.\")\n )\n }\n\n close = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: true,\n },\n ],\n gettext(\"Selected threads were closed.\")\n )\n }\n\n unhide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: false,\n },\n ],\n gettext(\"Selected threads were unhidden.\")\n )\n }\n\n hide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: true,\n },\n ],\n gettext(\"Selected threads were hidden.\")\n )\n }\n\n move = () => {\n modal.show(\n <MoveThreads\n callApi={this.callApi}\n categories={this.props.categories}\n categoriesMap={this.props.categoriesMap}\n route={this.props.route}\n user={this.props.user}\n />\n )\n }\n\n merge = () => {\n const errors = []\n this.props.threads.forEach((thread) => {\n if (!thread.acl.can_merge) {\n errors.append({\n id: thread.id,\n title: thread.title,\n errors: [\n gettext(\n \"You don't have permission to merge this thread with others.\"\n ),\n ],\n })\n }\n })\n\n if (this.props.threads.length < 2) {\n snackbar.info(\n gettext(\"You have to select at least two threads to merge.\")\n )\n } else if (errors.length) {\n modal.show(<ErrorsModal errors={errors} />)\n return\n } else {\n modal.show(<MergeThreads {...this.props} />)\n }\n }\n\n delete = () => {\n if (\n !window.confirm(\n gettext(\"Are you sure you want to delete selected threads?\")\n )\n ) {\n return\n }\n\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n const ids = this.props.threads.map((thread) => {\n return thread.id\n })\n\n ajax.delete(this.props.api, ids).then(\n () => {\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n this.props.deleteThread(thread)\n })\n\n snackbar.success(gettext(\"Selected threads were deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n const failedThreads = rejection.map((thread) => {\n return thread.id\n })\n\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n if (failedThreads.indexOf(thread.id) === -1) {\n this.props.deleteThread(thread)\n }\n })\n\n modal.show(<ErrorsModal errors={rejection} />)\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n const { moderation, threads } = this.props\n const noSelection = this.props.selection.length == 0\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n onClick={() => store.dispatch(select.all(threads.map((t) => t.id)))}\n >\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Select all\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={() => store.dispatch(select.none())}\n >\n <span className=\"material-icon\">check_box_outline_blank</span>\n {gettext(\"Select none\")}\n </button>\n </li>\n <li role=\"separator\" className=\"divider\" />\n {!!moderation.can_pin_globally && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.pinGlobally}\n >\n <span className=\"material-icon\">bookmark</span>\n {gettext(\"Pin threads globally\")}\n </button>\n </li>\n )}\n {!!moderation.can_pin && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.pinLocally}\n >\n <span className=\"material-icon\">bookmark_border</span>\n {gettext(\"Pin threads locally\")}\n </button>\n </li>\n )}\n {!!moderation.can_pin && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.unpin}\n >\n <span className=\"material-icon\">panorama_fish_eye</span>\n {gettext(\"Unpin threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_move && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.move}\n >\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_merge && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.merge}\n >\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_approve && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.approve}\n >\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_close && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.open}\n >\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Open threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_close && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.close}\n >\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Close threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_unhide && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.unhide}\n >\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_hide && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.hide}\n >\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_delete && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.delete}\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete threads\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import React from \"react\"\nimport ModerationControls from \"./moderation/controls\"\n\nconst ThreadsToolbarModeration = ({\n api,\n categoriesMap,\n categories,\n threads,\n addThreads,\n freezeThread,\n updateThread,\n deleteThread,\n selection,\n moderation,\n route,\n user,\n disabled,\n}) => (\n <div className=\"dropdown threads-moderation\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Moderation\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={disabled}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ModerationControls\n api={api}\n categories={categories}\n categoriesMap={categoriesMap}\n threads={threads}\n addThreads={addThreads}\n freezeThread={freezeThread}\n updateThread={updateThread}\n deleteThread={deleteThread}\n selection={selection}\n moderation={moderation}\n route={route}\n user={user}\n disabled={disabled}\n />\n </div>\n)\n\nexport default ThreadsToolbarModeration\n","import React from \"react\"\nimport posting from \"../../services/posting\"\nimport Button from \"../button\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadsCategoryPicker from \"./ThreadsCategoryPicker\"\nimport ThreadsListPicker from \"./ThreadsListPicker\"\nimport ThreadsToolbarModeration from \"./ThreadsToolbarModeration\"\n\nconst ThreadsToolbar = ({\n api,\n baseUrl,\n category,\n categories,\n categoriesMap,\n topCategory,\n topCategories,\n subCategory,\n subCategories,\n list,\n lists,\n threads,\n addThreads,\n startThread,\n freezeThread,\n updateThread,\n deleteThread,\n selection,\n moderation,\n route,\n user,\n disabled,\n}) => (\n <Toolbar>\n {topCategories.length > 0 && (\n <ToolbarSection>\n <ToolbarItem>\n <ThreadsCategoryPicker\n allItems={gettext(\"All categories\")}\n parentUrl={list.path}\n category={topCategory}\n categories={topCategories}\n list={list}\n />\n </ToolbarItem>\n {topCategory && subCategories.length > 0 && (\n <ToolbarItem>\n <ThreadsCategoryPicker\n allItems={gettext(\"All subcategories\")}\n parentUrl={topCategory.url.index}\n category={subCategory}\n categories={subCategories}\n list={list}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n {lists.length > 1 && (\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadsListPicker baseUrl={baseUrl} list={list} lists={lists} />\n </ToolbarItem>\n </ToolbarSection>\n )}\n <ToolbarSpacer />\n {!!user.id && (\n <ToolbarSection>\n <ToolbarItem>\n <Button\n className=\"btn-primary btn-outline btn-block\"\n disabled={disabled}\n onClick={() => {\n posting.open(\n startThread || {\n mode: \"START\",\n\n config: misago.get(\"THREAD_EDITOR_API\"),\n submit: misago.get(\"THREADS_API\"),\n\n category: category.id,\n }\n )\n }}\n >\n <span className=\"material-icon\">chat</span>\n {gettext(\"Start thread\")}\n </Button>\n </ToolbarItem>\n {!!moderation.allow && (\n <ToolbarItem shrink>\n <ThreadsToolbarModeration\n api={api}\n categories={categories}\n categoriesMap={categoriesMap}\n threads={threads.filter(\n (thread) => selection.indexOf(thread.id) !== -1\n )}\n addThreads={addThreads}\n freezeThread={freezeThread}\n updateThread={updateThread}\n deleteThread={deleteThread}\n selection={selection}\n moderation={moderation}\n route={route}\n user={user}\n disabled={disabled}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadsToolbar\n","import React from \"react\"\nimport PageContainer from \"../PageContainer\"\nimport ThreadsToolbar from \"./ThreadsToolbar\"\n\nexport default class extends React.Component {\n render() {\n const { root } = this.props\n const { category, categories, categoriesMap } = this.props.route\n const topCategory = getTopCategory(root, category, categoriesMap)\n\n return (\n <PageContainer>\n <ThreadsToolbar\n api={this.props.api}\n baseUrl={category.url.index}\n category={category}\n categories={categories}\n categoriesMap={categoriesMap}\n topCategory={topCategory}\n topCategories={categories.filter((cat) => cat.parent === root.id)}\n subCategories={\n !!topCategory\n ? categories.filter((cat) => cat.parent === topCategory.id)\n : []\n }\n subCategory={category.level === 2 ? category : null}\n subcategories={this.props.subcategories}\n list={this.props.route.list}\n lists={this.props.route.lists}\n threads={this.props.threads}\n addThreads={this.props.addThreads}\n startThread={this.props.startThread}\n freezeThread={this.props.freezeThread}\n deleteThread={this.props.deleteThread}\n updateThread={this.props.updateThread}\n selection={this.props.selection}\n moderation={this.props.moderation}\n route={this.props.route}\n user={this.props.user}\n disabled={\n !this.props.isLoaded ||\n this.props.isBusy ||\n this.props.busyThreads.length\n }\n />\n {this.props.children}\n </PageContainer>\n )\n }\n}\n\nconst getTopCategory = (root, category, categoriesMap) => {\n if (!category.parent) return null\n if (category.parent === root.id) return category\n return categoriesMap[category.parent]\n}\n","import misago from \"misago/index\"\n\nexport function getPageTitle(route) {\n if (route.category.level) {\n if (route.list.path) {\n return {\n title: route.list.longName,\n parent: route.category.name,\n }\n } else {\n return {\n title: route.category.name,\n }\n }\n } else if (misago.get(\"THREADS_ON_INDEX\")) {\n if (route.list.path) {\n return {\n title: route.list.longName,\n }\n } else {\n return null\n }\n } else {\n if (route.list.path) {\n return {\n title: route.list.longName,\n parent: gettext(\"Threads\"),\n }\n } else {\n return {\n title: gettext(\"Threads\"),\n }\n }\n }\n}\n\nexport function getTitle(route) {\n if (route.category.level) {\n return route.category.name\n } else if (misago.get(\"THREADS_ON_INDEX\")) {\n if (misago.get(\"SETTINGS\").index_header) {\n return misago.get(\"SETTINGS\").index_header\n } else {\n return misago.get(\"SETTINGS\").forum_name\n }\n } else {\n return gettext(\"Threads\")\n }\n}\n\nexport function isThreadChanged(current, fromDb) {\n return (\n [\n current.title === fromDb.title,\n current.weight === fromDb.weight,\n current.category === fromDb.category,\n current.last_post === fromDb.last_post,\n current.last_poster_name === fromDb.last_poster_name,\n ].indexOf(false) >= 0\n )\n}\n\nexport function diffThreads(current, fromDb) {\n let currentMap = {}\n current.forEach(function (thread) {\n currentMap[thread.id] = thread\n })\n\n return fromDb.filter(function (thread) {\n if (currentMap[thread.id]) {\n return isThreadChanged(currentMap[thread.id], thread)\n } else {\n return true\n }\n })\n}\n\nexport function getModerationActions(threads) {\n let moderation = {\n allow: false,\n\n can_approve: 0,\n can_close: 0,\n can_delete: 0,\n can_hide: 0,\n can_merge: 0,\n can_move: 0,\n can_pin: 0,\n can_pin_globally: 0,\n can_unhide: 0,\n }\n\n threads.forEach(function (thread) {\n if (\n thread.is_unapproved &&\n thread.acl.can_approve > moderation.can_approve\n ) {\n moderation.can_approve = thread.acl.can_approve\n }\n\n if (thread.acl.can_close > moderation.can_close) {\n moderation.can_close = thread.acl.can_close\n }\n\n if (thread.acl.can_delete > moderation.can_delete) {\n moderation.can_delete = thread.acl.can_delete\n }\n\n if (thread.acl.can_hide > moderation.can_hide) {\n moderation.can_hide = thread.acl.can_hide\n }\n\n if (thread.acl.can_merge > moderation.can_merge) {\n moderation.can_merge = thread.acl.can_merge\n }\n\n if (thread.acl.can_move > moderation.can_move) {\n moderation.can_move = thread.acl.can_move\n }\n\n if (thread.acl.can_pin > moderation.can_pin) {\n moderation.can_pin = thread.acl.can_pin\n }\n\n if (thread.acl.can_pin_globally > moderation.can_pin_globally) {\n moderation.can_pin_globally = thread.acl.can_pin_globally\n }\n\n if (thread.is_hidden && thread.acl.can_unhide > moderation.can_unhide) {\n moderation.can_unhide = thread.acl.can_unhide\n }\n\n moderation.allow =\n moderation.can_approve ||\n moderation.can_close ||\n moderation.can_delete ||\n moderation.can_hide ||\n moderation.can_merge ||\n moderation.can_move ||\n moderation.can_pin ||\n moderation.can_pin_globally ||\n moderation.can_unhide\n })\n\n return moderation\n}\n","import React from \"react\"\n\nconst ThreadsListEmpty = ({ category, list, message }) => {\n if (list.type === \"all\") {\n if (message) {\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">{message}</p>\n <p>{gettext(\"Why not start one yourself?\")}</p>\n </li>\n )\n }\n\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {category.special_role\n ? gettext(\"There are no threads on this forum... yet!\")\n : gettext(\"There are no threads in this category.\")}\n </p>\n <p>{gettext(\"Why not start one yourself?\")}</p>\n </li>\n )\n }\n\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {gettext(\"No threads matching specified criteria were found.\")}\n </p>\n </li>\n )\n}\n\nexport default ThreadsListEmpty\n","import React from \"react\"\n\nconst ThreadsListItemActivity = ({ thread }) => (\n <a\n href={thread.url.last_post}\n className=\"threads-list-item-last-activity\"\n title={interpolate(\n gettext(\"Last activity: %(timestamp)s\"),\n {\n timestamp: thread.last_post_on.format(\"LLL\"),\n },\n true\n )}\n >\n {thread.last_post_on.fromNow(true)}\n </a>\n)\n\nexport default ThreadsListItemActivity\n","import React from \"react\"\n\nconst ThreadsListItemCategory = ({ parent, category }) => (\n <span>\n {parent && (\n <a\n href={parent.url.index}\n className={getClassName(parent) + \" threads-list-item-parent-category\"}\n style={parent.color ? { \"--label-color\": parent.color } : null}\n title={!!parent.short_name ? parent.name : null}\n >\n {parent.short_name || parent.name}\n </a>\n )}\n <a\n href={category.url.index}\n className={getClassName(category)}\n style={category.color ? { \"--label-color\": category.color } : null}\n title={!!category.short_name ? category.name : null}\n >\n {category.short_name || category.name}\n </a>\n </span>\n)\n\nconst getClassName = (category) => {\n let className = \"threads-list-item-category threads-list-category-label\"\n\n if (category.color) {\n className += \" threads-list-category-label-color\"\n }\n\n return className\n}\n\nexport default ThreadsListItemCategory\n","import React from \"react\"\nimport * as select from \"../../reducers/selection\"\nimport store from \"../../services/store\"\n\nconst ThreadsListItemCheckbox = ({ checked, disabled, thread }) => (\n <button\n className=\"btn btn-default btn-icon\"\n type=\"button\"\n disabled={disabled}\n onClick={() => store.dispatch(select.item(thread.id))}\n >\n <span className=\"material-icon\">\n {checked ? \"check_box\" : \"check_box_outline_blank\"}\n </span>\n </button>\n)\n\nexport default ThreadsListItemCheckbox\n","import React from \"react\"\n\nconst ThreadsListItemIcon = ({ thread }) => {\n let className = \"threads-list-icon\"\n if (!thread.is_read) className += \" threads-list-icon-new\"\n\n return (\n <a\n title={thread.is_read ? gettext(\"No new posts\") : gettext(\"New posts\")}\n href={thread.is_read ? thread.url.last_post : thread.url.new_post}\n className={className}\n >\n <span className=\"material-icon\">\n {thread.is_read ? \"chat_bubble_outline\" : \"chat_bubble\"}\n </span>\n </a>\n )\n}\n\nexport default ThreadsListItemIcon\n","import React from \"react\"\nimport Avatar from \"../avatar\"\n\nconst ThreadsListItemLastPoster = ({ thread }) =>\n !!thread.last_poster ? (\n <a\n href={thread.url.last_poster}\n className=\"threads-list-item-last-poster\"\n title={interpolate(\n gettext(\"Last post by: %(poster)s\"),\n { poster: thread.last_poster.username },\n true\n )}\n >\n <Avatar size={32} user={thread.last_poster} />\n </a>\n ) : (\n <span\n className=\"threads-list-item-last-poster\"\n title={interpolate(\n gettext(\"Last post by: %(poster)s\"),\n { poster: thread.last_poster_name },\n true\n )}\n >\n <Avatar size={32} />\n </span>\n )\n\nexport default ThreadsListItemLastPoster\n","import React from \"react\"\nimport { patch } from \"../../reducers/threads\"\nimport ajax from \"../../services/ajax\"\nimport snackbar from \"../../services/snackbar\"\nimport store from \"../../services/store\"\n\nconst SUBSCRIPTION = {\n unsubscribe: null,\n notify: false,\n email: true,\n}\n\nclass ThreadsListItemSubscriptionOptions extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n loading: false,\n }\n }\n\n update = (value) => {\n const { thread } = this.props\n\n this.setState({ loading: true })\n store.dispatch(patch(thread, { subscription: SUBSCRIPTION[value] }))\n\n ajax\n .patch(thread.api.index, [{ op: \"replace\", path: \"subscription\", value }])\n .then(\n () => {},\n (rejection) => {\n store.dispatch(\n patch(thread, {\n subscription: SUBSCRIPTION[thread.subscription],\n })\n )\n snackbar.apiError(rejection)\n }\n )\n .then(() => this.setState({ loading: false }))\n }\n\n render = () => {\n const { loading } = this.state\n const { disabled, thread } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === null}\n onClick={() => this.update(\"unsubscribe\")}\n >\n <span className=\"material-icon\">star_border</span>\n {gettext(\"Unsubscribe\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === false}\n onClick={() => this.update(\"notify\")}\n >\n <span className=\"material-icon\">star_half</span>\n {gettext(\"Subscribe with alert\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === true}\n onClick={() => this.update(\"email\")}\n >\n <span className=\"material-icon\">star</span>\n {gettext(\"Subscribe with e-mail\")}\n </button>\n </li>\n </ul>\n )\n }\n}\n\nexport default ThreadsListItemSubscriptionOptions\n","import React from \"react\"\nimport ThreadsListItemSubscriptionOptions from \"./ThreadsListItemSubscriptionOptions\"\n\nconst ThreadsListItemSubscription = ({ disabled, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-icon\"\n type=\"button\"\n title={getSubscriptionTitle(thread.subscription)}\n disabled={disabled}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">\n {getSubscriptionIcon(thread.subscription)}\n </span>\n </button>\n <ThreadsListItemSubscriptionOptions disabled={disabled} thread={thread} />\n </div>\n)\n\nconst getSubscriptionTitle = (subscription) => {\n if (subscription === true) return gettext(\"Subscribed to e-mails\")\n if (subscription === false) return gettext(\"Subscribed to alerts\")\n return gettext(\"Not subscribed\")\n}\n\nconst getSubscriptionIcon = (subscription) => {\n if (subscription === true) return \"star\"\n if (subscription === false) return \"star_half\"\n return \"star_border\"\n}\n\nexport default ThreadsListItemSubscription\n","import React from \"react\"\nimport ThreadFlags from \"../ThreadFlags\"\nimport ThreadReplies from \"../ThreadReplies\"\nimport ThreadsListItemActivity from \"./ThreadsListItemActivity\"\nimport ThreadsListItemCategory from \"./ThreadsListItemCategory\"\nimport ThreadsListItemCheckbox from \"./ThreadsListItemCheckbox\"\nimport ThreadsListItemIcon from \"./ThreadsListItemIcon\"\nimport ThreadsListItemLastPoster from \"./ThreadsListItemLastPoster\"\nimport ThreadsListItemSubscription from \"./ThreadsListItemSubscription\"\n\nconst ThreadsListItem = ({\n activeCategory,\n categories,\n showOptions,\n showSubscription,\n thread,\n isBusy,\n isSelected,\n}) => {\n let parent = null\n let category = null\n\n if (activeCategory.id !== thread.category) {\n category = categories[thread.category]\n\n if (\n category.parent &&\n category.parent !== activeCategory.id &&\n categories[category.parent] &&\n !categories[category.parent].special_role\n ) {\n parent = categories[category.parent]\n }\n }\n\n const hasFlags =\n thread.is_closed ||\n thread.is_hidden ||\n thread.is_unapproved ||\n thread.weight > 0 ||\n thread.best_answer ||\n thread.has_poll ||\n thread.has_unapproved_posts\n\n const isNew = showOptions ? thread.is_new : true\n\n return (\n <li\n className={\n \"list-group-item threads-list-item\" +\n (isBusy ? \" threads-list-item-is-busy\" : \"\")\n }\n >\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <ThreadsListItemIcon thread={thread} />\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <a href={thread.url.index} className=\"threads-list-item-title\">\n {thread.title}\n </a>\n <a\n href={isNew ? thread.url.new_post : thread.url.index}\n className={\n \"threads-list-item-title-sm\" +\n (isNew ? \" threads-list-item-title-new\" : \"\")\n }\n >\n {thread.title}\n </a>\n </div>\n {showOptions && thread.moderation.length > 0 && (\n <div className=\"threads-list-item-col-checkbox-sm\">\n <ThreadsListItemCheckbox\n checked={isSelected}\n disabled={isBusy}\n thread={thread}\n />\n </div>\n )}\n </div>\n <div className=\"threads-list-item-bottom-row\">\n {hasFlags && (\n <div className=\"threads-list-item-col-flags\">\n <ThreadFlags thread={thread} />\n </div>\n )}\n {!!category && (\n <div className=\"threads-list-item-col-category\">\n <ThreadsListItemCategory parent={parent} category={category} />\n </div>\n )}\n <div className=\"threads-list-item-col-replies\">\n <ThreadReplies thread={thread} />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <ThreadsListItemLastPoster thread={thread} />\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <ThreadsListItemActivity thread={thread} />\n </div>\n {showOptions && showSubscription && (\n <div className=\"threads-list-item-col-subscription\">\n <ThreadsListItemSubscription disabled={isBusy} thread={thread} />\n </div>\n )}\n {showOptions && thread.moderation.length > 0 && (\n <div className=\"threads-list-item-col-checkbox\">\n <ThreadsListItemCheckbox\n checked={isSelected}\n disabled={isBusy}\n thread={thread}\n />\n </div>\n )}\n </div>\n </li>\n )\n}\n\nexport default ThreadsListItem\n","import React from \"react\"\n\nconst UIPreviewText = ({ width }) => (\n <span className=\"ui-preview-text\" style={{ width: width + \"px\" }}>\n \n </span>\n)\n\nexport default UIPreviewText\n","import React from \"react\"\nimport Avatar from \"../avatar\"\nimport { UIPreviewText } from \"../UIPreview\"\n\nconst ThreadsListLoader = ({ showOptions }) => (\n <div className=\"threads-list threads-list-loader\">\n <ul className=\"list-group\">\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"90\" /> <UIPreviewText width=\"40\" />{\" \"}\n <UIPreviewText width=\"120\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"90\" /> <UIPreviewText width=\"40\" />{\" \"}\n <UIPreviewText width=\"120\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"70\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"50\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"50\" />\n </span>\n </div>\n </div>\n </li>\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"120\" /> <UIPreviewText width=\"30\" />{\" \"}\n <UIPreviewText width=\"60\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"120\" /> <UIPreviewText width=\"30\" />{\" \"}\n <UIPreviewText width=\"60\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"55\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"60\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"70\" />\n </span>\n </div>\n </div>\n </li>\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"40\" /> <UIPreviewText width=\"120\" />{\" \"}\n <UIPreviewText width=\"80\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"40\" /> <UIPreviewText width=\"120\" />{\" \"}\n <UIPreviewText width=\"80\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"75\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"40\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"60\" />\n </span>\n </div>\n </div>\n </li>\n </ul>\n </div>\n)\n\nexport default ThreadsListLoader\n","import React from \"react\"\n\nconst ThreadsListUpdatePrompt = ({ threads, onClick }) => (\n <li className=\"list-group-item threads-list-update-prompt\">\n <button\n type=\"button\"\n className=\"btn btn-block threads-list-update-prompt-btn\"\n onClick={onClick}\n >\n <span className=\"material-icon\">cached</span>\n <span className=\"threads-list-update-prompt-message\">\n {interpolate(\n ngettext(\n \"There is %(threads)s new or updated thread. Click here to show it.\",\n \"There are %(threads)s new or updated threads. Click here to show them.\",\n threads\n ),\n { threads },\n true\n )}\n </span>\n </button>\n </li>\n)\n\nexport default ThreadsListUpdatePrompt\n","import ThreadsList from \"./ThreadsList\"\n\nexport default ThreadsList\n","import React from \"react\"\nimport ThreadsListEmpty from \"./ThreadsListEmpty\"\nimport ThreadsListItem from \"./ThreadsListItem\"\nimport ThreadsListLoader from \"./ThreadsListLoader\"\nimport ThreadsListUpdatePrompt from \"./ThreadsListUpdatePrompt\"\n\nconst ThreadsList = ({\n list,\n categories,\n category,\n threads,\n busyThreads,\n selection,\n isLoaded,\n showOptions,\n updatedThreads,\n applyUpdate,\n emptyMessage,\n}) => {\n if (!isLoaded) {\n return <ThreadsListLoader showOptions={showOptions} />\n }\n\n return (\n <div className=\"threads-list\">\n {threads.length > 0 ? (\n <ul className=\"list-group\">\n {updatedThreads > 0 && (\n <ThreadsListUpdatePrompt\n threads={updatedThreads}\n onClick={applyUpdate}\n />\n )}\n {threads.map((thread) => (\n <ThreadsListItem\n key={thread.id}\n activeCategory={category}\n categories={categories}\n thread={thread}\n showOptions={showOptions}\n showSubscription={showOptions && list.type === \"subscribed\"}\n isBusy={busyThreads.indexOf(thread.id) >= 0}\n isSelected={selection.indexOf(thread.id) >= 0}\n />\n ))}\n </ul>\n ) : (\n <ul className=\"list-group\">\n {updatedThreads > 0 && (\n <ThreadsListUpdatePrompt\n threads={updatedThreads}\n onClick={applyUpdate}\n />\n )}\n <ThreadsListEmpty\n category={category}\n list={list}\n message={emptyMessage}\n />\n </ul>\n )}\n </div>\n )\n}\n\nexport default ThreadsList\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport {\n compareGlobalWeight,\n compareWeight,\n} from \"misago/components/threads/compare\"\nimport Container from \"misago/components/threads/container\"\nimport {\n diffThreads,\n getModerationActions,\n getPageTitle,\n getTitle,\n} from \"misago/components/threads/utils\"\nimport ThreadsList from \"misago/components/ThreadsList\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport * as select from \"misago/reducers/selection\"\nimport { append, deleteThread, hydrate, patch } from \"misago/reducers/threads\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport * as sets from \"misago/utils/sets\"\nimport {\n PageHeaderHTMLMessage,\n PageHeaderMessage,\n PageHeaderPlain,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n constructor(props) {\n super(props)\n\n this.state = {\n isMounted: true,\n\n isLoaded: false,\n isBusy: false,\n\n diff: {\n results: [],\n },\n\n moderation: [],\n busyThreads: [],\n\n dropdown: false,\n subcategories: [],\n\n next: 0,\n }\n\n let category = this.getCategory()\n\n if (misago.has(\"THREADS\")) {\n this.initWithPreloadedData(category, misago.get(\"THREADS\"))\n } else {\n this.initWithoutPreloadedData(category)\n }\n }\n\n getCategory() {\n if (!this.props.route.category.special_role) {\n return this.props.route.category.id\n } else {\n return null\n }\n }\n\n initWithPreloadedData(category, data) {\n this.state = Object.assign(this.state, {\n moderation: getModerationActions(data.results),\n subcategories: data.subcategories,\n next: data.next,\n })\n\n this.startPolling(category)\n }\n\n initWithoutPreloadedData(category) {\n this.loadThreads(category)\n }\n\n loadThreads(category, next = 0) {\n ajax\n .get(\n this.props.options.api,\n {\n category: category,\n list: this.props.route.list.type,\n start: next || 0,\n },\n \"threads\"\n )\n .then(\n (data) => {\n if (!this.state.isMounted) {\n // user changed route before loading completion\n return\n }\n\n if (next === 0) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results, this.getSorting()))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n moderation: getModerationActions(store.getState().threads),\n\n subcategories: data.subcategories,\n\n next: data.next,\n })\n\n this.startPolling(category)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n startPolling(category) {\n polls.start({\n poll: \"threads\",\n url: this.props.options.api,\n data: {\n category: category,\n list: this.props.route.list.type,\n },\n frequency: 120 * 1000,\n update: this.pollResponse,\n })\n }\n\n componentDidMount() {\n this.setPageTitle()\n\n if (misago.has(\"THREADS\")) {\n // unlike in other components, routes are root components for threads\n // so we can't dispatch store action from constructor\n store.dispatch(hydrate(misago.pop(\"THREADS\").results))\n\n this.setState({\n isLoaded: true,\n })\n }\n\n store.dispatch(select.none())\n }\n\n componentWillUnmount() {\n this.state.isMounted = false\n polls.stop(\"threads\")\n }\n\n getTitle() {\n if (this.props.options.title) {\n return this.props.options.title\n }\n\n return getTitle(this.props.route)\n }\n\n setPageTitle() {\n if (this.props.route.category.level || !misago.get(\"THREADS_ON_INDEX\")) {\n title.set(getPageTitle(this.props.route))\n } else if (this.props.options.title) {\n title.set(this.props.options.title)\n } else {\n if (misago.get(\"SETTINGS\").index_title) {\n document.title = misago.get(\"SETTINGS\").index_title\n } else {\n document.title = misago.get(\"SETTINGS\").forum_name\n }\n }\n }\n\n getSorting() {\n if (this.props.route.category.level) {\n return compareWeight\n } else {\n return compareGlobalWeight\n }\n }\n\n // AJAX\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadThreads(this.getCategory(), this.state.next)\n }\n\n pollResponse = (data) => {\n this.setState({\n diff: Object.assign({}, data, {\n results: diffThreads(this.props.threads, data.results),\n }),\n })\n }\n\n addThreads = (threads) => {\n store.dispatch(append(threads, this.getSorting()))\n }\n\n applyDiff = () => {\n this.addThreads(this.state.diff.results)\n\n this.setState(\n Object.assign({}, this.state.diff, {\n moderation: getModerationActions(store.getState().threads),\n\n diff: {\n results: [],\n },\n })\n )\n }\n\n // Thread state utils\n\n freezeThread = (thread) => {\n this.setState(function (currentState) {\n return {\n busyThreads: sets.toggle(currentState.busyThreads, thread),\n }\n })\n }\n\n updateThread = (thread) => {\n store.dispatch(patch(thread, thread, this.getSorting()))\n }\n\n deleteThread = (thread) => {\n store.dispatch(deleteThread(thread))\n }\n\n getMoreButton() {\n if (!this.state.next) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy || this.state.busyThreads.length}\n onClick={this.loadMore}\n >\n {gettext(\"Show more\")}\n </Button>\n </div>\n )\n }\n\n getClassName() {\n let className = \"page page-threads\"\n className += \" page-threads-\" + this.props.route.list.type\n if (isIndex(this.props)) {\n className += \" page-threads-index\"\n }\n if (this.props.route.category.css_class) {\n className += \" page-threads-\" + this.props.route.category.css_class\n }\n return className\n }\n\n render() {\n const root = this.props.route.categories[0]\n const { category, list } = this.props.route\n const specialRole = category.special_role\n\n return (\n <div className={this.getClassName()}>\n {specialRole == \"root_category\" &&\n misago.get(\"THREADS_ON_INDEX\") &&\n misago.get(\"SETTINGS\").index_header && (\n <PageHeaderPlain\n header={misago.get(\"SETTINGS\").index_header}\n message={\n category.description && (\n <PageHeaderHTMLMessage message={category.description.html} />\n )\n }\n styleName=\"forum-index\"\n />\n )}\n {specialRole == \"root_category\" && !misago.get(\"THREADS_ON_INDEX\") && (\n <PageHeaderPlain header={gettext(\"Threads\")} styleName=\"threads\" />\n )}\n {specialRole == \"private_threads\" && (\n <PageHeaderPlain\n header={this.props.options.title}\n message={\n this.props.options.pageLead && (\n <PageHeaderMessage>\n <p>{this.props.options.pageLead}</p>\n </PageHeaderMessage>\n )\n }\n styleName=\"private-threads\"\n />\n )}\n {!specialRole && (\n <PageHeaderPlain\n header={category.name}\n message={\n category.description && (\n <PageHeaderHTMLMessage message={category.description.html} />\n )\n }\n styleName={category.css_class || \"category-threads\"}\n />\n )}\n <Container\n api={this.props.options.api}\n root={root}\n route={this.props.route}\n user={this.props.user}\n pageLead={this.props.options.pageLead}\n threads={this.props.threads}\n threadsCount={this.state.count}\n moderation={this.state.moderation}\n selection={this.props.selection}\n busyThreads={this.state.busyThreads}\n addThreads={this.addThreads}\n startThread={this.props.options.startThread}\n freezeThread={this.freezeThread}\n deleteThread={this.deleteThread}\n updateThread={this.updateThread}\n isLoaded={this.state.isLoaded}\n isBusy={this.state.isBusy}\n >\n <ThreadsList\n category={category}\n categories={this.props.route.categoriesMap}\n list={list}\n selection={this.props.selection}\n threads={this.props.threads}\n updatedThreads={this.state.diff.results.length}\n applyUpdate={this.applyDiff}\n showOptions={!!this.props.user.id}\n isLoaded={this.state.isLoaded}\n busyThreads={this.state.busyThreads}\n emptyMessage={this.props.options.emptyMessage}\n />\n {this.getMoreButton()}\n </Container>\n </div>\n )\n }\n}\n\nfunction isIndex(props) {\n if (props.route.category.level || !misago.get(\"THREADS_ON_INDEX\"))\n return false\n if (props.options.title) return false\n\n return true\n}\n","import { paths } from \"misago/components/threads/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nconst PRIVATE_THREADS_LIST = \"misago:private-threads\"\n\nexport default function initializer(context) {\n if (context.has(\"THREADS\") && context.has(\"CATEGORIES\")) {\n mount({\n paths: paths(context.get(\"user\"), getListOptions(context)),\n })\n }\n}\n\nexport function getListOptions(context) {\n const currentLink = context.get(\"CURRENT_LINK\")\n if (\n currentLink.substr(0, PRIVATE_THREADS_LIST.length) === PRIVATE_THREADS_LIST\n ) {\n return {\n api: context.get(\"PRIVATE_THREADS_API\"),\n startThread: {\n mode: \"START_PRIVATE\",\n submit: misago.get(\"PRIVATE_THREADS_API\"),\n },\n title: gettext(\"Private threads\"),\n pageLead: gettext(\n \"Private threads are threads which only those that started them and those they have invited may see and participate in.\"\n ),\n emptyMessage: gettext(\"You aren't participating in any private threads.\"),\n }\n }\n\n return {\n api: context.get(\"THREADS_API\"),\n }\n}\n\nmisago.addInitializer({\n name: \"component:threads\",\n initializer: initializer,\n after: \"store\",\n})\n","import { connect } from \"react-redux\"\nimport Route from \"misago/components/threads/route\"\nimport misago from \"misago/index\"\n\nexport function getSelect(options) {\n return function (store) {\n return {\n options: options,\n selection: store.selection,\n threads: store.threads,\n tick: store.tick.tick,\n user: store.auth.user,\n }\n }\n}\n\nexport function getLists(user) {\n let lists = [\n {\n type: \"all\",\n path: \"\",\n name: gettext(\"All\"),\n longName: gettext(\"All threads\"),\n },\n ]\n\n if (user.id) {\n lists.push({\n type: \"my\",\n path: \"my/\",\n name: gettext(\"My\"),\n longName: gettext(\"My threads\"),\n })\n lists.push({\n type: \"new\",\n path: \"new/\",\n name: gettext(\"New\"),\n longName: gettext(\"New threads\"),\n })\n lists.push({\n type: \"unread\",\n path: \"unread/\",\n name: gettext(\"Unread\"),\n longName: gettext(\"Unread threads\"),\n })\n lists.push({\n type: \"subscribed\",\n path: \"subscribed/\",\n name: gettext(\"Subscribed\"),\n longName: gettext(\"Subscribed threads\"),\n })\n\n if (user.acl.can_see_unapproved_content_lists) {\n lists.push({\n type: \"unapproved\",\n path: \"unapproved/\",\n name: gettext(\"Unapproved\"),\n longName: gettext(\"Unapproved content\"),\n })\n }\n }\n\n return lists\n}\n\nexport function paths(user, mode) {\n let lists = getLists(user)\n let routes = []\n let categoriesMap = {}\n\n misago.get(\"CATEGORIES\").forEach(function (category) {\n lists.forEach(function (list) {\n categoriesMap[category.id] = category\n\n routes.push({\n path: category.url.index + list.path,\n component: connect(getSelect(mode))(Route),\n\n categories: misago.get(\"CATEGORIES\"),\n categoriesMap,\n category,\n\n lists,\n list,\n })\n })\n })\n\n return routes\n}\n","const MAX_RESULTS = 5\n\nexport default function (data) {\n const filtered = data.filter((section) => {\n return section.results.count > 0\n })\n\n return filtered.map((section) => {\n return Object.assign({}, section, {\n count: section.results.count,\n results: section.results.results.slice(0, MAX_RESULTS),\n })\n })\n}\n","export const HEADER = \"HEADER\"\nexport const RESULT = \"RESULT\"\nexport const FOOTER = \"FOOTER\"\n","import React from \"react\"\n\nexport default function ({ value, onChange }) {\n return (\n <input\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-controls=\"dropdown-menu dropdown-search-results\"\n autoComplete=\"off\"\n className=\"form-control\"\n value={value}\n onChange={onChange}\n placeholder={gettext(\"Search\")}\n role=\"combobox\"\n type=\"text\"\n />\n )\n}\n","import React from \"react\"\nimport Input from \"./input\"\n\nexport default function ({ children, onChange, query }) {\n return (\n <ul className=\"dropdown-menu dropdown-search-results\" role=\"menu\">\n <li className=\"form-group\">\n <Input value={query} onChange={onChange} />\n </li>\n {children}\n </ul>\n )\n}\n","import React from \"react\"\n\nexport default function () {\n return (\n <li className=\"dropdown-search-message\">\n {gettext(\"Search returned no results.\")}\n </li>\n )\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({ message }) {\n return (\n <li className=\"dropdown-search-loader\">\n <Loader />\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ provider, query }) {\n const url = provider.url + \"?q=\" + encodeURI(query)\n const label = ngettext(\n 'See full \"%(provider)s\" results page with %(count)s result.',\n 'See full \"%(provider)s\" results page with %(count)s results.',\n provider.count\n )\n\n return (\n <li className=\"dropdown-search-footer\">\n <a href={url}>\n {interpolate(\n label,\n {\n count: provider.count,\n provider: provider.name,\n },\n true\n )}\n </a>\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ provider }) {\n return <li className=\"dropdown-search-header\">{provider.name}</li>\n}\n","import moment from \"moment\"\nimport React from \"react\"\n\nexport default function ({ result }) {\n const { poster, thread } = result\n const footer = gettext(\n \"Posted by %(poster)s on %(posted_on)s in %(category)s.\"\n )\n\n return (\n <li>\n <a href={result.url.index} className=\"dropdown-search-thread\">\n <h5>{thread.title}</h5>\n <small className=\"dropdown-search-post-content\">\n {$(result.content).text()}\n </small>\n <small className=\"dropdown-search-post-footer\">\n {interpolate(\n footer,\n {\n category: result.category.name,\n posted_on: moment(result.posted_on).format(\"LL\"),\n poster: result.poster_name,\n },\n true\n )}\n </small>\n </a>\n </li>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ result }) {\n const { rank } = result\n\n const detail = gettext(\"%(title)s, joined on %(joined_on)s\")\n const title = result.title || rank.title || rank.name\n\n return (\n <li>\n <a href={result.url} className=\"dropdown-search-user\">\n <div className=\"media\">\n <div className=\"media-left\">\n <Avatar size={38} user={result} />\n </div>\n <div className=\"media-body\">\n <h5 className=\"media-heading\">{result.username}</h5>\n <small>\n {interpolate(\n detail,\n {\n title,\n joined_on: moment(result.joined_on).format(\"LL\"),\n },\n true\n )}\n </small>\n </div>\n </div>\n </a>\n </li>\n )\n}\n","import React from \"react\"\nimport Thread from \"./thread\"\nimport User from \"./user\"\n\nexport default function ({ provider, result }) {\n if (provider.id === \"threads\") {\n return <Thread result={result} />\n }\n\n return <User result={result} />\n}\n","import React from \"react\"\nimport { HEADER, FOOTER } from \"../constants\"\nimport Footer from \"./footer\"\nimport Header from \"./header\"\nimport Result from \"./result\"\n\nexport default function ({ provider, result, type, query }) {\n if (type === HEADER) {\n return <Header provider={provider} />\n } else if (type === FOOTER) {\n return <Footer provider={provider} query={query} />\n }\n\n return <Result provider={provider} result={result} />\n}\n","import { HEADER, RESULT, FOOTER } from \"./constants\"\n\nexport default function (results) {\n const flatlist = []\n flattenProviders(results, flatlist)\n return flatlist\n}\n\nfunction flattenProviders(results, flatlist) {\n const arrayLength = results.length\n for (var i = 0; i < arrayLength; i++) {\n const provider = results[i]\n\n flatlist.push({\n provider,\n type: HEADER,\n })\n\n flattenProvider(provider, flatlist)\n }\n}\n\nfunction flattenProvider(provider, flatlist) {\n const arrayLength = provider.results.length\n for (var i = 0; i < arrayLength; i++) {\n const result = provider.results[i]\n flatlist.push({\n provider,\n result,\n type: RESULT,\n })\n }\n\n flatlist.push({\n provider,\n type: FOOTER,\n })\n}\n","import React from \"react\"\nimport { RESULT } from \"./constants\"\nimport DropdownMenu from \"./dropdown-menu\"\nimport Empty from \"./empty\"\nimport Loader from \"./loader\"\nimport Result from \"./result\"\nimport flattenResults from \"./flatten-results\"\n\nexport default function ({ isLoading, onChange, results, query }) {\n if (!query.trim().length) {\n return <DropdownMenu onChange={onChange} query={query} />\n }\n\n if (results.length) {\n const flatResults = flattenResults(results)\n\n return (\n <DropdownMenu onChange={onChange} query={query}>\n {flatResults.map((props) => {\n const { type, provider, result } = props\n\n if (type === RESULT) {\n return (\n <Result\n key={[provider.id, type, result.id].join(\"_\")}\n {...props}\n />\n )\n }\n\n return (\n <Result\n key={[provider.id, type].join(\"_\")}\n query={query}\n {...props}\n />\n )\n })}\n </DropdownMenu>\n )\n } else if (isLoading) {\n return (\n <DropdownMenu onChange={onChange} query={query}>\n <Loader />\n </DropdownMenu>\n )\n }\n\n return (\n <DropdownMenu onChange={onChange} query={query}>\n <Empty />\n </DropdownMenu>\n )\n}\n","import React from \"react\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport misago from \"misago\"\nimport cleanResults from \"./clean-results\"\nimport Dropdown from \"./dropdown\"\n\nexport default class extends React.Component {\n constructor() {\n super()\n\n this.state = {\n isLoading: false,\n isOpen: false,\n query: \"\",\n results: [],\n }\n\n this.intervalId = null\n }\n\n componentDidMount() {\n document.addEventListener(\"mousedown\", this.onDocumentMouseDown)\n document.addEventListener(\"keydown\", this.onEscape)\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.onDocumentMouseDown)\n document.removeEventListener(\"keydown\", this.onEscape)\n }\n\n onToggle = (ev) => {\n this.setState((prevState, props) => {\n if (!prevState.isOpen) {\n window.setTimeout(() => {\n this.container.querySelector(\"input\").focus()\n }, 100)\n }\n\n return { isOpen: !prevState.isOpen }\n })\n }\n\n onDocumentMouseDown = (ev) => {\n let closeResults = true\n let node = ev.target\n\n while (node !== null && node !== document) {\n if (node === this.container) {\n closeResults = false\n return\n }\n\n node = node.parentNode\n }\n\n if (closeResults) {\n this.setState({ isOpen: false })\n }\n }\n\n onEscape = (ev) => {\n if (ev.key === \"Escape\") {\n this.setState({ isOpen: false })\n }\n }\n\n onChange = (ev) => {\n const query = ev.target.value\n\n this.setState({ query })\n this.loadResults(query.trim())\n }\n\n loadResults(query) {\n if (!query.length) return\n\n const delay = 300 + Math.random() * 300\n\n if (this.intervalId) {\n window.clearTimeout(this.intervalId)\n }\n\n this.setState({ isLoading: true })\n\n this.intervalId = window.setTimeout(() => {\n ajax.get(misago.get(\"SEARCH_API\"), { q: query }).then(\n (data) => {\n this.setState({\n intervalId: null,\n isLoading: false,\n results: cleanResults(data),\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n this.setState({\n intervalId: null,\n isLoading: false,\n results: [],\n })\n }\n )\n }, delay)\n }\n\n render() {\n let className = \"navbar-search dropdown\"\n if (this.state.isOpen) className += \" open\"\n\n return (\n <div\n className={className}\n ref={(container) => (this.container = container)}\n >\n <a\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className=\"navbar-icon\"\n data-toggle=\"dropdown\"\n href={misago.get(\"SEARCH_URL\")}\n onClick={this.onToggle}\n >\n <i className=\"material-icon\">search</i>\n </a>\n <Dropdown\n isLoading={this.state.isLoading}\n onChange={this.onChange}\n results={this.state.results}\n query={this.state.query}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport zxcvbn from \"misago/services/zxcvbn\"\n\nexport const STYLES = [\n \"progress-bar-danger\",\n \"progress-bar-warning\",\n \"progress-bar-warning\",\n \"progress-bar-primary\",\n \"progress-bar-success\",\n]\n\nexport const LABELS = [\n gettext(\"Entered password is very weak.\"),\n gettext(\"Entered password is weak.\"),\n gettext(\"Entered password is average.\"),\n gettext(\"Entered password is strong.\"),\n gettext(\"Entered password is very strong.\"),\n]\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this._score = 0\n this._password = null\n this._inputs = []\n\n this.state = {\n loaded: false,\n }\n }\n\n componentDidMount() {\n zxcvbn.load().then(() => {\n this.setState({ loaded: true })\n })\n }\n\n getScore(password, inputs) {\n let cacheStale = false\n\n if (password !== this._password) {\n cacheStale = true\n }\n\n if (inputs.length !== this._inputs.length) {\n cacheStale = true\n } else {\n inputs.map((value, i) => {\n if (value.trim() !== this._inputs[i]) {\n cacheStale = true\n }\n })\n }\n\n if (cacheStale) {\n this._score = zxcvbn.scorePassword(password, inputs)\n this._password = password\n this._inputs = inputs.map(function (value) {\n return value.trim()\n })\n }\n\n return this._score\n }\n\n render() {\n if (!this.state.loaded) return null\n\n let score = this.getScore(this.props.password, this.props.inputs)\n\n return (\n <div className=\"help-block password-strength\">\n <div className=\"progress\">\n <div\n className={\"progress-bar \" + STYLES[score]}\n style={{ width: 20 + 20 * score + \"%\" }}\n role=\"progress-bar\"\n aria-valuenow={score}\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n >\n <span className=\"sr-only\">{LABELS[score]}</span>\n </div>\n </div>\n <p className=\"text-small\">{LABELS[score]}</p>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport PasswordStrength from \"misago/components/password-strength\"\nimport RegisterLegalFootnote from \"misago/components/RegisterLegalFootnote\"\nimport StartSocialAuth from \"misago/components/StartSocialAuth\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport auth from \"misago/services/auth\"\nimport captcha from \"misago/services/captcha\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\nimport * as validators from \"misago/utils/validators\"\n\nexport class RegisterForm extends Form {\n constructor(props) {\n super(props)\n\n const { username, password } = this.props.criteria\n\n let passwordMinLength = 0\n password.forEach((item) => {\n if (item.name === \"MinimumLengthValidator\") {\n passwordMinLength = item.min_length\n }\n })\n\n const formValidators = {\n username: [\n validators.usernameContent(),\n validators.usernameMinLength(username.min_length),\n validators.usernameMaxLength(username.max_length),\n ],\n email: [validators.email()],\n password: [validators.passwordMinLength(passwordMinLength)],\n captcha: captcha.validator(),\n }\n\n if (!!misago.get(\"TERMS_OF_SERVICE_ID\")) {\n formValidators.termsOfService = [validators.requiredTermsOfService()]\n }\n\n if (!!misago.get(\"PRIVACY_POLICY_ID\")) {\n formValidators.privacyPolicy = [validators.requiredPrivacyPolicy()]\n }\n\n this.state = {\n isLoading: false,\n\n username: \"\",\n email: \"\",\n password: \"\",\n captcha: \"\",\n\n termsOfService: null,\n privacyPolicy: null,\n\n validators: formValidators,\n errors: {},\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"USERS_API\"), {\n username: this.state.username,\n email: this.state.email,\n password: this.state.password,\n captcha: this.state.captcha,\n terms_of_service: this.state.termsOfService,\n privacy_policy: this.state.privacyPolicy,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n\n if (rejection.__all__ && rejection.__all__.length > 0) {\n snackbar.error(rejection.__all__[0])\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n }\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n modal.hide()\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n handlePrivacyPolicyChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"privacyPolicy\", value)\n }\n\n handleTermsOfServiceChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"termsOfService\", value)\n }\n\n handleToggleAgreement = (agreement, value) => {\n this.setState((prevState, props) => {\n if (prevState[agreement] === null) {\n const errors = { ...prevState.errors, [agreement]: null }\n return { errors, [agreement]: value }\n }\n\n const validator = this.state.validators[agreement][0]\n const errors = { ...prevState.errors, [agreement]: [validator(null)] }\n return { errors, [agreement]: null }\n })\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-register\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Register\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"modal-body\">\n <StartSocialAuth\n buttonClassName=\"col-xs-12 col-sm-6\"\n buttonLabel={gettext(\"Join with %(site)s\")}\n formLabel={gettext(\"Or create forum account:\")}\n />\n\n <FormGroup\n label={gettext(\"Username\")}\n for=\"id_username\"\n validation={this.state.errors.username}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n aria-describedby=\"id_username_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"E-mail\")}\n for=\"id_email\"\n validation={this.state.errors.email}\n >\n <input\n type=\"text\"\n id=\"id_email\"\n className=\"form-control\"\n aria-describedby=\"id_email_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Password\")}\n for=\"id_password\"\n validation={this.state.errors.password}\n extra={\n <PasswordStrength\n password={this.state.password}\n inputs={[this.state.username, this.state.email]}\n />\n }\n >\n <input\n type=\"password\"\n id=\"id_password\"\n className=\"form-control\"\n aria-describedby=\"id_password_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n\n {captcha.component({\n form: this,\n })}\n\n <RegisterLegalFootnote\n errors={this.state.errors}\n privacyPolicy={this.state.privacyPolicy}\n termsOfService={this.state.termsOfService}\n onPrivacyPolicyChange={this.handlePrivacyPolicyChange}\n onTermsOfServiceChange={this.handleTermsOfServiceChange}\n />\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Register account\")}\n </Button>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport class RegisterComplete extends React.Component {\n getLead() {\n if (this.props.activation === \"user\") {\n return gettext(\n \"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\"\n )\n } else if (this.props.activation === \"admin\") {\n return gettext(\n \"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\"\n )\n }\n }\n\n getSubscript() {\n if (this.props.activation === \"user\") {\n return gettext(\n \"We have sent an e-mail to %(email)s with link that you have to click to activate your account.\"\n )\n } else if (this.props.activation === \"admin\") {\n return gettext(\n \"We will send an e-mail to %(email)s when this takes place.\"\n )\n }\n }\n\n render() {\n return (\n <div\n className=\"modal-dialog modal-message modal-register\"\n role=\"document\"\n >\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Registration complete\")}</h4>\n </div>\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {interpolate(\n this.getLead(),\n { username: this.props.username },\n true\n )}\n </p>\n <p>\n {interpolate(\n this.getSubscript(),\n { email: this.props.email },\n true\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n completeRegistration = (apiResponse) => {\n if (apiResponse.activation === \"active\") {\n modal.hide()\n auth.signIn(apiResponse)\n } else {\n this.setState({\n complete: apiResponse,\n })\n }\n }\n\n render() {\n if (this.state.complete) {\n return (\n <RegisterComplete\n activation={this.state.complete.activation}\n email={this.state.complete.email}\n username={this.state.complete.username}\n />\n )\n }\n\n return <RegisterForm callback={this.completeRegistration} {...this.props} />\n }\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\nimport RegisterForm from \"misago/components/register.js\"\nimport ajax from \"misago/services/ajax\"\nimport captcha from \"misago/services/captcha\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n isLoaded: false,\n\n criteria: null,\n }\n }\n\n showRegisterForm = () => {\n if (misago.get(\"SETTINGS\").account_activation === \"closed\") {\n snackbar.info(gettext(\"New registrations are currently disabled.\"))\n } else if (this.state.isLoaded) {\n modal.show(<RegisterForm criteria={this.state.criteria} />)\n } else {\n this.setState({ isLoading: true })\n\n Promise.all([\n captcha.load(),\n ajax.get(misago.get(\"AUTH_CRITERIA_API\")),\n ]).then(\n (result) => {\n this.setState({\n isLoading: false,\n isLoaded: true,\n criteria: result[1],\n })\n\n modal.show(<RegisterForm criteria={result[1]} />)\n },\n () => {\n this.setState({ isLoading: false })\n\n snackbar.error(\n gettext(\"Registration is currently unavailable due to an error.\")\n )\n }\n )\n }\n }\n\n getClassName() {\n return this.props.className + (this.state.isLoading ? \" btn-loading\" : \"\")\n }\n\n render() {\n return (\n <button\n className={\"btn \" + this.getClassName()}\n disabled={this.state.isLoading}\n onClick={this.showRegisterForm}\n type=\"button\"\n >\n {gettext(\"Register\")}\n {this.state.isLoading ? <Loader /> : null}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport NavbarSearch from \"misago/components/navbar-search\"\nimport RegisterButton from \"misago/components/register-button\"\nimport SignInModal from \"misago/components/sign-in.js\"\nimport misago from \"misago\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\nimport modal from \"misago/services/modal\"\n\nexport class GuestMenu extends React.Component {\n showSignInModal() {\n modal.show(SignInModal)\n }\n\n render() {\n const delegateAuth = misago.get(\"SETTINGS\").DELEGATE_AUTH\n \n return (\n <ul\n className=\"dropdown-menu user-dropdown dropdown-menu-right\"\n role=\"menu\"\n >\n <li className=\"guest-preview\">\n <h4>{gettext(\"You are browsing as guest.\")}</h4>\n <p>\n {gettext(\n \"Sign in or register to start and participate in discussions.\"\n )}\n </p>\n {delegateAuth ? (\n <div className=\"row\">\n <div className=\"col-xs-12\">\n <a\n className=\"btn btn-default btn-sign-in btn-block\"\n href={misago.get(\"SETTINGS\").LOGIN_URL}\n >\n {gettext(\"Sign in\")}\n </a>\n </div>\n </div>\n ) : (\n <div className=\"row\">\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sign-in btn-block\"\n onClick={this.showSignInModal}\n type=\"button\"\n >\n {gettext(\"Sign in\")}\n </button>\n </div>\n <div className=\"col-xs-6\">\n <RegisterButton className=\"btn-primary btn-register btn-block\">\n {gettext(\"Register\")}\n </RegisterButton>\n </div>\n </div>\n )}\n </li>\n </ul>\n )\n }\n}\n\nexport class GuestNav extends GuestMenu {\n render() {\n if (misago.get(\"SETTINGS\").DELEGATE_AUTH) {\n return (\n <div className=\"nav nav-guest\">\n <a\n className=\"btn navbar-btn btn-default btn-sign-in\"\n href={misago.get(\"SETTINGS\").LOGIN_URL}\n >\n {gettext(\"Sign in\")}\n </a>\n <div className=\"navbar-left\">\n <NavbarSearch />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"nav nav-guest\">\n <button\n className=\"btn navbar-btn btn-default btn-sign-in\"\n onClick={this.showSignInModal}\n type=\"button\"\n >\n {gettext(\"Sign in\")}\n </button>\n <RegisterButton className=\"navbar-btn btn-primary btn-register\">\n {gettext(\"Register\")}\n </RegisterButton>\n <div className=\"navbar-left\">\n <NavbarSearch />\n </div>\n </div>\n )\n }\n}\n\nexport class CompactGuestNav extends React.Component {\n showGuestMenu() {\n dropdown.show(GuestMenu)\n }\n\n render() {\n return (\n <button type=\"button\" onClick={this.showGuestMenu}>\n <Avatar size=\"64\" />\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport Loader from \"misago/components/loader\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n callApi(avatarType) {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: avatarType,\n })\n .then(\n (response) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.success(response.detail)\n this.props.onComplete(response)\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n setGravatar = () => {\n this.callApi(\"gravatar\")\n }\n\n setGenerated = () => {\n this.callApi(\"generated\")\n }\n\n getGravatarButton() {\n if (this.props.options.gravatar) {\n return (\n <Button\n onClick={this.setGravatar}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block btn-avatar-gravatar\"\n >\n {gettext(\"Download my Gravatar\")}\n </Button>\n )\n } else {\n return null\n }\n }\n\n getCropButton() {\n if (!this.props.options.crop_src) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-crop\"\n disabled={this.state.isLoading}\n onClick={this.props.showCrop}\n >\n {gettext(\"Re-crop uploaded image\")}\n </Button>\n )\n }\n\n getUploadButton() {\n if (!this.props.options.upload) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-upload\"\n disabled={this.state.isLoading}\n onClick={this.props.showUpload}\n >\n {gettext(\"Upload new image\")}\n </Button>\n )\n }\n\n getGalleryButton() {\n if (!this.props.options.galleries) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-gallery\"\n disabled={this.state.isLoading}\n onClick={this.props.showGallery}\n >\n {gettext(\"Pick avatar from gallery\")}\n </Button>\n )\n }\n\n getAvatarPreview() {\n let userPeview = {\n id: this.props.user.id,\n avatars: this.props.options.avatars,\n }\n\n if (this.state.isLoading) {\n return (\n <div className=\"avatar-preview preview-loading\">\n <Avatar size=\"200\" user={userPeview} />\n <Loader />\n </div>\n )\n }\n\n return (\n <div className=\"avatar-preview\">\n <Avatar size=\"200\" user={userPeview} />\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"modal-body modal-avatar-index\">\n <div className=\"row\">\n <div className=\"col-md-5\">{this.getAvatarPreview()}</div>\n <div className=\"col-md-7\">\n {this.getGravatarButton()}\n\n <Button\n onClick={this.setGenerated}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block btn-avatar-generate\"\n >\n {gettext(\"Generate my individual avatar\")}\n </Button>\n\n {this.getCropButton()}\n {this.getUploadButton()}\n {this.getGalleryButton()}\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n deviceRatio: 1,\n }\n }\n\n getAvatarSize() {\n if (this.props.upload) {\n return this.props.options.crop_tmp.size\n } else {\n return this.props.options.crop_src.size\n }\n }\n\n getImagePath() {\n if (this.props.upload) {\n return this.props.dataUrl\n } else {\n return this.props.options.crop_src.url\n }\n }\n\n componentDidMount() {\n let cropit = $(\".crop-form\")\n let cropperWidth = this.getAvatarSize()\n\n const initialWidth = cropit.width()\n while (initialWidth < cropperWidth) {\n cropperWidth = cropperWidth / 2\n }\n\n const deviceRatio = this.getAvatarSize() / cropperWidth\n\n cropit.width(cropperWidth)\n\n cropit.cropit({\n width: cropperWidth,\n height: cropperWidth,\n exportZoom: deviceRatio,\n imageState: {\n src: this.getImagePath(),\n },\n onImageLoaded: () => {\n if (this.props.upload) {\n // center uploaded image\n let zoomLevel = cropit.cropit(\"zoom\")\n let imageSize = cropit.cropit(\"imageSize\")\n\n // is it wider than taller?\n if (imageSize.width > imageSize.height) {\n let displayedWidth = imageSize.width * zoomLevel\n let offsetX = (displayedWidth - this.getAvatarSize()) / -2\n\n cropit.cropit(\"offset\", {\n x: offsetX,\n y: 0,\n })\n } else if (imageSize.width < imageSize.height) {\n let displayedHeight = imageSize.height * zoomLevel\n let offsetY = (displayedHeight - this.getAvatarSize()) / -2\n\n cropit.cropit(\"offset\", {\n x: 0,\n y: offsetY,\n })\n } else {\n cropit.cropit(\"offset\", {\n x: 0,\n y: 0,\n })\n }\n } else {\n // use preserved crop\n let crop = this.props.options.crop_src.crop\n\n if (crop) {\n cropit.cropit(\"zoom\", crop.zoom)\n cropit.cropit(\"offset\", {\n x: crop.x,\n y: crop.y,\n })\n }\n }\n },\n })\n }\n\n componentWillUnmount() {\n $(\".crop-form\").cropit(\"disable\")\n }\n\n cropAvatar = () => {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n let avatarType = this.props.upload ? \"crop_tmp\" : \"crop_src\"\n let cropit = $(\".crop-form\")\n\n const deviceRatio = cropit.cropit(\"exportZoom\")\n const cropitOffset = cropit.cropit(\"offset\")\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: avatarType,\n crop: {\n offset: {\n x: cropitOffset.x * deviceRatio,\n y: cropitOffset.y * deviceRatio,\n },\n zoom: cropit.cropit(\"zoom\") * deviceRatio,\n },\n })\n .then(\n (data) => {\n this.props.onComplete(data)\n snackbar.success(data.detail)\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"modal-body modal-avatar-crop\">\n <div className=\"crop-form\">\n <div className=\"cropit-preview\" />\n <input type=\"range\" className=\"cropit-image-zoom-input\" />\n </div>\n </div>\n <div className=\"modal-footer\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.cropAvatar}\n loading={this.state.isLoading}\n className=\"btn-primary btn-block\"\n >\n {this.props.upload\n ? gettext(\"Set avatar\")\n : gettext(\"Crop image\")}\n </Button>\n\n <Button\n onClick={this.props.showIndex}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport AvatarCrop from \"misago/components/change-avatar/crop\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport fileSize from \"misago/utils/file-size\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n image: null,\n preview: null,\n progress: 0,\n uploaded: null,\n dataUrl: null,\n }\n }\n\n validateFile(image) {\n if (image.size > this.props.options.upload.limit) {\n return interpolate(\n gettext(\"Selected file is too big. (%(filesize)s)\"),\n {\n filesize: fileSize(image.size),\n },\n true\n )\n }\n\n let invalidTypeMsg = gettext(\"Selected file type is not supported.\")\n if (\n this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1\n ) {\n return invalidTypeMsg\n }\n\n let extensionFound = false\n let loweredFilename = image.name.toLowerCase()\n this.props.options.upload.allowed_extensions.map(function (extension) {\n if (loweredFilename.substr(extension.length * -1) === extension) {\n extensionFound = true\n }\n })\n\n if (!extensionFound) {\n return invalidTypeMsg\n }\n\n return false\n }\n\n pickFile = () => {\n document.getElementById(\"avatar-hidden-upload\").click()\n }\n\n uploadFile = () => {\n let image = document.getElementById(\"avatar-hidden-upload\").files[0]\n if (!image) return\n\n let validationError = this.validateFile(image)\n if (validationError) {\n snackbar.error(validationError)\n return\n }\n\n this.setState({\n image,\n preview: URL.createObjectURL(image),\n progress: 0,\n })\n\n let data = new FormData()\n data.append(\"avatar\", \"upload\")\n data.append(\"image\", image)\n\n ajax\n .upload(this.props.user.api.avatar, data, (progress) => {\n this.setState({\n progress,\n })\n })\n .then(\n (data) => {\n this.setState({\n options: data,\n uploaded: data.detail,\n })\n\n snackbar.info(\n gettext(\"Your image has been uploaded and you may now crop it.\")\n )\n },\n (rejection) => {\n if (rejection.status === 400 || rejection.status === 413) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n image: null,\n progress: 0,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n getUploadRequirements(options) {\n let extensions = options.allowed_extensions.map(function (extension) {\n return extension.substr(1)\n })\n\n return interpolate(\n gettext(\"%(files)s files smaller than %(limit)s\"),\n {\n files: extensions.join(\", \"),\n limit: fileSize(options.limit),\n },\n true\n )\n }\n\n getUploadButton() {\n return (\n <div className=\"modal-body modal-avatar-upload\">\n <Button className=\"btn-pick-file\" onClick={this.pickFile}>\n <div className=\"material-icon\">input</div>\n {gettext(\"Select file\")}\n </Button>\n <p className=\"text-muted\">\n {this.getUploadRequirements(this.props.options.upload)}\n </p>\n </div>\n )\n }\n\n getUploadProgressLabel() {\n return interpolate(\n gettext(\"%(progress)s % complete\"),\n {\n progress: this.state.progress,\n },\n true\n )\n }\n\n getUploadProgress() {\n return (\n <div className=\"modal-body modal-avatar-upload\">\n <div className=\"upload-progress\">\n <img src={this.state.preview} />\n\n <div className=\"progress\">\n <div\n className=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"{this.state.progress}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n style={{ width: this.state.progress + \"%\" }}\n >\n <span className=\"sr-only\">{this.getUploadProgressLabel()}</span>\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n renderUpload() {\n return (\n <div>\n <input\n type=\"file\"\n id=\"avatar-hidden-upload\"\n className=\"hidden-file-upload\"\n onChange={this.uploadFile}\n />\n {this.state.image ? this.getUploadProgress() : this.getUploadButton()}\n <div className=\"modal-footer\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.props.showIndex}\n disabled={!!this.state.image}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n\n renderCrop() {\n return (\n <AvatarCrop\n options={this.state.options}\n user={this.props.user}\n upload={this.state.uploaded}\n dataUrl={this.state.preview}\n onComplete={this.props.onComplete}\n showError={this.props.showError}\n showIndex={this.props.showIndex}\n />\n )\n }\n\n render() {\n if (this.state.uploaded) return this.renderCrop()\n\n return this.renderUpload()\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport batch from \"misago/utils/batch\"\n\nexport class GalleryItem extends React.Component {\n select = () => {\n this.props.select(this.props.id)\n }\n\n getClassName() {\n if (this.props.selection === this.props.id) {\n if (this.props.disabled) {\n return \"btn btn-avatar btn-disabled avatar-selected\"\n } else {\n return \"btn btn-avatar avatar-selected\"\n }\n } else if (this.props.disabled) {\n return \"btn btn-avatar btn-disabled\"\n } else {\n return \"btn btn-avatar\"\n }\n }\n\n render() {\n return (\n <button\n type=\"button\"\n className={this.getClassName()}\n disabled={this.props.disabled}\n onClick={this.select}\n >\n <img src={this.props.url} />\n </button>\n )\n }\n}\n\nexport class Gallery extends React.Component {\n render() {\n return (\n <div className=\"avatars-gallery\">\n <h3>{this.props.name}</h3>\n\n <div className=\"avatars-gallery-images\">\n {batch(this.props.images, 4, null).map((row, i) => {\n return (\n <div className=\"row\" key={i}>\n {row.map((item, i) => {\n return (\n <div className=\"col-xs-3\" key={i}>\n {item ? (\n <GalleryItem\n disabled={this.props.disabled}\n select={this.props.select}\n selection={this.props.selection}\n {...item}\n />\n ) : (\n <div className=\"blank-avatar\" />\n )}\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n selection: null,\n isLoading: false,\n }\n }\n\n select = (image) => {\n this.setState({\n selection: image,\n })\n }\n\n save = () => {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: \"galleries\",\n image: this.state.selection,\n })\n .then(\n (response) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.success(response.detail)\n this.props.onComplete(response)\n this.props.showIndex()\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"modal-body modal-avatar-gallery\">\n {this.props.options.galleries.map((item, i) => {\n return (\n <Gallery\n name={item.name}\n images={item.images}\n selection={this.state.selection}\n disabled={this.state.isLoading}\n select={this.select}\n key={i}\n />\n )\n })}\n </div>\n <div className=\"modal-footer\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.save}\n loading={this.state.isLoading}\n disabled={!this.state.selection}\n className=\"btn-primary btn-block\"\n >\n {this.state.selection\n ? gettext(\"Save choice\")\n : gettext(\"Select avatar\")}\n </Button>\n\n <Button\n onClick={this.props.showIndex}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport AvatarIndex from \"misago/components/change-avatar/index\"\nimport AvatarCrop from \"misago/components/change-avatar/crop\"\nimport AvatarUpload from \"misago/components/change-avatar/upload\"\nimport AvatarGallery from \"misago/components/change-avatar/gallery\"\nimport Loader from \"misago/components/modal-loader\"\nimport { updateAvatar } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport store from \"misago/services/store\"\n\nexport class ChangeAvatarError extends React.Component {\n getErrorReason() {\n if (this.props.reason) {\n return <p dangerouslySetInnerHTML={{ __html: this.props.reason }} />\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">remove_circle_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getErrorReason()}\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n componentDidMount() {\n ajax.get(this.props.user.api.avatar).then(\n (options) => {\n this.setState({\n component: AvatarIndex,\n options: options,\n error: null,\n })\n },\n (rejection) => {\n this.showError(rejection)\n }\n )\n }\n\n showError = (error) => {\n this.setState({\n error,\n })\n }\n\n showIndex = () => {\n this.setState({\n component: AvatarIndex,\n })\n }\n\n showUpload = () => {\n this.setState({\n component: AvatarUpload,\n })\n }\n\n showCrop = () => {\n this.setState({\n component: AvatarCrop,\n })\n }\n\n showGallery = () => {\n this.setState({\n component: AvatarGallery,\n })\n }\n\n completeFlow = (options) => {\n store.dispatch(updateAvatar(this.props.user, options.avatars))\n\n this.setState({\n component: AvatarIndex,\n options,\n })\n }\n\n getBody() {\n if (this.state) {\n if (this.state.error) {\n return (\n <ChangeAvatarError\n message={this.state.error.detail}\n reason={this.state.error.reason}\n />\n )\n } else {\n return (\n <this.state.component\n options={this.state.options}\n user={this.props.user}\n onComplete={this.completeFlow}\n showError={this.showError}\n showIndex={this.showIndex}\n showCrop={this.showCrop}\n showUpload={this.showUpload}\n showGallery={this.showGallery}\n />\n )\n }\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state && this.state.error) {\n return \"modal-dialog modal-message modal-change-avatar\"\n } else {\n return \"modal-dialog modal-change-avatar\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change your avatar\")}</h4>\n </div>\n\n {this.getBody()}\n </div>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return {\n user: state.auth.user,\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport Avatar from \"misago/components/avatar\"\nimport ChangeAvatarModal, { select } from \"misago/components/change-avatar/root\"\nimport NavbarSearch from \"misago/components/navbar-search\"\nimport misago from \"misago\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\nimport modal from \"misago/services/modal\"\n\nexport class UserMenu extends React.Component {\n changeAvatar() {\n modal.show(connect(select)(ChangeAvatarModal))\n }\n\n render() {\n const { user } = this.props\n\n return (\n <ul\n className=\"dropdown-menu user-dropdown dropdown-menu-right\"\n role=\"menu\"\n >\n <li className=\"dropdown-header\">\n <strong>{user.username}</strong>\n <div className=\"row user-stats\">\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">message</span>\n {user.posts}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">forum</span>\n {user.threads}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">favorite</span>\n {user.followers}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">favorite_outline</span>\n {user.following}\n </div>\n </div>\n </li>\n <li className=\"divider\" />\n <li>\n <a href={user.url}>\n <span className=\"material-icon\">account_circle</span>\n {gettext(\"See your profile\")}\n </a>\n </li>\n <li>\n <a href={misago.get(\"USERCP_URL\")}>\n <span className=\"material-icon\">done_all</span>\n {gettext(\"Change options\")}\n </a>\n </li>\n <li>\n <button\n className=\"btn-link\"\n onClick={this.changeAvatar}\n type=\"button\"\n >\n <span className=\"material-icon\">portrait</span>\n {gettext(\"Change avatar\")}\n </button>\n </li>\n {!!user.acl.can_use_private_threads && (\n <li>\n <a href={misago.get(\"PRIVATE_THREADS_URL\")}>\n <span className=\"material-icon\">message</span>\n {gettext(\"Private threads\")}\n <PrivateThreadsBadge user={user} />\n </a>\n </li>\n )}\n <li className=\"divider\" />\n <li className=\"dropdown-buttons\">\n <button\n className=\"btn btn-default btn-block\"\n onClick={() =>\n document.getElementById(\"hidden-logout-form\").submit()\n }\n type=\"button\"\n >\n {gettext(\"Log out\")}\n </button>\n </li>\n </ul>\n )\n }\n}\n\nexport function PrivateThreadsBadge({ user }) {\n if (!user.unread_private_threads) return null\n\n return <span className=\"badge\">{user.unread_private_threads}</span>\n}\n\nexport function UserNav({ user }) {\n return (\n <ul className=\"ul nav navbar-nav nav-user\">\n <li>\n <NavbarSearch />\n </li>\n <UserPrivateThreadsLink user={user} />\n <li className=\"dropdown\">\n <a\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className=\"dropdown-toggle\"\n data-toggle=\"dropdown\"\n href={user.url}\n role=\"button\"\n >\n <Avatar user={user} size=\"64\" />\n </a>\n <UserMenu user={user} />\n </li>\n </ul>\n )\n}\n\nexport function UserPrivateThreadsLink({ user }) {\n if (!user.acl.can_use_private_threads) return null\n\n let title = null\n if (user.unread_private_threads) {\n title = gettext(\"You have unread private threads!\")\n } else {\n title = gettext(\"Private threads\")\n }\n\n return (\n <li>\n <a\n className=\"navbar-icon\"\n href={misago.get(\"PRIVATE_THREADS_URL\")}\n title={title}\n >\n <span className=\"material-icon\">message</span>\n {user.unread_private_threads > 0 && (\n <span className=\"badge\">{user.unread_private_threads}</span>\n )}\n </a>\n </li>\n )\n}\n\nexport function selectUserMenu(state) {\n return {\n user: state.auth.user,\n }\n}\n\nexport class CompactUserNav extends React.Component {\n showUserMenu() {\n dropdown.showConnected(\"user-menu\", connect(selectUserMenu)(UserMenu))\n }\n\n render() {\n return (\n <button type=\"button\" onClick={this.showUserMenu}>\n <Avatar user={this.props.user} size=\"50\" />\n </button>\n )\n }\n}\n","import React from \"react\"\nimport { GuestNav, CompactGuestNav } from \"./guest-nav\"\nimport { UserNav, CompactUserNav } from \"./user-nav\"\n\nexport class UserMenu extends React.Component {\n render() {\n if (this.props.isAuthenticated) {\n return <UserNav user={this.props.user} />\n } else {\n return <GuestNav />\n }\n }\n}\n\nexport class CompactUserMenu extends React.Component {\n render() {\n if (this.props.isAuthenticated) {\n return <CompactUserNav user={this.props.user} />\n } else {\n return <CompactGuestNav />\n }\n }\n}\n\nexport function select(state) {\n return state.auth\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport {\n UserMenu,\n CompactUserMenu,\n select,\n} from \"misago/components/user-menu/root\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(UserMenu), \"user-menu-mount\")\n mount(connect(select)(CompactUserMenu), \"user-menu-compact-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:user-menu\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nconst UsersNav = ({ baseUrl, page, pages }) => (\n <div className=\"nav-container\">\n <div className=\"dropdown hidden-sm hidden-md hidden-lg\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">menu</span>\n {page.name}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {pages.map((page) => {\n const url = getPageUrl(baseUrl, page)\n return (\n <li key={url}>\n <Link to={url}>{page.name}</Link>\n </li>\n )\n })}\n </ul>\n </div>\n <ul className=\"nav nav-pills hidden-xs\" role=\"menu\">\n {pages.map((page) => {\n const url = getPageUrl(baseUrl, page)\n return (\n <Li path={url} key={url}>\n <Link to={url}>{page.name}</Link>\n </Li>\n )\n })}\n </ul>\n </div>\n)\n\nconst getPageUrl = (baseUrl, page) => {\n let url = baseUrl\n if (page.component === \"rank\") {\n url += page.slug\n } else {\n url += page.component\n }\n return url + \"/\"\n}\n\nexport default UsersNav\n","import React from \"react\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n getEmptyMessage() {\n return interpolate(\n gettext(\n \"No users have posted any new messages during last %(days)s days.\"\n ),\n { days: this.props.trackedPeriod },\n true\n )\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead\">{this.getEmptyMessage()}</p>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n getClassName() {\n if (this.props.hiddenOnMobile) {\n return \"list-group-item hidden-xs hidden-sm\"\n } else {\n return \"list-group-item\"\n }\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"rank-user-avatar\">\n <span>\n <Avatar size=\"50\" />\n </span>\n </div>\n\n <div className=\"rank-user\">\n <div className=\"user-name\">\n <span className=\"item-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 80) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n\n <div className=\"user-details\">\n <span className=\"user-status\">\n <span className=\"status-icon ui-preview-text\"> </span>\n <span\n className=\"status-label ui-preview-text hidden-xs hidden-sm\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n <span className=\"rank-name\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n <span className=\"user-title hidden-xs hidden-sm\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n <div className=\"user-compact-stats visible-xs-block\">\n <span className=\"rank-position\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Rank\")}</small>\n </span>\n <span className=\"rank-posts-counted\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </span>\n </div>\n </div>\n\n <div className=\"rank-position hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Rank\")}</small>\n </div>\n\n <div className=\"rank-posts-counted hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </div>\n\n <div className=\"rank-posts-total hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Total posts\")}</small>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ItemPreview from \"misago/components/users/active-posters/list-item-preview\"\nimport * as random from \"misago/utils/random\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead ui-preview\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(50, 220) + \"px\" }}\n >\n \n </span>\n </p>\n\n <div className=\"active-posters ui-preview\">\n <ul className=\"list-group\">\n {[0, 1, 2].map((i) => {\n return <ItemPreview hiddenOnMobile={i > 0} key={i} />\n })}\n </ul>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Avatar from \"misago/components/avatar\"\nimport Status, { StatusIcon, StatusLabel } from \"misago/components/user-status\"\nimport misago from \"misago/index\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.rank.css_class) {\n return \"list-group-item list-group-rank-\" + this.props.rank.css_class\n } else {\n return \"list-group-item\"\n }\n }\n\n getUserStatus() {\n if (this.props.user.status) {\n return (\n <Status user={this.props.user} status={this.props.user.status}>\n <StatusIcon user={this.props.user} status={this.props.user.status} />\n <StatusLabel\n user={this.props.user}\n status={this.props.user.status}\n className=\"status-label hidden-xs hidden-sm\"\n />\n </Status>\n )\n }\n\n return (\n <span className=\"user-status\">\n <span className=\"status-icon ui-preview-text\"> </span>\n <span\n className=\"status-label ui-preview-text hidden-xs hidden-sm\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n )\n }\n\n getRankName() {\n if (!this.props.rank.is_tab) {\n return (\n <span className=\"rank-name item-title\">{this.props.rank.name}</span>\n )\n }\n\n let rankUrl = misago.get(\"USERS_LIST_URL\") + this.props.rank.slug + \"/\"\n return (\n <Link to={rankUrl} className=\"rank-name item-title\">\n {this.props.rank.name}\n </Link>\n )\n }\n\n getUserTitle() {\n if (!this.props.user.title) return null\n\n return (\n <span className=\"user-title hidden-xs hidden-sm\">\n {this.props.user.title}\n </span>\n )\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"rank-user-avatar\">\n <a href={this.props.user.url}>\n <Avatar user={this.props.user} size={50} size2x={64} />\n </a>\n </div>\n\n <div className=\"rank-user\">\n <div className=\"user-name\">\n <a href={this.props.user.url} className=\"item-title\">\n {this.props.user.username}\n </a>\n </div>\n <div className=\"user-details\">\n {this.getUserStatus()}\n {this.getRankName()}\n {this.getUserTitle()}\n </div>\n <div className=\"user-compact-stats visible-xs-block\">\n <span className=\"rank-position\">\n <strong>#{this.props.counter}</strong>\n <small>{gettext(\"Rank\")}</small>\n </span>\n\n <span className=\"rank-posts-counted\">\n <strong>{this.props.user.meta.score}</strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </span>\n </div>\n </div>\n\n <div className=\"rank-position hidden-xs\">\n <strong>#{this.props.counter}</strong>\n <small>{gettext(\"Rank\")}</small>\n </div>\n\n <div className=\"rank-posts-counted hidden-xs\">\n <strong>{this.props.user.meta.score}</strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </div>\n\n <div className=\"rank-posts-total hidden-xs\">\n <strong>{this.props.user.posts}</strong>\n <small>{gettext(\"Total posts\")}</small>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ListItem from \"misago/components/users/active-posters/list-item\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n getLeadMessage() {\n let message = ngettext(\n \"%(posters)s top poster from last %(days)s days.\",\n \"%(posters)s top posters from last %(days)s days.\",\n this.props.count\n )\n\n return interpolate(\n message,\n {\n posters: this.props.count,\n days: this.props.trackedPeriod,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead\">{this.getLeadMessage()}</p>\n\n <div className=\"active-posters ui-ready\">\n <ul className=\"list-group\">\n {this.props.users.map((user, i) => {\n return (\n <ListItem\n user={user}\n rank={user.rank}\n counter={i + 1}\n key={user.id}\n />\n )\n })}\n </ul>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ListEmpty from \"misago/components/users/active-posters/list-empty\"\nimport ListPreview from \"misago/components/users/active-posters/list-preview\"\nimport ListReady from \"misago/components/users/active-posters/list-ready\"\nimport misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/users\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"USERS\")) {\n this.initWithPreloadedData(misago.pop(\"USERS\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling()\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n\n trackedPeriod: data.tracked_period,\n count: data.count,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling() {\n polls.start({\n poll: \"active-posters\",\n url: misago.get(\"USERS_API\"),\n data: {\n list: \"active\",\n },\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data.results))\n\n this.setState({\n isLoaded: true,\n\n trackedPeriod: data.tracked_period,\n count: data.count,\n })\n }\n\n componentDidMount() {\n title.set({\n title: this.props.route.extra.name,\n parent: gettext(\"Users\"),\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"active-posters\")\n }\n\n render() {\n const page = { name: this.props.route.extra.name }\n\n if (this.state.isLoaded) {\n if (this.state.count > 0) {\n return (\n <ListReady\n page={page}\n users={this.props.users}\n trackedPeriod={this.state.trackedPeriod}\n count={this.state.count}\n />\n )\n } else {\n return (\n <ListEmpty page={page} trackedPeriod={this.state.trackedPeriod} />\n )\n }\n } else {\n return <ListPreview page={page} />\n }\n }\n}\n","import React from \"react\"\nimport stringCount from \"misago/utils/string-count\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.copy && this.props.copy.length) {\n if (\n stringCount(this.props.copy, \"<p\") === 1 &&\n this.props.copy.indexOf(\"<br\") === -1\n ) {\n return \"page-lead lead\"\n }\n }\n\n return \"page-lead\"\n }\n\n render() {\n if (this.props.copy && this.props.copy.length) {\n return (\n <div\n className={this.getClassName()}\n dangerouslySetInnerHTML={{\n __html: this.props.copy,\n }}\n />\n )\n } else {\n return null\n }\n }\n}\n","export default function (string, subString) {\n string = (string + \"\").toLowerCase()\n subString = (subString + \"\").toLowerCase()\n\n if (subString.length <= 0) return 0\n\n let n = 0\n let pos = 0\n let step = subString.length\n\n while (true) {\n pos = string.indexOf(subString, pos)\n if (pos >= 0) {\n n += 1\n pos += step\n } else {\n break\n }\n }\n\n return n\n}\n","import React from \"react\"\nimport UsersList from \"../../users-list\"\n\nconst RankUsersList = ({ users }) => (\n <UsersList cols={4} isReady={true} showStatus={true} users={users} />\n)\n\nexport default RankUsersList\n","import React from \"react\"\nimport UsersList from \"misago/components/users-list\"\n\nclass RankUsersListLoader extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render = () => <UsersList cols={4} isReady={false} />\n}\n\nexport default RankUsersListLoader\n","import React from \"react\"\n\nconst RankUsersLeft = ({ users }) => {\n if (users.more) {\n return (\n <p>\n {interpolate(\n ngettext(\n \"There is %(more)s more member with this role.\",\n \"There are %(more)s more members with this role.\",\n users.more\n ),\n { more: users.more },\n true\n )}\n </p>\n )\n }\n\n return <p>{gettext(\"There are no more members with this role.\")}</p>\n}\n\nexport default RankUsersLeft\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst RankUsersPagination = ({ baseUrl, users }) => (\n <div className=\"misago-pagination\">\n {users.isLoaded && users.first ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl}\n title={gettext(\"Go to first page\")}\n >\n <span className=\"material-icon\">first_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to first page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">first_page</span>\n </button>\n )}\n {users.isLoaded && users.previous ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + (users.previous > 1 ? users.previous + \"/\" : \"\")}\n title={gettext(\"Go to previous page\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to previous page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_left</span>\n </button>\n )}\n {users.isLoaded && users.next ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + users.next + \"/\"}\n title={gettext(\"Go to next page\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to next page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_right</span>\n </button>\n )}\n {users.isLoaded && users.last ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + users.last + \"/\"}\n title={gettext(\"Go to last page\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to last page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">last_page</span>\n </button>\n )}\n </div>\n)\n\nexport default RankUsersPagination\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\nimport RankUsersLeft from \"./RankUsersLeft\"\nimport RankUsersPagination from \"./RankUsersPagination\"\n\nconst RankUsersToolbar = ({ baseUrl, users }) => (\n <Toolbar>\n <ToolbarSection>\n <ToolbarItem>\n <RankUsersPagination baseUrl={baseUrl} users={users} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection auto>\n <ToolbarItem>\n <RankUsersLeft users={users} />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n)\n\nexport default RankUsersToolbar\n","import React from \"react\"\nimport PageLead from \"misago/components/page-lead\"\nimport misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/users\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport PageContainer from \"../../PageContainer\"\nimport RankUsersList from \"./RankUsersList\"\nimport RankUsersListLoader from \"./RankUsersListLoader\"\nimport RankUsersToolbar from \"./RankUsersToolbar\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"USERS\")) {\n this.initWithPreloadedData(misago.pop(\"USERS\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling(props.params.page || 1)\n }\n\n initWithPreloadedData(data) {\n this.state = Object.assign(data, {\n isLoaded: true,\n })\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling(page) {\n polls.start({\n poll: \"rank-users\",\n url: misago.get(\"USERS_API\"),\n data: {\n rank: this.props.route.rank.id,\n page: page,\n },\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data.results))\n\n data.isLoaded = true\n this.setState(data)\n }\n\n componentDidMount() {\n title.set({\n title: this.props.route.rank.name,\n page: this.props.params.page || null,\n parent: gettext(\"Users\"),\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"rank-users\")\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.params.page !== nextProps.params.page) {\n title.set({\n title: this.props.route.rank.name,\n page: nextProps.params.page || null,\n parent: gettext(\"Users\"),\n })\n\n this.setState({\n isLoaded: false,\n })\n\n polls.stop(\"rank-users\")\n this.startPolling(nextProps.params.page)\n }\n }\n\n getClassName() {\n if (this.props.route.rank.css_class) {\n return \"rank-users-list rank-users-\" + this.props.route.rank.css_class\n } else {\n return \"rank-users-list\"\n }\n }\n\n getRankDescription() {\n if (this.props.route.rank.description) {\n return (\n <div className=\"rank-description\">\n <PageLead copy={this.props.route.rank.description.html} />\n </div>\n )\n } else {\n return null\n }\n }\n\n getComponent() {\n if (this.state.isLoaded) {\n if (this.state.count > 0) {\n return <RankUsersList users={this.props.users} />\n } else {\n return (\n <p className=\"lead\">\n {gettext(\"There are no users with this rank at the moment.\")}\n </p>\n )\n }\n } else {\n return <RankUsersListLoader />\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={{ name: this.props.route.rank.name }}\n pages={misago.get(\"USERS_LISTS\")}\n />\n {this.getRankDescription()}\n {this.getComponent()}\n <RankUsersToolbar\n baseUrl={\n misago.get(\"USERS_LIST_URL\") + this.props.route.rank.slug + \"/\"\n }\n users={this.state}\n />\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport ActivePosters from \"misago/components/users/active-posters/root\"\nimport Rank from \"misago/components/users/rank/root\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n render() {\n return (\n <div className=\"page page-users-lists\">\n <PageHeaderContainer>\n <PageHeader styleName=\"users-lists\">\n <PageHeaderBanner styleName=\"users-lists\">\n <h1>{gettext(\"Users\")}</h1>\n </PageHeaderBanner>\n </PageHeader>\n </PageHeaderContainer>\n {this.props.children}\n </div>\n )\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n }\n}\n\nexport function paths() {\n let paths = []\n\n misago.get(\"USERS_LISTS\").forEach(function (item) {\n if (item.component === \"rank\") {\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.slug + \"/:page/\",\n component: connect(select)(Rank),\n rank: item,\n })\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.slug + \"/\",\n component: connect(select)(Rank),\n rank: item,\n })\n } else if (item.component === \"active-posters\") {\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.component + \"/\",\n component: connect(select)(ActivePosters),\n extra: {\n name: item.name,\n },\n })\n }\n })\n\n return paths\n}\n","import Users, { paths } from \"misago/components/users/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"USERS_LISTS\")) {\n mount({\n root: misago.get(\"USERS_LIST_URL\"),\n component: Users,\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:users\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport include from \"misago/services/include\"\n\nexport default function initializer(context) {\n include.init(context.get(\"STATIC_URL\"))\n}\n\nmisago.addInitializer({\n name: \"include\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport storage from \"misago/services/local-storage\"\n\nexport default function initializer() {\n storage.init(\"misago_\")\n}\n\nmisago.addInitializer({\n name: \"local-storage\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\n\nexport default function initializer() {\n let element = document.getElementById(\"mobile-navbar-dropdown-mount\")\n if (element) {\n dropdown.init(element)\n }\n}\n\nmisago.addInitializer({\n name: \"dropdown\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport modal from \"misago/services/modal\"\n\nexport default function initializer() {\n let element = document.getElementById(\"modal-mount\")\n if (element) {\n modal.init(element)\n }\n}\n\nmisago.addInitializer({\n name: \"modal\",\n initializer: initializer,\n before: \"store\",\n})\n","import moment from \"moment\"\nimport misago from \"misago/index\"\n\nexport default function initializer() {\n moment.locale($(\"html\").attr(\"lang\"))\n}\n\nmisago.addInitializer({\n name: \"moment\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport title from \"misago/services/page-title\"\n\nexport default function initializer(context) {\n title.init(\n context.get(\"SETTINGS\").forum_index_title,\n context.get(\"SETTINGS\").forum_name\n )\n}\n\nmisago.addInitializer({\n name: \"page-title\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport polls from \"misago/services/polls\"\n\nexport default function initializer() {\n polls.init(ajax, snackbar)\n}\n\nmisago.addInitializer({\n name: \"polls\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default function initializer() {\n posting.init(ajax, snackbar, document.getElementById(\"posting-placeholder\"))\n}\n\nmisago.addInitializer({\n name: \"posting\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/auth\"\nimport store from \"misago/services/store\"\n\nexport default function initializer(context) {\n store.addReducer(\n \"auth\",\n reducer,\n Object.assign(\n {\n isAuthenticated: context.get(\"isAuthenticated\"),\n isAnonymous: !context.get(\"isAuthenticated\"),\n\n user: context.get(\"user\"),\n },\n initialState\n )\n )\n}\n\nmisago.addInitializer({\n name: \"reducer:auth\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/participants\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\")) {\n initialState = misago.get(\"THREAD\").participants\n }\n\n store.addReducer(\"participants\", reducer, initialState || [])\n}\n\nmisago.addInitializer({\n name: \"reducer:participants\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/poll\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\") && misago.get(\"THREAD\").poll) {\n initialState = hydrate(misago.get(\"THREAD\").poll)\n } else {\n initialState = {\n isBusy: false,\n }\n }\n\n store.addReducer(\"poll\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:poll\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/posts\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"POSTS\")) {\n initialState = hydrate(misago.get(\"POSTS\"))\n } else {\n initialState = {\n isLoaded: false,\n isBusy: false,\n }\n }\n\n store.addReducer(\"posts\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:posts\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/profile-details\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"PROFILE_DETAILS\")) {\n initialState = misago.get(\"PROFILE_DETAILS\")\n }\n\n store.addReducer(\"profile-details\", reducer, initialState || {})\n}\n\nmisago.addInitializer({\n name: \"reducer:profile-details\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/profile\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n if (misago.has(\"PROFILE\")) {\n store.dispatch(hydrate(misago.get(\"PROFILE\")))\n }\n}\n\nmisago.addInitializer({\n name: \"reducer:profile-hydrate\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/profile\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"profile\", reducer, {})\n}\n\nmisago.addInitializer({\n name: \"reducer:profile\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago\"\nimport reducer, { initialState } from \"misago/reducers/search\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\n \"search\",\n reducer,\n Object.assign({}, initialState, {\n providers: misago.get(\"SEARCH_PROVIDERS\") || [],\n query: misago.get(\"SEARCH_QUERY\") || \"\",\n })\n )\n}\n\nmisago.addInitializer({\n name: \"reducer:search\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/selection\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"selection\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:selection\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"snackbar\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:snackbar\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/thread\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\")) {\n initialState = hydrate(misago.get(\"THREAD\"))\n } else {\n initialState = {\n isBusy: false,\n }\n }\n\n store.addReducer(\"thread\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:thread\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/threads\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"threads\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:threads\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/tick\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"tick\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:tick\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/username-history\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"username-history\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:username-history\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/users\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"users\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:users\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n snackbar.init(store)\n}\n\nmisago.addInitializer({\n name: \"snackbar\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.init()\n}\n\nmisago.addInitializer({\n name: \"store\",\n initializer: initializer,\n before: \"_end\",\n})\n","import misago from \"misago/index\"\nimport { doTick } from \"misago/reducers/tick\"\nimport store from \"misago/services/store\"\n\nconst TICK_PERIOD = 50 * 1000 //do the tick every 50s\n\nexport default function initializer() {\n window.setInterval(function () {\n store.dispatch(doTick())\n }, TICK_PERIOD)\n}\n\nmisago.addInitializer({\n name: \"tick-start\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport include from \"misago/services/include\"\nimport zxcvbn from \"misago/services/zxcvbn\"\n\nexport default function initializer() {\n zxcvbn.init(include)\n}\n\nmisago.addInitializer({\n name: \"zxcvbn\",\n initializer: initializer,\n})\n","import { UPDATE_AVATAR, UPDATE_USERNAME } from \"misago/reducers/users\"\n\nexport var initialState = {\n signedIn: false,\n signedOut: false,\n}\n\nexport const PATCH_USER = \"PATCH_USER\"\nexport const SIGN_IN = \"SIGN_IN\"\nexport const SIGN_OUT = \"SIGN_OUT\"\n\nexport function patch(patch) {\n return {\n type: PATCH_USER,\n patch,\n }\n}\n\nexport function signIn(user) {\n return {\n type: SIGN_IN,\n user,\n }\n}\n\nexport function signOut(soft = false) {\n return {\n type: SIGN_OUT,\n soft,\n }\n}\n\nexport default function auth(state = initialState, action = null) {\n switch (action.type) {\n case PATCH_USER:\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, action.patch)\n return newState\n\n case SIGN_IN:\n return Object.assign({}, state, {\n signedIn: action.user,\n })\n\n case SIGN_OUT:\n return Object.assign({}, state, {\n isAuthenticated: false,\n isAnonymous: true,\n signedOut: !action.soft,\n })\n\n case UPDATE_AVATAR:\n if (state.isAuthenticated && state.user.id === action.userId) {\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, {\n avatars: action.avatars,\n })\n return newState\n }\n return state\n\n case UPDATE_USERNAME:\n if (state.isAuthenticated && state.user.id === action.userId) {\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, {\n username: action.username,\n slug: action.slug,\n })\n return newState\n }\n return state\n\n default:\n return state\n }\n}\n","export const REPLACE_PARTICIPANTS = \"REPLACE_PARTICIPANTS\"\n\nexport function replace(newState) {\n return {\n type: REPLACE_PARTICIPANTS,\n state: newState,\n }\n}\n\nexport default function participants(state = [], action = null) {\n switch (action.type) {\n case REPLACE_PARTICIPANTS:\n return action.state\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\n\nexport const BUSY_POLL = \"BUSY_POLL\"\nexport const RELEASE_POLL = \"RELEASE_POLL\"\nexport const REMOVE_POLL = \"REMOVE_POLL\"\nexport const REPLACE_POLL = \"REPLACE_POLL\"\nexport const UPDATE_POLL = \"UPDATE_POLL\"\n\nexport function hydrate(json) {\n let hasSelectedChoices = false\n for (const i in json.choices) {\n const choice = json.choices[i]\n if (choice.selected) {\n hasSelectedChoices = true\n break\n }\n }\n\n return Object.assign({}, json, {\n posted_on: moment(json.posted_on),\n\n hasSelectedChoices,\n endsOn: json.length\n ? moment(json.posted_on).add(json.length, \"days\")\n : null,\n\n isBusy: false,\n })\n}\n\nexport function busy() {\n return {\n type: BUSY_POLL,\n }\n}\n\nexport function release() {\n return {\n type: RELEASE_POLL,\n }\n}\n\nexport function replace(newState, hydrated = false) {\n return {\n type: REPLACE_POLL,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function update(data) {\n return {\n type: UPDATE_POLL,\n data,\n }\n}\n\nexport function remove() {\n return {\n type: REMOVE_POLL,\n }\n}\n\nexport default function poll(state = {}, action = null) {\n switch (action.type) {\n case BUSY_POLL:\n return Object.assign({}, state, { isBusy: true })\n\n case RELEASE_POLL:\n return Object.assign({}, state, { isBusy: false })\n\n case REMOVE_POLL:\n return {\n isBusy: false,\n }\n\n case REPLACE_POLL:\n return action.state\n\n case UPDATE_POLL:\n return Object.assign({}, state, action.data)\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport { hydrateUser } from \"./users\"\n\nexport const PATCH_POST = \"PATCH_POST\"\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n posted_on: moment(json.posted_on),\n updated_on: moment(json.updated_on),\n hidden_on: moment(json.hidden_on),\n\n attachments: json.attachments\n ? json.attachments.map(hydrateAttachment)\n : null,\n poster: json.poster ? hydrateUser(json.poster) : null,\n\n isSelected: false,\n isBusy: false,\n isDeleted: false,\n })\n}\n\nexport function hydrateAttachment(json) {\n return Object.assign({}, json, {\n uploaded_on: moment(json.uploaded_on),\n })\n}\n\nexport function patch(post, patch) {\n return {\n type: PATCH_POST,\n post,\n patch,\n }\n}\n\nexport default function post(state = {}, action = null) {\n switch (action.type) {\n case PATCH_POST:\n if (state.id == action.post.id) {\n return Object.assign({}, state, action.patch)\n }\n return state\n\n default:\n return state\n }\n}\n","import postReducer, {\n PATCH_POST,\n hydrate as hydratePost,\n} from \"misago/reducers/post\"\n\nexport const APPEND_POSTS = \"APPEND_POSTS\"\nexport const SELECT_POST = \"SELECT_POST\"\nexport const DESELECT_POST = \"DESELECT_POST\"\nexport const DESELECT_POSTS = \"DESELECT_POSTS\"\nexport const LOAD_POSTS = \"LOAD_POSTS\"\nexport const UNLOAD_POSTS = \"UNLOAD_POSTS\"\nexport const UPDATE_POSTS = \"UPDATE_POSTS\"\n\nexport function select(post) {\n return {\n type: SELECT_POST,\n post,\n }\n}\n\nexport function deselect(post) {\n return {\n type: DESELECT_POST,\n post,\n }\n}\n\nexport function deselectAll() {\n return {\n type: DESELECT_POSTS,\n }\n}\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n results: json.results.map(hydratePost),\n isLoaded: true,\n isBusy: false,\n isSelected: false,\n })\n}\n\nexport function load(newState, hydrated = false) {\n return {\n type: LOAD_POSTS,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function append(newState, hydrated = false) {\n return {\n type: APPEND_POSTS,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function unload() {\n return {\n type: UNLOAD_POSTS,\n }\n}\n\nexport function update(newState) {\n return {\n type: UPDATE_POSTS,\n update: newState,\n }\n}\n\nexport default function posts(state = {}, action = null) {\n switch (action.type) {\n case SELECT_POST:\n const selectedPosts = state.results.map((post) => {\n if (post.id == action.post.id) {\n return Object.assign({}, post, {\n isSelected: true,\n })\n } else {\n return post\n }\n })\n\n return Object.assign({}, state, {\n results: selectedPosts,\n })\n\n case DESELECT_POST:\n const deseletedPosts = state.results.map((post) => {\n if (post.id == action.post.id) {\n return Object.assign({}, post, {\n isSelected: false,\n })\n } else {\n return post\n }\n })\n\n return Object.assign({}, state, {\n results: deseletedPosts,\n })\n\n case DESELECT_POSTS:\n const deseletedAllPosts = state.results.map((post) => {\n return Object.assign({}, post, {\n isSelected: false,\n })\n })\n\n return Object.assign({}, state, {\n results: deseletedAllPosts,\n })\n\n case APPEND_POSTS:\n let results = state.results.slice()\n const resultsIds = state.results.map((post) => {\n return post.id\n })\n\n action.state.results.map((post) => {\n if (resultsIds.indexOf(post.id) === -1) {\n results.push(post)\n }\n })\n\n return Object.assign({}, action.state, {\n results,\n })\n\n case LOAD_POSTS:\n return action.state\n\n case UNLOAD_POSTS:\n return Object.assign({}, state, {\n isLoaded: false,\n })\n\n case UPDATE_POSTS:\n return Object.assign({}, state, action.update)\n\n case PATCH_POST:\n const reducedPosts = state.results.map((post) => {\n return postReducer(post, action)\n })\n\n return Object.assign({}, state, {\n results: reducedPosts,\n })\n\n default:\n return state\n }\n}\n","export const LOAD_DETAILS = \"LOAD_DETAILS\"\n\nexport function load(newState) {\n return {\n type: LOAD_DETAILS,\n\n newState,\n }\n}\n\nexport default function details(state = {}, action = null) {\n switch (action.type) {\n case LOAD_DETAILS:\n return action.newState\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport {\n UPDATE_AVATAR,\n UPDATE_USERNAME,\n hydrateStatus,\n} from \"misago/reducers/users\"\n\nexport const HYDRATE_PROFILE = \"HYDRATE_PROFILE\"\nexport const PATCH_PROFILE = \"PATCH_PROFILE\"\n\nexport function hydrate(profile) {\n return {\n type: HYDRATE_PROFILE,\n profile,\n }\n}\n\nexport function patch(patch) {\n return {\n type: PATCH_PROFILE,\n patch,\n }\n}\n\nexport default function auth(state = {}, action = null) {\n switch (action.type) {\n case HYDRATE_PROFILE:\n return Object.assign({}, action.profile, {\n joined_on: moment(action.profile.joined_on),\n status: hydrateStatus(action.profile.status),\n })\n\n case PATCH_PROFILE:\n return Object.assign({}, state, action.patch)\n\n case UPDATE_AVATAR:\n if (state.id === action.userId) {\n return Object.assign({}, state, {\n avatars: action.avatars,\n })\n }\n return state\n\n case UPDATE_USERNAME:\n if (state.id === action.userId) {\n return Object.assign({}, state, {\n username: action.username,\n slug: action.slug,\n })\n }\n return state\n\n default:\n return state\n }\n}\n","export const REPLACE_SEARCH = \"REPLACE_SEARCH\"\nexport const UPDATE_SEARCH = \"UPDATE_SEARCH\"\nexport const UPDATE_SEARCH_PROVIDER = \"UPDATE_SEARCH_PROVIDER\"\n\nexport const initialState = {\n isLoading: false,\n query: \"\",\n providers: [],\n}\n\nexport function replace(newState) {\n return {\n type: REPLACE_SEARCH,\n state: {\n isLoading: false,\n providers: newState,\n },\n }\n}\n\nexport function update(newState) {\n return {\n type: UPDATE_SEARCH,\n update: newState,\n }\n}\n\nexport function updateProvider(provider) {\n return {\n type: UPDATE_SEARCH_PROVIDER,\n provider: provider,\n }\n}\n\nexport default function participants(state = {}, action = null) {\n switch (action.type) {\n case REPLACE_SEARCH:\n return action.state\n\n case UPDATE_SEARCH:\n return Object.assign({}, state, action.update)\n\n case UPDATE_SEARCH_PROVIDER:\n return Object.assign({}, state, {\n providers: state.providers.map((provider) => {\n if (provider.id === action.provider.id) {\n return action.provider\n } else {\n return provider\n }\n }),\n })\n\n default:\n return state\n }\n}\n","import { toggle } from \"misago/utils/sets\"\n\nexport const SELECT_ALL = \"SELECT_ALL\"\nexport const SELECT_NONE = \"SELECT_NONE\"\nexport const SELECT_ITEM = \"SELECT_ITEM\"\n\nexport function all(itemsIds) {\n return {\n type: SELECT_ALL,\n items: itemsIds,\n }\n}\n\nexport function none() {\n return {\n type: SELECT_NONE,\n }\n}\n\nexport function item(itemId) {\n return {\n type: SELECT_ITEM,\n item: itemId,\n }\n}\n\nexport default function selection(state = [], action = null) {\n switch (action.type) {\n case SELECT_ALL:\n return action.items\n\n case SELECT_NONE:\n return []\n\n case SELECT_ITEM:\n return toggle(state, action.item)\n\n default:\n return state\n }\n}\n","export var initialState = {\n type: \"info\",\n message: \"\",\n isVisible: false,\n}\n\nexport const SHOW_SNACKBAR = \"SHOW_SNACKBAR\"\nexport const HIDE_SNACKBAR = \"HIDE_SNACKBAR\"\n\nexport function showSnackbar(message, type) {\n return {\n type: SHOW_SNACKBAR,\n message,\n messageType: type,\n }\n}\n\nexport function hideSnackbar() {\n return {\n type: HIDE_SNACKBAR,\n }\n}\n\nexport default function snackbar(state = initialState, action = null) {\n if (action.type === SHOW_SNACKBAR) {\n return {\n type: action.messageType,\n message: action.message,\n isVisible: true,\n }\n } else if (action.type === HIDE_SNACKBAR) {\n return Object.assign({}, state, {\n isVisible: false,\n })\n } else {\n return state\n }\n}\n","import moment from \"moment\"\nimport { REMOVE_POLL, REPLACE_POLL } from \"./poll\"\n\nexport const BUSY_THREAD = \"BUSY_THREAD\"\nexport const RELEASE_THREAD = \"RELEASE_THREAD\"\nexport const REPLACE_THREAD = \"REPLACE_THREAD\"\nexport const UPDATE_THREAD = \"UPDATE_THREAD\"\nexport const UPDATE_THREAD_ACL = \"UPDATE_THREAD_ACL\"\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n started_on: moment(json.started_on),\n last_post_on: moment(json.last_post_on),\n best_answer_marked_on: json.best_answer_marked_on\n ? moment(json.best_answer_marked_on)\n : null,\n\n isBusy: false,\n })\n}\n\nexport function busy() {\n return {\n type: BUSY_THREAD,\n }\n}\n\nexport function release() {\n return {\n type: RELEASE_THREAD,\n }\n}\n\nexport function replace(newState, hydrated = false) {\n return {\n type: REPLACE_THREAD,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function update(data) {\n return {\n type: UPDATE_THREAD,\n data,\n }\n}\n\nexport function updateAcl(data) {\n return {\n type: UPDATE_THREAD_ACL,\n data,\n }\n}\n\nexport default function thread(state = {}, action = null) {\n switch (action.type) {\n case BUSY_THREAD:\n return Object.assign({}, state, { isBusy: true })\n\n case RELEASE_THREAD:\n return Object.assign({}, state, { isBusy: false })\n\n case REMOVE_POLL:\n return Object.assign({}, state, { poll: null })\n\n case REPLACE_POLL:\n return Object.assign({}, state, { poll: action.state })\n\n case REPLACE_THREAD:\n return action.state\n\n case UPDATE_THREAD:\n return Object.assign({}, state, action.data)\n\n case UPDATE_THREAD_ACL:\n const acl = Object.assign({}, state.acl, action.data)\n return Object.assign({}, state, { acl })\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const APPEND_THREADS = \"APPEND_THREADS\"\nexport const DELETE_THREAD = \"DELETE_THREAD\"\nexport const FILTER_THREADS = \"FILTER_THREADS\"\nexport const HYDRATE_THREADS = \"HYDRATE_THREADS\"\nexport const PATCH_THREAD = \"PATCH_THREAD\"\nexport const SORT_THREADS = \"SORT_THREADS\"\n\nexport const MODERATION_PERMISSIONS = [\n \"can_announce\",\n \"can_approve\",\n \"can_close\",\n \"can_hide\",\n \"can_move\",\n \"can_merge\",\n \"can_pin\",\n \"can_review\",\n]\n\nexport function append(items, sorting) {\n return {\n type: APPEND_THREADS,\n items,\n sorting,\n }\n}\n\nexport function deleteThread(thread) {\n return {\n type: DELETE_THREAD,\n thread,\n }\n}\n\nexport function filterThreads(category, categoriesMap) {\n return {\n type: FILTER_THREADS,\n category,\n categoriesMap,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_THREADS,\n items,\n }\n}\n\nexport function patch(thread, patch, sorting = null) {\n return {\n type: PATCH_THREAD,\n thread,\n patch,\n sorting,\n }\n}\n\nexport function sort(sorting) {\n return {\n type: SORT_THREADS,\n sorting,\n }\n}\n\nexport function getThreadModerationOptions(thread_acl) {\n let options = []\n MODERATION_PERMISSIONS.forEach(function (perm) {\n if (thread_acl[perm]) {\n options.push(perm)\n }\n })\n return options\n}\n\nexport function hydrateThread(thread) {\n return Object.assign({}, thread, {\n started_on: moment(thread.started_on),\n last_post_on: moment(thread.last_post_on),\n moderation: getThreadModerationOptions(thread.acl),\n })\n}\n\nexport default function thread(state = [], action = null) {\n switch (action.type) {\n case APPEND_THREADS:\n const mergedState = concatUnique(action.items.map(hydrateThread), state)\n return mergedState.sort(action.sorting)\n\n case DELETE_THREAD:\n return state.filter(function (item) {\n return item.id !== action.thread.id\n })\n\n case FILTER_THREADS:\n return state.filter(function (item) {\n const itemCategory = action.categoriesMap[item.category]\n if (\n itemCategory.lft >= action.category.lft &&\n itemCategory.rght <= action.category.rght\n ) {\n // same or sub category\n return true\n } else if (item.weight == 2) {\n // globally pinned\n return true\n } else {\n // thread moved outside displayed scope, hide it\n return false\n }\n })\n\n case HYDRATE_THREADS:\n return action.items.map(hydrateThread)\n\n case PATCH_THREAD:\n const patchedState = state.map(function (item) {\n if (item.id === action.thread.id) {\n return Object.assign({}, item, action.patch)\n } else {\n return item\n }\n })\n\n if (action.sorting) {\n return patchedState.sort(action.sorting)\n }\n return patchedState\n\n case SORT_THREADS:\n return state.sort(action.sorting)\n\n default:\n return state\n }\n}\n","export var initialState = {\n tick: 0,\n}\n\nexport const TICK = \"TICK\"\n\nexport function doTick() {\n return {\n type: TICK,\n }\n}\n\nexport default function tick(state = initialState, action = null) {\n if (action.type === TICK) {\n return Object.assign({}, state, {\n tick: state.tick + 1,\n })\n } else {\n return state\n }\n}\n","import moment from \"moment\"\nimport { UPDATE_AVATAR, UPDATE_USERNAME } from \"misago/reducers/users\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const ADD_NAME_CHANGE = \"ADD_NAME_CHANGE\"\nexport const APPEND_HISTORY = \"APPEND_HISTORY\"\nexport const HYDRATE_HISTORY = \"HYDRATE_HISTORY\"\n\nexport function addNameChange(change, user, changedBy) {\n return {\n type: ADD_NAME_CHANGE,\n change,\n user,\n changedBy,\n }\n}\n\nexport function append(items) {\n return {\n type: APPEND_HISTORY,\n items: items,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_HISTORY,\n items: items,\n }\n}\n\nexport function hydrateNamechange(namechange) {\n return Object.assign({}, namechange, {\n changed_on: moment(namechange.changed_on),\n })\n}\n\nexport default function username(state = [], action = null) {\n switch (action.type) {\n case ADD_NAME_CHANGE:\n let newState = state.slice()\n newState.unshift({\n id: Math.floor(Date.now() / 1000), // just small hax for getting id\n changed_by: action.changedBy,\n changed_by_username: action.changedBy.username,\n changed_on: moment(),\n new_username: action.change.username,\n old_username: action.user.username,\n })\n return newState\n\n case APPEND_HISTORY:\n return concatUnique(state, action.items.map(hydrateNamechange))\n\n case HYDRATE_HISTORY:\n return action.items.map(hydrateNamechange)\n\n case UPDATE_AVATAR:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.changed_by && item.changed_by.id === action.userId) {\n item.changed_by = Object.assign({}, item.changed_by, {\n avatars: action.avatars,\n })\n }\n\n return item\n })\n\n case UPDATE_USERNAME:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.changed_by && item.changed_by.id === action.userId) {\n item.changed_by = Object.assign({}, item.changed_by, {\n username: action.username,\n slug: action.slug,\n })\n }\n\n return Object.assign({}, item)\n })\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const APPEND_USERS = \"APPEND_USERS\"\nexport const HYDRATE_USERS = \"HYDRATE_USERS\"\nexport const UPDATE_AVATAR = \"UPDATE_AVATAR\"\nexport const UPDATE_USERNAME = \"UPDATE_USERNAME\"\n\nexport function append(items) {\n return {\n type: APPEND_USERS,\n items,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_USERS,\n items,\n }\n}\n\nexport function hydrateStatus(status) {\n if (status) {\n return Object.assign({}, status, {\n last_click: status.last_click ? moment(status.last_click) : null,\n banned_until: status.banned_until ? moment(status.banned_until) : null,\n })\n } else {\n return null\n }\n}\n\nexport function hydrateUser(user) {\n return Object.assign({}, user, {\n joined_on: moment(user.joined_on),\n status: hydrateStatus(user.status),\n })\n}\n\nexport function updateAvatar(user, avatars) {\n return {\n type: UPDATE_AVATAR,\n userId: user.id,\n avatars,\n }\n}\n\nexport function updateUsername(user, username, slug) {\n return {\n type: UPDATE_USERNAME,\n userId: user.id,\n username,\n slug,\n }\n}\n\nexport default function user(state = [], action = null) {\n switch (action.type) {\n case APPEND_USERS:\n return concatUnique(state, action.items.map(hydrateUser))\n\n case HYDRATE_USERS:\n return action.items.map(hydrateUser)\n\n case UPDATE_AVATAR:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.id === action.userId) {\n item.avatars = action.avatars\n }\n\n return item\n })\n\n default:\n return state\n }\n}\n","export class Ajax {\n constructor() {\n this._cookieName = null\n this._csrfToken = null\n this._locks = {}\n }\n\n init(cookieName) {\n this._cookieName = cookieName\n }\n\n getCsrfToken() {\n if (document.cookie.indexOf(this._cookieName) !== -1) {\n let cookieRegex = new RegExp(this._cookieName + \"=([^;]*)\")\n let cookie = document.cookie.match(cookieRegex)[0]\n return cookie ? cookie.split(\"=\")[1] : null\n } else {\n return null\n }\n }\n\n request(method, url, data) {\n let self = this\n return new Promise(function (resolve, reject) {\n let xhr = {\n url: url,\n method: method,\n headers: {\n \"X-CSRFToken\": self.getCsrfToken(),\n },\n\n data: data ? JSON.stringify(data) : null,\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n\n success: function (data) {\n resolve(data)\n },\n\n error: function (jqXHR) {\n let rejection = jqXHR.responseJSON || {}\n\n rejection.status = jqXHR.status\n\n if (rejection.status === 0) {\n rejection.detail = gettext(\"Lost connection with application.\")\n }\n\n if (rejection.status === 404) {\n if (!rejection.detail || rejection.detail === \"NOT FOUND\") {\n rejection.detail = gettext(\"Action link is invalid.\")\n }\n }\n\n if (rejection.status === 500 && !rejection.detail) {\n rejection.detail = gettext(\"Unknown error has occured.\")\n }\n\n rejection.statusText = jqXHR.statusText\n\n reject(rejection)\n },\n }\n\n $.ajax(xhr)\n })\n }\n\n get(url, params, lock) {\n if (params) {\n url += \"?\" + $.param(params)\n }\n\n if (lock) {\n let self = this\n\n // update url in existing lock?\n if (this._locks[lock]) {\n this._locks[lock].url = url\n }\n\n // immediately dereference promise handlers without doing anything\n // we are already waiting for existing response to resolve\n if (this._locks[lock] && this._locks[lock].waiter) {\n return {\n then: function () {\n return\n },\n }\n\n // return promise that will begin when original one resolves\n } else if (this._locks[lock] && this._locks[lock].wait) {\n this._locks[lock].waiter = true\n\n return new Promise(function (resolve, reject) {\n let wait = function (url) {\n // keep waiting on promise\n if (self._locks[lock].wait) {\n window.setTimeout(function () {\n wait(url)\n }, 300)\n\n // poll for new url\n } else if (self._locks[lock].url !== url) {\n wait(self._locks[lock].url)\n\n // ajax backend for response\n } else {\n self._locks[lock].waiter = false\n self.request(\"GET\", self._locks[lock].url).then(\n function (data) {\n if (self._locks[lock].url === url) {\n resolve(data)\n } else {\n self._locks[lock].waiter = true\n wait(self._locks[lock].url)\n }\n },\n function (rejection) {\n if (self._locks[lock].url === url) {\n reject(rejection)\n } else {\n self._locks[lock].waiter = true\n wait(self._locks[lock].url)\n }\n }\n )\n }\n }\n\n window.setTimeout(function () {\n wait(url)\n }, 300)\n })\n\n // setup new lock without waiter\n } else {\n this._locks[lock] = {\n url,\n wait: true,\n waiter: false,\n }\n\n return new Promise(function (resolve, reject) {\n self.request(\"GET\", url).then(\n function (data) {\n self._locks[lock].wait = false\n if (self._locks[lock].url === url) {\n resolve(data)\n }\n },\n function (rejection) {\n self._locks[lock].wait = false\n if (self._locks[lock].url === url) {\n reject(rejection)\n }\n }\n )\n })\n }\n } else {\n return this.request(\"GET\", url)\n }\n }\n\n post(url, data) {\n return this.request(\"POST\", url, data)\n }\n\n patch(url, data) {\n return this.request(\"PATCH\", url, data)\n }\n\n put(url, data) {\n return this.request(\"PUT\", url, data)\n }\n\n delete(url, data) {\n return this.request(\"DELETE\", url, data)\n }\n\n upload(url, data, progress) {\n let self = this\n return new Promise(function (resolve, reject) {\n let xhr = {\n url: url,\n method: \"POST\",\n headers: {\n \"X-CSRFToken\": self.getCsrfToken(),\n },\n\n data: data,\n contentType: false,\n processData: false,\n\n xhr: function () {\n let xhr = new window.XMLHttpRequest()\n xhr.upload.addEventListener(\n \"progress\",\n function (evt) {\n if (evt.lengthComputable) {\n progress(Math.round((evt.loaded / evt.total) * 100))\n }\n },\n false\n )\n return xhr\n },\n\n success: function (response) {\n resolve(response)\n },\n\n error: function (jqXHR) {\n let rejection = jqXHR.responseJSON || {}\n\n rejection.status = jqXHR.status\n\n if (rejection.status === 0) {\n rejection.detail = gettext(\"Lost connection with application.\")\n }\n\n if (rejection.status === 413 && !rejection.detail) {\n rejection.detail = gettext(\n \"Upload was rejected by server as too large.\"\n )\n }\n\n if (rejection.status === 404) {\n if (!rejection.detail || rejection.detail === \"NOT FOUND\") {\n rejection.detail = gettext(\"Action link is invalid.\")\n }\n }\n\n if (rejection.status === 500 && !rejection.detail) {\n rejection.detail = gettext(\"Unknown error has occured.\")\n }\n\n rejection.statusText = jqXHR.statusText\n\n reject(rejection)\n },\n }\n\n $.ajax(xhr)\n })\n }\n}\n\nexport default new Ajax()\n","import { signIn, signOut } from \"misago/reducers/auth\"\n\nexport class Auth {\n init(store, local, modal) {\n this._store = store\n this._local = local\n this._modal = modal\n\n // tell other tabs what auth state is because we are most current with it\n this.syncSession()\n\n // listen for other tabs to tell us that state changed\n this.watchState()\n }\n\n syncSession() {\n const state = this._store.getState().auth\n if (state.isAuthenticated) {\n this._local.set(\"auth\", {\n isAuthenticated: true,\n username: state.user.username,\n })\n } else {\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n }\n }\n\n watchState() {\n const state = this._store.getState().auth\n this._local.watch(\"auth\", (newState) => {\n if (newState.isAuthenticated) {\n this._store.dispatch(\n signIn({\n username: newState.username,\n })\n )\n } else if (state.isAuthenticated) {\n // check if we are authenticated in this tab\n // because some browser plugins prune local store\n // aggressively, forcing erroneous message to display here\n // tracking bug #955\n this._store.dispatch(signOut())\n }\n })\n this._modal.hide()\n }\n\n signIn(user) {\n this._store.dispatch(signIn(user))\n this._local.set(\"auth\", {\n isAuthenticated: true,\n username: user.username,\n })\n this._modal.hide()\n }\n\n signOut() {\n this._store.dispatch(signOut())\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n this._modal.hide()\n }\n\n softSignOut() {\n this._store.dispatch(signOut(true))\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n this._modal.hide()\n }\n}\n\nexport default new Auth()\n","/* global grecaptcha */\nimport React from \"react\"\nimport FormGroup from \"misago/components/form-group\"\n\nexport class BaseCaptcha {\n init(context, ajax, include, snackbar) {\n this._context = context\n this._ajax = ajax\n this._include = include\n this._snackbar = snackbar\n }\n}\n\nexport class NoCaptcha extends BaseCaptcha {\n load() {\n return new Promise(function (resolve) {\n // immediately resolve as we don't have anything to validate\n resolve()\n })\n }\n\n validator() {\n return null\n }\n\n component() {\n return null\n }\n}\n\nexport class QACaptcha extends BaseCaptcha {\n load() {\n var self = this\n return new Promise((resolve, reject) => {\n self._ajax.get(self._context.get(\"CAPTCHA_API\")).then(\n function (data) {\n self.question = data.question\n self.helpText = data.help_text\n resolve()\n },\n function () {\n self._snackbar.error(gettext(\"Failed to load CAPTCHA.\"))\n reject()\n }\n )\n })\n }\n\n validator() {\n return []\n }\n\n component(kwargs) {\n return (\n <FormGroup\n label={this.question}\n for=\"id_captcha\"\n labelClass={kwargs.labelClass || \"\"}\n controlClass={kwargs.controlClass || \"\"}\n validation={kwargs.form.state.errors.captcha}\n helpText={this.helpText || null}\n >\n <input\n aria-describedby=\"id_captcha_status\"\n className=\"form-control\"\n disabled={kwargs.form.state.isLoading}\n id=\"id_captcha\"\n onChange={kwargs.form.bindInput(\"captcha\")}\n type=\"text\"\n value={kwargs.form.state.captcha}\n />\n </FormGroup>\n )\n }\n}\n\nexport class ReCaptchaComponent extends React.Component {\n componentDidMount() {\n grecaptcha.render(\"recaptcha\", {\n sitekey: this.props.siteKey,\n callback: (response) => {\n // fire fakey event to binding\n this.props.binding({\n target: {\n value: response,\n },\n })\n },\n })\n }\n\n render() {\n return <div id=\"recaptcha\" />\n }\n}\n\nexport class ReCaptcha extends BaseCaptcha {\n load() {\n this._include.include(\"https://www.google.com/recaptcha/api.js\", true)\n\n return new Promise(function (resolve) {\n var wait = function () {\n if (typeof grecaptcha === \"undefined\") {\n window.setTimeout(function () {\n wait()\n }, 200)\n } else {\n resolve()\n }\n }\n wait()\n })\n }\n\n validator() {\n return []\n }\n\n component(kwargs) {\n return (\n <FormGroup\n label={gettext(\"Please solve the quick test\")}\n for=\"id_captcha\"\n labelClass={kwargs.labelClass || \"\"}\n controlClass={kwargs.controlClass || \"\"}\n validation={kwargs.form.state.errors.captcha}\n helpText={gettext(\n \"This test helps us prevent automated spam registrations on our site.\"\n )}\n >\n <ReCaptchaComponent\n binding={kwargs.form.bindInput(\"captcha\")}\n siteKey={this._context.get(\"SETTINGS\").recaptcha_site_key}\n />\n </FormGroup>\n )\n }\n}\n\nexport class Captcha {\n init(context, ajax, include, snackbar) {\n switch (context.get(\"SETTINGS\").captcha_type) {\n case \"no\":\n this._captcha = new NoCaptcha()\n break\n\n case \"qa\":\n this._captcha = new QACaptcha()\n break\n\n case \"re\":\n this._captcha = new ReCaptcha()\n break\n }\n\n this._captcha.init(context, ajax, include, snackbar)\n }\n\n // accessors for underlying strategy\n\n load() {\n return this._captcha.load()\n }\n\n validator() {\n return this._captcha.validator()\n }\n\n component(kwargs) {\n return this._captcha.component(kwargs)\n }\n}\n\nexport default new Captcha()\n","export class Include {\n init(staticUrl) {\n this._staticUrl = staticUrl\n this._included = []\n }\n\n include(script, remote = false) {\n if (this._included.indexOf(script) === -1) {\n this._included.push(script)\n this._include(script, remote)\n }\n }\n\n _include(script, remote) {\n $.ajax({\n url: (!remote ? this._staticUrl : \"\") + script,\n cache: true,\n dataType: \"script\",\n })\n }\n}\n\nexport default new Include()\n","let storage = window.localStorage\n\nexport class LocalStorage {\n init(prefix) {\n this._prefix = prefix\n this._watchers = []\n\n window.addEventListener(\"storage\", (e) => {\n let newValueJson = JSON.parse(e.newValue)\n this._watchers.forEach(function (watcher) {\n if (watcher.key === e.key && e.oldValue !== e.newValue) {\n watcher.callback(newValueJson)\n }\n })\n })\n }\n\n set(key, value) {\n storage.setItem(this._prefix + key, JSON.stringify(value))\n }\n\n get(key) {\n let itemString = storage.getItem(this._prefix + key)\n if (itemString) {\n return JSON.parse(itemString)\n } else {\n return null\n }\n }\n\n watch(key, callback) {\n this._watchers.push({\n key: this._prefix + key,\n callback: callback,\n })\n }\n}\n\nexport default new LocalStorage()\n","import mount from \"misago/utils/mount-component\"\n\nexport class MobileNavbarDropdown {\n init(element) {\n this._element = element\n this._component = null\n }\n\n show(component) {\n if (this._component === component) {\n this.hide()\n } else {\n this._component = component\n mount(component, this._element.id)\n $(this._element).addClass(\"open\")\n }\n }\n\n showConnected(name, component) {\n if (this._component === name) {\n this.hide()\n } else {\n this._component = name\n mount(component, this._element.id, true)\n $(this._element).addClass(\"open\")\n }\n }\n\n hide() {\n $(this._element).removeClass(\"open\")\n this._component = null\n }\n}\n\nexport default new MobileNavbarDropdown()\n","import ReactDOM from \"react-dom\"\nimport mount from \"misago/utils/mount-component\"\n\nexport class Modal {\n init(element) {\n this._element = element\n\n this._modal = $(element).modal({ show: false })\n\n this._modal.on(\"hidden.bs.modal\", () => {\n ReactDOM.unmountComponentAtNode(this._element)\n })\n }\n\n show(component) {\n mount(component, this._element.id)\n this._modal.modal(\"show\")\n }\n\n hide() {\n this._modal.modal(\"hide\")\n }\n}\n\nexport default new Modal()\n","export class PageTitle {\n init(indexTitle, forumName) {\n this._indexTitle = indexTitle\n this._forumName = forumName\n }\n\n set(title) {\n if (!title) {\n document.title = this._indexTitle || this._forumName\n return\n }\n\n if (typeof title === \"string\") {\n title = { title: title }\n }\n\n let finalTitle = title.title\n\n if (title.page > 1) {\n const pageLabel = interpolate(\n gettext(\"page: %(page)s\"),\n {\n page: title.page,\n },\n true\n )\n\n finalTitle += \" (\" + pageLabel + \")\"\n }\n\n if (title.parent) {\n finalTitle += \" | \" + title.parent\n }\n\n document.title = finalTitle + \" | \" + this._forumName\n }\n}\n\nexport default new PageTitle()\n","export class Polls {\n init(ajax, snackbar) {\n this._ajax = ajax\n this._snackbar = snackbar\n\n this._polls = {}\n }\n\n start(kwargs) {\n this.stop(kwargs.poll)\n\n const poolServer = () => {\n this._polls[kwargs.poll] = kwargs\n\n this._ajax.get(kwargs.url, kwargs.data || null).then(\n (data) => {\n if (!this._polls[kwargs.poll]._stopped) {\n kwargs.update(data)\n\n this._polls[kwargs.poll].timeout = window.setTimeout(\n poolServer,\n kwargs.frequency\n )\n }\n },\n (rejection) => {\n if (!this._polls[kwargs.poll]._stopped) {\n if (kwargs.error) {\n kwargs.error(rejection)\n } else {\n this._snackbar.apiError(rejection)\n }\n }\n }\n )\n }\n\n if (kwargs.delayed) {\n this._polls[kwargs.poll] = {\n timeout: window.setTimeout(poolServer, kwargs.frequency),\n }\n } else {\n poolServer()\n }\n }\n\n stop(pollId) {\n if (this._polls[pollId]) {\n window.clearTimeout(this._polls[pollId].timeout)\n this._polls[pollId]._stopped = true\n }\n }\n}\n\nexport default new Polls()\n","import React from \"react\"\n\nexport default class extends React.Component {\n onClick = () => {\n this.props.replaceSelection(this.props.execAction)\n }\n\n render() {\n return (\n <button\n className={\"btn btn-icon \" + this.props.className}\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={this.props.title}\n type=\"button\"\n >\n {this.props.children}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action execAction={insertCode} title={gettext(\"Insert code\")} {...props}>\n <span className=\"material-icon\">functions</span>\n </Action>\n )\n}\n\nexport function insertCode(selection, replace) {\n const syntax = $.trim(\n prompt(gettext(\"Enter name of syntax of your code (optional)\") + \":\")\n )\n replace(\"\\n\\n```\" + syntax + \"\\n\" + selection + \"\\n```\\n\\n\")\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeEmphasis}\n title={gettext(\"Emphase selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_italic</span>\n </Action>\n )\n}\n\nexport function makeEmphasis(selection, replace) {\n if (selection.length) {\n replace(\"*\" + selection + \"*\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={insertHr}\n title={gettext(\"Insert horizontal ruler\")}\n {...props}\n >\n <span className=\"material-icon\">remove</span>\n </Action>\n )\n}\n\nexport function insertHr(selection, replace) {\n replace(\"\\n\\n- - - - -\\n\\n\")\n}\n","const URL_PATTERN = new RegExp(\n \"^(https?:\\\\/\\\\/)?((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*(\\\\?[;&a-z\\\\d%_.~+=-]*)?(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n)\n\nexport default function (str) {\n return URL_PATTERN.test($.trim(str))\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertImage} title={gettext(\"Insert image\")} {...props}>\n <span className=\"material-icon\">insert_photo</span>\n </Action>\n )\n}\n\nexport function insertImage(selection, replace) {\n let url = \"\"\n let label = \"\"\n\n if (selection.length) {\n if (isUrl(selection)) {\n url = selection\n } else {\n label = selection\n }\n }\n\n url = $.trim(prompt(gettext(\"Enter link to image\") + \":\", url))\n\n if (url.length) {\n label = $.trim(prompt(gettext(\"Enter image label (optional)\") + \":\", label))\n if (label.length > 0) {\n replace(\"\")\n } else {\n replace(\"!(\" + url + \")\")\n }\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertLink} title={gettext(\"Insert link\")} {...props}>\n <span className=\"material-icon\">insert_link</span>\n </Action>\n )\n}\n\nexport function insertLink(selection, replace) {\n let url = \"\"\n let label = \"\"\n\n if (selection.length) {\n if (isUrl(selection)) {\n url = selection\n } else {\n label = selection\n }\n }\n\n url = $.trim(prompt(gettext(\"Enter link address\") + \":\", url) || \"\")\n if (url.length === 0) return false\n label = $.trim(prompt(gettext(\"Enter link label (optional)\") + \":\", label))\n\n if (url.length) {\n if (label.length > 0) {\n replace(\"[\" + label + \"](\" + url + \")\")\n } else {\n replace(url)\n }\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action\n execAction={insertSpoiler}\n title={gettext(\"Insert spoiler\")}\n {...props}\n >\n <span className=\"material-icon\">not_interested</span>\n </Action>\n )\n}\n\nexport function insertSpoiler(selection, replace) {\n replace(\"\\n\\n[spoiler]\\n\" + selection + \"\\n[/spoiler]\\n\\n\")\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeStrikethrough}\n title={gettext(\"Strikethrough selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_strikethrough</span>\n </Action>\n )\n}\n\nexport function makeStrikethrough(selection, replace) {\n if (selection.length) {\n replace(\"~~\" + selection + \"~~\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeStrong}\n title={gettext(\"Bolder selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_bold</span>\n </Action>\n )\n}\n\nexport function makeStrong(selection, replace) {\n if (selection.length) {\n replace(\"**\" + selection + \"**\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertQuote} title={gettext(\"Insert quote\")} {...props}>\n <span className=\"material-icon\">format_quote</span>\n </Action>\n )\n}\n\nexport function insertQuote(selection, replace) {\n let title = $.trim(\n prompt(gettext(\"Enter quote autor, prefix usernames with @\") + \":\", title)\n )\n\n if (title) {\n replace('\\n\\n[quote=\"' + title + '\"]\\n' + selection + \"\\n[/quote]\\n\\n\")\n } else {\n replace(\"\\n\\n[quote]\\n\" + selection + \"\\n[/quote]\\n\\n\")\n }\n}\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport formatFilesize from \"misago/utils/file-size\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default class extends React.Component {\n onInsert = () => {\n this.props.replaceSelection(this.insertAttachment)\n }\n\n insertAttachment = (selection, replace) => {\n const item = this.props.item\n\n if (item.is_image) {\n if (item.url.thumb) {\n replace(\n \"[](\" +\n item.url.index +\n \")\"\n )\n } else {\n replace(\n \"[](\" +\n item.url.index +\n \")\"\n )\n }\n } else {\n replace(\"[\" + item.filename + \"](\" + item.url.index + \")\")\n }\n }\n\n onRemove = () => {\n this.updateItem({\n isRemoved: true,\n })\n }\n\n onUndo = () => {\n this.updateItem({\n isRemoved: false,\n })\n }\n\n updateItem = (newState) => {\n const updatedAttachments = this.props.attachments.map((item) => {\n if (item.id === this.props.item.id) {\n return Object.assign({}, item, newState)\n } else {\n return item\n }\n })\n this.props.onAttachmentsChange(updatedAttachments)\n }\n\n render() {\n return (\n <li className=\"editor-attachment-complete\">\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-8 col-md-9\">\n <Preview {...this.props} />\n <div className=\"editor-attachment-details\">\n <Filename {...this.props} />\n <Details {...this.props} />\n </div>\n </div>\n <div className=\"col-xs-12 col-sm-4 col-md-3 xs-margin-top-half\">\n <Actions\n onInsert={this.onInsert}\n onRemove={this.onRemove}\n onUndo={this.onUndo}\n {...this.props}\n />\n </div>\n </div>\n </li>\n )\n }\n}\n\nexport function Preview(props) {\n if (props.item.is_image) {\n return <Image {...props} />\n } else {\n return <Icon {...props} />\n }\n}\n\nexport function Image(props) {\n const thumbnailUrl = props.item.url.thumb || props.item.url.index\n\n return (\n <div className=\"editor-attachment-image\">\n <a\n href={props.item.url.index + \"?shva=1\"}\n style={{ backgroundImage: \"url('\" + thumbnailUrl + \"?shva=1')\" }}\n target=\"_blank\"\n />\n </div>\n )\n}\n\nexport function Icon(props) {\n return (\n <div className=\"editor-attachment-icon\">\n <span className=\"material-icon\">insert_drive_file</span>\n </div>\n )\n}\n\nexport function Filename(props) {\n return (\n <h4>\n <a\n className=\"item-title\"\n href={props.item.url.index + \"?shva=1\"}\n target=\"_blank\"\n >\n {props.item.filename}\n </a>\n </h4>\n )\n}\n\nexport function Details(props) {\n let user = null\n if (props.item.url.uploader) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.item.url.uploader),\n user: escapeHtml(props.item.uploader_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.item.uploader_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.item.uploaded_on.format(\"LLL\")),\n relative: escapeHtml(props.item.uploaded_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(\n gettext(\n \"%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.\"\n )\n ),\n {\n filetype: props.item.filetype,\n size: formatFilesize(props.item.size),\n uploader: user,\n uploaded_on: date,\n },\n true\n )\n\n return <p dangerouslySetInnerHTML={{ __html: message }} />\n}\n\nexport function Actions(props) {\n return (\n <div className=\"editor-attachment-actions\">\n <div className=\"row\">\n <Insert {...props} />\n <Remove {...props} />\n <Undo {...props} />\n </div>\n </div>\n )\n}\n\nexport function Insert(props) {\n if (!!props.item.isRemoved) {\n return null\n }\n\n return (\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onInsert}\n type=\"button\"\n >\n {gettext(\"Insert\")}\n </button>\n </div>\n )\n}\n\nexport function Remove(props) {\n if (!!props.item.isRemoved && props.item.acl.can_delete) {\n return null\n }\n\n return (\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onRemove}\n type=\"button\"\n >\n {gettext(\"Remove\")}\n </button>\n </div>\n )\n}\n\nexport function Undo(props) {\n if (!props.item.isRemoved) {\n return null\n }\n\n return (\n <div className=\"col-xs-12\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onUndo}\n type=\"button\"\n >\n {gettext(\"Undo removal\")}\n </button>\n </div>\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst STRONG = \"<strong>%(name)s</strong>\"\n\nexport default class extends React.Component {\n onClick = () => {\n const filteredAttachments = this.props.attachments.filter((item) => {\n return item.key !== this.props.item.key\n })\n this.props.onAttachmentsChange(filteredAttachments)\n }\n\n render() {\n const filename = interpolate(\n STRONG,\n {\n name: escapeHtml(this.props.item.filename),\n },\n true\n )\n\n const title = interpolate(\n gettext(\"Error uploading %(filename)s\"),\n {\n filename,\n progress: this.props.item.progress + \"%\",\n },\n true\n )\n\n return (\n <li className=\"editor-attachment-error\">\n <div className=\"editor-attachment-error-icon\">\n <span className=\"material-icon\">warning</span>\n </div>\n <div className=\"editor-attachment-error-message\">\n <h4 dangerouslySetInnerHTML={{ __html: title + \":\" }} />\n <p>{this.props.item.error}</p>\n <button\n className=\"btn btn-default btn-sm\"\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Dismiss\")}\n </button>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst STRONG = \"<strong>%(name)s</strong>\"\n\nexport default function (props) {\n const filename = interpolate(\n STRONG,\n {\n name: escapeHtml(props.item.filename),\n },\n true\n )\n\n const message = interpolate(\n gettext(\"Uploading %(filename)s... %(progress)s\"),\n {\n filename,\n progress: props.item.progress + \"%\",\n },\n true\n )\n\n return (\n <li className=\"editor-attachment-upload\">\n <div className=\"editor-attachment-progress-bar\">\n <div\n className=\"editor-attachment-progress\"\n style={{ width: props.item.progress + \"%\" }}\n />\n </div>\n <p\n className=\"editor-attachment-upload-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n </li>\n )\n}\n","import React from \"react\"\nimport AttachmentComplete from \"./complete\"\nimport AttachmentError from \"./error\"\nimport AttachmentUpload from \"./upload\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nexport default function (props) {\n if (props.item.id) {\n return <AttachmentComplete {...props} />\n }\n\n if (props.item.error) {\n return <AttachmentError {...props} />\n }\n\n return <AttachmentUpload {...props} />\n}\n","import React from \"react\"\nimport Attachment from \"./attachment\"\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled editor-attachments-list\">\n {props.attachments.map((item) => {\n return <Attachment item={item} key={item.id || item.key} {...props} />\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n onChange = (event) => {\n const file = event.target.files[0]\n if (!file) {\n return\n }\n\n let upload = {\n id: null,\n key: getRandomKey(),\n progress: 0,\n error: null,\n filename: file.name,\n }\n\n this.props.onAttachmentsChange([upload].concat(this.props.attachments))\n\n const data = new FormData()\n data.append(\"upload\", file)\n\n ajax\n .upload(misago.get(\"ATTACHMENTS_API\"), data, (progress) => {\n upload.progress = progress\n this.props.onAttachmentsChange(this.props.attachments.concat())\n })\n .then(\n (data) => {\n data.uploaded_on = moment(data.uploaded_on)\n Object.assign(upload, data)\n this.props.onAttachmentsChange(this.props.attachments.concat())\n },\n (rejection) => {\n if (rejection.status === 400 || rejection.status === 413) {\n upload.error = rejection.detail\n this.props.onAttachmentsChange(this.props.attachments.concat())\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <input id=\"editor-upload-field\" onChange={this.onChange} type=\"file\" />\n )\n }\n}\n\nexport function getRandomKey() {\n return \"upld-\" + Math.round(new Date().getTime())\n}\n","import React from \"react\"\nimport List from \"./list\"\nimport Uploader from \"./uploader\"\nimport misago from \"misago\"\n\nexport default function (props) {\n if (!misago.get(\"user\").acl.max_attachment_size) {\n return null\n }\n\n return (\n <div className=\"editor-attachments\">\n <List {...props} />\n <Uploader {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n onClick = () => {\n document.getElementById(\"editor-upload-field\").click()\n }\n\n render() {\n if (!misago.get(\"user\").acl.max_attachment_size) {\n return null\n }\n\n return (\n <button\n className={\"btn btn-icon \" + this.props.className}\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={gettext(\"Upload file\")}\n type=\"button\"\n >\n <span className=\"material-icon\">file_upload</span>\n </button>\n )\n }\n}\n","import React from \"react\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\n\nexport default function (props) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Preview message\")}</h4>\n </div>\n <div className=\"modal-body markup-preview\">\n <MisagoMarkup markup={props.markup} />\n </div>\n </div>\n </div>\n )\n}\n","export const textareaId = \"editor-textarea\"\n\nexport function getTextarea() {\n return document.getElementById(textareaId)\n}\n\nexport function getValue() {\n return document.getElementById(textareaId).value\n}\n\nexport function getSelectionRange(start, end) {\n return {\n start,\n end,\n }\n}\n\nexport function getSelection() {\n const ctrl = getTextarea()\n if (document.selection) {\n ctrl.focus()\n const range = document.selection.createRange()\n const length = range.text.length\n range.moveStart(\"character\", -ctrl.value.length)\n return getSelectionRange(range.text.length - length, range.text.length)\n } else if (ctrl.selectionStart || ctrl.selectionStart == \"0\") {\n return getSelectionRange(ctrl.selectionStart, ctrl.selectionEnd)\n }\n}\n\nexport function getSelectionText() {\n const range = getSelection()\n return $.trim(getValue().substring(range.start, range.end))\n}\n\nexport function setSelection(selectionRange) {\n const ctrl = getTextarea()\n if (ctrl.setSelectionRange) {\n ctrl.focus()\n ctrl.setSelectionRange(selectionRange.start, selectionRange.end)\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange()\n range.collapse(true)\n range.moveStart(\"character\", selectionRange.start)\n range.moveEnd(\"character\", selectionRange.end)\n range.select()\n }\n}\n\nexport function _replace(myRange, replacement) {\n const ctrl = getTextarea()\n const text = ctrl.value\n const startText = text.substring(0, myRange.start)\n ctrl.value =\n text.substring(0, myRange.start) + replacement + text.substring(myRange.end)\n setSelection(\n getSelectionRange(\n startText.length + replacement.length,\n startText.length + replacement.length\n )\n )\n return ctrl.value\n}\n\nexport function replace(replacement) {\n return _replace(getSelection(), replacement)\n}\n","import React from \"react\"\nimport Code from \"./actions/code\"\nimport Emphasis from \"./actions/emphasis\"\nimport Hr from \"./actions/hr\"\nimport Image from \"./actions/image\"\nimport Link from \"./actions/link\"\nimport Spoiler from \"./actions/spoiler\"\nimport Strikethrough from \"./actions/strikethrough\"\nimport Strong from \"./actions/strong\"\nimport Quote from \"./actions/quote\"\nimport AttachmentsEditor from \"./attachments\"\nimport Upload from \"./attachments/upload-button\"\nimport MarkupPreview from \"./markup-preview\"\nimport * as textUtils from \"./textutils\"\nimport Button from \"misago/components/button\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isPreviewLoading: false,\n }\n }\n\n componentDidMount() {\n $(\"#editor-textarea\").atwho({\n at: \"@\",\n displayTpl: '<li><img src=\"${avatar}\" alt=\"\">${username}</li>',\n insertTpl: \"@${username}\",\n searchKey: \"username\",\n callbacks: {\n remoteFilter: function (query, callback) {\n $.getJSON(misago.get(\"MENTION_API\"), { q: query }, callback)\n },\n },\n })\n\n $(\"#editor-textarea\").on(\"inserted.atwho\", (event, flag, query) => {\n this.props.onChange(event)\n })\n }\n\n onPreviewClick = () => {\n if (this.state.isPreviewLoading) {\n return\n }\n\n this.setState({\n isPreviewLoading: true,\n })\n\n ajax.post(misago.get(\"PARSE_MARKUP_API\"), { post: this.props.value }).then(\n (data) => {\n modal.show(<MarkupPreview markup={data.parsed} />)\n\n this.setState({\n isPreviewLoading: false,\n })\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n this.setState({\n isPreviewLoading: false,\n })\n }\n )\n }\n\n replaceSelection = (operation) => {\n operation(textUtils.getSelectionText(), this._replaceSelection)\n }\n\n _replaceSelection = (newValue) => {\n this.props.onChange({\n target: {\n value: textUtils.replace(newValue),\n },\n })\n }\n\n render() {\n return (\n <div className=\"editor-border\">\n <textarea\n className=\"form-control\"\n value={this.props.value}\n disabled={this.props.loading}\n id=\"editor-textarea\"\n onChange={this.props.onChange}\n rows=\"9\"\n />\n <div className=\"editor-footer\">\n <div className=\"buttons-list pull-left\">\n <Strong\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Emphasis\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Strikethrough\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Hr\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Link\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Image\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Quote\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Spoiler\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Code\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Upload\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n />\n </div>\n <Button\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n onClick={this.onPreviewClick}\n type=\"button\"\n >\n {gettext(\"Preview\")}\n </Button>\n <Button\n className=\"btn-primary btn-sm pull-right\"\n loading={this.props.loading}\n >\n {this.props.submitLabel || gettext(\"Post\")}\n </Button>\n <button\n className=\"btn btn-default btn-sm pull-right\"\n disabled={this.props.loading}\n onClick={this.props.onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <div className=\"clearfix visible-xs-block\" />\n <Protect\n canProtect={this.props.canProtect}\n disabled={this.props.loading}\n onProtect={this.props.onProtect}\n onUnprotect={this.props.onUnprotect}\n protect={this.props.protect}\n />\n </div>\n <AttachmentsEditor\n attachments={this.props.attachments}\n onAttachmentsChange={this.props.onAttachmentsChange}\n placeholder={this.props.placeholder}\n replaceSelection={this.replaceSelection}\n />\n </div>\n )\n }\n}\n\nexport function Protect(props) {\n if (!props.canProtect) return null\n\n const label = props.protect ? gettext(\"Protected\") : gettext(\"Protect\")\n\n return (\n <button\n className=\"btn btn-icon btn-default btn-protect btn-sm pull-right\"\n disabled={props.disabled}\n onClick={props.protect ? props.onUnprotect : props.onProtect}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.protect ? \"lock\" : \"lock_outline\"}\n </span>\n <span className=\"btn-text hidden-md hidden-lg\">{label}</span>\n </button>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className={props.className}>\n <div className=\"container\">{props.children}</div>\n </div>\n )\n}\n","import React from \"react\"\nimport Container from \"./container\"\nimport Loader from \"misago/components/loader\"\n\nexport default function (props) {\n return (\n <Container className=\"posting-loader\">\n <Loader />\n </Container>\n )\n}\n","import React from \"react\"\nimport Container from \"./container\"\nimport posting from \"misago/services/posting\"\n\nexport default function (props) {\n return (\n <Container className=\"posting-message\">\n <div className=\"message-body\">\n <p>\n <span className=\"material-icon\">error_outline</span>\n {props.message}\n </p>\n <button\n type=\"button\"\n className=\"btn btn-default\"\n onClick={posting.close}\n >\n {gettext(\"Dismiss\")}\n </button>\n </div>\n </Container>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n if (!props.showOptions) return null\n\n const { columns } = props\n\n let className = \"col-xs-12 xs-margin-top\"\n\n if (columns === 1) {\n className += \" col-sm-2\"\n } else {\n className += \" sm-margin-top\"\n }\n\n if (columns === 3) {\n className += \" col-md-3\"\n } else {\n className += \" col-md-2\"\n }\n className += \" posting-options\"\n\n const columnClassName = \"col-xs-\" + 12 / columns\n\n let textClassName = \"btn-text\"\n if (columns === 3) {\n textClassName += \" visible-sm-inline-block\"\n } else if (columns === 2) {\n textClassName += \" hidden-md hidden-lg\"\n } else {\n textClassName += \" hidden-sm\"\n }\n\n return (\n <div className={className}>\n <div className=\"row\">\n <PinOptions\n className={columnClassName}\n disabled={props.disabled}\n onPinGlobally={props.onPinGlobally}\n onPinLocally={props.onPinLocally}\n onUnpin={props.onUnpin}\n pin={props.pin}\n show={props.options.pin}\n textClassName={textClassName}\n />\n <HideOptions\n className={columnClassName}\n disabled={props.disabled}\n hide={props.hide}\n onHide={props.onHide}\n onUnhide={props.onUnhide}\n show={props.options.hide}\n textClassName={textClassName}\n />\n <CloseOptions\n className={columnClassName}\n close={props.close}\n disabled={props.disabled}\n onClose={props.onClose}\n onOpen={props.onOpen}\n show={props.options.close}\n textClassName={textClassName}\n />\n </div>\n </div>\n )\n}\n\nexport function CloseOptions(props) {\n if (!props.show) return null\n\n const label = props.close ? gettext(\"Closed\") : gettext(\"Open\")\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={props.close ? props.onOpen : props.onClose}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.close ? \"lock\" : \"lock_outline\"}\n </span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n\nexport function HideOptions(props) {\n if (!props.show) return null\n\n const label = props.hide ? gettext(\"Hidden\") : gettext(\"Not hidden\")\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={props.hide ? props.onUnhide : props.onHide}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.hide ? \"visibility_off\" : \"visibility\"}\n </span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n\nexport function PinOptions(props) {\n if (!props.show) return null\n\n let icon = null\n let onClick = null\n let label = null\n\n switch (props.pin) {\n case 0:\n icon = \"radio_button_unchecked\"\n onClick = props.onPinLocally\n label = gettext(\"Unpinned\")\n break\n\n case 1:\n icon = \"bookmark_outline\"\n onClick = props.onPinGlobally\n label = gettext(\"Pinned locally\")\n\n if (props.show == 2) {\n onClick = props.onPinGlobally\n } else {\n onClick = props.onUnpin\n }\n\n break\n\n case 2:\n icon = \"bookmark\"\n onClick = props.onUnpin\n label = gettext(\"Pinned globally\")\n break\n }\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={onClick}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">{icon}</span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n","import moment from \"moment\"\n\nexport function clean(attachments) {\n const completedAttachments = attachments.filter((attachment) => {\n return attachment.id && !attachment.isRemoved\n })\n\n return completedAttachments.map((a) => {\n return a.id\n })\n}\n\nexport function hydrate(attachments) {\n return attachments.map((attachment) => {\n return Object.assign({}, attachment, {\n uploaded_on: moment(attachment.uploaded_on),\n })\n })\n}\n","import React from \"react\"\nimport CategorySelect from \"misago/components/category-select\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport Options from \"./utils/options\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators, getTitleValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n showOptions: false,\n categoryOptions: null,\n\n title: \"\",\n category: props.category || null,\n categories: [],\n post: \"\",\n attachments: [],\n close: false,\n hide: false,\n pin: 0,\n\n validators: {\n title: getTitleValidators(),\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.config).then(this.loadSuccess, this.loadError)\n }\n\n loadSuccess = (data) => {\n let category = null\n let showOptions = false\n let categoryOptions = null\n\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n // pick first category that allows posting and if it may, override it with initial one\n if (\n item.post !== false &&\n (!category || item.id == this.state.category)\n ) {\n category = item.id\n categoryOptions = item.post\n }\n\n if (item.post && (item.post.close || item.post.hide || item.post.pin)) {\n showOptions = true\n }\n\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n })\n })\n\n this.setState({\n isReady: true,\n showOptions,\n\n categories,\n category,\n categoryOptions,\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard thread?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onTitleChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n onCategoryChange = (event) => {\n const category = this.state.categories.find((item) => {\n return event.target.value == item.value\n })\n\n // if selected pin is greater than allowed, reduce it\n let pin = this.state.pin\n if (category.post.pin && category.post.pin < pin) {\n pin = category.post.pin\n }\n\n this.setState({\n category: category.id,\n categoryOptions: category.post,\n\n pin,\n })\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n onClose = () => {\n this.changeValue(\"close\", true)\n }\n\n onOpen = () => {\n this.changeValue(\"close\", false)\n }\n\n onPinGlobally = () => {\n this.changeValue(\"pin\", 2)\n }\n\n onPinLocally = () => {\n this.changeValue(\"pin\", 1)\n }\n\n onUnpin = () => {\n this.changeValue(\"pin\", 0)\n }\n\n onHide = () => {\n this.changeValue(\"hide\", true)\n }\n\n onUnhide = () => {\n this.changeValue(\"hide\", false)\n }\n\n clean() {\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n title: this.state.title,\n category: this.state.category,\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n close: this.state.close,\n hide: this.state.hide,\n pin: this.state.pin,\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your thread has been posted.\"))\n window.location = success.url\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.category || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n }\n\n if (!this.state.isReady) {\n return <Loader />\n }\n\n let columns = 0\n if (this.state.categoryOptions.close) columns += 1\n if (this.state.categoryOptions.hide) columns += 1\n if (this.state.categoryOptions.pin) columns += 1\n\n let titleStyle = null\n\n if (columns === 1) {\n titleStyle = \"col-sm-6\"\n } else {\n titleStyle = \"col-sm-8\"\n }\n\n if (columns === 3) {\n titleStyle += \" col-md-6\"\n } else if (columns) {\n titleStyle += \" col-md-7\"\n } else {\n titleStyle += \" col-md-9\"\n }\n\n return (\n <Container className=\"posting-form\" withFirstRow={true}>\n <form onSubmit={this.handleSubmit}>\n <div className=\"row first-row\">\n <div className={titleStyle}>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onTitleChange}\n placeholder={gettext(\"Thread title\")}\n type=\"text\"\n value={this.state.title}\n />\n </div>\n <div className=\"col-xs-12 col-sm-4 col-md-3 xs-margin-top\">\n <CategorySelect\n choices={this.state.categories}\n disabled={this.state.isLoading}\n onChange={this.onCategoryChange}\n value={this.state.category}\n />\n </div>\n <Options\n close={this.state.close}\n columns={columns}\n disabled={this.state.isLoading}\n hide={this.state.hide}\n onClose={this.onClose}\n onHide={this.onHide}\n onOpen={this.onOpen}\n onPinGlobally={this.onPinGlobally}\n onPinLocally={this.onPinLocally}\n onUnhide={this.onUnhide}\n onUnpin={this.onUnpin}\n options={this.state.categoryOptions}\n pin={this.state.pin}\n showOptions={this.state.showOptions}\n />\n </div>\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post thread\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n }\n}\n","export default function (usernames) {\n const normalisedNames = usernames\n .split(\",\")\n .map((i) => i.trim().toLowerCase())\n const removedBlanks = normalisedNames.filter((i) => i.length > 0)\n const removedDuplicates = removedBlanks.filter((name, pos) => {\n return removedBlanks.indexOf(name) == pos\n })\n\n return removedDuplicates\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport cleanUsernames from \"./utils/usernames\"\nimport { getPostValidators, getTitleValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n const to = (props.to || []).map((user) => user.username).join(\", \")\n\n this.state = {\n isLoading: false,\n\n to: to,\n title: \"\",\n post: \"\",\n attachments: [],\n\n validators: {\n title: getTitleValidators(),\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard private thread?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onToChange = (event) => {\n this.changeValue(\"to\", event.target.value)\n }\n\n onTitleChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!cleanUsernames(this.state.to).length) {\n snackbar.error(gettext(\"You have to enter at least one recipient.\"))\n return false\n }\n\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n to: cleanUsernames(this.state.to),\n title: this.state.title,\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your thread has been posted.\"))\n window.location = success.url\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.to || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <Container className=\"posting-form\" withFirstRow={true}>\n <form onSubmit={this.handleSubmit}>\n <div className=\"row first-row\">\n <div className=\"col-xs-12\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onToChange}\n placeholder={gettext(\n \"Comma separated list of user names, eg.: Danny, Lisa\"\n )}\n type=\"text\"\n value={this.state.to}\n />\n </div>\n </div>\n <div className=\"row first-row\">\n <div className=\"col-xs-12\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onTitleChange}\n placeholder={gettext(\"Thread title\")}\n type=\"text\"\n value={this.state.title}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-xs-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post thread\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n }\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n post: \"\",\n attachments: [],\n\n validators: {\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax\n .get(this.props.config, this.props.context || null)\n .then(this.loadSuccess, this.loadError)\n }\n\n componentWillReceiveProps(nextProps) {\n const context = this.props.context\n const newContext = nextProps.context\n\n if (context && newContext && context.reply === newContext.reply) return\n\n ajax\n .get(nextProps.config, nextProps.context || null)\n .then(this.appendData, snackbar.apiError)\n }\n\n loadSuccess = (data) => {\n this.setState({\n isReady: true,\n\n post: data.post\n ? '[quote=\"@' + data.poster + '\"]\\n' + data.post + \"\\n[/quote]\"\n : \"\",\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n appendData = (data) => {\n const newPost = data.post\n ? '[quote=\"@' + data.poster + '\"]\\n' + data.post + \"\\n[/quote]\\n\\n\"\n : \"\"\n\n this.setState((prevState, props) => {\n if (prevState.post.length > 0) {\n return {\n post: prevState.post + \"\\n\\n\" + newPost,\n }\n }\n\n return {\n post: newPost,\n }\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard your reply?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your reply has been posted.\"))\n window.location = success.url.index\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <Container className=\"posting-form\">\n <form onSubmit={this.handleSubmit} method=\"POST\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post reply\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n } else if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n } else {\n return <Loader />\n }\n }\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n post: \"\",\n attachments: [],\n protect: false,\n\n canProtect: false,\n\n validators: {\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.config).then(this.loadSuccess, this.loadError)\n }\n\n loadSuccess = (data) => {\n this.setState({\n isReady: true,\n\n post: data.post,\n attachments: attachments.hydrate(data.attachments),\n protect: data.is_protected,\n\n canProtect: data.can_protect,\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard changes?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onProtect = () => {\n this.setState({\n protect: true,\n })\n }\n\n onUnprotect = () => {\n this.setState({\n protect: false,\n })\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.put(this.props.submit, {\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n protect: this.state.protect,\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Reply has been edited.\"))\n window.location = success.url.index\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.category || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <Container className=\"posting-form\">\n <form onSubmit={this.handleSubmit} method=\"POST\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n canProtect={this.state.canProtect}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n onProtect={this.onProtect}\n onUnprotect={this.onUnprotect}\n protect={this.state.protect}\n submitLabel={gettext(\"Edit reply\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n } else if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n } else {\n return <Loader />\n }\n }\n}\n","import React from \"react\"\nimport Start from \"./start\"\nimport StartPrivate from \"./start-private\"\nimport Reply from \"./reply\"\nimport Edit from \"./edit\"\n\nexport default function (props) {\n if (props.mode === \"START\") {\n return <Start {...props} />\n } else if (props.mode === \"START_PRIVATE\") {\n return <StartPrivate {...props} />\n } else if (props.mode === \"REPLY\") {\n return <Reply {...props} />\n } else if (props.mode === \"EDIT\") {\n return <Edit {...props} />\n } else {\n return null\n }\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { PollForm } from \"misago/components/poll\"\nimport PostingComponent from \"misago/components/posting\"\nimport mount from \"misago/utils/mount-component\"\n\nexport class Posting {\n init(ajax, snackbar, placeholder) {\n this._ajax = ajax\n this._snackbar = snackbar\n this._placeholder = $(placeholder)\n\n this._mode = null\n\n this._isOpen = false\n this._isClosing = false\n }\n\n open(props) {\n if (this._isOpen === false) {\n this._mode = props.mode\n this._isOpen = props.submit\n this._realOpen(props)\n } else if (this._isOpen !== props.submit) {\n let message = gettext(\n \"You are already working on other message. Do you want to discard it?\"\n )\n if (this._mode == \"POLL\") {\n message = gettext(\n \"You are already working on a poll. Do you want to discard it?\"\n )\n }\n\n const changeForm = window.confirm(message)\n if (changeForm) {\n this._mode = props.mode\n this._isOpen = props.submit\n this._realOpen(props)\n }\n } else if (this._mode == \"REPLY\" && props.mode == \"REPLY\") {\n this._realOpen(props)\n }\n }\n\n _realOpen(props) {\n if (props.mode == \"POLL\") {\n mount(<PollForm {...props} />, \"posting-mount\")\n } else {\n mount(<PostingComponent {...props} />, \"posting-mount\")\n }\n\n this._placeholder.addClass(\"slide-in\")\n\n $(\"html, body\").animate(\n {\n scrollTop: this._placeholder.offset().top,\n },\n 1000\n )\n }\n\n close = () => {\n if (this._isOpen && !this._isClosing) {\n this._isClosing = true\n this._placeholder.removeClass(\"slide-in\")\n\n window.setTimeout(() => {\n ReactDOM.unmountComponentAtNode(\n document.getElementById(\"posting-mount\")\n )\n this._isClosing = false\n this._isOpen = false\n }, 300)\n }\n }\n}\n\nexport default new Posting()\n","import { showSnackbar, hideSnackbar } from \"misago/reducers/snackbar\"\n\nconst HIDE_ANIMATION_LENGTH = 300\nconst MESSAGE_SHOW_LENGTH = 5000\n\nexport class Snackbar {\n init(store) {\n this._store = store\n this._timeout = null\n }\n\n alert(message, type) {\n if (this._timeout) {\n window.clearTimeout(this._timeout)\n this._store.dispatch(hideSnackbar())\n\n this._timeout = window.setTimeout(() => {\n this._timeout = null\n this.alert(message, type)\n }, HIDE_ANIMATION_LENGTH)\n } else {\n this._store.dispatch(showSnackbar(message, type))\n this._timeout = window.setTimeout(() => {\n this._store.dispatch(hideSnackbar())\n this._timeout = null\n }, MESSAGE_SHOW_LENGTH)\n }\n }\n\n // shorthands for message types\n\n info(message) {\n this.alert(message, \"info\")\n }\n\n success(message) {\n this.alert(message, \"success\")\n }\n\n warning(message) {\n this.alert(message, \"warning\")\n }\n\n error(message) {\n this.alert(message, \"error\")\n }\n\n // shorthand for api errors\n\n apiError(rejection) {\n let message = rejection.detail\n\n if (!message) {\n if (rejection.status === 404) {\n message = gettext(\"Action link is invalid.\")\n } else {\n message = gettext(\"Unknown error has occured.\")\n }\n }\n\n if (rejection.status === 403 && message === \"Permission denied\") {\n message = gettext(\"You don't have permission to perform this action.\")\n }\n\n this.error(message)\n }\n}\n\nexport default new Snackbar()\n","import { combineReducers, createStore } from \"redux\"\n\nexport class StoreWrapper {\n constructor() {\n this._store = null\n this._reducers = {}\n this._initialState = {}\n }\n\n addReducer(name, reducer, initialState) {\n this._reducers[name] = reducer\n this._initialState[name] = initialState\n }\n\n init() {\n this._store = createStore(\n combineReducers(this._reducers),\n this._initialState\n )\n }\n\n getStore() {\n return this._store\n }\n\n // Store API\n\n getState() {\n return this._store.getState()\n }\n\n dispatch(action) {\n return this._store.dispatch(action)\n }\n}\n\nexport default new StoreWrapper()\n","/* global zxcvbn */\nexport class Zxcvbn {\n init(include) {\n this._include = include\n this._isLoaded = false\n }\n\n scorePassword(password, inputs) {\n // 0-4 score, the more the stronger password\n if (this._isLoaded) {\n return zxcvbn(password, inputs).score\n }\n\n return 0\n }\n\n load() {\n if (!this._isLoaded) {\n this._include.include(\"misago/js/zxcvbn.js\")\n return this._loadingPromise()\n } else {\n return this._loadedPromise()\n }\n }\n\n _loadingPromise() {\n const self = this\n\n return new Promise(function (resolve, reject) {\n var wait = function (tries = 0) {\n tries += 1\n if (tries > 200) {\n reject()\n } else if (typeof zxcvbn === \"undefined\") {\n window.setTimeout(function () {\n wait(tries)\n }, 200)\n } else {\n self._isLoaded = true\n resolve()\n }\n }\n wait()\n })\n }\n\n _loadedPromise() {\n // we have already loaded zxcvbn.js, resolve away!\n return new Promise(function (resolve) {\n resolve()\n })\n }\n}\n\nexport default new Zxcvbn()\n","import moment from \"moment\"\nimport React from \"react\"\n\nexport default class extends React.Component {\n getReasonMessage() {\n if (this.props.message.html) {\n return (\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.props.message.html,\n }}\n />\n )\n } else {\n return <p className=\"lead\">{this.props.message.plain}</p>\n }\n }\n\n getExpirationMessage() {\n if (this.props.expires) {\n if (this.props.expires.isAfter(moment())) {\n let title = interpolate(\n gettext(\"This ban expires on %(expires_on)s.\"),\n {\n expires_on: this.props.expires.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"This ban expires %(expires_on)s.\"),\n {\n expires_on: this.props.expires.fromNow(),\n },\n true\n )\n\n return <abbr title={title}>{message}</abbr>\n } else {\n return gettext(\"This ban has expired.\")\n }\n } else {\n return gettext(\"This ban is permanent.\")\n }\n }\n\n render() {\n return (\n <div className=\"page page-error page-error-banned\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">highlight_off</span>\n </div>\n <div className=\"message-body\">\n {this.getReasonMessage()}\n <p className=\"message-footnote\">{this.getExpirationMessage()}</p>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider, connect } from \"react-redux\"\nimport BannedPage from \"misago/components/banned-page\"\nimport misago from \"misago/index\"\nimport store from \"misago/services/store\"\n\nlet select = function (state) {\n return state.tick\n}\n\nlet RedrawedBannedPage = connect(select)(BannedPage)\n\nexport default function (ban, changeState) {\n ReactDOM.render(\n <Provider store={store.getStore()}>\n <RedrawedBannedPage\n message={ban.message}\n expires={ban.expires_on ? moment(ban.expires_on) : null}\n />\n </Provider>,\n\n document.getElementById(\"page-mount\")\n )\n\n if (typeof changeState === \"undefined\" || changeState) {\n let forumName = misago.get(\"SETTINGS\").forum_name\n document.title = gettext(\"You are banned\") + \" | \" + forumName\n window.history.pushState({}, \"\", misago.get(\"BANNED_URL\"))\n }\n}\n","export default function (list, rowWidth, padding = false) {\n let rows = []\n let row = []\n\n list.forEach(function (element) {\n row.push(element)\n if (row.length === rowWidth) {\n rows.push(row)\n row = []\n }\n })\n\n // pad row to required length?\n if (padding !== false && row.length > 0 && row.length < rowWidth) {\n for (let i = row.length; i < rowWidth; i++) {\n row.push(padding)\n }\n }\n\n if (row.length) {\n rows.push(row)\n }\n\n return rows\n}\n","export default function (a, b) {\n let ids = []\n return a.concat(b).filter(function (item) {\n if (ids.indexOf(item.id) === -1) {\n ids.push(item.id)\n return true\n } else {\n return false\n }\n })\n}\n","const map = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n}\n\nexport default function (text) {\n return text.replace(/[&<>\"']/g, function (m) {\n return map[m]\n })\n}\n","export default function (bytes) {\n if (bytes > 1024 * 1024 * 1024) {\n return roundSize(bytes / (1024 * 1024 * 1024)) + \" GB\"\n } else if (bytes > 1024 * 1024) {\n return roundSize(bytes / (1024 * 1024)) + \" MB\"\n } else if (bytes > 1024) {\n return roundSize(bytes / 1024) + \" KB\"\n } else {\n return roundSize(bytes) + \" B\"\n }\n}\n\nexport function roundSize(value) {\n return value.toFixed(1)\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\nimport store from \"misago/services/store\"\n\nexport default function (Component, rootElementId, connected = true) {\n let rootElement = document.getElementById(rootElementId)\n\n let finalComponent = Component.props ? Component : <Component />\n\n if (rootElement) {\n if (connected) {\n ReactDOM.render(\n <Provider store={store.getStore()}>{finalComponent}</Provider>,\n\n rootElement\n )\n } else {\n ReactDOM.render(finalComponent, rootElement)\n }\n }\n}\n","export function int(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport function range(min, max) {\n let array = new Array(int(min, max))\n for (let i = 0; i < array.length; i++) {\n array[i] = i\n }\n\n return array\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\nimport { Router, browserHistory } from \"react-router\"\nimport store from \"misago/services/store\"\n\nconst rootElement = document.getElementById(\"page-mount\")\n\nexport default function (options) {\n let routes = {\n component: options.component || null,\n childRoutes: [],\n }\n\n if (options.root) {\n routes.childRoutes = [\n {\n path: options.root,\n onEnter: function (nextState, replaceState) {\n replaceState(null, options.paths[0].path)\n },\n },\n ].concat(options.paths)\n } else {\n routes.childRoutes = options.paths\n }\n\n ReactDOM.render(\n <Provider store={store.getStore()}>\n <Router routes={routes} history={browserHistory} />\n </Provider>,\n rootElement\n )\n}\n","export function push(array, value) {\n if (array.indexOf(value) === -1) {\n let copy = array.slice()\n copy.push(value)\n return copy\n } else {\n return array\n }\n}\n\nexport function remove(array, value) {\n if (array.indexOf(value) >= 0) {\n return array.filter(function (i) {\n return i !== value\n })\n } else {\n return array\n }\n}\n\nexport function toggle(array, value) {\n if (array.indexOf(value) === -1) {\n let copy = array.slice()\n copy.push(value)\n return copy\n } else {\n return array.filter(function (i) {\n return i !== value\n })\n }\n}\n","const EMAIL =\n /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i\nconst USERNAME = new RegExp(\"^[0-9a-z]+$\", \"i\")\n\nexport function required(message) {\n return function (value) {\n if (value === false || value === null || $.trim(value).length === 0) {\n return message || gettext(\"This field is required.\")\n }\n }\n}\n\nexport function requiredTermsOfService(message) {\n const error = gettext(\"You have to accept the terms of service.\")\n return required(message || error)\n}\n\nexport function requiredPrivacyPolicy(message) {\n const error = gettext(\"You have to accept the privacy policy.\")\n return required(message || error)\n}\n\nexport function email(message) {\n return function (value) {\n if (!EMAIL.test(value)) {\n return message || gettext(\"Enter a valid email address.\")\n }\n }\n}\n\nexport function minLength(limitValue, message) {\n return function (value) {\n var returnMessage = \"\"\n var length = $.trim(value).length\n\n if (length < limitValue) {\n if (message) {\n returnMessage = message(limitValue, length)\n } else {\n returnMessage = ngettext(\n \"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\",\n \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n }\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n\nexport function maxLength(limitValue, message) {\n return function (value) {\n var returnMessage = \"\"\n var length = $.trim(value).length\n\n if (length > limitValue) {\n if (message) {\n returnMessage = message(limitValue, length)\n } else {\n returnMessage = ngettext(\n \"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\",\n \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n }\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n\nexport function usernameMinLength(lengthMin) {\n var message = function (lengthMin) {\n return ngettext(\n \"Username must be at least %(limit_value)s character long.\",\n \"Username must be at least %(limit_value)s characters long.\",\n lengthMin\n )\n }\n return minLength(lengthMin, message)\n}\n\nexport function usernameMaxLength(lengthMax) {\n var message = function (lengthMax) {\n return ngettext(\n \"Username cannot be longer than %(limit_value)s character.\",\n \"Username cannot be longer than %(limit_value)s characters.\",\n lengthMax\n )\n }\n return maxLength(lengthMax, message)\n}\n\nexport function usernameContent() {\n return function (value) {\n if (!USERNAME.test($.trim(value))) {\n return gettext(\n \"Username can only contain latin alphabet letters and digits.\"\n )\n }\n }\n}\n\nexport function passwordMinLength(limitValue) {\n return function (value) {\n const length = value.length\n\n if (length < limitValue) {\n const returnMessage = ngettext(\n \"Valid password must be at least %(limit_value)s character long.\",\n \"Valid password must be at least %(limit_value)s characters long.\",\n limitValue\n )\n\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t174: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmisago\"] = self[\"webpackChunkmisago\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(32233); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(58339); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(64109); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(46226); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(93240); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(75147); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(4894); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(29223); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(3026); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(94795); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(95563); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(32488); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(11768); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(61323); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(15049); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(61814); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(95920); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(59203); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(72168); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(47806); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(77031); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(97751); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(76093); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(19764); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(47549); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(22331); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(21513); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(98749); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(98251); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(6720); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(10846); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(18255); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(14113); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(24444); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(1764); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(68351); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(81521); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(19984); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(41229); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(43589); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(24108); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(33934); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(85577); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(83526); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(43060); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(92292); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(33409); })\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], function() { return __webpack_require__(31341); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","n","window","self","hljs","e","replace","I","t","nodeName","toLowerCase","r","exec","index","i","k","test","o","u","a","firstChild","nextSibling","nodeType","nodeValue","length","push","event","offset","node","match","c","l","w","map","call","attributes","value","join","s","f","g","substring","reverse","forEach","splice","pop","substr","source","RegExp","cI","compiled","bK","split","Number","E","lR","b","bR","eW","eR","tE","iR","v","starts","concat","filter","Boolean","endsParent","parent","N","hasOwnProperty","h","y","classPrefix","C","sL","x","B","L","M","top","language","d","lastIndex","p","cN","Object","create","m","skip","eB","rB","rE","eE","Error","R","j","O","T","message","indexOf","languages","second_best","tabReplace","useBR","className","parentNode","document","createElementNS","innerHTML","textContent","trim","result","re","called","querySelectorAll","keys","highlight","highlightAuto","fixMarkup","highlightBlock","configure","initHighlighting","initHighlightingOnLoad","addEventListener","registerLanguage","aliases","listLanguages","getLanguage","inherit","IR","UIR","NR","CNR","BNR","RSR","BE","ASM","QSM","PWM","CLCM","CBCM","HCM","NM","CNM","BNM","CSSNM","RM","TM","UTM","METHOD_GUARD","name","keyword","built_in","literal","_","children","classnames","shrink","auto","styleName","dangerouslySetInnerHTML","__html","header","LegalAgreement","props","agreement","checked","errors","url","onChange","agreementHtml","interpolate","escapeHtml","label","gettext","type","error","privacyPolicy","termsOfService","onPrivacyPolicyChange","onTermsOfServiceChange","termsOfServiceId","misago","termsOfServiceUrl","privacyPolicyId","privacyPolicyUrl","FormHeader","text","buttonClassName","buttonLabel","formLabel","labelClassName","socialAuth","id","button_text","button_color","style","color","finalButtonLabel","site","href","thread","weight","title","best_answer","has_poll","is_unapproved","has_unapproved_posts","is_closed","is_hidden","ngettext","replies","Math","round","size","size2x","alt","src","getSrc","user","srcSet","width","height","avatars","avatar","av","resolveAvatarForSize","Button","this","disabled","loading","onClick","React","defaultProps","choices","item","repeat","level","display","helpText","ev","field","fieldname","target","input","rows","fields","for","help_text","validation","setState","state","isLoading","groups","group","initial","data","assign","ajax","api","onSuccess","rejection","status","snackbar","onSubmit","handleSubmit","CancelButton","onCancel","Form","then","cancel","FormDisplay","isValidated","getClassName","labelClass","htmlFor","controlClass","getFeedbackDescription","getFeedback","getHelpText","extra","validateRequired","required","changeValue","newState","formErrors","validateField","preventDefault","clean","promise","send","success","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","requiredError","validationError","isControlled","isActive","path","location","pathname","activeClassName","modal","onError","bestAnswer","poll","polls","confirm","role","BestAnswerSelect","bestAnswers","onBestAnswerChange","PollSelect","onPollChange","choice","ytRegExp","domnode","highlightCode","embedYoutubePlayers","_youtube","codeblocks","code","anchors","onlyChild","childNodes","parseYoutubeUrl","youtubeMovie","swapYoutubePlayer","element","youtube","video","start","player","$","replaceWith","wrap","cleanedUrl","cleanUrl","getVideoIdFromUrl","timebit","bits","parseInt","onebox","documentNode","find","click","revealSpoiler","prevProps","prevState","nextProps","nextState","markup","ref","btn","addClass","icon","PanelMessage","PollChoice","hash","proc","votes","ceil","getVotesLabel","ChoiceVotes","UserChoice","selected","hydratedData","voters","voter","voted_on","moment","detail","ModalBody","ChoicesList","ChoiceDetails","key","VotesCount","VotesList","Voter","username","VoteDate","format","fromNow","isPollOver","showVoting","acl","is_public","can_delete","can_edit","can_see_votes","can_vote","hasSelectedChoices","allow_revotes","isVisible","controls","canVote","canChangeVote","ChangeVote","SeeVotes","Edit","Delete","control","isBusy","posting","submit","mode","store","newThreadAcl","DATE_ABBR","PollVotes","PollLength","PollIsPublic","PollCreation","poster","getPoster","posted_on","getPostedOn","poster_name","absolute","relative","ends_on","getEndsOn","endsOn","question","PollChoicesLeft","choicesLeft","PollAllowRevote","ChoiceSelect","toggleChoice","getChoicesLeft","selection","allowed_choices","getChoiceFromHash","deselectChoice","selectChoice","slice","showResults","isAfter","getIsPollOver","generateRandomHash","setChoices","canDelete","onDelete","onAdd","maxLength","placeholder","randomHash","random","toString","isEdit","non_field_errors","bindInput","PollPublicSwitch","iconOn","iconOff","labelOn","labelOff","post","content","Default","Invalid","category","tooltip","rank","userTitle","css_class","is_tab","isReady","posts","getTitleValidators","minLength","thread_title_length_min","limitValue","limit_value","show_value","thread_title_length_max","getPostValidators","post_length_max","validatePostLengthMin","post_length_min","getChoice","Icon","getIcon","getLabel","change","showActivation","password","isValid","form","append","val","showBannedPage","ban","getActivationButton","is_banned","is_online_hidden","is_offline_hidden","is_online","is_offline","getClass","StatusIcon","StatusLabel","banned_until","ban_expires","last_click","getHelp","emptyMessage","getEmptyMessage","changed_by","changed_by_username","renderUserAvatar","renderUsername","old_username","new_username","changed_on","changes","hiddenOnMobile","isLoaded","showStatus","Status","JoinDate","Posts","Threads","Followers","joined_on","getStatClassName","threads","followers","stat","colClassName","cols","list","Array","apply","users","dropdown","toggle","items","isOrdered","_items","order","after","before","undefined","get","values","values_only","_order","unordered","ordered","ordering","insertItem","insertAt","iterations","_initializers","_context","initializer","context","OrderedList","orderedValues","fallback","has","setInterval","patch","AUTH_SYNC_RATE","auth","storage","captcha","include","AcceptAgreement","submiting","accept","reload","handleDecline","handleAccept","getElementById","mount","signedIn","signedOut","getMessage","refresh","select","connect","AuthMessage","description","html","getTitle","is_read","LastThread","Empty","Private","Protected","can_browse","can_see_all_threads","last_thread_title","LastPosterAvatar","last_thread_new","LastPosterName","last_post","last_post_on","last_poster","last_poster_name","Message","isFirst","subcategories","categories","hydrate","startPolling","frequency","update","tick","Categories","SideNav","options","option","to","baseUrl","component","CompactNav","hideNav","delete","onPasswordChange","edit_details","DownloadData","data_downloads","downloads","isSubmiting","request_data_download","handleLoadDownloads","rowStyle","requested_on","DownloadButton","exportFile","file","colSpan","handleRequestDataDownload","verticalAlign","is_hiding_presence","limits_private_thread_invites_to","subscribe_to_started_threads","subscribe_to_replied_threads","privateThreadInvitesChoices","subscribeToChoices","next_on","next_change","length_min","length_max","phrases","changes_left","name_changes_expire","complete","slug","addNameChange","updateUsername","Promise","all","results","onComplete","getChangeForm","new_email","change_email","response","new_password","repeat_password","change_password","has_usable_password","page","PageHeader","FlexRow","PageContainer","WithDropdown","paths","ChangeForumOptions","EditDetails","delegateAuth","DELEGATE_AUTH","ChangeUsername","ChangeSignInCredentials","DeleteAccount","root","Options","expires_on","initWithPreloadedData","initWithoutPreloadedData","profile","user_message","staff_message","getUserMessage","getStaffMessage","getExpirationMessage","getPanelBody","isAuthenticated","SafeValue","rel","onEdit","showEditButton","Toolbar","dispatch","details","load","editing","newDetails","loadDetails","profileDetails","edit","loadItems","next","Feed","loadMore","LoadMoreButton","loadUsers","search","count","more","pages","setSpecialProps","PRELOADED_DATA_KEY","TITLE","API_FILTER","apiUrl","getMoreButton","getListBody","loadChanges","is_followed","follow","action","canMessage","can_start_private_threads","isProfileOwner","is_avatar_locked","avatar_lock_user_message","avatar_lock_staff_message","moderate_avatar","apiResponse","updateAvatar","avatar_hash","getFormBody","getModalBody","moderate_username","setTimeout","countdown","isDeleted","with_content","getButtonLabel","getDeletedBody","getForm","AvatarControls","moderation","showAvatarDialog","rename","showRenameDialog","showDeleteDialog","is_active","email","ProfileModerationButton","available","getModeration","can_follow","is_anonumous","can_rename","can_moderate_avatar","COMPONENTS","follows","Follows","Details","UsernameHistory","BanDetails","Profile","RequestLinkForm","callback","LinkSent","reset","RequestActivationLink","RequestResetForm","showInactivePage","AccountInactivePage","activation","getActivateButton","ReactDOM","RequestPasswordReset","ResetPasswordForm","PasswordChangedPage","SignInModal","showSignIn","remove","query","updateSearch","urlQuery","history","pushState","encodeURIComponent","q","providers","provider","updateUsers","updatePosts","onQueryChange","Badge","SearchTime","time","copy","LoadMore","appendPosts","updateProvider","Blankslate","components","route","TYPES_CLASSES","info","warning","Snackbar","snackbarClass","getSnackbarClass","backendName","pageTitleTpl","pageTitle","backend","Register","handleToggleAgreement","validator","formValidators","emailProtected","terms_of_service","privacy_policy","onRegistrationComplete","step","stateUpdate","backend_name","emailHelpText","emailHelpTextTpl","RegisterLegalFootnote","handlePrivacyPolicyChange","handleTermsOfServiceChange","SocialAuth","handleRegistrationComplete","op","updateAcl","participants","ModalHeader","onUsernameChange","can_add_participants","participant","confirmed","isUser","is_owner","can_change_owner","isModerator","can_moderate_private_threads","userIsOwner","UserStatus","isOwner","getUserIsOwner","utils","ICON","changed_title","pinned_globally","pinned_locally","unpinned","moved","merged","approved","opened","closed","unhid","hid","changed_owner","tookover","added_participant","owner_left","participant_left","removed_participant","event_type","can_hide","Hide","Unhide","hidden_on","hidden_by_name","hidden_by","USER_SPAN","USER_URL","Hidden","Poster","date","event_by","event_on","MESSAGE","ITEM_LINK","ITEM_SPAN","ChangedTitle","Moved","Merged","ChangedOwner","AddedParticipant","RemovedParticipant","msgstring","oldTitle","event_context","old_title","fromCategory","from_category","mergedThread","merged_thread","newOwner","waypoint","handler","direction","boundingClientRect","getBoundingClientRect","offsetBottom","clientHeight","documentElement","read","thread_is_read","AttachmentPreview","attachment","filename","AttachmentDetails","is_image","AttachmentThumbnail","AttachmentIcon","thumb","backgroundImage","uploader","uploader_name","uploaded_on","filetype","formatFilesize","can_see_hidden","attachments","batch","row","Row","FlagBestAnswer","best_answer_marked_by","marked_on","best_answer_marked_on","marked_by","best_answer_marked_by_name","FlagHidden","FlagUnapproved","FlagProtected","is_protected","approve","protect","unprotect","hide","unhide","like","lastLikes","last_likes","concatedLikes","finalLikes","is_liked","likes","unlike","previousState","ops","markAsBestAnswer","best_answer_is_protected","best_answer_marked_by_slug","patchThread","unmarkBestAnswer","hydrateLike","ModalDialog","LikesList","liked_on","likesCount","LikeDetails","liker_id","LikeDate","likedOn","can_reply","can_see_likes","can_like","MarkAsBestAnswer","MarkAsBestAnswerCompact","Like","Likes","LikesCompact","Reply","actions","can_mark_best_answer","can_mark_as_best_answer","can_change_best_answer","hasLikes","getLikesMessage","usernames","hiddenLikes","otherUsers","lastUser","usernamesList","last_user","config","editor","reply","move","new_thread","onUrlChange","diff","DiffItem","revertEdit","canRevert","goToEdit","previous","GoBackBtn","goBack","GoForwardBtn","goForward","GoLastBtn","goLast","Label","RevertBtn","editor_name","edited_on","edited_by","hydrateEdit","json","edits","hydratedPost","PostingConfig","ModerationForm","isError","Loader","categoryId","can_pin_threads","can_hide_threads","can_close_threads","isHiddenChoices","isClosedChoices","pin","close","getWeightChoices","Modal","onCategoryChange","renderWeightField","renderHiddenField","renderClosedField","Permalink","UnmarkMarkBestAnswer","PostEdits","Approve","Move","Split","Protect","Unprotect","permaUrl","protocol","host","prompt","can_unmark_best_answer","isHidden","isUnedited","can_approve","can_move","can_protect","can_unhide","isSelected","can_merge_posts","UnreadLabel","UnreadCompact","PostedOn","PostedOnCompact","PostEditsCompacts","ProtectedLabel","postAuthor","hasAcl","hasVisibleTitle","ListItem","is_event","starter","starter_name","timestamp","started_on","handleSuccessUnmounted","best_answers","merge","other_thread","post_set","ModalMessage","ModalLoading","successMessage","callApi","changeTitle","pinGlobally","pinLocally","unpin","open","oldState","subscription","finalState","stickToBottom","unsubscribe","alert","short_name","special_role","breadcrumbs","ThreadReplies","hasFlags","ThreadFlags","is_authenticated","enabled","first","last","PostErrors","heading","ids","rollback","isArray","Merge","can_merge","dropup","onReply","compact","is_new","new_post","unapproved_post","onPoll","can_start_poll","setPageTitle","shouldFetchData","fetchData","startPollingApi","stopPollingApi","params","delayed","threadModeration","getThreadModeration","postsModeration","getPostsModeration","openPollForm","openReplyForm","can_close","can_pin_globally","can_pin","can_unprotect","basePath","pk","Route","compareLastPostAge","compareGlobalWeight","compareWeight","allItems","parentUrl","lists","longName","ThreadErrors","freezeThread","deleteThread","addThreads","filterThreads","categoriesMap","getFormdata","categoryChoices","can_start_threads","renderForm","renderCantMergeMessage","storeState","leftThreads","acls","renderCantMoveMessage","updateThread","threadsMap","failedThreads","noSelection","topCategory","topCategories","subCategory","subCategories","startThread","allow","getTopCategory","cat","busyThreads","getModerationActions","SUBSCRIPTION","notify","getSubscriptionIcon","activeCategory","showOptions","showSubscription","isNew","updatedThreads","applyUpdate","loadThreads","getCategory","current","fromDb","currentMap","isThreadChanged","getSorting","currentState","sets","isMounted","pollResponse","index_header","forum_name","index_title","specialRole","pageLead","threadsCount","applyDiff","PRIVATE_THREADS_LIST","getListOptions","routes","can_see_unapproved_content_lists","getLists","section","HEADER","RESULT","FOOTER","autoComplete","encodeURI","footer","flattenProvider","flatlist","arrayLength","flatResults","flattenProviders","flattenResults","isOpen","container","querySelector","focus","closeResults","loadResults","intervalId","onDocumentMouseDown","onEscape","removeEventListener","delay","clearTimeout","cleanResults","onToggle","STYLES","LABELS","_score","_password","_inputs","loaded","zxcvbn","inputs","cacheStale","score","getScore","RegisterForm","criteria","passwordMinLength","min_length","max_length","__all__","StartSocialAuth","RegisterComplete","getLead","getSubscript","completeRegistration","account_activation","showRegisterForm","GuestMenu","LOGIN_URL","showSignInModal","GuestNav","CompactGuestNav","showGuestMenu","avatarType","showError","gravatar","setGravatar","crop_src","showCrop","upload","showUpload","galleries","showGallery","userPeview","getAvatarPreview","getGravatarButton","setGenerated","getCropButton","getUploadButton","getGalleryButton","cropit","deviceRatio","cropitOffset","crop","zoom","crop_tmp","dataUrl","cropperWidth","getAvatarSize","initialWidth","exportZoom","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","offsetX","offsetY","cropAvatar","showIndex","image","files","validateFile","preview","URL","createObjectURL","progress","FormData","uploaded","limit","filesize","fileSize","invalidTypeMsg","allowed_mime_types","extensionFound","loweredFilename","allowed_extensions","extension","extensions","pickFile","getUploadRequirements","getUploadProgressLabel","uploadFile","getUploadProgress","renderCrop","renderUpload","GalleryItem","Gallery","images","save","ChangeAvatarError","reason","getErrorReason","AvatarIndex","AvatarUpload","AvatarCrop","AvatarGallery","completeFlow","getBody","UserMenu","ChangeAvatarModal","following","changeAvatar","can_use_private_threads","PrivateThreadsBadge","unread_private_threads","UserNav","UserPrivateThreadsLink","selectUserMenu","CompactUserNav","showUserMenu","CompactUserMenu","getPageUrl","days","trackedPeriod","rankUrl","getUserStatus","getRankName","getUserTitle","counter","meta","posters","getLeadMessage","tracked_period","string","subString","pos","stringCount","RankUsersListLoader","getRankDescription","getComponent","Rank","ActivePosters","Users","attr","forum_index_title","reducer","isAnonymous","initialState","doTick","PATCH_USER","SIGN_IN","SIGN_OUT","signIn","signOut","soft","UPDATE_AVATAR","userId","UPDATE_USERNAME","REPLACE_PARTICIPANTS","BUSY_POLL","RELEASE_POLL","REMOVE_POLL","REPLACE_POLL","UPDATE_POLL","add","busy","release","hydrated","PATCH_POST","updated_on","hydrateAttachment","hydrateUser","APPEND_POSTS","SELECT_POST","DESELECT_POST","DESELECT_POSTS","LOAD_POSTS","UNLOAD_POSTS","UPDATE_POSTS","deselect","deselectAll","hydratePost","unload","selectedPosts","deseletedPosts","deseletedAllPosts","resultsIds","reducedPosts","postReducer","LOAD_DETAILS","HYDRATE_PROFILE","PATCH_PROFILE","hydrateStatus","REPLACE_SEARCH","UPDATE_SEARCH","UPDATE_SEARCH_PROVIDER","SELECT_ALL","SELECT_NONE","SELECT_ITEM","itemsIds","none","itemId","SHOW_SNACKBAR","HIDE_SNACKBAR","showSnackbar","messageType","hideSnackbar","BUSY_THREAD","RELEASE_THREAD","REPLACE_THREAD","UPDATE_THREAD","UPDATE_THREAD_ACL","APPEND_THREADS","DELETE_THREAD","FILTER_THREADS","HYDRATE_THREADS","PATCH_THREAD","SORT_THREADS","MODERATION_PERMISSIONS","sorting","hydrateThread","thread_acl","perm","mergedState","concatUnique","sort","itemCategory","lft","rght","patchedState","TICK","ADD_NAME_CHANGE","APPEND_HISTORY","HYDRATE_HISTORY","changedBy","hydrateNamechange","namechange","unshift","floor","Date","now","APPEND_USERS","HYDRATE_USERS","Ajax","_cookieName","_csrfToken","_locks","cookieName","cookie","cookieRegex","method","resolve","reject","xhr","headers","getCsrfToken","JSON","stringify","contentType","dataType","jqXHR","responseJSON","statusText","lock","param","waiter","wait","request","processData","XMLHttpRequest","evt","lengthComputable","total","Auth","local","_store","_local","_modal","syncSession","watchState","getState","set","watch","BaseCaptcha","_ajax","_include","_snackbar","NoCaptcha","QACaptcha","kwargs","ReCaptchaComponent","grecaptcha","render","sitekey","siteKey","binding","ReCaptcha","recaptcha_site_key","Captcha","captcha_type","_captcha","init","Include","staticUrl","_staticUrl","_included","script","remote","cache","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","parse","newValue","watcher","oldValue","setItem","itemString","getItem","MobileNavbarDropdown","_element","_component","removeClass","show","on","PageTitle","indexTitle","forumName","_indexTitle","_forumName","finalTitle","Polls","_polls","stop","poolServer","_stopped","timeout","apiError","pollId","replaceSelection","execAction","insertCode","makeEmphasis","insertHr","URL_PATTERN","str","insertImage","isUrl","insertLink","insertSpoiler","makeStrikethrough","makeStrong","insertQuote","insertAttachment","updateItem","isRemoved","updatedAttachments","onAttachmentsChange","Preview","Filename","Actions","onInsert","onRemove","onUndo","Image","thumbnailUrl","Insert","Remove","Undo","filteredAttachments","getRandomKey","getTime","max_attachment_size","textareaId","getTextarea","getSelectionRange","end","getSelection","ctrl","range","createRange","moveStart","selectionStart","selectionEnd","_replace","myRange","replacement","startText","selectionRange","setSelectionRange","createTextRange","collapse","moveEnd","setSelection","isPreviewLoading","parsed","operation","_replaceSelection","atwho","at","displayTpl","insertTpl","searchKey","callbacks","remoteFilter","getJSON","flag","onPreviewClick","submitLabel","canProtect","onProtect","onUnprotect","columns","columnClassName","textClassName","PinOptions","onPinGlobally","onPinLocally","onUnpin","HideOptions","onHide","onUnhide","CloseOptions","onClose","onOpen","completedAttachments","categoryOptions","isErrored","loadSuccess","loadError","titleStyle","withFirstRow","onTitleChange","onPostChange","removedBlanks","cleanUsernames","onToChange","newPost","newContext","appendData","Posting","_isOpen","_isClosing","_placeholder","_mode","_realOpen","animate","scrollTop","_timeout","StoreWrapper","_reducers","_initialState","createStore","combineReducers","Zxcvbn","_isLoaded","_loadedPromise","_loadingPromise","tries","plain","expires","getReasonMessage","RedrawedBannedPage","BannedPage","changeState","rowWidth","padding","bytes","roundSize","toFixed","Component","rootElementId","connected","rootElement","finalComponent","int","min","max","childRoutes","onEnter","replaceState","browserHistory","array","EMAIL","USERNAME","requiredTermsOfService","requiredPrivacyPolicy","returnMessage","usernameMinLength","lengthMin","usernameMaxLength","lengthMax","usernameContent","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","definition","defineProperty","enumerable","globalThis","Function","hmd","obj","prop","prototype","Symbol","toStringTag","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"misago.js","mappings":"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","sources":["webpack://misago/webpack/runtime/chunk loaded","webpack://misago/./highlight/highlight.pack.js","webpack://misago/./src/components/FlexRow/FlexRow.jsx","webpack://misago/./src/components/FlexRow/FlexRowCol.jsx","webpack://misago/./src/components/FlexRow/FlexRowSection.jsx","webpack://misago/./src/components/PageContainer.jsx","webpack://misago/./src/components/PageHeader/PageHeader.jsx","webpack://misago/./src/components/PageHeader/PageHeaderBanner.jsx","webpack://misago/./src/components/PageHeader/PageHeaderContainer.jsx","webpack://misago/./src/components/PageHeader/PageHeaderDetails.jsx","webpack://misago/./src/components/PageHeader/PageHeaderHTMLMessage.jsx","webpack://misago/./src/components/PageHeader/PageHeaderMessage.jsx","webpack://misago/./src/components/PageHeader/PageHeaderPlain.jsx","webpack://misago/./src/components/RegisterLegalFootnote.js","webpack://misago/./src/components/StartSocialAuth.js","webpack://misago/./src/components/ThreadFlags.jsx","webpack://misago/./src/components/ThreadReplies.jsx","webpack://misago/./src/components/Toolbar/Toolbar.jsx","webpack://misago/./src/components/Toolbar/ToolbarItem.jsx","webpack://misago/./src/components/Toolbar/ToolbarSection.jsx","webpack://misago/./src/components/Toolbar/ToolbarSpacer.jsx","webpack://misago/./src/components/avatar.js","webpack://misago/./src/components/button.js","webpack://misago/./src/components/category-select.js","webpack://misago/./src/components/edit-details/blankslate.js","webpack://misago/./src/components/edit-details/loader.js","webpack://misago/./src/components/edit-details/field-input.js","webpack://misago/./src/components/edit-details/fieldset.js","webpack://misago/./src/components/edit-details/form.js","webpack://misago/./src/components/edit-details/index.js","webpack://misago/./src/components/form-group.js","webpack://misago/./src/components/form.js","webpack://misago/./src/components/li.js","webpack://misago/./src/components/loader.js","webpack://misago/./src/components/merge-conflict.js","webpack://misago/./src/services/one-box.js","webpack://misago/./src/components/misago-markup.js","webpack://misago/./src/components/modal-loader.js","webpack://misago/./src/components/modal-message.js","webpack://misago/./src/components/panel-loader.js","webpack://misago/./src/components/panel-message.js","webpack://misago/./src/components/poll/results/chart.js","webpack://misago/./src/components/poll/results/modal.js","webpack://misago/./src/components/poll/results/options.js","webpack://misago/./src/components/poll/info.js","webpack://misago/./src/components/poll/results/index.js","webpack://misago/./src/components/poll/voting/help.js","webpack://misago/./src/components/poll/voting/select.js","webpack://misago/./src/components/poll/voting/utils.js","webpack://misago/./src/components/poll/voting/index.js","webpack://misago/./src/components/poll/poll.js","webpack://misago/./src/components/poll/form/choices-control.js","webpack://misago/./src/components/poll/form/index.js","webpack://misago/./src/components/post-feed/post/body.js","webpack://misago/./src/components/post-feed/post/header.js","webpack://misago/./src/components/post-feed/post/post-side/button.js","webpack://misago/./src/components/post-feed/post/post-side/anonymous.js","webpack://misago/./src/components/post-feed/post/post-side/user-title.js","webpack://misago/./src/components/post-feed/post/post-side/registered.js","webpack://misago/./src/components/post-feed/post/post-side/index.js","webpack://misago/./src/components/post-feed/post/index.js","webpack://misago/./src/components/post-feed/preview.js","webpack://misago/./src/components/post-feed/index.js","webpack://misago/./src/components/posting/utils/validators.js","webpack://misago/./src/components/select.js","webpack://misago/./src/components/sign-in.js","webpack://misago/./src/components/user-status.js","webpack://misago/./src/components/username-history/list-empty.js","webpack://misago/./src/components/username-history/change.js","webpack://misago/./src/components/username-history/list-ready.js","webpack://misago/./src/components/username-history/change-preview.js","webpack://misago/./src/components/username-history/list-preview.js","webpack://misago/./src/components/username-history/root.js","webpack://misago/./src/components/users-list/card/stats.js","webpack://misago/./src/components/users-list/card/user-title.js","webpack://misago/./src/components/users-list/card/index.js","webpack://misago/./src/components/users-list/preview/card.js","webpack://misago/./src/components/users-list/preview/index.js","webpack://misago/./src/components/users-list/index.js","webpack://misago/./src/components/with-dropdown.js","webpack://misago/./src/components/yes-no-switch.js","webpack://misago/./src/utils/ordered-list.js","webpack://misago/./src/index.js","webpack://misago/./src/initializers/ajax.js","webpack://misago/./src/initializers/auth-sync.js","webpack://misago/./src/initializers/auth.js","webpack://misago/./src/initializers/captcha.js","webpack://misago/./src/components/accept-agreement.js","webpack://misago/./src/initializers/components/accept-agreement.js","webpack://misago/./src/components/auth-message.js","webpack://misago/./src/initializers/components/auth-message.js","webpack://misago/./src/initializers/components/banned-page.js","webpack://misago/./src/components/categories/blankslate.js","webpack://misago/./src/components/categories/category/list-item/description.js","webpack://misago/./src/components/categories/category/list-item/icon.js","webpack://misago/./src/components/categories/category/list-item/main.js","webpack://misago/./src/components/categories/category/list-item/last-thread.js","webpack://misago/./src/components/categories/category/list-item/stats.js","webpack://misago/./src/components/categories/category/list-item/subcategories/list-item.js","webpack://misago/./src/components/categories/category/list-item/subcategories/index.js","webpack://misago/./src/components/categories/category/list-item/index.js","webpack://misago/./src/components/categories/category/index.js","webpack://misago/./src/components/categories/categories-list.js","webpack://misago/./src/components/categories/index.js","webpack://misago/./src/initializers/components/categories.js","webpack://misago/./src/components/options/navs.js","webpack://misago/./src/components/options/delete-account.js","webpack://misago/./src/components/options/edit-details.js","webpack://misago/./src/components/options/download-data.js","webpack://misago/./src/components/options/forum-options.js","webpack://misago/./src/components/options/change-username/form-loading.js","webpack://misago/./src/components/options/change-username/form-locked.js","webpack://misago/./src/components/options/change-username/form.js","webpack://misago/./src/components/options/change-username/root.js","webpack://misago/./src/components/options/sign-in-credentials/change-email.js","webpack://misago/./src/components/options/sign-in-credentials/change-password.js","webpack://misago/./src/components/options/sign-in-credentials/UnusablePasswordMessage.js","webpack://misago/./src/components/options/sign-in-credentials/root.js","webpack://misago/./src/components/options/root.js","webpack://misago/./src/initializers/components/options.js","webpack://misago/./src/components/profile/ban-details.js","webpack://misago/./src/components/profile/details/form.js","webpack://misago/./src/components/profile/details/empty-message.js","webpack://misago/./src/components/profile/details/field-value.js","webpack://misago/./src/components/profile/details/field.js","webpack://misago/./src/components/profile/details/group.js","webpack://misago/./src/components/profile/details/groups-list.js","webpack://misago/./src/components/profile/details/header.js","webpack://misago/./src/data/profile-details.js","webpack://misago/./src/components/profile/details/index.js","webpack://misago/./src/components/profile/feed/route.js","webpack://misago/./src/components/quick-search.js","webpack://misago/./src/components/profile/followers.js","webpack://misago/./src/components/profile/follows.js","webpack://misago/./src/components/profile/username-history.js","webpack://misago/./src/components/profile/follow-button.js","webpack://misago/./src/components/profile/message-button.js","webpack://misago/./src/components/profile/moderation/avatar-controls.js","webpack://misago/./src/components/profile/moderation/change-username.js","webpack://misago/./src/components/profile/moderation/delete-account.js","webpack://misago/./src/components/profile/moderation/nav.js","webpack://misago/./src/components/profile/ProfileDataList.jsx","webpack://misago/./src/components/profile/ProfileHeader.jsx","webpack://misago/./src/components/profile/ProfileNav.js","webpack://misago/./src/components/profile/root.js","webpack://misago/./src/components/profile/feed/index.js","webpack://misago/./src/initializers/components/profile.js","webpack://misago/./src/components/request-activation-link.js","webpack://misago/./src/initializers/components/request-activation-link.js","webpack://misago/./src/components/request-password-reset.js","webpack://misago/./src/initializers/components/request-password-reset.js","webpack://misago/./src/components/reset-password-form.js","webpack://misago/./src/initializers/components/reset-password-form.js","webpack://misago/./src/components/search/form.js","webpack://misago/./src/components/search/sidenav.js","webpack://misago/./src/components/search/page.js","webpack://misago/./src/components/search/threads/results.js","webpack://misago/./src/components/search/threads/index.js","webpack://misago/./src/components/search/users/index.js","webpack://misago/./src/components/search/index.js","webpack://misago/./src/initializers/components/search.js","webpack://misago/./src/components/snackbar.js","webpack://misago/./src/initializers/components/snackbar.js","webpack://misago/./src/components/social-auth/header.js","webpack://misago/./src/components/social-auth/register.js","webpack://misago/./src/components/social-auth/complete.js","webpack://misago/./src/components/social-auth/index.js","webpack://misago/./src/initializers/components/social-auth.js","webpack://misago/./src/components/add-participant.js","webpack://misago/./src/components/participants/add-participant.js","webpack://misago/./src/components/participants/cards-list/make-owner.js","webpack://misago/./src/components/participants/cards-list/actions.js","webpack://misago/./src/components/participants/cards-list/remove.js","webpack://misago/./src/components/participants/cards-list/card.js","webpack://misago/./src/components/participants/cards-list/index.js","webpack://misago/./src/components/participants/index.js","webpack://misago/./src/components/participants/utils.js","webpack://misago/./src/components/posts-list/event/icon.js","webpack://misago/./src/components/posts-list/event/controls.js","webpack://misago/./src/components/posts-list/event/info.js","webpack://misago/./src/components/posts-list/event/message.js","webpack://misago/./src/components/posts-list/event/unread-label.js","webpack://misago/./src/components/posts-list/waypoint.js","webpack://misago/./src/components/posts-list/event/index.js","webpack://misago/./src/components/posts-list/post/attachments/attachment.js","webpack://misago/./src/components/posts-list/post/attachments/index.js","webpack://misago/./src/components/posts-list/post/body.js","webpack://misago/./src/components/posts-list/post/flags.js","webpack://misago/./src/components/posts-list/post/controls/actions.js","webpack://misago/./src/components/post-likes.js","webpack://misago/./src/components/posts-list/post/footer.js","webpack://misago/./src/components/posts-list/post/controls/move.js","webpack://misago/./src/components/post-changelog/diff.js","webpack://misago/./src/components/post-changelog/footer.js","webpack://misago/./src/components/post-changelog/toolbar.js","webpack://misago/./src/components/post-changelog/utils.js","webpack://misago/./src/components/post-changelog/index.js","webpack://misago/./src/components/posts-list/post/controls/split.js","webpack://misago/./src/components/posts-list/post/controls/dropdown.js","webpack://misago/./src/components/posts-list/post/controls/index.js","webpack://misago/./src/components/posts-list/post/select.js","webpack://misago/./src/components/posts-list/post/header.js","webpack://misago/./src/components/posts-list/post/post-side/anonymous.js","webpack://misago/./src/components/posts-list/post/post-side/has-visible-title.js","webpack://misago/./src/components/posts-list/post/post-side/user-postcount.js","webpack://misago/./src/components/posts-list/post/post-side/user-status.js","webpack://misago/./src/components/posts-list/post/post-side/user-title.js","webpack://misago/./src/components/posts-list/post/post-side/registered.js","webpack://misago/./src/components/posts-list/post/post-side/index.js","webpack://misago/./src/components/posts-list/post/index.js","webpack://misago/./src/components/posts-list/post/preview.js","webpack://misago/./src/components/posts-list/index.js","webpack://misago/./src/components/ThreadStarterCard.jsx","webpack://misago/./src/components/thread/moderation/thread/ThreadChangeTitleModal.jsx","webpack://misago/./src/components/thread/moderation/thread/merge.js","webpack://misago/./src/components/thread/moderation/thread/move.js","webpack://misago/./src/components/thread/moderation/thread/controls.js","webpack://misago/./src/components/thread/moderation/thread/index.js","webpack://misago/./src/components/thread/ThreadModeration.jsx","webpack://misago/./src/components/thread/ThreadSubscriptionButton.jsx","webpack://misago/./src/components/Breadcrumbs/Breadcrumbs.jsx","webpack://misago/./src/components/Breadcrumbs/BreadcrumbsCategory.jsx","webpack://misago/./src/components/Breadcrumbs/BreadcrumbsRootCategory.jsx","webpack://misago/./src/components/thread/ThreadHeader/ThreadHeaderBreadcrumbs.jsx","webpack://misago/./src/components/thread/ThreadHeader/index.js","webpack://misago/./src/components/thread/ThreadHeader/ThreadHeader.jsx","webpack://misago/./src/components/thread/ThreadPagination.jsx","webpack://misago/./src/components/thread/ThreadPostsLeft.jsx","webpack://misago/./src/components/thread/moderation/posts/errors-list.js","webpack://misago/./src/components/thread/moderation/posts/actions.js","webpack://misago/./src/components/thread/moderation/posts/move.js","webpack://misago/./src/components/thread/moderation/posts/split.js","webpack://misago/./src/components/thread/moderation/posts/dropdown.js","webpack://misago/./src/components/thread/ThreadPostsModeration.jsx","webpack://misago/./src/components/thread/ThreadReplyButton.jsx","webpack://misago/./src/components/thread/ThreadToolbarBottom.jsx","webpack://misago/./src/components/thread/ThreadPollButton.jsx","webpack://misago/./src/components/thread/ThreadShortcutsButton.jsx","webpack://misago/./src/components/thread/ThreadToolbarTop.jsx","webpack://misago/./src/components/thread/route.js","webpack://misago/./src/components/thread/root.js","webpack://misago/./src/initializers/components/thread.js","webpack://misago/./src/components/threads/compare.js","webpack://misago/./src/components/threads/ThreadsCategoryPicker.jsx","webpack://misago/./src/components/threads/ThreadsListPicker.jsx","webpack://misago/./src/components/threads/moderation/errors-list.js","webpack://misago/./src/components/threads/moderation/merge.js","webpack://misago/./src/components/threads/moderation/move.js","webpack://misago/./src/components/threads/moderation/controls.js","webpack://misago/./src/components/threads/ThreadsToolbarModeration.jsx","webpack://misago/./src/components/threads/ThreadsToolbar.jsx","webpack://misago/./src/components/threads/container.js","webpack://misago/./src/components/threads/utils.js","webpack://misago/./src/components/ThreadsList/ThreadsListEmpty.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemActivity.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemCategory.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemCheckbox.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemIcon.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemLastPoster.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemSubscriptionOptions.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItemSubscription.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListItem.jsx","webpack://misago/./src/components/UIPreview/UIPreviewText.js","webpack://misago/./src/components/ThreadsList/ThreadsListLoader.jsx","webpack://misago/./src/components/ThreadsList/ThreadsListUpdatePrompt.jsx","webpack://misago/./src/components/ThreadsList/index.js","webpack://misago/./src/components/ThreadsList/ThreadsList.jsx","webpack://misago/./src/components/threads/route.js","webpack://misago/./src/initializers/components/threads.js","webpack://misago/./src/components/threads/root.js","webpack://misago/./src/components/navbar-search/clean-results.js","webpack://misago/./src/components/navbar-search/dropdown/constants.js","webpack://misago/./src/components/navbar-search/dropdown/input.js","webpack://misago/./src/components/navbar-search/dropdown/dropdown-menu.js","webpack://misago/./src/components/navbar-search/dropdown/empty.js","webpack://misago/./src/components/navbar-search/dropdown/loader.js","webpack://misago/./src/components/navbar-search/dropdown/result/footer.js","webpack://misago/./src/components/navbar-search/dropdown/result/header.js","webpack://misago/./src/components/navbar-search/dropdown/result/thread.js","webpack://misago/./src/components/navbar-search/dropdown/result/user.js","webpack://misago/./src/components/navbar-search/dropdown/result/result.js","webpack://misago/./src/components/navbar-search/dropdown/result/index.js","webpack://misago/./src/components/navbar-search/dropdown/flatten-results.js","webpack://misago/./src/components/navbar-search/dropdown/index.js","webpack://misago/./src/components/navbar-search/index.js","webpack://misago/./src/components/password-strength.js","webpack://misago/./src/components/register.js","webpack://misago/./src/components/register-button.js","webpack://misago/./src/components/user-menu/guest-nav.js","webpack://misago/./src/components/change-avatar/index.js","webpack://misago/./src/components/change-avatar/crop.js","webpack://misago/./src/components/change-avatar/upload.js","webpack://misago/./src/components/change-avatar/gallery.js","webpack://misago/./src/components/change-avatar/root.js","webpack://misago/./src/components/user-menu/user-nav.js","webpack://misago/./src/components/user-menu/root.js","webpack://misago/./src/initializers/components/user-menu.js","webpack://misago/./src/components/users/UsersNav.js","webpack://misago/./src/components/users/active-posters/list-empty.js","webpack://misago/./src/components/users/active-posters/list-item-preview.js","webpack://misago/./src/components/users/active-posters/list-preview.js","webpack://misago/./src/components/users/active-posters/list-item.js","webpack://misago/./src/components/users/active-posters/list-ready.js","webpack://misago/./src/components/users/active-posters/root.js","webpack://misago/./src/components/page-lead.js","webpack://misago/./src/utils/string-count.js","webpack://misago/./src/components/users/rank/RankUsersList.js","webpack://misago/./src/components/users/rank/RankUsersListLoader.js","webpack://misago/./src/components/users/rank/RankUsersLeft.jsx","webpack://misago/./src/components/users/rank/RankUsersPagination.jsx","webpack://misago/./src/components/users/rank/RankUsersToolbar.jsx","webpack://misago/./src/components/users/rank/root.js","webpack://misago/./src/components/users/root.js","webpack://misago/./src/initializers/components/users.js","webpack://misago/./src/initializers/include.js","webpack://misago/./src/initializers/local-storage.js","webpack://misago/./src/initializers/mobile-navbar-dropdown.js","webpack://misago/./src/initializers/modal.js","webpack://misago/./src/initializers/moment-locale.js","webpack://misago/./src/initializers/page-title.js","webpack://misago/./src/initializers/polls.js","webpack://misago/./src/initializers/posting.js","webpack://misago/./src/initializers/reducers/auth.js","webpack://misago/./src/initializers/reducers/participants.js","webpack://misago/./src/initializers/reducers/poll.js","webpack://misago/./src/initializers/reducers/posts.js","webpack://misago/./src/initializers/reducers/profile-details.js","webpack://misago/./src/initializers/reducers/profile-hydrate.js","webpack://misago/./src/initializers/reducers/profile.js","webpack://misago/./src/initializers/reducers/search.js","webpack://misago/./src/initializers/reducers/selection.js","webpack://misago/./src/initializers/reducers/snackbar.js","webpack://misago/./src/initializers/reducers/thread.js","webpack://misago/./src/initializers/reducers/threads.js","webpack://misago/./src/initializers/reducers/tick.js","webpack://misago/./src/initializers/reducers/username-history.js","webpack://misago/./src/initializers/reducers/users.js","webpack://misago/./src/initializers/snackbar.js","webpack://misago/./src/initializers/store.js","webpack://misago/./src/initializers/tick-start.js","webpack://misago/./src/initializers/zxcvbn.js","webpack://misago/./src/reducers/auth.js","webpack://misago/./src/reducers/participants.js","webpack://misago/./src/reducers/poll.js","webpack://misago/./src/reducers/post.js","webpack://misago/./src/reducers/posts.js","webpack://misago/./src/reducers/profile-details.js","webpack://misago/./src/reducers/profile.js","webpack://misago/./src/reducers/search.js","webpack://misago/./src/reducers/selection.js","webpack://misago/./src/reducers/snackbar.js","webpack://misago/./src/reducers/thread.js","webpack://misago/./src/reducers/threads.js","webpack://misago/./src/reducers/tick.js","webpack://misago/./src/reducers/username-history.js","webpack://misago/./src/reducers/users.js","webpack://misago/./src/services/ajax.js","webpack://misago/./src/services/auth.js","webpack://misago/./src/services/captcha.js","webpack://misago/./src/services/include.js","webpack://misago/./src/services/local-storage.js","webpack://misago/./src/services/mobile-navbar-dropdown.js","webpack://misago/./src/services/modal.js","webpack://misago/./src/services/page-title.js","webpack://misago/./src/services/polls.js","webpack://misago/./src/components/editor/actions/action.js","webpack://misago/./src/components/editor/actions/code.js","webpack://misago/./src/components/editor/actions/emphasis.js","webpack://misago/./src/components/editor/actions/hr.js","webpack://misago/./src/utils/is-url.js","webpack://misago/./src/components/editor/actions/image.js","webpack://misago/./src/components/editor/actions/link.js","webpack://misago/./src/components/editor/actions/spoiler.js","webpack://misago/./src/components/editor/actions/strikethrough.js","webpack://misago/./src/components/editor/actions/strong.js","webpack://misago/./src/components/editor/actions/quote.js","webpack://misago/./src/components/editor/attachments/attachment/complete.js","webpack://misago/./src/components/editor/attachments/attachment/error.js","webpack://misago/./src/components/editor/attachments/attachment/upload.js","webpack://misago/./src/components/editor/attachments/attachment/index.js","webpack://misago/./src/components/editor/attachments/list.js","webpack://misago/./src/components/editor/attachments/uploader.js","webpack://misago/./src/components/editor/attachments/index.js","webpack://misago/./src/components/editor/attachments/upload-button.js","webpack://misago/./src/components/editor/markup-preview.js","webpack://misago/./src/components/editor/textutils.js","webpack://misago/./src/components/editor/index.js","webpack://misago/./src/components/posting/utils/container.js","webpack://misago/./src/components/posting/utils/loader.js","webpack://misago/./src/components/posting/utils/message.js","webpack://misago/./src/components/posting/utils/options.js","webpack://misago/./src/components/posting/utils/attachments.js","webpack://misago/./src/components/posting/start.js","webpack://misago/./src/components/posting/utils/usernames.js","webpack://misago/./src/components/posting/start-private.js","webpack://misago/./src/components/posting/reply.js","webpack://misago/./src/components/posting/edit.js","webpack://misago/./src/components/posting/index.js","webpack://misago/./src/services/posting.js","webpack://misago/./src/services/snackbar.js","webpack://misago/./src/services/store.js","webpack://misago/./src/services/zxcvbn.js","webpack://misago/./src/components/banned-page.js","webpack://misago/./src/utils/banned-page.js","webpack://misago/./src/utils/batch.js","webpack://misago/./src/utils/concat-unique.js","webpack://misago/./src/utils/escape-html.js","webpack://misago/./src/utils/file-size.js","webpack://misago/./src/utils/mount-component.js","webpack://misago/./src/utils/random.js","webpack://misago/./src/utils/routed-component.js","webpack://misago/./src/utils/sets.js","webpack://misago/./src/utils/validators.js","webpack://misago/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://misago/webpack/bootstrap","webpack://misago/webpack/runtime/compat get default export","webpack://misago/webpack/runtime/define property getters","webpack://misago/webpack/runtime/global","webpack://misago/webpack/runtime/harmony module decorator","webpack://misago/webpack/runtime/hasOwnProperty shorthand","webpack://misago/webpack/runtime/make namespace object","webpack://misago/webpack/runtime/node module decorator","webpack://misago/webpack/runtime/jsonp chunk loading","webpack://misago/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/*! highlight.js v9.9.0 | BSD3 License | git.io/hljslicense */\n!function(e){var n=\"object\"==typeof window&&window||\"object\"==typeof self&&self;\"undefined\"!=typeof undefined?e(exports):n&&(n.hljs=e({}),\"function\"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return I[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function i(e){return k.test(e)}function a(e){var n,t,r,a,o=e.className+\" \";if(o+=e.parentNode?e.parentNode.className:\"\",t=B.exec(o))return R(t[1])?t[1]:\"no-highlight\";for(o=o.split(/\\s+/),n=0,r=o.length;r>n;n++)if(a=o[n],i(a)||R(a))return a}function o(e,n){var t,r={};for(t in e)r[t]=e[t];if(n)for(t in n)r[t]=n[t];return r}function u(e){var n=[];return function r(e,i){for(var a=e.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(n.push({event:\"start\",offset:i,node:a}),i=r(a,i),t(a).match(/br|hr|img|input/)||n.push({event:\"stop\",offset:i,node:a}));return i}(e,0),n}function c(e,r,i){function a(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset<r[0].offset?e:r:\"start\"===r[0].event?e:r:e.length?e:r}function o(e){function r(e){return\" \"+e.nodeName+'=\"'+n(e.value)+'\"'}l+=\"<\"+t(e)+w.map.call(e.attributes,r).join(\"\")+\">\"}function u(e){l+=\"</\"+t(e)+\">\"}function c(e){(\"start\"===e.event?o:u)(e.node)}for(var s=0,l=\"\",f=[];e.length||r.length;){var g=a();if(l+=n(i.substring(s,g[0].offset)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=a();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else\"start\"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(i.substr(s))}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),\"m\"+(e.cI?\"i\":\"\")+(r?\"g\":\"\"))}function r(i,a){if(!i.compiled){if(i.compiled=!0,i.k=i.k||i.bK,i.k){var u={},c=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(\" \").forEach(function(e){var t=e.split(\"|\");u[t[0]]=[n,t[1]?Number(t[1]):1]})};\"string\"==typeof i.k?c(\"keyword\",i.k):E(i.k).forEach(function(e){c(e,i.k[e])}),i.k=u}i.lR=t(i.l||/\\w+/,!0),a&&(i.bK&&(i.b=\"\\\\b(\"+i.bK.split(\" \").join(\"|\")+\")\\\\b\"),i.b||(i.b=/\\B|\\b/),i.bR=t(i.b),i.e||i.eW||(i.e=/\\B|\\b/),i.e&&(i.eR=t(i.e)),i.tE=n(i.e)||\"\",i.eW&&a.tE&&(i.tE+=(i.e?\"|\":\"\")+a.tE)),i.i&&(i.iR=t(i.i)),null==i.r&&(i.r=1),i.c||(i.c=[]);var s=[];i.c.forEach(function(e){e.v?e.v.forEach(function(n){s.push(o(e,n))}):s.push(\"self\"===e?i:e)}),i.c=s,i.c.forEach(function(e){r(e,i)}),i.starts&&r(i.starts,a);var l=i.c.map(function(e){return e.bK?\"\\\\.?(\"+e.b+\")\\\\.?\":e.b}).concat([i.tE,i.i]).map(n).filter(Boolean);i.t=l.length?t(l.join(\"|\"),!0):{exec:function(){return null}}}}r(e)}function l(e,t,i,a){function o(e,n){var t,i;for(t=0,i=n.c.length;i>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!i&&r(n.iR,e)}function g(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function h(e,n,t,r){var i=r?\"\":y.classPrefix,a='<span class=\"'+i,o=t?\"\":C;return a+=e+'\">',a+n+o}function p(){var e,t,r,i;if(!E.k)return n(B);for(i=\"\",t=0,E.lR.lastIndex=0,r=E.lR.exec(B);r;)i+=n(B.substring(t,r.index)),e=g(E,r),e?(M+=e[1],i+=h(e[0],n(r[0]))):i+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(B);return i+n(B.substr(t))}function d(){var e=\"string\"==typeof E.sL;if(e&&!x[E.sL])return n(B);var t=e?l(E.sL,B,!0,L[E.sL]):f(B,E.sL.length?E.sL:void 0);return E.r>0&&(M+=t.r),e&&(L[E.sL]=t.top),h(t.language,t.value,!1,!0)}function b(){k+=null!=E.sL?d():p(),B=\"\"}function v(e){k+=e.cN?h(e.cN,\"\",!0):\"\",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(B+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?B+=n:(t.eB&&(B+=n),b(),t.rB||t.eB||(B=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var i=E;i.skip?B+=n:(i.rE||i.eE||(B+=n),b(),i.eE&&(B=n));do E.cN&&(k+=C),E.skip||(M+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,\"\"),i.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme \"'+n+'\" for mode \"'+(E.cN||\"<unnamed>\")+'\"');return B+=n,n.length||1}var N=R(e);if(!N)throw new Error('Unknown language: \"'+e+'\"');s(N);var w,E=a||N,L={},k=\"\";for(w=E;w!==N;w=w.parent)w.cN&&(k=h(w.cN,\"\",!0)+k);var B=\"\",M=0;try{for(var I,j,O=0;;){if(E.t.lastIndex=O,I=E.t.exec(t),!I)break;j=m(t.substring(O,I.index),I[0]),O=I.index+j}for(m(t.substr(O)),w=E;w.parent;w=w.parent)w.cN&&(k+=C);return{r:M,value:k,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf(\"Illegal\"))return{r:0,value:n(t)};throw T}}function f(e,t){t=t||y.languages||E(x);var r={r:0,value:n(e)},i=r;return t.filter(R).forEach(function(n){var t=l(n,e,!1);t.language=n,t.r>i.r&&(i=t),t.r>r.r&&(i=r,r=t)}),i.language&&(r.second_best=i),r}function g(e){return y.tabReplace||y.useBR?e.replace(M,function(e,n){return y.useBR&&\"\\n\"===e?\"<br>\":y.tabReplace?n.replace(/\\t/g,y.tabReplace):void 0}):e}function h(e,n,t){var r=n?L[n]:t,i=[e.trim()];return e.match(/\\bhljs\\b/)||i.push(\"hljs\"),-1===e.indexOf(r)&&i.push(r),i.join(\" \").trim()}function p(e){var n,t,r,o,s,p=a(e);i(p)||(y.useBR?(n=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),n.innerHTML=e.innerHTML.replace(/\\n/g,\"\").replace(/<br[ \\/]*>/g,\"\\n\")):n=e,s=n.textContent,r=p?l(p,s,!0):f(s),t=u(n),t.length&&(o=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"div\"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=g(r.value),e.innerHTML=r.value,e.className=h(e.className,p,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function d(e){y=o(y,e)}function b(){if(!b.called){b.called=!0;var e=document.querySelectorAll(\"pre code\");w.forEach.call(e,p)}}function v(){addEventListener(\"DOMContentLoaded\",b,!1),addEventListener(\"load\",b,!1)}function m(n,t){var r=x[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function N(){return E(x)}function R(e){return e=(e||\"\").toLowerCase(),x[e]||x[L[e]]}var w=[],E=Object.keys,x={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\\blang(?:uage)?-([\\w-]+)\\b/i,M=/((^(<[^>]+>|\\t|)+|(?:\\n)))/gm,C=\"</span>\",y={classPrefix:\"hljs-\",tabReplace:null,useBR:!1,languages:void 0},I={\"&\":\"&\",\"<\":\"<\",\">\":\">\"};return e.highlight=l,e.highlightAuto=f,e.fixMarkup=g,e.highlightBlock=p,e.configure=d,e.initHighlighting=b,e.initHighlightingOnLoad=v,e.registerLanguage=m,e.listLanguages=N,e.getLanguage=R,e.inherit=o,e.IR=\"[a-zA-Z]\\\\w*\",e.UIR=\"[a-zA-Z_]\\\\w*\",e.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\",e.CNR=\"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",e.BNR=\"\\\\b(0b[01]+)\",e.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\",e.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0},e.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[e.BE]},e.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[e.BE]},e.PWM={b:/\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\\b/},e.C=function(n,t,r){var i=e.inherit({cN:\"comment\",b:n,e:t,c:[]},r||{});return i.c.push(e.PWM),i.c.push({cN:\"doctag\",b:\"(?:TODO|FIXME|NOTE|BUG|XXX):\",r:0}),i},e.CLCM=e.C(\"//\",\"$\"),e.CBCM=e.C(\"/\\\\*\",\"\\\\*/\"),e.HCM=e.C(\"#\",\"$\"),e.NM={cN:\"number\",b:e.NR,r:0},e.CNM={cN:\"number\",b:e.CNR,r:0},e.BNM={cN:\"number\",b:e.BNR,r:0},e.CSSNM={cN:\"number\",b:e.NR+\"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",r:0},e.RM={cN:\"regexp\",b:/\\//,e:/\\/[gimuy]*/,i:/\\n/,c:[e.BE,{b:/\\[/,e:/\\]/,r:0,c:[e.BE]}]},e.TM={cN:\"title\",b:e.IR,r:0},e.UTM={cN:\"title\",b:e.UIR,r:0},e.METHOD_GUARD={b:\"\\\\.\\\\s*\"+e.UIR,r:0},e});hljs.registerLanguage(\"xml\",function(s){var e=\"[A-Za-z0-9\\\\._:-]+\",t={eW:!0,i:/</,r:0,c:[{cN:\"attr\",b:e,r:0},{b:/=\\s*/,r:0,c:[{cN:\"string\",endsParent:!0,v:[{b:/\"/,e:/\"/},{b:/'/,e:/'/},{b:/[^\\s\"'=<>`]+/}]}]}]};return{aliases:[\"html\",\"xhtml\",\"rss\",\"atom\",\"xjb\",\"xsd\",\"xsl\",\"plist\"],cI:!0,c:[{cN:\"meta\",b:\"<!DOCTYPE\",e:\">\",r:10,c:[{b:\"\\\\[\",e:\"\\\\]\"}]},s.C(\"<!--\",\"-->\",{r:10}),{b:\"<\\\\!\\\\[CDATA\\\\[\",e:\"\\\\]\\\\]>\",r:10},{b:/<\\?(php)?/,e:/\\?>/,sL:\"php\",c:[{b:\"/\\\\*\",e:\"\\\\*/\",skip:!0}]},{cN:\"tag\",b:\"<style(?=\\\\s|>|$)\",e:\">\",k:{name:\"style\"},c:[t],starts:{e:\"</style>\",rE:!0,sL:[\"css\",\"xml\"]}},{cN:\"tag\",b:\"<script(?=\\\\s|>|$)\",e:\">\",k:{name:\"script\"},c:[t],starts:{e:\"</script>\",rE:!0,sL:[\"actionscript\",\"javascript\",\"handlebars\",\"xml\"]}},{cN:\"meta\",v:[{b:/<\\?xml/,e:/\\?>/,r:10},{b:/<\\?\\w+/,e:/\\?>/}]},{cN:\"tag\",b:\"</?\",e:\"/?>\",c:[{cN:\"name\",b:/[^\\/><\\s]+/,r:0},t]}]}});hljs.registerLanguage(\"markdown\",function(e){return{aliases:[\"md\",\"mkdown\",\"mkd\"],c:[{cN:\"section\",v:[{b:\"^#{1,6}\",e:\"$\"},{b:\"^.+?\\\\n[=-]{2,}$\"}]},{b:\"<\",e:\">\",sL:\"xml\",r:0},{cN:\"bullet\",b:\"^([*+-]|(\\\\d+\\\\.))\\\\s+\"},{cN:\"strong\",b:\"[*_]{2}.+?[*_]{2}\"},{cN:\"emphasis\",v:[{b:\"\\\\*.+?\\\\*\"},{b:\"_.+?_\",r:0}]},{cN:\"quote\",b:\"^>\\\\s+\",e:\"$\"},{cN:\"code\",v:[{b:\"^```w*s*$\",e:\"^```s*$\"},{b:\"`.+?`\"},{b:\"^( {4}|\t)\",e:\"$\",r:0}]},{b:\"^[-\\\\*]{3,}\",e:\"$\"},{b:\"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",rB:!0,c:[{cN:\"string\",b:\"\\\\[\",e:\"\\\\]\",eB:!0,rE:!0,r:0},{cN:\"link\",b:\"\\\\]\\\\(\",e:\"\\\\)\",eB:!0,eE:!0},{cN:\"symbol\",b:\"\\\\]\\\\[\",e:\"\\\\]\",eB:!0,eE:!0}],r:10},{b:/^\\[[^\\n]+\\]:/,rB:!0,c:[{cN:\"symbol\",b:/\\[/,e:/\\]/,eB:!0,eE:!0},{cN:\"link\",b:/:\\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage(\"ini\",function(e){var b={cN:\"string\",c:[e.BE],v:[{b:\"'''\",e:\"'''\",r:10},{b:'\"\"\"',e:'\"\"\"',r:10},{b:'\"',e:'\"'},{b:\"'\",e:\"'\"}]};return{aliases:[\"toml\"],cI:!0,i:/\\S/,c:[e.C(\";\",\"$\"),e.HCM,{cN:\"section\",b:/^\\s*\\[+/,e:/\\]+/},{b:/^[a-z0-9\\[\\]_-]+\\s*=\\s*/,e:\"$\",rB:!0,c:[{cN:\"attr\",b:/[a-z0-9\\[\\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:\"literal\",b:/\\bon|off|true|false|yes|no\\b/},{cN:\"variable\",v:[{b:/\\$[\\w\\d\"][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},b,{cN:\"number\",b:/([\\+\\-]+)?[\\d]+_[\\d_]+/},e.NM]}]}]}});hljs.registerLanguage(\"python\",function(e){var r={cN:\"meta\",b:/^(>>>|\\.\\.\\.) /},b={cN:\"string\",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[r],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[r],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)\"/,e:/\"/},e.ASM,e.QSM]},a={cN:\"number\",r:0,v:[{b:e.BNR+\"[lLjJ]?\"},{b:\"\\\\b(0o[0-7]+)[lLjJ]?\"},{b:e.CNR+\"[lLjJ]?\"}]},l={cN:\"params\",b:/\\(/,e:/\\)/,c:[\"self\",r,a,b]};return{aliases:[\"py\",\"gyp\"],k:{keyword:\"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False\",built_in:\"Ellipsis NotImplemented\"},i:/(<\\/|->|\\?)|=>/,c:[r,a,b,e.HCM,{v:[{cN:\"function\",bK:\"def\"},{cN:\"class\",bK:\"class\"}],e:/:/,i:/[${=;\\n,]/,c:[e.UTM,l,{b:/->/,eW:!0,k:\"None\"}]},{cN:\"meta\",b:/^[\\t ]*@/,e:/$/},{b:/\\b(print|exec)\\(/}]}});hljs.registerLanguage(\"css\",function(e){var c=\"[a-zA-Z-][a-zA-Z0-9_-]*\",t={b:/[A-Z\\_\\.\\-]+\\s*:/,rB:!0,e:\";\",eW:!0,c:[{cN:\"attribute\",b:/\\S/,e:\":\",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\\w-]+\\(/,rB:!0,c:[{cN:\"built_in\",b:/[\\w-]+/},{b:/\\(/,e:/\\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"number\",b:\"#[0-9A-Fa-f]+\"},{cN:\"meta\",b:\"!important\"}]}}]};return{cI:!0,i:/[=\\/|'\\$]/,c:[e.CBCM,{cN:\"selector-id\",b:/#[A-Za-z0-9_-]+/},{cN:\"selector-class\",b:/\\.[A-Za-z0-9_-]+/},{cN:\"selector-attr\",b:/\\[/,e:/\\]/,i:\"$\"},{cN:\"selector-pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},{b:\"@(font-face|page)\",l:\"[a-z-]+\",k:\"font-face page\"},{b:\"@\",e:\"[{;]\",i:/:/,c:[{cN:\"keyword\",b:/\\w+/},{b:/\\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:\"selector-tag\",b:c,r:0},{b:\"{\",e:\"}\",i:/\\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage(\"less\",function(e){var r=\"[\\\\w-]+\",t=\"(\"+r+\"|@{\"+r+\"})\",a=[],c=[],s=function(e){return{cN:\"string\",b:\"~?\"+e+\".*?\"+e}},b=function(e,r,t){return{cN:e,b:r,r:t}},n={b:\"\\\\(\",e:\"\\\\)\",c:c,r:0};c.push(e.CLCM,e.CBCM,s(\"'\"),s('\"'),e.CSSNM,{b:\"(url|data-uri)\\\\(\",starts:{cN:\"string\",e:\"[\\\\)\\\\n]\",eE:!0}},b(\"number\",\"#[0-9A-Fa-f]+\\\\b\"),n,b(\"variable\",\"@@?\"+r,10),b(\"variable\",\"@{\"+r+\"}\"),b(\"built_in\",\"~?`[^`]*?`\"),{cN:\"attribute\",b:r+\"\\\\s*:\",e:\":\",rB:!0,eE:!0},{cN:\"meta\",b:\"!important\"});var i=c.concat({b:\"{\",e:\"}\",c:a}),o={bK:\"when\",eW:!0,c:[{bK:\"and not\"}].concat(c)},u={b:t+\"\\\\s*:\",rB:!0,e:\"[;}]\",r:0,c:[{cN:\"attribute\",b:t,e:\":\",eE:!0,starts:{eW:!0,i:\"[<=$]\",r:0,c:c}}]},l={cN:\"keyword\",b:\"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b\",starts:{e:\"[;{}]\",rE:!0,c:c,r:0}},C={cN:\"variable\",v:[{b:\"@\"+r+\"\\\\s*:\",r:15},{b:\"@\"+r}],starts:{e:\"[;}]\",rE:!0,c:i}},p={v:[{b:\"[\\\\.#:&\\\\[>]\",e:\"[;{}]\"},{b:t,e:\"{\"}],rB:!0,rE:!0,i:\"[<='$\\\"]\",r:0,c:[e.CLCM,e.CBCM,o,b(\"keyword\",\"all\\\\b\"),b(\"variable\",\"@{\"+r+\"}\"),b(\"selector-tag\",t+\"%?\",0),b(\"selector-id\",\"#\"+t),b(\"selector-class\",\"\\\\.\"+t,0),b(\"selector-tag\",\"&\",0),{cN:\"selector-attr\",b:\"\\\\[\",e:\"\\\\]\"},{cN:\"selector-pseudo\",b:/:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},{b:\"\\\\(\",e:\"\\\\)\",c:i},{b:\"!important\"}]};return a.push(e.CLCM,e.CBCM,l,C,u,p),{cI:!0,i:\"[=>'/<($\\\"]\",c:a}});hljs.registerLanguage(\"scss\",function(e){var t=\"[a-zA-Z-][a-zA-Z0-9_-]*\",i={cN:\"variable\",b:\"(\\\\$\"+t+\")\\\\b\"},r={cN:\"number\",b:\"#[0-9A-Fa-f]+\"};({cN:\"attribute\",b:\"[A-Z\\\\_\\\\.\\\\-]+\",e:\":\",eE:!0,i:\"[^\\\\s]\",starts:{eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:\"meta\",b:\"!important\"}]}});return{cI:!0,i:\"[=/|']\",c:[e.CLCM,e.CBCM,{cN:\"selector-id\",b:\"\\\\#[A-Za-z0-9_-]+\",r:0},{cN:\"selector-class\",b:\"\\\\.[A-Za-z0-9_-]+\",r:0},{cN:\"selector-attr\",b:\"\\\\[\",e:\"\\\\]\",i:\"$\"},{cN:\"selector-tag\",b:\"\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b\",r:0},{b:\":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)\"},{b:\"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)\"},i,{cN:\"attribute\",b:\"\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b\",i:\"[^\\\\s]\"},{b:\"\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\"},{b:\":\",e:\";\",c:[i,r,e.CSSNM,e.QSM,e.ASM,{cN:\"meta\",b:\"!important\"}]},{b:\"@\",e:\"[{;]\",k:\"mixin include extend for if else each while charset import debug media page content font-face namespace warn\",c:[i,e.QSM,e.ASM,r,e.CSSNM,{b:\"\\\\s[A-Za-z0-9_.-]+\",r:0}]}]}});hljs.registerLanguage(\"json\",function(e){var i={literal:\"true false null\"},n=[e.QSM,e.CNM],r={e:\",\",eW:!0,eE:!0,c:n,k:i},t={b:\"{\",e:\"}\",c:[{cN:\"attr\",b:/\"/,e:/\"/,c:[e.BE],i:\"\\\\n\"},e.inherit(r,{b:/:/})],i:\"\\\\S\"},c={b:\"\\\\[\",e:\"\\\\]\",c:[e.inherit(r)],i:\"\\\\S\"};return n.splice(n.length,0,t,c),{c:n,k:i,i:\"\\\\S\"}});hljs.registerLanguage(\"javascript\",function(e){var r=\"[A-Za-z$_][0-9A-Za-z$_]*\",t={keyword:\"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as\",literal:\"true false null undefined NaN Infinity\",built_in:\"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"},a={cN:\"number\",v:[{b:\"\\\\b(0[bB][01]+)\"},{b:\"\\\\b(0[oO][0-7]+)\"},{b:e.CNR}],r:0},n={cN:\"subst\",b:\"\\\\$\\\\{\",e:\"\\\\}\",k:t,c:[]},c={cN:\"string\",b:\"`\",e:\"`\",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:[\"js\",\"jsx\"],k:t,c:[{cN:\"meta\",r:10,b:/^\\s*['\"]use (strict|asm)['\"]/},{cN:\"meta\",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\\s*/,r:0,c:[{b:r+\"\\\\s*:\",rB:!0,r:0,c:[{cN:\"attr\",b:r,r:0}]}]},{b:\"(\"+e.RSR+\"|\\\\b(case|return|throw)\\\\b)\\\\s*\",k:\"return throw case\",c:[e.CLCM,e.CBCM,e.RM,{cN:\"function\",b:\"(\\\\(.*?\\\\)|\"+r+\")\\\\s*=>\",rB:!0,e:\"\\\\s*=>\",c:[{cN:\"params\",v:[{b:r},{b:/\\(\\s*\\)/},{b:/\\(/,e:/\\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b:/</,e:/(\\/\\w+|\\w+\\/)>/,sL:\"xml\",c:[{b:/<\\w+\\s*\\/>/,skip:!0},{b:/<\\w+/,e:/(\\/\\w+|\\w+\\/)>/,skip:!0,c:[{b:/<\\w+\\s*\\/>/,skip:!0},\"self\"]}]}],r:0},{cN:\"function\",bK:\"function\",e:/\\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:\"params\",b:/\\(/,e:/\\)/,eB:!0,eE:!0,c:s}],i:/\\[|%/},{b:/\\$[(.]/},e.METHOD_GUARD,{cN:\"class\",bK:\"class\",e:/[{;=]/,eE:!0,i:/[:\"\\[\\]]/,c:[{bK:\"extends\"},e.UTM]},{bK:\"constructor\",e:/\\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage(\"bash\",function(e){var t={cN:\"variable\",v:[{b:/\\$[\\w\\d#@][\\w\\d_]*/},{b:/\\$\\{(.*?)}/}]},s={cN:\"string\",b:/\"/,e:/\"/,c:[e.BE,t,{cN:\"variable\",b:/\\$\\(/,e:/\\)/,c:[e.BE]}]},a={cN:\"string\",b:/'/,e:/'/};return{aliases:[\"sh\",\"zsh\"],l:/-?[a-z\\._]+/,k:{keyword:\"if then else elif fi for while in do done case esac function\",literal:\"true false\",built_in:\"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",_:\"-ne -eq -lt -gt -f -d -e -s -l -a\"},c:[{cN:\"meta\",b:/^#![^\\n]+sh\\s*$/,r:10},{cN:\"function\",b:/\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,rB:!0,c:[e.inherit(e.TM,{b:/\\w[\\w\\d_]*/})],r:0},e.HCM,s,a,t]}});","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRow = ({ children, className }) => (\n <div className={classnames(\"flex-row\", className)}>{children}</div>\n)\n\nexport default FlexRow\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRowCol = ({ children, className, shrink }) => (\n <div\n className={classnames(\"flex-row-col\", className, {\n \"flex-row-col-shrink\": shrink,\n })}\n >\n {children}\n </div>\n)\n\nexport default FlexRowCol\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst FlexRowSection = ({ auto, children, className }) => (\n <div\n className={classnames(\n \"flex-row-section\",\n { \"flex-row-section-auto\": auto },\n className\n )}\n >\n {children}\n </div>\n)\n\nexport default FlexRowSection\n","import React from \"react\"\n\nconst PageContainer = ({ children }) => (\n <div className=\"container page-container\">{children}</div>\n)\n\nexport default PageContainer\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeader = ({ children, className, styleName }) => (\n <div\n className={classnames(\n \"page-header\",\n className,\n styleName && \"page-header-\" + styleName\n )}\n >\n <div className=\"page-header-bg-image\">\n <div className=\"page-header-bg-overlay\">\n <div className=\"page-header-image\" />\n {children}\n </div>\n </div>\n </div>\n)\n\nexport default PageHeader\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderBanner = ({ children, className, styleName }) => (\n <div\n className={classnames(\n \"page-header-banner\",\n className,\n styleName && \"page-header-banner-\" + styleName\n )}\n >\n <div className=\"page-header-banner-bg-image\">\n <div className=\"page-header-banner-bg-overlay\">{children}</div>\n </div>\n </div>\n)\n\nexport default PageHeaderBanner\n","import React from \"react\"\n\nconst PageHeaderContainer = ({ children }) => (\n <div className=\"container page-header-container\">{children}</div>\n)\n\nexport default PageHeaderContainer\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderDetails = ({ children, className }) => (\n <div className={classnames(\"page-header-details\", className)}>{children}</div>\n)\n\nexport default PageHeaderDetails\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderHTMLMessage = ({ className, message }) => (\n <div\n className={classnames(\"page-header-message\", className)}\n dangerouslySetInnerHTML={{ __html: message }}\n />\n)\n\nexport default PageHeaderHTMLMessage\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst PageHeaderMessage = ({ children, className }) => (\n <div className={classnames(\"page-header-message\", className)}>{children}</div>\n)\n\nexport default PageHeaderMessage\n","import React from \"react\"\nimport PageHeader from \"./PageHeader\"\nimport PageHeaderBanner from \"./PageHeaderBanner\"\nimport PageHeaderContainer from \"./PageHeaderContainer\"\nimport PageHeaderDetails from \"./PageHeaderDetails\"\n\nconst PageHeaderPlain = ({ styleName, header, message }) => (\n <PageHeaderContainer>\n <PageHeader styleName={styleName}>\n <PageHeaderBanner styleName={styleName}>\n <h1>{header}</h1>\n </PageHeaderBanner>\n {message && (\n <PageHeaderDetails styleName={styleName}>{message}</PageHeaderDetails>\n )}\n </PageHeader>\n </PageHeaderContainer>\n)\n\nexport default PageHeaderPlain\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst AGREEMENT_URL = '<a href=\"%(url)s\" target=\"_blank\">%(agreement)s</a>'\n\nconst RegisterLegalFootnote = (props) => {\n const {\n errors,\n privacyPolicy,\n termsOfService,\n onPrivacyPolicyChange,\n onTermsOfServiceChange,\n } = props\n\n const termsOfServiceId = misago.get(\"TERMS_OF_SERVICE_ID\")\n const termsOfServiceUrl = misago.get(\"TERMS_OF_SERVICE_URL\")\n\n const privacyPolicyId = misago.get(\"PRIVACY_POLICY_ID\")\n const privacyPolicyUrl = misago.get(\"PRIVACY_POLICY_URL\")\n\n if (!termsOfServiceId && !privacyPolicyId) return null\n\n return (\n <div>\n <LegalAgreement\n agreement={gettext(\"the terms of service\")}\n checked={termsOfService !== null}\n errors={errors.termsOfService}\n url={termsOfServiceUrl}\n value={termsOfServiceId}\n onChange={onTermsOfServiceChange}\n />\n <LegalAgreement\n agreement={gettext(\"the privacy policy\")}\n checked={privacyPolicy !== null}\n errors={errors.privacyPolicy}\n url={privacyPolicyUrl}\n value={privacyPolicyId}\n onChange={onPrivacyPolicyChange}\n />\n </div>\n )\n}\n\nconst LegalAgreement = (props) => {\n const { agreement, checked, errors, url, value, onChange } = props\n\n if (!url) return null\n\n const agreementHtml = interpolate(\n AGREEMENT_URL,\n { agreement: escapeHtml(agreement), url: escapeHtml(url) },\n true\n )\n const label = interpolate(\n gettext(\"I have read and accept %(agreement)s.\"),\n { agreement: agreementHtml },\n true\n )\n\n return (\n <div className=\"checkbox legal-footnote\">\n <label>\n <input\n checked={checked}\n type=\"checkbox\"\n value={value}\n onChange={onChange}\n />\n <span dangerouslySetInnerHTML={{ __html: label }} />\n </label>\n {errors &&\n errors.map((error, i) => (\n <div className=\"help-block errors\" key={i}>\n {error}\n </div>\n ))}\n </div>\n )\n}\n\nexport default RegisterLegalFootnote\n","import React from \"react\"\nimport misago from \"misago\"\n\nconst StartSocialAuth = (props) => {\n const { buttonClassName, buttonLabel, formLabel, header, labelClassName } =\n props\n const socialAuth = misago.get(\"SOCIAL_AUTH\")\n\n if (socialAuth.length === 0) return null\n\n return (\n <div className=\"form-group form-social-auth\">\n <FormHeader className={labelClassName} text={header} />\n <div className=\"row\">\n {socialAuth.map(({ id, name, button_text, button_color, url }) => {\n const className = \"btn btn-block btn-default btn-social-\" + id\n const style = button_color ? { color: button_color } : null\n const finalButtonLabel =\n button_text || interpolate(buttonLabel, { site: name }, true)\n\n return (\n <div className={buttonClassName || \"col-xs-12\"} key={id}>\n <a className={className} style={style} href={url}>\n {finalButtonLabel}\n </a>\n </div>\n )\n })}\n </div>\n <hr />\n <FormHeader className={labelClassName} text={formLabel} />\n </div>\n )\n}\n\nconst FormHeader = ({ className, text }) => {\n if (!text) return null\n return <h5 className={className || \"\"}>{text}</h5>\n}\n\nexport default StartSocialAuth\n","import React from \"react\"\n\nconst ThreadFlags = ({ thread }) => (\n <ul className=\"thread-flags\">\n {thread.weight == 2 && (\n <li\n className=\"thread-flag-pinned-globally\"\n title={gettext(\"Pinned globally\")}\n >\n <span className=\"material-icon\">bookmark</span>\n </li>\n )}\n {thread.weight == 1 && (\n <li\n className=\"thread-flag-pinned-locally\"\n title={gettext(\"Pinned in category\")}\n >\n <span className=\"material-icon\">bookmark_outline</span>\n </li>\n )}\n {thread.best_answer && (\n <li className=\"thread-flag-answered\" title={gettext(\"Answered\")}>\n <span className=\"material-icon\">check_circle</span>\n </li>\n )}\n {thread.has_poll && (\n <li className=\"thread-flag-poll\" title={gettext(\"Poll\")}>\n <span className=\"material-icon\">poll</span>\n </li>\n )}\n {(thread.is_unapproved || thread.has_unapproved_posts) && (\n <li\n className=\"thread-flag-unapproved\"\n title={\n thread.is_unapproved\n ? gettext(\"Awaiting approval\")\n : gettext(\"Has unapproved posts\")\n }\n >\n <span className=\"material-icon\">visibility</span>\n </li>\n )}\n {thread.is_closed && (\n <li className=\"thread-flag-closed\" title={gettext(\"Closed\")}>\n <span className=\"material-icon\">lock</span>\n </li>\n )}\n {thread.is_hidden && (\n <li className=\"thread-flag-hidden\" title={gettext(\"Hidden\")}>\n <span className=\"material-icon\">visibility_off</span>\n </li>\n )}\n </ul>\n)\n\nexport default ThreadFlags\n","import React from \"react\"\n\nconst ThreadReplies = ({ thread }) => (\n <span\n className=\"threads-replies\"\n title={interpolate(\n ngettext(\"%(replies)s reply\", \"%(replies)s replies\", thread.replies),\n { replies: thread.replies },\n true\n )}\n >\n <span className=\"material-icon\">chat_bubble_outline</span>\n {thread.replies > 980\n ? Math.round(thread.replies / 1000) + \"K\"\n : thread.replies}\n </span>\n)\n\nexport default ThreadReplies\n","import React from \"react\"\n\nconst Toolbar = ({ children }) => <nav className=\"toolbar\">{children}</nav>\n\nexport default Toolbar\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarItem = ({ children, className, shrink }) => (\n <div\n className={classnames(\"toolbar-item\", className, {\n \"toolbar-item-shrink\": shrink,\n })}\n >\n {children}\n </div>\n)\n\nexport default ToolbarItem\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarSection = ({ auto, children, className }) => (\n <div\n className={classnames(\n \"toolbar-section\",\n { \"toolbar-section-auto\": auto },\n className\n )}\n >\n {children}\n </div>\n)\n\nexport default ToolbarSection\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ToolbarSpacer = ({ className }) => (\n <div className={classnames(\"toolbar-spacer\", className)} />\n)\n\nexport default ToolbarSpacer\n","import React from \"react\"\nimport misago from \"misago\"\n\nexport default function (props) {\n const size = props.size || 100\n const size2x = props.size2x || size\n\n return (\n <img\n alt=\"\"\n className={props.className || \"user-avatar\"}\n src={getSrc(props.user, size)}\n srcSet={getSrc(props.user, size2x)}\n width={size}\n height={size}\n />\n )\n}\n\nexport function getSrc(user, size) {\n if (user && user.id) {\n // just avatar hash, size and user id\n return resolveAvatarForSize(user.avatars, size).url\n } else {\n // just append avatar size to file to produce no-avatar placeholder\n return misago.get(\"BLANK_AVATAR_URL\")\n }\n}\n\nexport function resolveAvatarForSize(avatars, size) {\n let avatar = avatars[0]\n avatars.forEach((av) => {\n if (av.size >= size) {\n avatar = av\n }\n })\n return avatar\n}\n","import React from \"react\"\nimport Loader from \"./loader\"\n\nexport default class Button extends React.Component {\n render() {\n let className = \"btn \" + this.props.className\n let disabled = this.props.disabled\n\n if (this.props.loading) {\n className += \" btn-loading\"\n disabled = true\n }\n\n return (\n <button\n className={className}\n disabled={disabled}\n onClick={this.props.onClick}\n type={this.props.onClick ? \"button\" : \"submit\"}\n >\n {this.props.children}\n {this.props.loading ? <Loader /> : null}\n </button>\n )\n }\n}\n\nButton.defaultProps = {\n className: \"btn-default\",\n\n type: \"submit\",\n\n loading: false,\n disabled: false,\n\n onClick: null,\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <select\n className={props.className || \"form-control\"}\n disabled={props.disabled || false}\n id={props.id || null}\n onChange={props.onChange}\n value={props.value}\n >\n {props.choices.map((item) => {\n return (\n <option\n disabled={item.disabled || false}\n key={item.value}\n value={item.value}\n >\n {\"- - \".repeat(item.level) + item.label}\n </option>\n )\n })}\n </select>\n )\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default function ({ display }) {\n if (!display) return null\n\n return (\n <PanelMessage\n helpText={gettext(\"No profile details are editable at this time.\")}\n message={gettext(\"This option is currently unavailable.\")}\n />\n )\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({ display }) {\n if (!display) return null\n\n return (\n <div className=\"panel-body\">\n <Loader />\n </div>\n )\n}\n","import React from \"react\"\nimport Select from \"misago/components/select\"\n\nexport default class extends React.Component {\n onChange = (ev) => {\n const { field, onChange } = this.props\n onChange(field.fieldname, ev.target.value)\n }\n\n render() {\n const { disabled, field, value } = this.props\n const { input } = field\n\n if (input.type === \"select\") {\n return (\n <Select\n choices={input.choices}\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n value={value}\n />\n )\n }\n\n if (input.type === \"textarea\") {\n return (\n <textarea\n className=\"form-control\"\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n rows=\"4\"\n type=\"text\"\n value={value}\n />\n )\n }\n\n if (input.type === \"text\") {\n return (\n <input\n className=\"form-control\"\n disabled={disabled}\n id={\"id_\" + field.fieldname}\n onChange={this.onChange}\n type=\"text\"\n value={value}\n />\n )\n }\n\n return null\n }\n}\n","import React from \"react\"\nimport FieldInput from \"./field-input\"\nimport FormGroup from \"misago/components/form-group\"\n\nexport default function ({ disabled, errors, fields, name, onChange, value }) {\n return (\n <fieldset>\n <legend>{name}</legend>\n {fields.map((field) => {\n return (\n <FormGroup\n for={\"id_\" + field.fieldname}\n helpText={field.help_text}\n key={field.fieldname}\n label={field.label}\n validation={errors[field.fieldname]}\n >\n <FieldInput\n disabled={disabled}\n field={field}\n onChange={onChange}\n value={value[field.fieldname]}\n />\n </FormGroup>\n )\n })}\n </fieldset>\n )\n}\n","import React from \"react\"\nimport Fieldset from \"./fieldset\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n errors: {},\n }\n\n const groups = props.groups.length\n for (let i = 0; i < groups; i++) {\n const group = props.groups[i]\n const fields = group.fields.length\n for (let f = 0; f < fields; f++) {\n const fieldname = group.fields[f].fieldname\n const initial = group.fields[f].initial\n this.state[fieldname] = initial\n }\n }\n }\n\n send() {\n const data = Object.assign({}, this.state, {\n errors: null,\n isLoading: null,\n })\n\n return ajax.post(this.props.api, data)\n }\n\n handleSuccess(data) {\n this.props.onSuccess(data)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({ errors: rejection })\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onChange = (name, value) => {\n this.setState({\n [name]: value,\n })\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel-body\">\n {this.props.groups.map((group, i) => {\n return (\n <Fieldset\n disabled={this.state.isLoading}\n errors={this.state.errors}\n fields={group.fields}\n name={group.name}\n key={i}\n onChange={this.onChange}\n value={this.state}\n />\n )\n })}\n </div>\n <div className=\"panel-footer text-right\">\n <CancelButton\n disabled={this.state.isLoading}\n onCancel={this.props.onCancel}\n />{\" \"}\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </form>\n )\n }\n}\n\nexport function CancelButton({ onCancel, disabled }) {\n if (!onCancel) return null\n\n return (\n <button\n className=\"btn btn-default\"\n disabled={disabled}\n onClick={onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n )\n}\n","import React from \"react\"\nimport Blankslate from \"./blankslate\"\nimport Loader from \"./loader\"\nimport Form from \"./form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n loading: true,\n groups: null,\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.api).then(\n (groups) => {\n this.setState({\n loading: false,\n\n groups,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n if (this.props.cancel) {\n this.props.cancel()\n }\n }\n )\n }\n\n render() {\n const { groups, loading } = this.state\n\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Edit details\")}</h3>\n </div>\n <Loader display={loading} />\n <Blankslate display={!loading && !groups.length} />\n <FormDisplay\n api={this.props.api}\n display={!loading && groups.length}\n groups={groups}\n onCancel={this.props.onCancel}\n onSuccess={this.props.onSuccess}\n />\n </div>\n )\n }\n}\n\nexport function FormDisplay({ api, display, groups, onCancel, onSuccess }) {\n if (!display) return null\n\n return (\n <Form api={api} groups={groups} onCancel={onCancel} onSuccess={onSuccess} />\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n isValidated() {\n return typeof this.props.validation !== \"undefined\"\n }\n\n getClassName() {\n let className = \"form-group\"\n if (this.isValidated()) {\n className += \" has-feedback\"\n if (this.props.validation === null) {\n className += \" has-success\"\n } else {\n className += \" has-error\"\n }\n }\n return className\n }\n\n getFeedback() {\n if (this.props.validation) {\n return (\n <div className=\"help-block errors\">\n {this.props.validation.map((error, i) => {\n return <p key={this.props.for + \"FeedbackItem\" + i}>{error}</p>\n })}\n </div>\n )\n } else {\n return null\n }\n }\n\n getFeedbackDescription() {\n if (this.isValidated()) {\n return (\n <span id={this.props.for + \"_status\"} className=\"sr-only\">\n {this.props.validation ? gettext(\"(error)\") : gettext(\"(success)\")}\n </span>\n )\n } else {\n return null\n }\n }\n\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <label\n className={\"control-label \" + (this.props.labelClass || \"\")}\n htmlFor={this.props.for || \"\"}\n >\n {this.props.label + \":\"}\n </label>\n <div className={this.props.controlClass || \"\"}>\n {this.props.children}\n {this.getFeedbackDescription()}\n {this.getFeedback()}\n {this.getHelpText()}\n {this.props.extra || null}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { required } from \"misago/utils/validators\"\nimport snackbar from \"misago/services/snackbar\"\n\nlet validateRequired = required()\n\nexport default class extends React.Component {\n validate() {\n let errors = {}\n if (!this.state.validators) {\n return errors\n }\n\n let validators = {\n required: this.state.validators.required || this.state.validators,\n optional: this.state.validators.optional || {},\n }\n\n let validatedFields = []\n\n // add required fields to validation\n for (let name in validators.required) {\n if (\n validators.required.hasOwnProperty(name) &&\n validators.required[name]\n ) {\n validatedFields.push(name)\n }\n }\n\n // add optional fields to validation\n for (let name in validators.optional) {\n if (\n validators.optional.hasOwnProperty(name) &&\n validators.optional[name]\n ) {\n validatedFields.push(name)\n }\n }\n\n // validate fields values\n for (let i in validatedFields) {\n let name = validatedFields[i]\n let fieldErrors = this.validateField(name, this.state[name])\n\n if (fieldErrors === null) {\n errors[name] = null\n } else if (fieldErrors) {\n errors[name] = fieldErrors\n }\n }\n\n return errors\n }\n\n isValid() {\n let errors = this.validate()\n for (let field in errors) {\n if (errors.hasOwnProperty(field)) {\n if (errors[field] !== null) {\n return false\n }\n }\n }\n\n return true\n }\n\n validateField(name, value) {\n let errors = []\n if (!this.state.validators) {\n return errors\n }\n\n let validators = {\n required: (this.state.validators.required || this.state.validators)[name],\n optional: (this.state.validators.optional || {})[name],\n }\n\n let requiredError = validateRequired(value) || false\n\n if (validators.required) {\n if (requiredError) {\n errors = [requiredError]\n } else {\n for (let i in validators.required) {\n let validationError = validators.required[i](value)\n if (validationError) {\n errors.push(validationError)\n }\n }\n }\n\n return errors.length ? errors : null\n } else if (requiredError === false && validators.optional) {\n for (let i in validators.optional) {\n let validationError = validators.optional[i](value)\n if (validationError) {\n errors.push(validationError)\n }\n }\n\n return errors.length ? errors : null\n }\n\n return false // false === field wasn't validated\n }\n\n bindInput = (name) => {\n return (event) => {\n this.changeValue(name, event.target.value)\n }\n }\n\n changeValue = (name, value) => {\n let newState = {\n [name]: value,\n }\n\n const formErrors = this.state.errors || {}\n formErrors[name] = this.validateField(name, newState[name])\n newState.errors = formErrors\n\n this.setState(newState)\n }\n\n clean() {\n return true\n }\n\n send() {\n return null\n }\n\n handleSuccess(success) {\n return\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n }\n\n handleSubmit = (event) => {\n // we don't reload page on submissions\n if (event) {\n event.preventDefault()\n }\n\n if (this.state.isLoading) {\n return\n }\n\n if (this.clean()) {\n this.setState({ isLoading: true })\n let promise = this.send()\n\n if (promise) {\n promise.then(\n (success) => {\n this.setState({ isLoading: false })\n this.handleSuccess(success)\n },\n (rejection) => {\n this.setState({ isLoading: false })\n this.handleError(rejection)\n }\n )\n } else {\n this.setState({ isLoading: false })\n }\n }\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n isActive() {\n if (this.props.isControlled) {\n return this.props.isActive\n } else {\n if (this.props.path) {\n return document.location.pathname.indexOf(this.props.path) === 0\n } else {\n return false\n }\n }\n }\n\n getClassName() {\n if (this.isActive()) {\n return (\n (this.props.className || \"\") +\n \" \" +\n (this.props.activeClassName || \"active\")\n )\n } else {\n return this.props.className || \"\"\n }\n }\n\n render() {\n return <li className={this.getClassName()}>{this.props.children}</li>\n }\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className={props.className || \"loader\"}>\n <div className=\"loader-spinning-wheel\" />\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"./button\"\nimport Form from \"./form\"\nimport FormGroup from \"./form-group\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n bestAnswer: \"0\",\n poll: \"0\",\n }\n }\n\n clean() {\n if (this.props.polls && this.state.poll === \"0\") {\n const confirmation = window.confirm(\n gettext(\"Are you sure you want to delete all polls?\")\n )\n return confirmation\n }\n\n return true\n }\n\n send() {\n const data = Object.assign({}, this.props.data, {\n best_answer: this.state.bestAnswer,\n poll: this.state.poll,\n })\n\n return ajax.post(this.props.api, data)\n }\n\n handleSuccess = (success) => {\n this.props.onSuccess(success)\n modal.hide()\n }\n\n handleError = (rejection) => {\n this.props.onError(rejection)\n }\n\n onBestAnswerChange = (event) => {\n this.changeValue(\"bestAnswer\", event.target.value)\n }\n\n onPollChange = (event) => {\n this.changeValue(\"poll\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge threads\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <BestAnswerSelect\n choices={this.props.bestAnswers}\n onChange={this.onBestAnswerChange}\n value={this.state.bestAnswer}\n />\n <PollSelect\n choices={this.props.polls}\n onChange={this.onPollChange}\n value={this.state.poll}\n />\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Merge threads\")}\n </Button>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport function BestAnswerSelect({ choices, onChange, value }) {\n if (!choices) return null\n\n return (\n <FormGroup\n label={gettext(\"Best answer\")}\n helpText={gettext(\n \"Please select the best answer for your newly merged thread. No posts will be deleted during the merge.\"\n )}\n for=\"id_best_answer\"\n >\n <select\n className=\"form-control\"\n id=\"id_best_answer\"\n onChange={onChange}\n value={value}\n >\n {choices.map((choice) => {\n return (\n <option value={choice[0]} key={choice[0]}>\n {choice[1]}\n </option>\n )\n })}\n </select>\n </FormGroup>\n )\n}\n\nexport function PollSelect({ choices, onChange, value }) {\n if (!choices) return null\n\n return (\n <FormGroup\n label={gettext(\"Poll\")}\n helpText={gettext(\n \"Please select the poll for your newly merged thread. Rejected polls will be permanently deleted and cannot be recovered.\"\n )}\n for=\"id_poll\"\n >\n <select\n className=\"form-control\"\n id=\"id_poll\"\n onChange={onChange}\n value={value}\n >\n {choices.map((choice) => {\n return (\n <option value={choice[0]} key={choice[0]}>\n {choice[1]}\n </option>\n )\n })}\n </select>\n </FormGroup>\n )\n}\n","const ytRegExp = new RegExp(\n \"^.*(?:(?:youtu.be/|v/|vi/|u/w/|embed/)|(?:(?:watch)??v(?:i)?=|&v(?:i)?=))([^#&?]*).*\"\n)\n\nexport class OneBox {\n constructor() {\n this._youtube = {}\n }\n\n render = (domnode) => {\n if (!domnode) return\n this.highlightCode(domnode)\n this.embedYoutubePlayers(domnode)\n }\n\n highlightCode(domnode) {\n const codeblocks = domnode.querySelectorAll(\"pre>code\")\n for (let i = 0; i < codeblocks.length; i++) {\n const code = codeblocks[i]\n hljs.highlightBlock(code)\n }\n }\n\n embedYoutubePlayers(domnode) {\n const anchors = domnode.querySelectorAll(\"p>a\")\n for (let i = 0; i < anchors.length; i++) {\n const a = anchors[i]\n const p = a.parentNode\n const onlyChild = p.childNodes.length === 1\n\n if (!this._youtube[a.href]) {\n this._youtube[a.href] = parseYoutubeUrl(a.href)\n }\n\n const youtubeMovie = this._youtube[a.href]\n if (onlyChild && !!youtubeMovie && youtubeMovie.data !== false) {\n this.swapYoutubePlayer(a, youtubeMovie)\n }\n }\n }\n\n swapYoutubePlayer(element, youtube) {\n let url = \"https://www.youtube.com/embed/\"\n url += youtube.video\n url += \"?rel=0\"\n if (youtube.start) {\n url += \"&start=\" + youtube.start\n }\n\n const player = $(\n '<iframe class=\"embed-responsive-item\" src=\"' +\n url +\n '\" allowfullscreen></iframe>'\n )\n $(element).replaceWith(player)\n player.wrap('<div class=\"embed-responsive embed-responsive-16by9\"></div>')\n }\n}\n\nexport default new OneBox()\n\nexport function parseYoutubeUrl(url) {\n const cleanedUrl = cleanUrl(url)\n const video = getVideoIdFromUrl(cleanedUrl)\n\n if (!video) return null\n\n let start = 0\n if (cleanedUrl.indexOf(\"?\") > 0) {\n const query = cleanedUrl.substr(cleanedUrl.indexOf(\"?\") + 1)\n const timebit = query.split(\"&\").filter((i) => {\n return i.substr(0, 2) === \"t=\"\n })[0]\n\n if (timebit) {\n const bits = timebit.substr(2).split(\"m\")\n if (bits[0].substr(-1) === \"s\") {\n start += parseInt(bits[0].substr(0, bits[0].length - 1))\n } else {\n start += parseInt(bits[0]) * 60\n if (!!bits[1] && bits[1].substr(-1) === \"s\") {\n start += parseInt(bits[1].substr(0, bits[1].length - 1))\n }\n }\n }\n }\n\n return {\n start,\n video,\n }\n}\n\nexport function cleanUrl(url) {\n let clean = url\n\n if (url.substr(0, 8) === \"https://\") {\n clean = clean.substr(8)\n } else if (url.substr(0, 7) === \"http://\") {\n clean = clean.substr(7)\n }\n\n if (clean.substr(0, 4) === \"www.\") {\n clean = clean.substr(4)\n }\n\n return clean\n}\n\nexport function getVideoIdFromUrl(url) {\n if (url.indexOf(\"youtu\") === -1) return null\n\n const video = url.match(ytRegExp)\n if (video) {\n return video[1]\n }\n return null\n}\n","import React from \"react\"\nimport onebox from \"misago/services/one-box\"\n\nexport default class extends React.Component {\n componentDidMount() {\n onebox.render(this.documentNode)\n $(this.documentNode).find(\".spoiler-reveal\").click(revealSpoiler)\n }\n\n componentDidUpdate(prevProps, prevState) {\n onebox.render(this.documentNode)\n $(this.documentNode).find(\".spoiler-reveal\").click(revealSpoiler)\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n return nextProps.markup !== this.props.markup\n }\n\n render() {\n return (\n <article\n className=\"misago-markup\"\n dangerouslySetInnerHTML={{ __html: this.props.markup }}\n ref={(node) => {\n this.documentNode = node\n }}\n />\n )\n }\n}\n\nfunction revealSpoiler(event) {\n var btn = event.target\n $(btn).parent().parent().addClass(\"revealed\")\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"modal-body modal-loader\">\n <Loader />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default class extends PanelMessage {\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">\n {this.props.icon || \"info_outline\"}\n </span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getHelpText()}\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"panel-body panel-body-loading\">\n <Loader className=\"loader loader-spaced\" />\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getHelpText() {\n if (this.props.helpText) {\n return <p className=\"help-block\">{this.props.helpText}</p>\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">\n {this.props.icon || \"info_outline\"}\n </span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getHelpText()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"poll-choices-bars\">\n {props.poll.choices.map((choice) => {\n return (\n <PollChoice choice={choice} key={choice.hash} poll={props.poll} />\n )\n })}\n </div>\n )\n}\n\nexport function PollChoice(props) {\n let proc = 0\n if (props.choice.votes && props.poll.votes) {\n proc = Math.ceil((props.choice.votes * 100) / props.poll.votes)\n }\n\n return (\n <dl className=\"dl-horizontal\">\n <dt>{props.choice.label}</dt>\n <dd>\n <div className=\"progress\">\n <div\n className=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow={proc}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n style={{ width: proc + \"%\" }}\n >\n <span className=\"sr-only\">\n {getVotesLabel(props.votes, props.proc)}\n </span>\n </div>\n </div>\n <ul className=\"list-unstyled list-inline poll-chart\">\n <ChoiceVotes proc={proc} votes={props.choice.votes} />\n <UserChoice selected={props.choice.selected} />\n </ul>\n </dd>\n </dl>\n )\n}\n\nexport function ChoiceVotes(props) {\n return (\n <li className=\"poll-chart-votes\">\n {getVotesLabel(props.votes, props.proc)}\n </li>\n )\n}\n\nexport function getVotesLabel(votes, proc) {\n const message = ngettext(\n \"%(votes)s vote, %(proc)s% of total.\",\n \"%(votes)s votes, %(proc)s% of total.\",\n votes\n )\n\n return interpolate(\n message,\n {\n votes: votes,\n proc: proc,\n },\n true\n )\n}\n\nexport function UserChoice(props) {\n if (!props.selected) return null\n\n return (\n <li className=\"poll-chart-selected\">\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Your choice.\")}\n </li>\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: true,\n error: null,\n data: [],\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.poll.api.votes).then(\n (data) => {\n const hydratedData = data.map((choice) => {\n return Object.assign({}, choice, {\n voters: choice.voters.map((voter) => {\n return Object.assign({}, voter, {\n voted_on: moment(voter.voted_on),\n })\n }),\n })\n })\n\n this.setState({\n isLoading: false,\n data: hydratedData,\n })\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n error: rejection.detail,\n })\n }\n )\n }\n\n render() {\n return (\n <div\n className={\n \"modal-dialog\" + (this.state.error ? \" modal-message\" : \" modal-sm\")\n }\n role=\"document\"\n >\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Poll votes\")}</h4>\n </div>\n\n <ModalBody\n data={this.state.data}\n error={this.state.error}\n isLoading={this.state.isLoading}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function ModalBody(props) {\n if (props.isLoading) {\n return <Loader />\n } else if (props.error) {\n return <Message icon=\"error_outline\" message={props.error} />\n }\n\n return <ChoicesList data={props.data} />\n}\n\nexport function ChoicesList(props) {\n return (\n <div className=\"modal-body modal-poll-votes\">\n <ul className=\"list-unstyled votes-details\">\n {props.data.map((choice) => {\n return <ChoiceDetails key={choice.hash} {...choice} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function ChoiceDetails(props) {\n return (\n <li>\n <h4>{props.label}</h4>\n <VotesCount votes={props.votes} />\n <VotesList voters={props.voters} />\n <hr />\n </li>\n )\n}\n\nexport function VotesCount(props) {\n const message = ngettext(\n \"%(votes)s user has voted for this choice.\",\n \"%(votes)s users have voted for this choice.\",\n props.votes\n )\n\n const label = interpolate(\n message,\n {\n votes: props.votes,\n },\n true\n )\n\n return <p>{label}</p>\n}\n\nexport function VotesList(props) {\n if (!props.voters.length) return null\n\n return (\n <ul className=\"list-unstyled\">\n {props.voters.map((user) => {\n return <Voter key={user.username} {...user} />\n })}\n </ul>\n )\n}\n\nexport function Voter(props) {\n if (props.url) {\n return (\n <li>\n <a className=\"item-title\" href={props.url}>\n {props.username}\n </a>{\" \"}\n <VoteDate voted_on={props.voted_on} />\n </li>\n )\n }\n\n return (\n <li>\n <strong>{props.username}</strong> <VoteDate voted_on={props.voted_on} />\n </li>\n )\n}\n\nexport function VoteDate(props) {\n return (\n <abbr className=\"text-muted\" title={props.voted_on.format(\"LLL\")}>\n {props.voted_on.fromNow()}\n </abbr>\n )\n}\n","import React from \"react\"\nimport Modal from \"./modal\"\nimport * as poll from \"misago/reducers/poll\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n const { isPollOver, poll, showVoting, thread } = props\n\n if (!isVisible(isPollOver, poll.acl, poll)) return null\n\n const controls = []\n\n const canVote = poll.acl.can_vote\n const canChangeVote = !poll.hasSelectedChoices || poll.allow_revotes\n\n if (canVote && canChangeVote) controls.push(0)\n if (poll.is_public || poll.acl.can_see_votes) controls.push(1)\n if (poll.acl.can_edit) controls.push(2)\n if (poll.acl.can_delete) controls.push(3)\n\n return (\n <div className=\"row poll-options\">\n <ChangeVote\n controls={controls}\n isPollOver={isPollOver}\n poll={poll}\n showVoting={showVoting}\n />\n <SeeVotes controls={controls} poll={poll} />\n <Edit controls={controls} poll={poll} thread={thread} />\n <Delete controls={controls} poll={poll} />\n </div>\n )\n}\n\nexport function isVisible(isPollOver, acl, poll) {\n return (\n poll.is_public ||\n acl.can_delete ||\n acl.can_edit ||\n acl.can_see_votes ||\n (acl.can_vote &&\n !isPollOver &&\n (!poll.hasSelectedChoices || poll.allow_revotes))\n )\n}\n\nexport function getClassName(controls, control) {\n let className = \"col-xs-6\"\n\n if (controls.length === 1) {\n className = \"col-xs-12\"\n }\n\n if (controls.length === 3 && controls[0] === control) {\n className = \"col-xs-12\"\n }\n\n return className + \" col-sm-3 col-md-2\"\n}\n\nexport function ChangeVote(props) {\n const canVote = props.poll.acl.can_vote\n const canChangeVote =\n !props.poll.hasSelectedChoices || props.poll.allow_revotes\n\n if (!(canVote && canChangeVote)) return null\n\n return (\n <div className={getClassName(props.controls, 0)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={props.poll.isBusy}\n onClick={props.showVoting}\n type=\"button\"\n >\n {gettext(\"Vote\")}\n </button>\n </div>\n )\n}\n\nexport class SeeVotes extends React.Component {\n onClick = () => {\n modal.show(<Modal poll={this.props.poll} />)\n }\n\n render() {\n const seeVotes =\n this.props.poll.is_public || this.props.poll.acl.can_see_votes\n if (!seeVotes) return null\n\n return (\n <div className={getClassName(this.props.controls, 1)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"See votes\")}\n </button>\n </div>\n )\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n submit: this.props.poll.api.index,\n\n thread: this.props.thread,\n poll: this.props.poll,\n\n mode: \"POLL\",\n })\n }\n\n render() {\n if (!this.props.poll.acl.can_edit) return null\n\n return (\n <div className={getClassName(this.props.controls, 2)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Edit\")}\n </button>\n </div>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n const deletePoll = window.confirm(\n gettext(\n \"Are you sure you want to delete this poll? This action is not reversible.\"\n )\n )\n if (!deletePoll) return false\n\n store.dispatch(poll.busy())\n\n ajax\n .delete(this.props.poll.api.index)\n .then(this.handleSuccess, this.handleError)\n }\n\n handleSuccess = (newThreadAcl) => {\n snackbar.success(\"Poll has been deleted\")\n store.dispatch(poll.remove())\n store.dispatch(thread.updateAcl(newThreadAcl))\n }\n\n handleError = (rejection) => {\n snackbar.apiError(rejection)\n store.dispatch(poll.release())\n }\n\n render() {\n if (!this.props.poll.acl.can_delete) return null\n\n return (\n <div className={getClassName(this.props.controls, 3)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.props.poll.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Delete\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled list-inline poll-details\">\n <PollVotes votes={props.poll.votes} />\n <PollLength poll={props.poll} />\n <PollIsPublic poll={props.poll} />\n <PollCreation poll={props.poll} />\n </ul>\n )\n}\n\nexport function PollCreation(props) {\n const message = interpolate(\n escapeHtml(gettext(\"Posted by %(poster)s %(posted_on)s.\")),\n {\n poster: getPoster(props.poll),\n posted_on: getPostedOn(props.poll),\n },\n true\n )\n\n return (\n <li\n className=\"poll-info-creation\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function getPoster(poll) {\n if (poll.url.poster) {\n return interpolate(\n USER_URL,\n {\n url: escapeHtml(poll.url.poster),\n user: escapeHtml(poll.poster_name),\n },\n true\n )\n }\n\n return interpolate(\n USER_SPAN,\n {\n user: escapeHtml(poll.poster_name),\n },\n true\n )\n}\n\nexport function getPostedOn(poll) {\n return interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(poll.posted_on.format(\"LLL\")),\n relative: escapeHtml(poll.posted_on.fromNow()),\n },\n true\n )\n}\n\nexport function PollLength(props) {\n if (!props.poll.length) {\n return null\n }\n\n const message = interpolate(\n escapeHtml(gettext(\"Voting ends %(ends_on)s.\")),\n {\n ends_on: getEndsOn(props.poll),\n },\n true\n )\n\n return (\n <li\n className=\"poll-info-ends-on\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function getEndsOn(poll) {\n return interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(poll.endsOn.format(\"LLL\")),\n relative: escapeHtml(poll.endsOn.fromNow()),\n },\n true\n )\n}\n\nexport function PollVotes(props) {\n const message = ngettext(\"%(votes)s vote.\", \"%(votes)s votes.\", props.votes)\n const label = interpolate(\n message,\n {\n votes: props.votes,\n },\n true\n )\n\n return <li className=\"poll-info-votes\">{label}</li>\n}\n\nexport function PollIsPublic(props) {\n if (!props.poll.is_public) {\n return null\n }\n\n return <li className=\"poll-info-public\">{gettext(\"Votes are public.\")}</li>\n}\n","import React from \"react\"\nimport Chart from \"./chart\"\nimport Options from \"./options\"\nimport PollInfo from \"../info\"\n\nexport default function (props) {\n return (\n <div className=\"panel panel-default panel-poll\">\n <div className=\"panel-body\">\n <h2>{props.poll.question}</h2>\n <PollInfo poll={props.poll} />\n <Chart poll={props.poll} />\n <Options\n isPollOver={props.isPollOver}\n poll={props.poll}\n showVoting={props.showVoting}\n thread={props.thread}\n />\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled list-inline poll-help\">\n <PollChoicesLeft choicesLeft={props.choicesLeft} />\n <PollAllowRevote poll={props.poll} />\n </ul>\n )\n}\n\nexport function PollChoicesLeft({ choicesLeft }) {\n if (choicesLeft === 0) {\n return (\n <li className=\"poll-help-choices-left\">\n {gettext(\"You can't select any more choices.\")}\n </li>\n )\n }\n\n const message = ngettext(\n \"You can select %(choices)s more choice.\",\n \"You can select %(choices)s more choices.\",\n choicesLeft\n )\n\n const label = interpolate(\n message,\n {\n choices: choicesLeft,\n },\n true\n )\n\n return <li className=\"poll-help-choices-left\">{label}</li>\n}\n\nexport function PollAllowRevote(props) {\n if (props.poll.allow_revotes) {\n return (\n <li className=\"poll-help-allow-revotes\">\n {gettext(\"You can change your vote later.\")}\n </li>\n )\n }\n\n return <li className=\"poll-help-no-revotes\">{gettext(\"Votes are final.\")}</li>\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled poll-select-choices\">\n {props.choices.map((choice) => {\n return (\n <ChoiceSelect\n choice={choice}\n key={choice.hash}\n toggleChoice={props.toggleChoice}\n />\n )\n })}\n </ul>\n )\n}\n\nexport class ChoiceSelect extends React.Component {\n onClick = () => {\n this.props.toggleChoice(this.props.choice.hash)\n }\n\n render() {\n return (\n <li className=\"poll-select-choice\">\n <button\n className={this.props.choice.selected ? \"btn btn-selected\" : \"btn\"}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {this.props.choice.selected\n ? \"check_box\"\n : \"check_box_outline_blank\"}\n </span>\n <strong>{this.props.choice.label}</strong>\n </button>\n </li>\n )\n }\n}\n","export function getChoiceFromHash(choices, hash) {\n for (const i in choices) {\n const choice = choices[i]\n if (choice.hash === hash) {\n return choice\n }\n }\n\n return null\n}\n\nexport function getChoicesLeft(poll, choices) {\n let selection = []\n for (const i in choices) {\n const choice = choices[i]\n if (choice.selected) {\n selection.push(choice)\n }\n }\n\n return poll.allowed_choices - selection.length\n}\n","import React from \"react\"\nimport ChoicesHelp from \"./help\"\nimport ChoicesSelect from \"./select\"\nimport { getChoicesLeft, getChoiceFromHash } from \"./utils\"\nimport PollInfo from \"../info\"\nimport { Delete, Edit, getClassName } from \"../results/options\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport * as poll from \"misago/reducers/poll\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n choices: props.poll.choices,\n choicesLeft: getChoicesLeft(props.poll, props.poll.choices),\n }\n }\n\n toggleChoice = (hash) => {\n const choice = getChoiceFromHash(this.state.choices, hash)\n\n let choices = null\n if (!choice.selected) {\n choices = this.selectChoice(choice, hash)\n } else {\n choices = this.deselectChoice(choice, hash)\n }\n\n this.setState({\n choices,\n choicesLeft: getChoicesLeft(this.props.poll, choices),\n })\n }\n\n selectChoice = (choice, hash) => {\n const choicesLeft = getChoicesLeft(this.props.poll, this.state.choices)\n\n if (!choicesLeft) {\n for (const i in this.state.choices.slice()) {\n const item = this.state.choices[i]\n if (item.selected && item.hash != hash) {\n item.selected = false\n break\n }\n }\n }\n\n return this.state.choices.map((choice) => {\n return Object.assign({}, choice, {\n selected: choice.hash == hash ? true : choice.selected,\n })\n })\n }\n\n deselectChoice = (choice, hash) => {\n return this.state.choices.map((choice) => {\n return Object.assign({}, choice, {\n selected: choice.hash == hash ? false : choice.selected,\n })\n })\n }\n\n clean() {\n if (this.state.choicesLeft === this.props.poll.allowed_choices) {\n snackbar.error(gettext(\"You need to select at least one choice\"))\n return false\n }\n\n return true\n }\n\n send() {\n let data = []\n for (const i in this.state.choices.slice()) {\n const item = this.state.choices[i]\n if (item.selected) {\n data.push(item.hash)\n }\n }\n\n return ajax.post(this.props.poll.api.votes, data)\n }\n\n handleSuccess(data) {\n store.dispatch(poll.replace(data))\n snackbar.success(gettext(\"Your vote has been saved.\"))\n\n this.props.showResults()\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n const controls = []\n\n if (this.props.poll.acl.can_vote) controls.push(0)\n if (this.props.poll.is_public || this.props.poll.acl.can_see_votes)\n controls.push(1)\n if (this.props.poll.acl.can_edit) controls.push(2)\n if (this.props.poll.acl.can_delete) controls.push(3)\n\n return (\n <div className=\"panel panel-default panel-poll\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel-body\">\n <h2>{this.props.poll.question}</h2>\n <PollInfo poll={this.props.poll} />\n <ChoicesSelect\n choices={this.state.choices}\n toggleChoice={this.toggleChoice}\n />\n <ChoicesHelp\n choicesLeft={this.state.choicesLeft}\n poll={this.props.poll}\n />\n </div>\n <div className=\"panel-footer\">\n <div className=\"row\">\n <div className={getClassName(controls, 0)}>\n <Button\n className=\"btn-primary btn-block btn-sm\"\n loading={this.state.isLoading}\n >\n {gettext(\"Save your vote\")}\n </Button>\n </div>\n <div className={getClassName(controls, 1)}>\n <button\n className=\"btn btn-default btn-block btn-sm\"\n disabled={this.state.isLoading}\n onClick={this.props.showResults}\n type=\"button\"\n >\n {gettext(\"See results\")}\n </button>\n </div>\n <Edit\n controls={controls}\n poll={this.props.poll}\n thread={this.props.thread}\n />\n <Delete controls={controls} poll={this.props.poll} />\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Results from \"./results\"\nimport Voting from \"./voting\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n let showResults = true\n if (props.user.id && !props.poll.hasSelectedChoices) {\n showResults = false\n }\n\n this.state = {\n showResults,\n }\n }\n\n showResults = () => {\n this.setState({\n showResults: true,\n })\n }\n\n showVoting = () => {\n this.setState({\n showResults: false,\n })\n }\n\n render() {\n if (!this.props.thread.poll) return null\n\n const isPollOver = getIsPollOver(this.props.poll)\n\n if (\n !isPollOver &&\n this.props.poll.acl.can_vote &&\n !this.state.showResults\n ) {\n return <Voting showResults={this.showResults} {...this.props} />\n } else {\n return (\n <Results\n isPollOver={isPollOver}\n showVoting={this.showVoting}\n {...this.props}\n />\n )\n }\n }\n}\n\nexport function getIsPollOver(poll) {\n if (poll.length) {\n return moment().isAfter(poll.endsOn)\n }\n return false\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n onAdd = () => {\n let choices = this.props.choices.slice()\n choices.push({\n hash: generateRandomHash(),\n label: \"\",\n })\n\n this.props.setChoices(choices)\n }\n\n onChange = (hash, label) => {\n const choices = this.props.choices.map((choice) => {\n if (choice.hash === hash) {\n choice.label = label\n }\n\n return choice\n })\n this.props.setChoices(choices)\n }\n\n onDelete = (hash) => {\n const choices = this.props.choices.filter((choice) => {\n return choice.hash !== hash\n })\n this.props.setChoices(choices)\n }\n\n render() {\n return (\n <div className=\"poll-choices-control\">\n <ul className=\"list-group\">\n {this.props.choices.map((choice) => {\n return (\n <PollChoice\n canDelete={this.props.choices.length > 2}\n choice={choice}\n disabled={this.props.disabled}\n key={choice.hash}\n onChange={this.onChange}\n onDelete={this.onDelete}\n />\n )\n })}\n </ul>\n <button\n className=\"btn btn-default btn-sm\"\n disabled={this.props.disabled}\n onClick={this.onAdd}\n type=\"button\"\n >\n {gettext(\"Add choice\")}\n </button>\n </div>\n )\n }\n}\n\nexport class PollChoice extends React.Component {\n onChange = (event) => {\n this.props.onChange(this.props.choice.hash, event.target.value)\n }\n\n onDelete = () => {\n const deleteItem = window.confirm(\n gettext(\"Are you sure you want to delete this choice?\")\n )\n if (deleteItem) {\n this.props.onDelete(this.props.choice.hash)\n }\n }\n\n render() {\n return (\n <li className=\"list-group-item\">\n <button\n className=\"btn\"\n disabled={!this.props.canDelete || this.props.disabled}\n onClick={this.onDelete}\n title={gettext(\"Delete this choice\")}\n type=\"button\"\n >\n <span className=\"material-icon\">close</span>\n </button>\n <input\n disabled={this.props.disabled}\n maxLength=\"255\"\n placeholder={gettext(\"choice label\")}\n type=\"text\"\n onChange={this.onChange}\n value={this.props.choice.label}\n />\n </li>\n )\n }\n}\n\nexport function generateRandomHash() {\n let randomHash = \"\"\n while (randomHash.length != 12) {\n randomHash = Math.random()\n .toString(36)\n .replace(/[^a-zA-Z0-9]+/g, \"\")\n .substr(1, 12)\n }\n return randomHash\n}\n","import React from \"react\"\nimport ChoicesControl from \"./choices-control\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport * as poll from \"misago/reducers/poll\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n const poll = props.poll || {\n question: \"\",\n choices: [\n {\n hash: \"choice-10000\",\n label: \"\",\n },\n {\n hash: \"choice-20000\",\n label: \"\",\n },\n ],\n length: 0,\n allowed_choices: 1,\n allow_revotes: 0,\n is_public: 0,\n }\n\n this.state = {\n isLoading: false,\n isEdit: !!poll.question,\n\n question: poll.question,\n choices: poll.choices,\n length: poll.length,\n allowed_choices: poll.allowed_choices,\n allow_revotes: poll.allow_revotes,\n is_public: poll.is_public,\n\n validators: {\n question: [],\n choices: [],\n length: [],\n allowed_choices: [],\n },\n\n errors: {},\n }\n }\n\n setChoices = (choices) => {\n const errors = Object.assign({}, errors, { choices: null })\n\n this.setState({\n choices,\n errors,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard poll?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n send() {\n const data = {\n question: this.state.question,\n choices: this.state.choices,\n length: this.state.length,\n allowed_choices: this.state.allowed_choices,\n allow_revotes: this.state.allow_revotes,\n is_public: this.state.is_public,\n }\n\n if (this.state.isEdit) {\n return ajax.put(this.props.poll.api.index, data)\n } else {\n return ajax.post(this.props.thread.api.poll, data)\n }\n }\n\n handleSuccess(data) {\n store.dispatch(poll.replace(data))\n\n if (this.state.isEdit) {\n snackbar.success(gettext(\"Poll has been edited.\"))\n } else {\n snackbar.success(gettext(\"Poll has been posted.\"))\n }\n\n posting.close()\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.non_field_errors) {\n rejection.allowed_choices = rejection.non_field_errors\n }\n\n this.setState({\n errors: Object.assign({}, rejection),\n })\n\n snackbar.error(gettext(\"Form contains errors.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"poll-form\">\n <div className=\"container\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-body\">\n <fieldset>\n <legend>{gettext(\"Question and choices\")}</legend>\n\n <FormGroup\n label={gettext(\"Poll question\")}\n for=\"id_questions\"\n validation={this.state.errors.question}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_questions\"\n onChange={this.bindInput(\"question\")}\n type=\"text\"\n maxLength=\"255\"\n value={this.state.question}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Available choices\")}\n validation={this.state.errors.choices}\n >\n <ChoicesControl\n choices={this.state.choices}\n disabled={this.state.isLoading}\n setChoices={this.setChoices}\n />\n </FormGroup>\n </fieldset>\n\n <fieldset>\n <legend>{gettext(\"Voting\")}</legend>\n\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Poll length\")}\n helpText={gettext(\n \"Enter number of days for which voting in this poll should be possible or zero to run this poll indefinitely.\"\n )}\n for=\"id_length\"\n validation={this.state.errors.length}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_length\"\n onChange={this.bindInput(\"length\")}\n type=\"text\"\n value={this.state.length}\n />\n </FormGroup>\n </div>\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Allowed choices\")}\n for=\"id_allowed_choices\"\n validation={this.state.errors.allowed_choices}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_allowed_choices\"\n onChange={this.bindInput(\"allowed_choices\")}\n type=\"text\"\n maxLength=\"255\"\n value={this.state.allowed_choices}\n />\n </FormGroup>\n </div>\n </div>\n\n <div className=\"row\">\n <PollPublicSwitch\n bindInput={this.bindInput}\n disabled={this.state.isLoading}\n isEdit={this.state.isEdit}\n value={this.state.is_public}\n />\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Allow vote changes\")}\n for=\"id_allow_revotes\"\n >\n <YesNoSwitch\n id=\"id_allow_revotes\"\n disabled={this.state.isLoading}\n iconOn=\"check\"\n iconOff=\"close\"\n labelOn={gettext(\n \"Allow participants to change their vote\"\n )}\n labelOff={gettext(\n \"Don't allow participants to change their vote\"\n )}\n onChange={this.bindInput(\"allow_revotes\")}\n value={this.state.allow_revotes}\n />\n </FormGroup>\n </div>\n </div>\n </fieldset>\n </div>\n <div className=\"panel-footer text-right\">\n <button\n className=\"btn btn-default\"\n disabled={this.state.isLoading}\n onClick={this.onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>{\" \"}\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {this.state.isEdit\n ? gettext(\"Save changes\")\n : gettext(\"Post poll\")}\n </Button>\n </div>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport function PollPublicSwitch(props) {\n if (props.isEdit) return null\n\n return (\n <div className=\"col-xs-12 col-sm-6\">\n <FormGroup\n label={gettext(\"Make voting public\")}\n helpText={gettext(\n \"Making voting public will allow everyone to access detailed list of votes, showing which users voted for which choices and at which times. This option can't be changed after poll's creation. Moderators may see voting details for all polls.\"\n )}\n for=\"id_is_public\"\n >\n <YesNoSwitch\n id=\"id_is_public\"\n disabled={props.disabled}\n iconOn=\"visibility\"\n iconOff=\"visibility_off\"\n labelOn={gettext(\"Votes are public\")}\n labelOff={gettext(\"Votes are hidden\")}\n onChange={props.bindInput(\"is_public\")}\n value={props.value}\n />\n </FormGroup>\n </div>\n )\n}\n","import React from \"react\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\n\nexport default function (props) {\n if (props.post.content) {\n return <Default {...props} />\n } else {\n return <Invalid {...props} />\n }\n}\n\nexport function Default(props) {\n return (\n <div className=\"post-body\">\n <MisagoMarkup markup={props.post.content} />\n </div>\n )\n}\n\nexport function Invalid(props) {\n return (\n <div className=\"post-body post-body-invalid\">\n <p className=\"lead\">\n {gettext(\"This post's contents cannot be displayed.\")}\n </p>\n <p className=\"text-muted\">\n {gettext(\"This error is caused by invalid post content manipulation.\")}\n </p>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n const { category, thread } = post\n\n const tooltip = interpolate(\n gettext(\"posted %(posted_on)s\"),\n {\n posted_on: post.posted_on.format(\"LL, LT\"),\n },\n true\n )\n\n return (\n <div className=\"post-heading\">\n <a className=\"btn btn-link item-title\" href={thread.url}>\n {thread.title}\n </a>\n <a className=\"btn btn-link post-category\" href={category.url.index}>\n {category.name}\n </a>\n <a\n href={post.url.index}\n className=\"btn btn-link posted-on\"\n title={tooltip}\n >\n {post.posted_on.fromNow()}\n </a>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n return (\n <a className=\"btn btn-default btn-icon pull-right\" href={post.url.index}>\n <span className=\"btn-text-left hidden-xs\">{gettext(\"See post\")}</span>\n <span className=\"material-icon\">chevron_right</span>\n </a>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport GoToButton from \"./button\"\n\nexport default function ({ post }) {\n return (\n <div className=\"post-side post-side-anonymous\">\n <GoToButton post={post} />\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={50} />\n </span>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <span className=\"item-title\">{post.poster_name}</span>\n </div>\n <span className=\"user-title user-title-anonymous\">\n {gettext(\"Removed user\")}\n </span>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title || rank.name\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <a className={className} href={rank.url}>\n {userTitle}\n </a>\n )\n }\n\n return <span className={className}>{userTitle}</span>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport GoToButton from \"./button\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ post, poster }) {\n return (\n <div className=\"post-side post-side-registered\">\n <GoToButton post={post} />\n <div className=\"media\">\n <div className=\"media-left\">\n <a href={poster.url}>\n <Avatar className=\"poster-avatar\" size={50} user={poster} />\n </a>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a className=\"item-title\" href={poster.url}>\n {poster.username}\n </a>\n </div>\n <UserTitle title={poster.title} rank={poster.rank} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Anonymous from \"./anonymous\"\nimport Registered from \"./registered\"\n\nexport default function ({ post, poster }) {\n if (poster && poster.id) {\n return <Registered post={post} poster={poster} />\n }\n\n return <Anonymous post={post} />\n}\n","import React from \"react\"\nimport Body from \"./body\"\nimport Header from \"./header\"\nimport PostSide from \"./post-side\"\n\nexport default function ({ post, poster }) {\n const user = poster || post.poster\n\n let className = \"post\"\n if (user && user.rank.css_class) {\n className += \" post-\" + user.rank.css_class\n }\n\n return (\n <li className={className} id={\"post-\" + post.id}>\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <div className=\"panel-content\">\n <PostSide post={post} poster={user} />\n <Header post={post} />\n <Body post={post} />\n </div>\n </div>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default function () {\n return (\n <ul className=\"posts-list post-feed ui-preview\">\n <li className=\"post\">\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <div className=\"post-side post-side-anonymous\">\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={50} />\n </span>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <span className=\"item-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n <span className=\"user-title user-title-anonymous\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n </div>\n </div>\n <div className=\"post-heading\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"post-body\">\n <article className=\"misago-markup\">\n <p>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n \n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n \n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 200) + \"px\" }}\n >\n \n </span>\n </p>\n </article>\n </div>\n </div>\n </div>\n </li>\n </ul>\n )\n}\n","import React from \"react\"\nimport Post from \"./post\"\nimport Preview from \"./preview\"\n\nexport default function ({ isReady, posts, poster }) {\n if (!isReady) {\n return <Preview />\n }\n\n return (\n <ul className=\"posts-list post-feed ui-ready\">\n {posts.map((post) => {\n return <Post key={post.id} post={post} poster={poster} />\n })}\n </ul>\n )\n}\n","import { maxLength, minLength } from \"misago/utils/validators\"\nimport misago from \"misago\"\n\nexport function getTitleValidators() {\n return [getTitleLengthMin(), getTitleLengthMax()]\n}\n\nexport function getPostValidators() {\n if (misago.get(\"SETTINGS\").post_length_max) {\n return [validatePostLengthMin(), validatePostLengthMax()]\n } else {\n return [validatePostLengthMin()]\n }\n}\n\nexport function getTitleLengthMin() {\n return minLength(\n misago.get(\"SETTINGS\").thread_title_length_min,\n (limitValue, length) => {\n const message = ngettext(\n \"Thread title should be at least %(limit_value)s character long (it has %(show_value)s).\",\n \"Thread title should be at least %(limit_value)s characters long (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function getTitleLengthMax() {\n return maxLength(\n misago.get(\"SETTINGS\").thread_title_length_max,\n (limitValue, length) => {\n const message = ngettext(\n \"Thread title cannot be longer than %(limit_value)s character (it has %(show_value)s).\",\n \"Thread title cannot be longer than %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function validatePostLengthMin() {\n return minLength(\n misago.get(\"SETTINGS\").post_length_min,\n (limitValue, length) => {\n const message = ngettext(\n \"Posted message should be at least %(limit_value)s character long (it has %(show_value)s).\",\n \"Posted message should be at least %(limit_value)s characters long (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n\nexport function validatePostLengthMax() {\n return maxLength(\n misago.get(\"SETTINGS\").post_length_max || 1000000,\n (limitValue, length) => {\n const message = ngettext(\n \"Posted message cannot be longer than %(limit_value)s character (it has %(show_value)s).\",\n \"Posted message cannot be longer than %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n\n return interpolate(\n message,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getChoice() {\n let choice = null\n this.props.choices.map((item) => {\n if (item.value === this.props.value) {\n choice = item\n }\n })\n return choice\n }\n\n getIcon() {\n return this.getChoice().icon\n }\n\n getLabel() {\n return this.getChoice().label\n }\n\n change = (value) => {\n return () => {\n this.props.onChange({\n target: {\n value: value,\n },\n })\n }\n }\n\n render() {\n return (\n <div className=\"btn-group btn-select-group\">\n <button\n type=\"button\"\n className=\"btn btn-select dropdown-toggle\"\n id={this.props.id || null}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-describedby={this.props[\"aria-describedby\"] || null}\n disabled={this.props.disabled || false}\n >\n <Icon icon={this.getIcon()} />\n {this.getLabel()}\n </button>\n <ul className=\"dropdown-menu\">\n {this.props.choices.map((item, i) => {\n return (\n <li key={i}>\n <button\n type=\"button\"\n className=\"btn-link\"\n onClick={this.change(item.value)}\n >\n <Icon icon={item.icon} />\n {item.label}\n </button>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n\nexport function Icon({ icon }) {\n if (!icon) return null\n\n return <span className=\"material-icon\">{icon}</span>\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport StartSocialAuth from \"misago/components/StartSocialAuth\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n showActivation: false,\n\n username: \"\",\n password: \"\",\n\n validators: {\n username: [],\n password: [],\n },\n }\n }\n\n clean() {\n if (!this.isValid()) {\n snackbar.error(gettext(\"Fill out both fields.\"))\n return false\n } else {\n return true\n }\n }\n\n send() {\n return ajax.post(misago.get(\"AUTH_API\"), {\n username: this.state.username,\n password: this.state.password,\n })\n }\n\n handleSuccess() {\n let form = $(\"#hidden-login-form\")\n\n form.append('<input type=\"text\" name=\"username\" />')\n form.append('<input type=\"password\" name=\"password\" />')\n\n // fill out form with user credentials and submit it, this will tell\n // Misago to redirect user back to right page, and will trigger browser's\n // key ring feature\n form.find('input[type=\"hidden\"]').val(ajax.getCsrfToken())\n form.find('input[name=\"redirect_to\"]').val(window.location.pathname)\n form.find('input[name=\"username\"]').val(this.state.username)\n form.find('input[name=\"password\"]').val(this.state.password)\n form.submit()\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.code === \"inactive_admin\") {\n snackbar.info(rejection.detail)\n } else if (rejection.code === \"inactive_user\") {\n snackbar.info(rejection.detail)\n this.setState({\n showActivation: true,\n })\n } else if (rejection.code === \"banned\") {\n showBannedPage(rejection.detail)\n modal.hide()\n } else {\n snackbar.error(rejection.detail)\n }\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n modal.hide()\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n getActivationButton() {\n if (!this.state.showActivation) return null\n\n return (\n <a\n className=\"btn btn-success btn-block\"\n href={misago.get(\"REQUEST_ACTIVATION_URL\")}\n >\n {gettext(\"Activate account\")}\n </a>\n )\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-sm modal-sign-in\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Sign in\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <StartSocialAuth\n buttonLabel={gettext(\"Sign in with %(site)s\")}\n formLabel={gettext(\"Or use your forum account:\")}\n labelClassName=\"text-center\"\n />\n\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n className=\"form-control input-lg\"\n disabled={this.state.isLoading}\n id=\"id_username\"\n onChange={this.bindInput(\"username\")}\n placeholder={gettext(\"Username or e-mail\")}\n type=\"text\"\n value={this.state.username}\n />\n </div>\n </div>\n\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n className=\"form-control input-lg\"\n disabled={this.state.isLoading}\n id=\"id_password\"\n onChange={this.bindInput(\"password\")}\n placeholder={gettext(\"Password\")}\n type=\"password\"\n value={this.state.password}\n />\n </div>\n </div>\n </div>\n <div className=\"modal-footer\">\n {this.getActivationButton()}\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Sign in\")}\n </Button>\n <a\n className=\"btn btn-default btn-block\"\n href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}\n >\n {gettext(\"Forgot password?\")}\n </a>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClass() {\n return getStatusClassName(this.props.status)\n }\n\n render() {\n return <span className={this.getClass()}>{this.props.children}</span>\n }\n}\n\nexport class StatusIcon extends React.Component {\n getIcon() {\n if (this.props.status.is_banned) {\n return \"remove_circle_outline\"\n } else if (this.props.status.is_hidden) {\n return \"help_outline\"\n } else if (this.props.status.is_online_hidden) {\n return \"label\"\n } else if (this.props.status.is_offline_hidden) {\n return \"label_outline\"\n } else if (this.props.status.is_online) {\n return \"lens\"\n } else if (this.props.status.is_offline) {\n return \"panorama_fish_eye\"\n }\n }\n\n render() {\n return <span className=\"material-icon status-icon\">{this.getIcon()}</span>\n }\n}\n\nexport class StatusLabel extends React.Component {\n getHelp() {\n return getStatusDescription(this.props.user, this.props.status)\n }\n\n getLabel() {\n if (this.props.status.is_banned) {\n return gettext(\"Banned\")\n } else if (this.props.status.is_hidden) {\n return gettext(\"Hidden\")\n } else if (this.props.status.is_online_hidden) {\n return gettext(\"Online (hidden)\")\n } else if (this.props.status.is_offline_hidden) {\n return gettext(\"Offline (hidden)\")\n } else if (this.props.status.is_online) {\n return gettext(\"Online\")\n } else if (this.props.status.is_offline) {\n return gettext(\"Offline\")\n }\n }\n\n render() {\n return (\n <span\n className={this.props.className || \"status-label\"}\n title={this.getHelp()}\n >\n {this.getLabel()}\n </span>\n )\n }\n}\n\nexport function getStatusClassName(status) {\n let className = \"\"\n if (status.is_banned) {\n className = \"banned\"\n } else if (status.is_hidden) {\n className = \"offline\"\n } else if (status.is_online_hidden) {\n className = \"online\"\n } else if (status.is_offline_hidden) {\n className = \"offline\"\n } else if (status.is_online) {\n className = \"online\"\n } else if (status.is_offline) {\n className = \"offline\"\n }\n\n return \"user-status user-\" + className\n}\n\nexport function getStatusDescription(user, status) {\n if (status.is_banned) {\n if (status.banned_until) {\n return interpolate(\n gettext(\"%(username)s is banned until %(ban_expires)s\"),\n {\n username: user.username,\n ban_expires: status.banned_until.format(\"LL, LT\"),\n },\n true\n )\n } else {\n return interpolate(\n gettext(\"%(username)s is banned\"),\n {\n username: user.username,\n },\n true\n )\n }\n } else if (status.is_hidden) {\n return interpolate(\n gettext(\"%(username)s is hiding presence\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_online_hidden) {\n return interpolate(\n gettext(\"%(username)s is online (hidden)\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_offline_hidden) {\n return interpolate(\n gettext(\"%(username)s was last seen %(last_click)s (hidden)\"),\n {\n username: user.username,\n last_click: status.last_click.fromNow(),\n },\n true\n )\n } else if (status.is_online) {\n return interpolate(\n gettext(\"%(username)s is online\"),\n {\n username: user.username,\n },\n true\n )\n } else if (status.is_offline) {\n return interpolate(\n gettext(\"%(username)s was last seen %(last_click)s\"),\n {\n username: user.username,\n last_click: status.last_click.fromNow(),\n },\n true\n )\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getEmptyMessage() {\n if (this.props.emptyMessage) {\n return this.props.emptyMessage\n } else {\n return gettext(\"No name changes have been recorded for your account.\")\n }\n }\n\n render() {\n return (\n <div className=\"username-history ui-ready\">\n <ul className=\"list-group\">\n <li className=\"list-group-item empty-message\">\n {this.getEmptyMessage()}\n </li>\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default class extends React.Component {\n renderUserAvatar() {\n if (this.props.change.changed_by) {\n return (\n <a\n href={this.props.change.changed_by.url}\n className=\"user-avatar-wrapper\"\n >\n <Avatar user={this.props.change.changed_by} size=\"100\" />\n </a>\n )\n } else {\n return (\n <span className=\"user-avatar-wrapper\">\n <Avatar size=\"100\" />\n </span>\n )\n }\n }\n\n renderUsername() {\n if (this.props.change.changed_by) {\n return (\n <a href={this.props.change.changed_by.url} className=\"item-title\">\n {this.props.change.changed_by.username}\n </a>\n )\n } else {\n return (\n <span className=\"item-title\">\n {this.props.change.changed_by_username}\n </span>\n )\n }\n }\n\n render() {\n return (\n <li className=\"list-group-item\" key={this.props.change.id}>\n <div className=\"change-avatar\">{this.renderUserAvatar()}</div>\n <div className=\"change-author\">{this.renderUsername()}</div>\n <div className=\"change\">\n <span className=\"old-username\">{this.props.change.old_username}</span>\n <span className=\"material-icon\">arrow_forward</span>\n <span className=\"new-username\">{this.props.change.new_username}</span>\n </div>\n <div className=\"change-date\">\n <abbr title={this.props.change.changed_on.format(\"LLL\")}>\n {this.props.change.changed_on.fromNow()}\n </abbr>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport Change from \"misago/components/username-history/change\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"username-history ui-ready\">\n <ul className=\"list-group\">\n {this.props.changes.map((change) => {\n return <Change change={change} key={change.id} />\n })}\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n getClassName() {\n if (this.props.hiddenOnMobile) {\n return \"list-group-item hidden-xs hidden-sm\"\n } else {\n return \"list-group-item\"\n }\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"change-avatar\">\n <span className=\"user-avatar\">\n <Avatar size=\"100\" />\n </span>\n </div>\n <div className=\"change-author\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 100) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"change\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n <span className=\"material-icon\">arrow_forward</span>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"change-date\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(80, 140) + \"px\" }}\n >\n \n </span>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ChangePreview from \"misago/components/username-history/change-preview\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"username-history ui-preview\">\n <ul className=\"list-group\">\n {[0, 1, 2].map((i) => {\n return <ChangePreview hiddenOnMobile={i > 0} key={i} />\n })}\n </ul>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ListEmpty from \"misago/components/username-history/list-empty\"\nimport ListReady from \"misago/components/username-history/list-ready\"\nimport ListPreview from \"misago/components/username-history/list-preview\"\n\nexport default class extends React.Component {\n render() {\n if (this.props.isLoaded) {\n if (this.props.changes.length) {\n return <ListReady changes={this.props.changes} />\n } else {\n return <ListEmpty emptyMessage={this.props.emptyMessage} />\n }\n } else {\n return <ListPreview />\n }\n }\n}\n","import React from \"react\"\nimport UserStatus, { StatusLabel } from \"misago/components/user-status\"\n\nexport default function ({ showStatus, user }) {\n return (\n <ul className=\"list-unstyled\">\n <Status showStatus={showStatus} user={user} />\n <JoinDate user={user} />\n <li className=\"user-stat-divider\" />\n <Posts user={user} />\n <Threads user={user} />\n <Followers user={user} />\n </ul>\n )\n}\n\nexport function Status({ showStatus, user }) {\n if (!showStatus) return null\n\n return (\n <li className=\"user-stat-status\">\n <UserStatus status={user.status}>\n <StatusLabel status={user.status} user={user} />\n </UserStatus>\n </li>\n )\n}\n\nexport function JoinDate({ user }) {\n const { joined_on } = user\n\n let title = interpolate(\n gettext(\"Joined on %(joined_on)s\"),\n {\n joined_on: joined_on.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"Joined %(joined_on)s\"),\n {\n joined_on: joined_on.fromNow(),\n },\n true\n )\n\n return (\n <li className=\"user-stat-join-date\">\n <abbr title={title}>{message}</abbr>\n </li>\n )\n}\n\nexport function Posts({ user }) {\n const className = getStatClassName(\"user-stat-posts\", user.posts)\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", user.posts)\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n posts: user.posts,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Threads({ user }) {\n const className = getStatClassName(\"user-stat-threads\", user.threads)\n const message = ngettext(\n \"%(threads)s thread\",\n \"%(threads)s threads\",\n user.threads\n )\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n threads: user.threads,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Followers({ user }) {\n const className = getStatClassName(\"user-stat-followers\", user.followers)\n const message = ngettext(\n \"%(followers)s follower\",\n \"%(followers)s followers\",\n user.followers\n )\n\n return (\n <li className={className}>\n {interpolate(\n message,\n {\n followers: user.followers,\n },\n true\n )}\n </li>\n )\n}\n\nexport function getStatClassName(className, stat) {\n if (stat === 0) {\n return className + \" user-stat-empty\"\n }\n return className\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title || rank.name\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <a className={className} href={rank.url}>\n {userTitle}\n </a>\n )\n }\n\n return <span className={className}>{userTitle}</span>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Stats from \"./stats\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ showStatus, user }) {\n const { rank } = user\n\n let className = \"panel user-card\"\n if (rank.css_class) {\n className += \" user-card-\" + rank.css_class\n }\n\n return (\n <div className={className}>\n <div className=\"panel-body\">\n <div className=\"row\">\n <div className=\"col-xs-3 user-card-left\">\n <div className=\"user-card-small-avatar\">\n <a href={user.url}>\n <Avatar size=\"50\" size2x=\"80\" user={user} />\n </a>\n </div>\n </div>\n <div className=\"col-xs-9 col-sm-12 user-card-body\">\n <div className=\"user-card-avatar\">\n <a href={user.url}>\n <Avatar size=\"150\" size2x=\"200\" user={user} />\n </a>\n </div>\n\n <div className=\"user-card-username\">\n <a href={user.url}>{user.username}</a>\n </div>\n <div className=\"user-card-title\">\n <UserTitle rank={rank} title={user.title} />\n </div>\n\n <div className=\"user-card-stats\">\n <Stats showStatus={showStatus} user={user} />\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"panel user-card user-card-preview\">\n <div className=\"panel-body\">\n <div className=\"row\">\n <div className=\"col-xs-3 user-card-left\">\n <div className=\"user-card-small-avatar\">\n <span>\n <Avatar size=\"50\" size2x=\"80\" />\n </span>\n </div>\n </div>\n <div className=\"col-xs-9 col-sm-12 user-card-body\">\n <div className=\"user-card-avatar\">\n <span>\n <Avatar size=\"150\" size2x=\"200\" />\n </span>\n </div>\n\n <div className=\"user-card-username\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(60, 150) + \"px\" }}\n >\n \n </span>\n </div>\n <div className=\"user-card-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(60, 150) + \"px\" }}\n >\n \n </span>\n </div>\n\n <div className=\"user-card-stats\">\n <ul className=\"list-unstyled\">\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li className=\"user-stat-divider\" />\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n <li>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 70) + \"px\" }}\n >\n \n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Card from \"./card\"\n\nexport default function ({ colClassName, cols }) {\n const list = Array.apply(null, { length: cols }).map(Number.call, Number)\n\n return (\n <div className=\"users-cards-list ui-preview\">\n <div className=\"row\">\n {list.map((i) => {\n let className = colClassName\n if (i !== 0) className += \" hidden-xs\"\n if (i === 3) className += \" hidden-sm\"\n\n return (\n <div className={className} key={i}>\n <Card />\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Card from \"./card\"\nimport Preview from \"./preview\"\n\nexport default function ({ cols, isReady, showStatus, users }) {\n let colClassName = \"col-xs-12 col-sm-4\"\n if (cols === 4) {\n colClassName += \" col-md-3\"\n }\n\n if (!isReady) {\n return <Preview colClassName={colClassName} cols={cols} />\n }\n\n return (\n <div className=\"users-cards-list ui-ready\">\n <div className=\"row\">\n {users.map((user) => {\n return (\n <div className={colClassName} key={user.id}>\n <Card showStatus={showStatus} user={user} />\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n dropdown: false,\n }\n }\n\n toggleNav = () => {\n this.setState({\n dropdown: !this.state.dropdown,\n })\n }\n\n hideNav = () => {\n this.setState({\n dropdown: false,\n })\n }\n\n getCompactNavClassName() {\n if (this.state.dropdown) {\n return \"compact-nav open\"\n } else {\n return \"compact-nav\"\n }\n }\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.value) {\n return \"btn btn-yes-no btn-yes-no-on\"\n } else {\n return \"btn btn-yes-no btn-yes-no-off\"\n }\n }\n\n getIcon() {\n if (!!this.props.value) {\n return this.props.iconOn || \"check_box\"\n } else {\n return this.props.iconOff || \"check_box_outline_blank\"\n }\n }\n\n getLabel() {\n if (!!this.props.value) {\n return this.props.labelOn || gettext(\"yes\")\n } else {\n return this.props.labelOff || gettext(\"no\")\n }\n }\n\n toggle = () => {\n this.props.onChange({\n target: {\n value: !this.props.value,\n },\n })\n }\n\n render() {\n return (\n <button\n type=\"button\"\n onClick={this.toggle}\n className={this.getClassName()}\n id={this.props.id || null}\n aria-describedby={this.props[\"aria-describedby\"] || null}\n disabled={this.props.disabled || false}\n >\n <span className=\"material-icon\">{this.getIcon()}</span>\n <span className=\"btn-text\">{this.getLabel()}</span>\n </button>\n )\n }\n}\n","class OrderedList {\n constructor(items) {\n this.isOrdered = false\n this._items = items || []\n }\n\n add(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n\n after: order ? order.after || null : null,\n before: order ? order.before || null : null,\n })\n }\n\n get(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item\n }\n }\n\n return value\n }\n\n has(key) {\n return this.get(key) !== undefined\n }\n\n values() {\n var values = []\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item)\n }\n return values\n }\n\n order(values_only) {\n if (!this.isOrdered) {\n this._items = this._order(this._items)\n this.isOrdered = true\n }\n\n if (values_only || typeof values_only === \"undefined\") {\n return this.values()\n } else {\n return this._items\n }\n }\n\n orderedValues() {\n return this.order(true)\n }\n\n _order(unordered) {\n // Index of unordered items\n var index = []\n unordered.forEach(function (item) {\n index.push(item.key)\n })\n\n // Ordered items\n var ordered = []\n var ordering = []\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item)\n ordering.push(item.key)\n }\n })\n\n // Second pass: register items that\n // specify their before to \"_end\"\n unordered.forEach(function (item) {\n if (item.before === \"_end\") {\n ordered.push(item)\n ordering.push(item.key)\n }\n })\n\n // Third pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after)\n if (insertAt !== -1) {\n insertAt += 1\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before)\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item)\n ordering.splice(insertAt, 0, item.key)\n }\n }\n }\n\n var iterations = 200\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1\n unordered.forEach(insertItem)\n }\n\n return ordered\n }\n}\n\nexport default OrderedList\n","import \"bootstrap/js/transition\"\nimport \"bootstrap/js/affix\"\nimport \"bootstrap/js/modal\"\nimport \"bootstrap/js/dropdown\"\nimport \"at-js\"\nimport \"cropit\"\nimport \"waypoints\"\nimport \"jquery-caret\"\nimport \"highlight\"\nimport OrderedList from \"misago/utils/ordered-list\"\nimport \"misago/style/index.less\"\n\nexport class Misago {\n constructor() {\n this._initializers = []\n this._context = {}\n }\n\n addInitializer(initializer) {\n this._initializers.push({\n key: initializer.name,\n\n item: initializer.initializer,\n\n after: initializer.after,\n before: initializer.before,\n })\n }\n\n init(context) {\n this._context = context\n\n var initOrder = new OrderedList(this._initializers).orderedValues()\n initOrder.forEach((initializer) => {\n initializer(this)\n })\n }\n\n // context accessors\n has(key) {\n return !!this._context[key]\n }\n\n get(key, fallback) {\n if (this.has(key)) {\n return this._context[key]\n } else {\n return fallback || undefined\n }\n }\n\n pop(key) {\n if (this.has(key)) {\n let value = this._context[key]\n this._context[key] = null\n return value\n } else {\n return undefined\n }\n }\n}\n\n// create singleton\nvar misago = new Misago()\n\n// expose it globally\nwindow.misago = misago\n\n// and export it for tests and stuff\nexport default misago\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\n\nexport default function initializer() {\n ajax.init(misago.get(\"CSRF_COOKIE_NAME\"))\n}\n\nmisago.addInitializer({\n name: \"ajax\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport { patch } from \"misago/reducers/auth\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nconst AUTH_SYNC_RATE = 45 // sync user with backend every 45 seconds\n\nexport default function initializer(context) {\n if (context.get(\"isAuthenticated\")) {\n window.setInterval(function () {\n ajax.get(context.get(\"AUTH_API\")).then(\n function (data) {\n store.dispatch(patch(data))\n },\n function (rejection) {\n snackbar.apiError(rejection)\n }\n )\n }, AUTH_SYNC_RATE * 1000)\n }\n}\n\nmisago.addInitializer({\n name: \"auth-sync\",\n initializer: initializer,\n after: \"auth\",\n})\n","import misago from \"misago/index\"\nimport auth from \"misago/services/auth\"\nimport modal from \"misago/services/modal\"\nimport store from \"misago/services/store\"\nimport storage from \"misago/services/local-storage\"\n\nexport default function initializer() {\n auth.init(store, storage, modal)\n}\n\nmisago.addInitializer({\n name: \"auth\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport captcha from \"misago/services/captcha\"\nimport include from \"misago/services/include\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default function initializer(context) {\n captcha.init(context, ajax, include, snackbar)\n}\n\nmisago.addInitializer({\n name: \"captcha\",\n initializer: initializer,\n})\n","import React from \"react\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class AcceptAgreement extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = { submiting: false }\n }\n\n handleDecline = () => {\n if (this.state.submiting) return\n\n const confirmation = window.confirm(\n gettext(\n \"Declining will result in immediate deactivation and deletion of your account. This action is not reversible.\"\n )\n )\n if (!confirmation) return\n\n this.setState({ submiting: true })\n\n ajax.post(this.props.api, { accept: false }).then(() => {\n window.location.reload(true)\n })\n }\n\n handleAccept = () => {\n if (this.state.submiting) return\n\n this.setState({ submiting: true })\n\n ajax.post(this.props.api, { accept: true }).then(() => {\n window.location.reload(true)\n })\n }\n\n render() {\n return (\n <div>\n <button\n className=\"btn btn-default\"\n disabled={this.state.submiting}\n type=\"buton\"\n onClick={this.handleDecline}\n >\n {gettext(\"Decline\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.submiting}\n type=\"buton\"\n onClick={this.handleAccept}\n >\n {gettext(\"Accept and continue\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport AcceptAgreement from \"misago/components/accept-agreement\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer(context) {\n if (document.getElementById(\"required-agreement-mount\")) {\n mount(\n <AcceptAgreement api={context.get(\"REQUIRED_AGREEMENT_API\")} />,\n \"required-agreement-mount\",\n false\n )\n }\n}\n\nmisago.addInitializer({\n name: \"component:accept-agreement\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nexport default class extends React.Component {\n refresh() {\n window.location.reload()\n }\n\n getMessage() {\n if (this.props.signedIn) {\n return interpolate(\n gettext(\n \"You have signed in as %(username)s. Please refresh the page before continuing.\"\n ),\n { username: this.props.signedIn.username },\n true\n )\n } else if (this.props.signedOut) {\n return interpolate(\n gettext(\n \"%(username)s, you have been signed out. Please refresh the page before continuing.\"\n ),\n { username: this.props.user.username },\n true\n )\n }\n }\n\n render() {\n let className = \"auth-message\"\n if (this.props.signedIn || this.props.signedOut) {\n className += \" show\"\n }\n\n return (\n <div className={className}>\n <div className=\"container\">\n <p className=\"lead\">{this.getMessage()}</p>\n <p>\n <button\n className=\"btn btn-default\"\n type=\"button\"\n onClick={this.refresh}\n >\n {gettext(\"Reload page\")}\n </button>\n <span className=\"hidden-xs hidden-sm\">\n {\" \" + gettext(\"or press F5 key.\")}\n </span>\n </p>\n </div>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return {\n user: state.auth.user,\n signedIn: state.auth.signedIn,\n signedOut: state.auth.signedOut,\n }\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport AuthMessage, { select } from \"misago/components/auth-message\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(AuthMessage), \"auth-message-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:auth-message\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport default function initializer(context) {\n if (context.has(\"BAN_MESSAGE\")) {\n showBannedPage(context.get(\"BAN_MESSAGE\"), false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:banmed-page\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"categories-list\">\n <ul className=\"list-group\">\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {gettext(\n \"No categories exist or you don't have permission to see them.\"\n )}\n </p>\n </li>\n </ul>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n if (!category.description) return null\n\n return (\n <div\n className=\"category-description\"\n dangerouslySetInnerHTML={{\n __html: category.description.html,\n }}\n />\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n return (\n <div className={getClassName(category)} title={getTitle(category)}>\n <span className=\"material-icon\">{getIcon(category)}</span>\n </div>\n )\n}\n\nexport function getClassName(category) {\n if (category.is_read) {\n return \"read-status item-read\"\n }\n\n return \"read-status item-new\"\n}\n\nexport function getTitle(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return gettext(\"This category has no new posts. (closed)\")\n }\n\n return gettext(\"This category has new posts. (closed)\")\n }\n\n if (category.is_read) {\n return gettext(\"This category has no new posts.\")\n }\n\n return gettext(\"This category has new posts.\")\n}\n\nexport function getIcon(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return \"lock_outline\"\n }\n\n return \"lock\"\n }\n\n if (category.is_read) {\n return \"chat_bubble_outline\"\n }\n\n return \"chat_bubble\"\n}\n","import React from \"react\"\nimport Description from \"./description\"\nimport Icon from \"./icon\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-xs-12 col-sm-6 col-md-6 category-main\">\n <div className=\"media\">\n <div className=\"media-left\">\n <Icon category={category} />\n </div>\n <div className=\"media-body\">\n <h4 className=\"media-heading\">\n <a href={category.url.index}>{category.name}</a>\n </h4>\n <Description category={category} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-xs-12 col-sm-6 col-md-4 category-last-thread\">\n <LastThread category={category} />\n <Empty category={category} />\n <Private category={category} />\n <Protected category={category} />\n </div>\n )\n}\n\nexport function LastThread({ category }) {\n if (!category.acl.can_browse) return null\n if (!category.acl.can_see_all_threads) return null\n if (!category.last_thread_title) return null\n\n return (\n <div className=\"media\">\n <div className=\"media-left hidden-xs\">\n <LastPosterAvatar category={category} />\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a\n className=\"item-title thread-title\"\n href={category.url.last_thread_new}\n title={category.last_thread_title}\n >\n {category.last_thread_title}\n </a>\n </div>\n <ul className=\"list-inline\">\n <li className=\"category-last-thread-poster\">\n <LastPosterName category={category} />\n </li>\n <li className=\"divider\">—</li>\n <li className=\"category-last-thread-date\">\n <a href={category.url.last_post}>\n {category.last_post_on.fromNow()}\n </a>\n </li>\n </ul>\n </div>\n </div>\n )\n}\n\nexport function LastPosterAvatar({ category }) {\n if (category.last_poster) {\n return (\n <a\n className=\"last-poster-avatar\"\n href={category.last_poster.url}\n title={category.last_poster_name}\n >\n <Avatar\n className=\"media-object\"\n size={40}\n user={category.last_poster}\n />\n </a>\n )\n }\n\n return (\n <span className=\"last-poster-avatar\" title={category.last_poster_name}>\n <Avatar className=\"media-object\" size={40} />\n </span>\n )\n}\n\nexport function LastPosterName({ category }) {\n if (category.last_poster) {\n return (\n <a className=\"item-title\" href={category.last_poster.url}>\n {category.last_poster_name}\n </a>\n )\n }\n\n return <span className=\"item-title\">{category.last_poster_name}</span>\n}\n\nexport function Empty({ category }) {\n if (!category.acl.can_browse) return null\n if (!category.acl.can_see_all_threads) return null\n if (category.last_thread_title) return null\n\n return (\n <Message\n message={gettext(\n \"This category is empty. No threads were posted within it so far.\"\n )}\n />\n )\n}\n\nexport function Private({ category }) {\n if (!category.acl.can_browse) return null\n if (category.acl.can_see_all_threads) return null\n\n return (\n <Message\n message={gettext(\n \"This category is private. You can see only your own threads within it.\"\n )}\n />\n )\n}\n\nexport function Protected({ category }) {\n if (category.acl.can_browse) return null\n\n return (\n <Message\n message={gettext(\n \"This category is protected. You can't browse its contents.\"\n )}\n />\n )\n}\n\nexport function Message({ message }) {\n return (\n <div className=\"media category-thread-message\">\n <div className=\"media-left\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"media-body\">\n <p>{message}</p>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ category }) {\n return (\n <div className=\"col-md-2 hidden-xs hidden-sm\">\n <ul className=\"list-unstyled category-stats\">\n <Threads threads={category.threads} />\n <Posts posts={category.posts} />\n </ul>\n </div>\n )\n}\n\nexport function Threads({ threads }) {\n const message = ngettext(\"%(threads)s thread\", \"%(threads)s threads\", threads)\n\n return (\n <li className=\"category-stat-threads\">\n {interpolate(\n message,\n {\n threads: threads,\n },\n true\n )}\n </li>\n )\n}\n\nexport function Posts({ posts }) {\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", posts)\n\n return (\n <li className=\"category-stat-posts\">\n {interpolate(\n message,\n {\n posts: posts,\n },\n true\n )}\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ category }) {\n let className = \"btn btn-default btn-block btn-sm btn-subcategory\"\n if (!category.is_read) {\n className += \" btn-subcategory-new\"\n }\n\n return (\n <div className=\"col-xs-12 col-sm-4 col-md-3\">\n <a className={className} href={category.url.index}>\n <span className=\"material-icon\">{getIcon(category)}</span>\n <span className=\"icon-text\">{category.name}</span>\n </a>\n </div>\n )\n}\n\nexport function getIcon(category) {\n if (category.is_closed) {\n if (category.is_read) {\n return \"lock_outline\"\n }\n\n return \"lock\"\n }\n\n if (category.is_read) {\n return \"chat_bubble_outline\"\n }\n\n return \"chat_bubble\"\n}\n","import React from \"react\"\nimport ListItem from \"./list-item\"\n\nexport default function ({ category, isFirst }) {\n if (isFirst) return null\n if (category.subcategories.length === 0) return null\n\n return (\n <div className=\"row subcategories-list\">\n {category.subcategories.map((category) => {\n return <ListItem category={category} key={category.id} />\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport Main from \"./main\"\nimport LastThread from \"./last-thread\"\nimport Stats from \"./stats\"\nimport Subcategories from \"./subcategories\"\n\nexport default function ({ category, isFirst }) {\n let className = \"list-group-item\"\n\n if (category.description) {\n className += \" list-group-category-has-description\"\n } else {\n className += \" list-group-category-no-description\"\n }\n\n if (isFirst) {\n className += \" list-group-item-first\"\n }\n if (category.css_class) {\n className += \" list-group-category-has-flavor\"\n className += \" list-group-item-category-\" + category.css_class\n }\n\n return (\n <li className={className}>\n <div className=\"row\">\n <Main category={category} />\n <Stats category={category} />\n <LastThread category={category} />\n </div>\n <Subcategories category={category} isFirst={isFirst} />\n </li>\n )\n}\n","import React from \"react\"\nimport ListItem from \"./list-item\"\n\nexport default function ({ category }) {\n let className = \"list-group list-group-category\"\n if (category.css_class) {\n className += \" list-group-category-has-flavor\"\n className += \" list-group-category-\" + category.css_class\n }\n\n return (\n <ul className={className}>\n <ListItem category={category} isFirst={true} />\n {category.subcategories.map((category) => {\n return (\n <ListItem category={category} isFirst={false} key={category.id} />\n )\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport Category from \"./category\"\n\nexport default function ({ categories }) {\n return (\n <div className=\"categories-list\">\n {categories.map((category) => {\n return <Category category={category} key={category.id} />\n })}\n </div>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport Blankslate from \"./blankslate\"\nimport CategoriesList from \"./categories-list\"\nimport misago from \"misago/index\"\nimport polls from \"misago/services/polls\"\n\nconst hydrate = function (category) {\n return Object.assign({}, category, {\n last_post_on: category.last_post_on ? moment(category.last_post_on) : null,\n subcategories: category.subcategories.map(hydrate),\n })\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n categories: misago.get(\"CATEGORIES\").map(hydrate),\n }\n\n this.startPolling(misago.get(\"CATEGORIES_API\"))\n }\n\n startPolling(api) {\n polls.start({\n poll: \"categories\",\n url: api,\n frequency: 180 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n this.setState({\n categories: data.map(hydrate),\n })\n }\n\n render() {\n const { categories } = this.state\n\n if (categories.length === 0) {\n return <Blankslate />\n }\n\n return <CategoriesList categories={categories} />\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n }\n}\n","import { connect } from \"react-redux\"\nimport Categories, { select } from \"misago/components/categories\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"categories-mount\")) {\n mount(connect(select)(Categories), \"categories-mount\")\n }\n}\n\nmisago.addInitializer({\n name: \"component:categories\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nexport function SideNav(props) {\n return (\n <div className=\"list-group nav-side\">\n {props.options.map((option) => {\n return (\n <Link\n to={props.baseUrl + option.component + \"/\"}\n className=\"list-group-item\"\n activeClassName=\"active\"\n key={option.component}\n >\n <span className=\"material-icon\">{option.icon}</span>\n {option.name}\n </Link>\n )\n })}\n </div>\n )\n}\n\nexport function CompactNav(props) {\n return (\n <ul className={props.className || \"dropdown-menu\"} role=\"menu\">\n {props.options.map((option) => {\n return (\n <Li\n path={props.baseUrl + option.component + \"/\"}\n key={option.component}\n >\n <Link\n to={props.baseUrl + option.component + \"/\"}\n onClick={props.hideNav}\n >\n <span className=\"material-icon hidden-sm\">{option.icon}</span>\n {option.name}\n </Link>\n </Li>\n )\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n password: \"\",\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Delete account\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n onPasswordChange = (event) => {\n this.setState({ password: event.target.value })\n }\n\n handleSubmit = (event) => {\n event.preventDefault()\n\n const { isLoading, password } = this.state\n const { user } = this.props\n\n if (password.length == 0) {\n snackbar.error(\n gettext(\"Enter your password to confirm account deletion.\")\n )\n return false\n }\n\n if (isLoading) return false\n this.setState({ isLoading: true })\n\n ajax.post(user.api.delete, { password }).then(\n (success) => {\n window.location.href = misago.get(\"MISAGO_PATH\")\n },\n (rejection) => {\n this.setState({ isLoading: false })\n if (rejection.password) {\n snackbar.error(rejection.password[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-danger panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Delete account\")}</h3>\n </div>\n <div className=\"panel-body\">\n <p className=\"lead\">\n {gettext(\n \"You are going to delete your account. This action is nonreversible, and will result in following data being deleted:\"\n )}\n </p>\n\n <p>\n -{\" \"}\n {gettext(\n \"Stored IP addresses associated with content that you have posted will be deleted.\"\n )}\n </p>\n <p>\n -{\" \"}\n {gettext(\n \"Your username will become available for other user to rename to or for new user to register their account with.\"\n )}\n </p>\n <p>\n -{\" \"}\n {gettext(\n \"Your e-mail will become available for use in new account registration.\"\n )}\n </p>\n\n <hr />\n\n <p>\n {gettext(\n \"All your posted content will NOT be deleted, but username associated with it will be changed to one shared by all deleted accounts.\"\n )}\n </p>\n </div>\n <div className=\"panel-footer\">\n <div className=\"input-group\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n name=\"password-confirmation\"\n type=\"password\"\n placeholder={gettext(\n \"Enter your password to confirm account deletion.\"\n )}\n value={this.state.password}\n onChange={this.onPasswordChange}\n />\n <span className=\"input-group-btn\">\n <Button className=\"btn-danger\" loading={this.state.isLoading}>\n {gettext(\"Delete my account\")}\n </Button>\n </span>\n </div>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/edit-details\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n componentDidMount() {\n title.set({\n title: gettext(\"Edit details\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n onSuccess = () => {\n snackbar.info(gettext(\"Your details have been updated.\"))\n }\n\n render() {\n return (\n <Form api={this.props.user.api.edit_details} onSuccess={this.onSuccess} />\n )\n }\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class DownloadData extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n isSubmiting: false,\n downloads: [],\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Download your data\"),\n parent: gettext(\"Change your options\"),\n })\n\n this.handleLoadDownloads()\n }\n\n handleLoadDownloads = () => {\n ajax.get(this.props.user.api.data_downloads).then(\n (data) => {\n this.setState({\n isLoading: false,\n downloads: data,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n handleRequestDataDownload = () => {\n this.setState({ isSubmiting: true })\n ajax.post(this.props.user.api.request_data_download).then(\n () => {\n this.handleLoadDownloads()\n snackbar.success(\n gettext(\"Your request for data download has been registered.\")\n )\n this.setState({ isSubmiting: false })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n this.setState({ isSubmiting: false })\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Download your data\")}</h3>\n </div>\n <div className=\"panel-body\">\n <p>\n {gettext(\n 'To download your data from the site, click the \"Request data download\" button. Depending on amount of data to be archived and number of users wanting to download their data at same time it may take up to few days for your download to be prepared. An e-mail with notification will be sent to you when your data is ready to be downloaded.'\n )}\n </p>\n\n <p>\n {gettext(\n \"The download will only be available for limited amount of time, after which it will be deleted from the site and marked as expired.\"\n )}\n </p>\n </div>\n <table className=\"table\">\n <thead>\n <tr>\n <th>{gettext(\"Requested on\")}</th>\n <th className=\"col-md-4\">{gettext(\"Download\")}</th>\n </tr>\n </thead>\n <tbody>\n {this.state.downloads.map((item) => {\n return (\n <tr key={item.id}>\n <td style={rowStyle}>\n {moment(item.requested_on).fromNow()}\n </td>\n <td>\n <DownloadButton\n exportFile={item.file}\n status={item.status}\n />\n </td>\n </tr>\n )\n })}\n {this.state.downloads.length == 0 ? (\n <tr>\n <td colSpan=\"2\">{gettext(\"You have no data downloads.\")}</td>\n </tr>\n ) : null}\n </tbody>\n </table>\n <div className=\"panel-footer text-right\">\n <Button\n className=\"btn-primary\"\n loading={this.state.isSubmiting}\n type=\"button\"\n onClick={this.handleRequestDataDownload}\n >\n {gettext(\"Request data download\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n}\n\nconst rowStyle = {\n verticalAlign: \"middle\",\n}\n\nconst STATUS_PENDING = 0\nconst STATUS_PROCESSING = 1\n\nconst DownloadButton = ({ exportFile, status }) => {\n if (status === STATUS_PENDING || status === STATUS_PROCESSING) {\n return (\n <Button\n className=\"btn-info btn-sm btn-block\"\n disabled={true}\n type=\"button\"\n >\n {gettext(\"Download is being prepared\")}\n </Button>\n )\n }\n\n if (exportFile) {\n return (\n <a className=\"btn btn-success btn-sm btn-block\" href={exportFile}>\n {gettext(\"Download your data\")}\n </a>\n )\n }\n\n return (\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={true}\n type=\"button\"\n >\n {gettext(\"Download is expired\")}\n </Button>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Select from \"misago/components/select\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport { patch } from \"misago/reducers/auth\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n is_hiding_presence: props.user.is_hiding_presence,\n limits_private_thread_invites_to:\n props.user.limits_private_thread_invites_to,\n subscribe_to_started_threads: props.user.subscribe_to_started_threads,\n subscribe_to_replied_threads: props.user.subscribe_to_replied_threads,\n\n errors: {},\n }\n\n this.privateThreadInvitesChoices = [\n {\n value: 0,\n icon: \"help_outline\",\n label: gettext(\"Everybody\"),\n },\n {\n value: 1,\n icon: \"done_all\",\n label: gettext(\"Users I follow\"),\n },\n {\n value: 2,\n icon: \"highlight_off\",\n label: gettext(\"Nobody\"),\n },\n ]\n\n this.subscribeToChoices = [\n {\n value: 0,\n icon: \"star_border\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"star_half\",\n label: gettext(\"Notify\"),\n },\n {\n value: 2,\n icon: \"star\",\n label: gettext(\"Notify with e-mail\"),\n },\n ]\n }\n\n send() {\n return ajax.post(this.props.user.api.options, {\n is_hiding_presence: this.state.is_hiding_presence,\n limits_private_thread_invites_to:\n this.state.limits_private_thread_invites_to,\n subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n subscribe_to_replied_threads: this.state.subscribe_to_replied_threads,\n })\n }\n\n handleSuccess() {\n store.dispatch(\n patch({\n is_hiding_presence: this.state.is_hiding_presence,\n limits_private_thread_invites_to:\n this.state.limits_private_thread_invites_to,\n subscribe_to_started_threads: this.state.subscribe_to_started_threads,\n subscribe_to_replied_threads: this.state.subscribe_to_replied_threads,\n })\n )\n snackbar.success(gettext(\"Your forum options have been changed.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(gettext(\"Please reload page and try again.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Forum options\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change forum options\")}</h3>\n </div>\n <div className=\"panel-body\">\n <fieldset>\n <legend>{gettext(\"Privacy settings\")}</legend>\n\n <FormGroup\n label={gettext(\"Hide my presence\")}\n helpText={gettext(\n \"If you hide your presence, only members with permission to see hidden users will see when you are online.\"\n )}\n for=\"id_is_hiding_presence\"\n >\n <YesNoSwitch\n id=\"id_is_hiding_presence\"\n disabled={this.state.isLoading}\n iconOn=\"visibility_off\"\n iconOff=\"visibility\"\n labelOn={gettext(\"Hide my presence from other users\")}\n labelOff={gettext(\"Show my presence to other users\")}\n onChange={this.bindInput(\"is_hiding_presence\")}\n value={this.state.is_hiding_presence}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Private thread invitations\")}\n for=\"id_limits_private_thread_invites_to\"\n >\n <Select\n id=\"id_limits_private_thread_invites_to\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"limits_private_thread_invites_to\")}\n value={this.state.limits_private_thread_invites_to}\n choices={this.privateThreadInvitesChoices}\n />\n </FormGroup>\n </fieldset>\n\n <fieldset>\n <legend>{gettext(\"Automatic subscriptions\")}</legend>\n\n <FormGroup\n label={gettext(\"Threads I start\")}\n for=\"id_subscribe_to_started_threads\"\n >\n <Select\n id=\"id_subscribe_to_started_threads\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"subscribe_to_started_threads\")}\n value={this.state.subscribe_to_started_threads}\n choices={this.subscribeToChoices}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Threads I reply to\")}\n for=\"id_subscribe_to_replied_threads\"\n >\n <Select\n id=\"id_subscribe_to_replied_threads\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"subscribe_to_replied_threads\")}\n value={this.state.subscribe_to_replied_threads}\n choices={this.subscribeToChoices}\n />\n </FormGroup>\n </fieldset>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport PanelLoader from \"misago/components/panel-loader\"\n\nexport default function () {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <PanelLoader />\n </div>\n )\n}\n","import React from \"react\"\nimport PanelMessage from \"misago/components/panel-message\"\n\nexport default class extends React.Component {\n getHelpText() {\n if (this.props.options.next_on) {\n return interpolate(\n gettext(\"You will be able to change your username %(next_change)s.\"),\n { next_change: this.props.options.next_on.fromNow() },\n true\n )\n } else {\n return gettext(\"You have used up available name changes.\")\n }\n }\n\n render() {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <PanelMessage\n helpText={this.getHelpText()}\n message={gettext(\"You can't change your username at the moment.\")}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n username: \"\",\n\n validators: {\n username: [\n validators.usernameContent(),\n validators.usernameMinLength(props.options.length_min),\n validators.usernameMaxLength(props.options.length_max),\n ],\n },\n\n isLoading: false,\n }\n }\n\n getHelpText() {\n let phrases = []\n\n if (this.props.options.changes_left > 0) {\n let message = ngettext(\n \"You can change your username %(changes_left)s more time.\",\n \"You can change your username %(changes_left)s more times.\",\n this.props.options.changes_left\n )\n\n phrases.push(\n interpolate(\n message,\n {\n changes_left: this.props.options.changes_left,\n },\n true\n )\n )\n }\n\n if (this.props.user.acl.name_changes_expire > 0) {\n let message = ngettext(\n \"Used changes become available again after %(name_changes_expire)s day.\",\n \"Used changes become available again after %(name_changes_expire)s days.\",\n this.props.user.acl.name_changes_expire\n )\n\n phrases.push(\n interpolate(\n message,\n {\n name_changes_expire: this.props.user.acl.name_changes_expire,\n },\n true\n )\n )\n }\n\n return phrases.length ? phrases.join(\" \") : null\n }\n\n clean() {\n let errors = this.validate()\n if (errors.username) {\n snackbar.error(errors.username[0])\n return false\n }\n if (this.state.username.trim() === this.props.user.username) {\n snackbar.info(gettext(\"Your new username is same as current one.\"))\n return false\n } else {\n return true\n }\n }\n\n send() {\n return ajax.post(this.props.user.api.username, {\n username: this.state.username,\n })\n }\n\n handleSuccess(success) {\n this.setState({\n username: \"\",\n })\n\n this.props.complete(success.username, success.slug, success.options)\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change username\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup\n label={gettext(\"New username\")}\n for=\"id_username\"\n helpText={this.getHelpText()}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change username\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport FormLoading from \"misago/components/options/change-username/form-loading\"\nimport FormLocked from \"misago/components/options/change-username/form-locked\"\nimport Form from \"misago/components/options/change-username/form\"\nimport UsernameHistory from \"misago/components/username-history/root\"\nimport misago from \"misago/index\"\nimport { hydrate, addNameChange } from \"misago/reducers/username-history\"\nimport { updateUsername } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n options: null,\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Change username\"),\n parent: gettext(\"Change your options\"),\n })\n\n Promise.all([\n ajax.get(this.props.user.api.username),\n ajax.get(misago.get(\"USERNAME_CHANGES_API\"), {\n user: this.props.user.id,\n }),\n ]).then((data) => {\n store.dispatch(hydrate(data[1].results))\n\n this.setState({\n isLoaded: true,\n options: {\n changes_left: data[0].changes_left,\n length_min: data[0].length_min,\n length_max: data[0].length_max,\n next_on: data[0].next_on ? moment(data[0].next_on) : null,\n },\n })\n })\n }\n\n onComplete = (username, slug, options) => {\n this.setState({\n options,\n })\n\n store.dispatch(\n addNameChange({ username, slug }, this.props.user, this.props.user)\n )\n store.dispatch(updateUsername(this.props.user, username, slug))\n\n snackbar.success(gettext(\"Your username has been changed successfully.\"))\n }\n\n getChangeForm() {\n if (!this.state.isLoaded) {\n return <FormLoading />\n }\n\n if (this.state.options.changes_left === 0) {\n return <FormLocked options={this.state.options} />\n }\n\n return (\n <Form\n complete={this.onComplete}\n options={this.state.options}\n user={this.props.user}\n />\n )\n }\n\n render() {\n return (\n <div>\n {this.getChangeForm()}\n <UsernameHistory\n changes={this.props[\"username-history\"]}\n isLoaded={this.state.isLoaded}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n new_email: \"\",\n password: \"\",\n\n validators: {\n new_email: [validators.email()],\n password: [],\n },\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.new_email.trim().length,\n this.state.password.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n if (errors.new_email) {\n snackbar.error(errors.new_email[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.user.api.change_email, {\n new_email: this.state.new_email,\n password: this.state.password,\n })\n }\n\n handleSuccess(response) {\n this.setState({\n new_email: \"\",\n password: \"\",\n })\n\n snackbar.success(response.detail)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.new_email) {\n snackbar.error(rejection.new_email)\n } else {\n snackbar.error(rejection.password)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change e-mail address\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup label={gettext(\"New e-mail\")} for=\"id_new_email\">\n <input\n type=\"text\"\n id=\"id_new_email\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"new_email\")}\n value={this.state.new_email}\n />\n </FormGroup>\n\n <hr />\n\n <FormGroup\n label={gettext(\"Your current password\")}\n for=\"id_confirm_email\"\n >\n <input\n type=\"password\"\n id=\"id_confirm_email\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change e-mail\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n new_password: \"\",\n repeat_password: \"\",\n password: \"\",\n\n validators: {\n new_password: [],\n repeat_password: [],\n password: [],\n },\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.new_password.trim().length,\n this.state.repeat_password.trim().length,\n this.state.password.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n if (errors.new_password) {\n snackbar.error(errors.new_password[0])\n return false\n }\n\n if (this.state.new_password !== this.state.repeat_password) {\n snackbar.error(gettext(\"New passwords are different.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.user.api.change_password, {\n new_password: this.state.new_password,\n password: this.state.password,\n })\n }\n\n handleSuccess(response) {\n this.setState({\n new_password: \"\",\n repeat_password: \"\",\n password: \"\",\n })\n\n snackbar.success(response.detail)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n if (rejection.new_password) {\n snackbar.error(rejection.new_password)\n } else {\n snackbar.error(rejection.password)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change password\")}</h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup label={gettext(\"New password\")} for=\"id_new_password\">\n <input\n type=\"password\"\n id=\"id_new_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"new_password\")}\n value={this.state.new_password}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Repeat password\")}\n for=\"id_repeat_password\"\n >\n <input\n type=\"password\"\n id=\"id_repeat_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"repeat_password\")}\n value={this.state.repeat_password}\n />\n </FormGroup>\n\n <hr />\n\n <FormGroup\n label={gettext(\"Your current password\")}\n for=\"id_confirm_password\"\n >\n <input\n type=\"password\"\n id=\"id_confirm_password\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n </div>\n <div className=\"panel-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change password\")}\n </Button>\n </div>\n </div>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport misago from \"misago/index\"\n\nconst UnusablePasswordMessage = () => {\n return (\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Change email or password\")}</h3>\n </div>\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You need to set a password for your account to be able to change your username or email.\"\n )}\n </p>\n <p className=\"help-block\">\n <a\n className=\"btn btn-primary\"\n href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}\n >\n {gettext(\"Set password\")}\n </a>\n </p>\n </div>\n </div>\n </div>\n )\n}\n\nexport default UnusablePasswordMessage\n","import React from \"react\"\nimport ChangeEmail from \"misago/components/options/sign-in-credentials/change-email\"\nimport ChangePassword from \"misago/components/options/sign-in-credentials/change-password\"\nimport misago from \"misago/index\"\nimport title from \"misago/services/page-title\"\nimport UnusablePasswordMessage from \"./UnusablePasswordMessage\"\n\nexport default class extends React.Component {\n componentDidMount() {\n title.set({\n title: gettext(\"Change email or password\"),\n parent: gettext(\"Change your options\"),\n })\n }\n\n render() {\n if (!this.props.user.has_usable_password) {\n return <UnusablePasswordMessage />\n }\n\n return (\n <div>\n <ChangeEmail user={this.props.user} />\n <ChangePassword user={this.props.user} />\n\n <p className=\"message-line\">\n <span className=\"material-icon\">warning</span>\n <a href={misago.get(\"FORGOTTEN_PASSWORD_URL\")}>\n {gettext(\"Change forgotten password\")}\n </a>\n </p>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport { SideNav, CompactNav } from \"misago/components/options/navs\"\nimport DeleteAccount from \"misago/components/options/delete-account\"\nimport EditDetails from \"misago/components/options/edit-details\"\nimport DownloadData from \"misago/components/options/download-data\"\nimport ChangeForumOptions from \"misago/components/options/forum-options\"\nimport ChangeUsername from \"misago/components/options/change-username/root\"\nimport ChangeSignInCredentials from \"misago/components/options/sign-in-credentials/root\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport PageContainer from \"../PageContainer\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n render() {\n const page = misago.get(\"USER_OPTIONS\").filter((page) => {\n const url = misago.get(\"USERCP_URL\") + page.component + \"/\"\n return this.props.location.pathname.substr(0, url.length) === url\n })[0]\n\n return (\n <div className=\"page page-options\">\n <PageHeaderContainer>\n <PageHeader styleName=\"options\">\n <PageHeaderBanner styleName=\"options\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol auto>\n <h1>{gettext(\"Change your options\")}</h1>\n </FlexRowCol>\n <FlexRowCol className=\"hidden-xs hidden-md hidden-lg\" shrink>\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Menu\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">menu</span>\n </button>\n <CompactNav\n className=\"dropdown-menu dropdown-menu-right\"\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n <FlexRowSection className=\"hidden-sm hidden-md hidden-lg\">\n <FlexRowCol>\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-block dropdown-toggle\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </button>\n <CompactNav\n className=\"dropdown-menu\"\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n </FlexRow>\n </PageHeaderBanner>\n </PageHeader>\n </PageHeaderContainer>\n <PageContainer>\n <div className=\"row\">\n <div className=\"col-md-3 hidden-xs hidden-sm\">\n <SideNav\n baseUrl={misago.get(\"USERCP_URL\")}\n options={misago.get(\"USER_OPTIONS\")}\n />\n </div>\n <div className=\"col-md-9\">{this.props.children}</div>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n user: store.auth.user,\n \"username-history\": store[\"username-history\"],\n }\n}\n\nexport function paths() {\n const paths = [\n {\n path: misago.get(\"USERCP_URL\") + \"forum-options/\",\n component: connect(select)(ChangeForumOptions),\n },\n {\n path: misago.get(\"USERCP_URL\") + \"edit-details/\",\n component: connect(select)(EditDetails),\n },\n ]\n\n const delegateAuth = misago.get(\"SETTINGS\").DELEGATE_AUTH\n if (!delegateAuth) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"change-username/\",\n component: connect(select)(ChangeUsername),\n })\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"sign-in-credentials/\",\n component: connect(select)(ChangeSignInCredentials),\n })\n }\n\n if (misago.get(\"ENABLE_DOWNLOAD_OWN_DATA\")) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"download-data/\",\n component: connect(select)(DownloadData),\n })\n }\n\n if (!delegateAuth && misago.get(\"ENABLE_DELETE_OWN_ACCOUNT\")) {\n paths.push({\n path: misago.get(\"USERCP_URL\") + \"delete-account/\",\n component: connect(select)(DeleteAccount),\n })\n }\n\n return paths\n}\n","import Options, { paths } from \"misago/components/options/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"USER_OPTIONS\")) {\n mount({\n root: misago.get(\"USERCP_URL\"),\n component: Options,\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:options\",\n initializer: initializer,\n after: \"store\",\n})\n","import moment from \"moment\"\nimport React from \"react\"\nimport PanelLoader from \"misago/components/panel-loader\"\nimport PanelMessage from \"misago/components/panel-message\"\nimport misago from \"misago/index\"\nimport polls from \"misago/services/polls\"\nimport title from \"misago/services/page-title\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"PROFILE_BAN\")) {\n this.initWithPreloadedData(misago.pop(\"PROFILE_BAN\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling(props.profile.api.ban)\n }\n\n initWithPreloadedData(ban) {\n if (ban.expires_on) {\n ban.expires_on = moment(ban.expires_on)\n }\n\n this.state = {\n isLoaded: true,\n ban,\n }\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling(api) {\n polls.start({\n poll: \"ban-details\",\n url: api,\n frequency: 90 * 1000,\n update: this.update,\n error: this.error,\n })\n }\n\n update = (ban) => {\n if (ban.expires_on) {\n ban.expires_on = moment(ban.expires_on)\n }\n\n this.setState({\n isLoaded: true,\n error: null,\n\n ban,\n })\n }\n\n error = (error) => {\n this.setState({\n isLoaded: true,\n error: error.detail,\n ban: null,\n })\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Ban details\"),\n parent: this.props.profile.username,\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"ban-details\")\n }\n\n getUserMessage() {\n if (this.state.ban.user_message) {\n return (\n <div className=\"panel-body ban-message ban-user-message\">\n <h4>{gettext(\"User-shown ban message\")}</h4>\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.state.ban.user_message.html,\n }}\n />\n </div>\n )\n } else {\n return null\n }\n }\n\n getStaffMessage() {\n if (this.state.ban.staff_message) {\n return (\n <div className=\"panel-body ban-message ban-staff-message\">\n <h4>{gettext(\"Team-shown ban message\")}</h4>\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.state.ban.staff_message.html,\n }}\n />\n </div>\n )\n } else {\n return null\n }\n }\n\n getExpirationMessage() {\n if (this.state.ban.expires_on) {\n if (this.state.ban.expires_on.isAfter(moment())) {\n let title = interpolate(\n gettext(\"This ban expires on %(expires_on)s.\"),\n {\n expires_on: this.state.ban.expires_on.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"This ban expires %(expires_on)s.\"),\n {\n expires_on: this.state.ban.expires_on.fromNow(),\n },\n true\n )\n\n return <abbr title={title}>{message}</abbr>\n } else {\n return gettext(\"This ban has expired.\")\n }\n } else {\n return interpolate(\n gettext(\"%(username)s's ban is permanent.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getPanelBody() {\n if (this.state.ban) {\n if (Object.keys(this.state.ban).length) {\n return (\n <div>\n {this.getUserMessage()}\n {this.getStaffMessage()}\n\n <div className=\"panel-body ban-expires\">\n <h4>{gettext(\"Ban expiration\")}</h4>\n <p className=\"lead\">{this.getExpirationMessage()}</p>\n </div>\n </div>\n )\n } else {\n return (\n <div>\n <PanelMessage\n message={gettext(\"No ban is active at the moment.\")}\n />\n </div>\n )\n }\n } else if (this.state.error) {\n return (\n <div>\n <PanelMessage icon=\"error_outline\" message={this.state.error} />\n </div>\n )\n } else {\n return (\n <div>\n <PanelLoader />\n </div>\n )\n }\n }\n\n render() {\n return (\n <div className=\"profile-ban-details\">\n <div className=\"panel panel-default\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{gettext(\"Ban details\")}</h3>\n </div>\n\n {this.getPanelBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/edit-details\"\n\nexport default function ({ api, display, onCancel, onSuccess }) {\n if (!display) return null\n\n return <Form api={api} onCancel={onCancel} onSuccess={onSuccess} />\n}\n","import React from \"react\"\n\nexport default function ({ isAuthenticated, profile }) {\n let message = null\n if (isAuthenticated) {\n message = gettext(\"You are not sharing any details with others.\")\n } else {\n message = interpolate(\n gettext(\"%(username)s is not sharing any details with others.\"),\n {\n username: profile.username,\n },\n true\n )\n }\n\n return (\n <div className=\"panel panel-default\">\n <div className=\"panel-body text-center lead\">{message}</div>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function ({ html, text, url }) {\n if (html) {\n return (\n <div\n className=\"form-control-static col-md-9\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n )\n }\n\n return (\n <div className=\"form-control-static col-md-9\">\n <SafeValue text={text} url={url} />\n </div>\n )\n}\n\nexport function SafeValue({ text, url }) {\n if (url) {\n return (\n <p>\n <a href={url} target=\"_blank\" rel=\"nofollow\">\n {text || url}\n </a>\n </p>\n )\n }\n\n if (text) {\n return <p>{text}</p>\n }\n\n return null\n}\n","import React from \"react\"\nimport FieldValue from \"./field-value\"\n\nexport default function (props) {\n return (\n <div className=\"form-group\">\n <strong className=\"control-label col-md-3\">{props.name}:</strong>\n <FieldValue {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport Field from \"./field\"\n\nexport default function ({ fields, name }) {\n return (\n <div className=\"panel panel-default panel-profile-details-group\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">{name}</h3>\n </div>\n <div className=\"panel-body\">\n <div className=\"form-horizontal\">\n {fields.map(({ fieldname, html, name, text, url }) => {\n return (\n <Field\n key={fieldname}\n name={name}\n html={html}\n text={text}\n url={url}\n />\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport EmptyMessage from \"./empty-message\"\nimport Group from \"./group\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({\n display,\n groups,\n isAuthenticated,\n loading,\n profile,\n}) {\n if (!display) return null\n\n if (loading) {\n return <Loader />\n }\n\n if (!groups.length) {\n return <EmptyMessage isAuthenticated={isAuthenticated} profile={profile} />\n }\n\n return (\n <div>\n {groups.map((group, i) => {\n return <Group fields={group.fields} key={i} name={group.name} />\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\n\nconst ProfileDetailsHeader = ({ onEdit, showEditButton }) => (\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{gettext(\"Details\")}</h3>\n </ToolbarItem>\n </ToolbarSection>\n {showEditButton && (\n <ToolbarSection>\n <ToolbarItem>\n <button\n className=\"btn btn-default btn-outline btn-block\"\n onClick={onEdit}\n type=\"button\"\n >\n {gettext(\"Edit\")}\n </button>\n </ToolbarItem>\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ProfileDetailsHeader\n","import React from \"react\"\nimport { load } from \"misago/reducers/profile-details\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n componentDidMount() {\n const { data, dispatch, user } = this.props\n if (data && data.id === user.id) return\n\n ajax.get(this.props.user.api.details).then(\n (data) => {\n dispatch(load(data))\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n return this.props.children\n }\n}\n","import React from \"react\"\nimport Form from \"./form\"\nimport GroupsList from \"./groups-list\"\nimport Header from \"./header\"\nimport ProfileDetailsData from \"misago/data/profile-details\"\nimport { load as loadDetails } from \"misago/reducers/profile-details\"\nimport title from \"misago/services/page-title\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n editing: false,\n }\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Details\"),\n parent: this.props.profile.username,\n })\n }\n\n onCancel = () => {\n this.setState({ editing: false })\n }\n\n onEdit = () => {\n this.setState({ editing: true })\n }\n\n onSuccess = (newDetails) => {\n const { dispatch, isAuthenticated, profile } = this.props\n\n let message = null\n if (isAuthenticated) {\n message = gettext(\"Your details have been updated.\")\n } else {\n message = interpolate(\n gettext(\"%(username)s's details have been updated.\"),\n {\n username: profile.username,\n },\n true\n )\n }\n\n snackbar.info(message)\n dispatch(loadDetails(newDetails))\n this.setState({ editing: false })\n }\n\n render() {\n const { dispatch, isAuthenticated, profile, profileDetails } = this.props\n const loading = profileDetails.id !== profile.id\n\n return (\n <ProfileDetailsData\n data={profileDetails}\n dispatch={dispatch}\n user={profile}\n >\n <div className=\"profile-details\">\n <Header\n onEdit={this.onEdit}\n showEditButton={!!profileDetails.edit && !this.state.editing}\n />\n <GroupsList\n display={!this.state.editing}\n groups={profileDetails.groups}\n isAuthenticated={isAuthenticated}\n loading={loading}\n profile={profile}\n />\n <Form\n api={profile.api.edit_details}\n dispatch={dispatch}\n display={this.state.editing}\n onCancel={this.onCancel}\n onSuccess={this.onSuccess}\n />\n </div>\n </ProfileDetailsData>\n )\n }\n}\n","import React from \"react\"\nimport PostFeed from \"misago/components/post-feed\"\nimport Button from \"misago/components/button\"\nimport * as posts from \"misago/reducers/posts\"\nimport title from \"misago/services/page-title\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n loadItems(start = 0) {\n ajax\n .get(this.props.api, {\n start: start || 0,\n })\n .then(\n (data) => {\n if (start === 0) {\n store.dispatch(posts.load(data))\n } else {\n store.dispatch(posts.append(data))\n }\n\n this.setState({\n isLoading: false,\n })\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.apiError(rejection)\n }\n )\n }\n\n loadMore = () => {\n this.setState({\n isLoading: true,\n })\n\n this.loadItems(this.props.posts.next)\n }\n\n componentDidMount() {\n title.set({\n title: this.props.title,\n parent: this.props.profile.username,\n })\n\n this.loadItems()\n }\n\n render() {\n return (\n <div className=\"profile-feed\">\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.props.header}</h3>\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n <Feed\n isLoading={this.state.isLoading}\n loadMore={this.loadMore}\n {...this.props}\n />\n </div>\n )\n }\n}\n\nexport function Feed(props) {\n if (props.posts.isLoaded && !props.posts.results.length) {\n return <p className=\"lead\">{props.emptyMessage}</p>\n }\n\n return (\n <div>\n <PostFeed\n isReady={props.posts.isLoaded}\n posts={props.posts.results}\n poster={props.profile}\n />\n <LoadMoreButton\n isLoading={props.isLoading}\n loadMore={props.loadMore}\n next={props.posts.next}\n />\n </div>\n )\n}\n\nexport function LoadMoreButton(props) {\n if (!props.next) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={props.isLoading}\n onClick={props.loadMore}\n >\n {gettext(\"Show older activity\")}\n </Button>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.className) {\n return \"form-search \" + this.props.className\n } else {\n return \"form-search\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <input\n type=\"text\"\n className=\"form-control\"\n value={this.props.value}\n onChange={this.props.onChange}\n placeholder={this.props.placeholder || gettext(\"Search...\")}\n />\n <span className=\"material-icon\">search</span>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Search from \"misago/components/quick-search\"\nimport UsersList from \"misago/components/users-list\"\nimport misago from \"misago/index\"\nimport { hydrate, append } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.setSpecialProps()\n\n if (misago.has(this.PRELOADED_DATA_KEY)) {\n this.initWithPreloadedData(misago.pop(this.PRELOADED_DATA_KEY))\n } else {\n this.initWithoutPreloadedData()\n }\n }\n\n setSpecialProps() {\n this.PRELOADED_DATA_KEY = \"PROFILE_FOLLOWERS\"\n this.TITLE = gettext(\"Followers\")\n this.API_FILTER = \"followers\"\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n isBusy: false,\n\n search: \"\",\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n isBusy: false,\n\n search: \"\",\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n }\n\n this.loadUsers()\n }\n\n loadUsers(page = 1, search = null) {\n const apiUrl = this.props.profile.api[this.API_FILTER]\n\n ajax\n .get(\n apiUrl,\n {\n search: search,\n page: page || 1,\n },\n \"user-\" + this.API_FILTER\n )\n .then(\n (data) => {\n if (page === 1) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n componentDidMount() {\n title.set({\n title: this.TITLE,\n parent: this.props.profile.username,\n })\n }\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadUsers(this.state.page + 1, this.state.search)\n }\n\n search = (ev) => {\n this.setState({\n isLoaded: false,\n isBusy: true,\n\n search: ev.target.value,\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n })\n\n this.loadUsers(1, ev.target.value)\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(users)s user.\",\n \"Found %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"You have %(users)s follower.\",\n \"You have %(users)s followers.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s has %(users)s follower.\",\n \"%(username)s has %(users)s followers.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n users: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\"Search returned no users matching specified criteria.\")\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"You have no followers.\")\n } else {\n return interpolate(\n gettext(\"%(username)s has no followers.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getMoreButton() {\n if (!this.state.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy}\n onClick={this.loadMore}\n >\n {interpolate(\n gettext(\"Show more (%(more)s)\"),\n {\n more: this.state.more,\n },\n true\n )}\n </Button>\n </div>\n )\n }\n\n getListBody() {\n if (this.state.isLoaded && this.state.count === 0) {\n return <p className=\"lead\">{this.getEmptyMessage()}</p>\n }\n\n return (\n <div>\n <UsersList\n cols={3}\n isReady={this.state.isLoaded}\n users={this.props.users}\n />\n\n {this.getMoreButton()}\n </div>\n )\n }\n\n getClassName() {\n return \"profile-\" + this.API_FILTER\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.getLabel()}</h3>\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection>\n <ToolbarItem>\n <Search\n value={this.state.search}\n onChange={this.search}\n placeholder={gettext(\"Search users...\")}\n />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n\n {this.getListBody()}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Followers from \"misago/components/profile/followers\"\n\nexport default class extends Followers {\n setSpecialProps() {\n this.PRELOADED_DATA_KEY = \"PROFILE_FOLLOWS\"\n this.TITLE = gettext(\"Follows\")\n this.API_FILTER = \"follows\"\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(users)s user.\",\n \"Found %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"You are following %(users)s user.\",\n \"You are following %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n users: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s is following %(users)s user.\",\n \"%(username)s is following %(users)s users.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n users: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\"Search returned no users matching specified criteria.\")\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"You are not following any users.\")\n } else {\n return interpolate(\n gettext(\"%(username)s is not following any users.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Search from \"misago/components/quick-search\"\nimport UsernameHistory from \"misago/components/username-history/root\"\nimport misago from \"misago/index\"\nimport { hydrate, append } from \"misago/reducers/username-history\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../Toolbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"PROFILE_NAME_HISTORY\")) {\n this.initWithPreloadedData(misago.pop(\"PROFILE_NAME_HISTORY\"))\n } else {\n this.initWithoutPreloadedData()\n }\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n isBusy: false,\n\n search: \"\",\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n isBusy: false,\n\n search: \"\",\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n }\n\n this.loadChanges()\n }\n\n loadChanges(page = 1, search = null) {\n ajax\n .get(\n misago.get(\"USERNAME_CHANGES_API\"),\n {\n user: this.props.profile.id,\n search: search,\n page: page || 1,\n },\n \"search-username-history\"\n )\n .then(\n (data) => {\n if (page === 1) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n count: data.count,\n more: data.more,\n\n page: data.page,\n pages: data.pages,\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n componentDidMount() {\n title.set({\n title: gettext(\"Username history\"),\n parent: this.props.profile.username,\n })\n }\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadChanges(this.state.page + 1, this.state.search)\n }\n\n search = (ev) => {\n this.setState({\n isLoaded: false,\n isBusy: true,\n\n search: ev.target.value,\n\n count: 0,\n more: 0,\n\n page: 1,\n pages: 1,\n })\n\n this.loadChanges(1, ev.target.value)\n }\n\n getLabel() {\n if (!this.state.isLoaded) {\n return gettext(\"Loading...\")\n } else if (this.state.search) {\n let message = ngettext(\n \"Found %(changes)s username change.\",\n \"Found %(changes)s username changes.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n changes: this.state.count,\n },\n true\n )\n } else if (this.props.profile.id === this.props.user.id) {\n let message = ngettext(\n \"Your username was changed %(changes)s time.\",\n \"Your username was changed %(changes)s times.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n changes: this.state.count,\n },\n true\n )\n } else {\n let message = ngettext(\n \"%(username)s's username was changed %(changes)s time.\",\n \"%(username)s's username was changed %(changes)s times.\",\n this.state.count\n )\n\n return interpolate(\n message,\n {\n username: this.props.profile.username,\n changes: this.state.count,\n },\n true\n )\n }\n }\n\n getEmptyMessage() {\n if (this.state.search) {\n return gettext(\n \"Search returned no username changes matching specified criteria.\"\n )\n } else if (this.props.user.id === this.props.profile.id) {\n return gettext(\"No name changes have been recorded for your account.\")\n } else {\n return interpolate(\n gettext(\"%(username)s's username was never changed.\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n }\n }\n\n getMoreButton() {\n if (!this.state.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy}\n onClick={this.loadMore}\n >\n {interpolate(\n gettext(\"Show older (%(more)s)\"),\n {\n more: this.state.more,\n },\n true\n )}\n </Button>\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"profile-username-history\">\n <Toolbar>\n <ToolbarSection auto>\n <ToolbarItem auto>\n <h3>{this.getLabel()}</h3>\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection>\n <ToolbarItem>\n <Search\n value={this.state.search}\n onChange={this.search}\n placeholder={gettext(\"Search history...\")}\n />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n\n <UsernameHistory\n isLoaded={this.state.isLoaded}\n emptyMessage={this.getEmptyMessage()}\n changes={this.props[\"username-history\"]}\n />\n\n {this.getMoreButton()}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport { patch } from \"misago/reducers/profile\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n getClassName() {\n if (this.props.profile.is_followed) {\n return this.props.className + \" btn-default btn-following\"\n } else {\n return this.props.className + \" btn-default btn-follow\"\n }\n }\n\n getIcon() {\n if (this.props.profile.is_followed) {\n return \"favorite\"\n } else {\n return \"favorite_border\"\n }\n }\n\n getLabel() {\n if (this.props.profile.is_followed) {\n return gettext(\"Following\")\n } else {\n return gettext(\"Follow\")\n }\n }\n\n action = () => {\n this.setState({\n isLoading: true,\n })\n\n if (this.props.profile.is_followed) {\n store.dispatch(\n patch({\n is_followed: false,\n followers: this.props.profile.followers - 1,\n })\n )\n } else {\n store.dispatch(\n patch({\n is_followed: true,\n followers: this.props.profile.followers + 1,\n })\n )\n }\n\n ajax.post(this.props.profile.api.follow).then(\n (data) => {\n this.setState({\n isLoading: false,\n })\n\n store.dispatch(patch(data))\n },\n (rejection) => {\n this.setState({\n isLoading: false,\n })\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n return (\n <Button\n className={this.getClassName()}\n disabled={this.state.isLoading}\n onClick={this.action}\n >\n <span className=\"material-icon\">{this.getIcon()}</span>\n {this.getLabel()}\n </Button>\n )\n }\n}\n","import React from \"react\"\nimport posting from \"misago/services/posting\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"START_PRIVATE\",\n submit: misago.get(\"PRIVATE_THREADS_API\"),\n\n to: [this.props.profile],\n })\n }\n\n render() {\n const canMessage = this.props.user.acl.can_start_private_threads\n const isProfileOwner = this.props.user.id === this.props.profile.id\n\n if (!canMessage || isProfileOwner) return null\n\n return (\n <button\n className={this.props.className}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">comment</span>\n {gettext(\"Message\")}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport { updateAvatar } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n error: null,\n\n is_avatar_locked: \"\",\n avatar_lock_user_message: \"\",\n avatar_lock_staff_message: \"\",\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.moderate_avatar).then(\n (options) => {\n this.setState({\n isLoaded: true,\n\n is_avatar_locked: options.is_avatar_locked,\n avatar_lock_user_message: options.avatar_lock_user_message || \"\",\n avatar_lock_staff_message: options.avatar_lock_staff_message || \"\",\n })\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(this.validate().username[0])\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.profile.api.moderate_avatar, {\n is_avatar_locked: this.state.is_avatar_locked,\n avatar_lock_user_message: this.state.avatar_lock_user_message,\n avatar_lock_staff_message: this.state.avatar_lock_staff_message,\n })\n }\n\n handleSuccess(apiResponse) {\n store.dispatch(updateAvatar(this.props.profile, apiResponse.avatar_hash))\n snackbar.success(gettext(\"Avatar controls have been changed.\"))\n }\n\n getFormBody() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Lock avatar\")}\n helpText={gettext(\n \"Locking user avatar will prohibit user from changing his avatar and will reset his/her avatar to default one.\"\n )}\n for=\"id_is_avatar_locked\"\n >\n <YesNoSwitch\n id=\"id_is_avatar_locked\"\n disabled={this.state.isLoading}\n iconOn=\"lock_outline\"\n iconOff=\"lock_open\"\n labelOn={gettext(\"Disallow user from changing avatar\")}\n labelOff={gettext(\"Allow user to change avatar\")}\n onChange={this.bindInput(\"is_avatar_locked\")}\n value={this.state.is_avatar_locked}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"User message\")}\n helpText={gettext(\n \"Optional message for user explaining why he/she is prohibited form changing avatar.\"\n )}\n for=\"id_avatar_lock_user_message\"\n >\n <textarea\n id=\"id_avatar_lock_user_message\"\n className=\"form-control\"\n rows=\"4\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"avatar_lock_user_message\")}\n value={this.state.avatar_lock_user_message}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Staff message\")}\n helpText={gettext(\n \"Optional message for forum team members explaining why user is prohibited form changing avatar.\"\n )}\n for=\"id_avatar_lock_staff_message\"\n >\n <textarea\n id=\"id_avatar_lock_staff_message\"\n className=\"form-control\"\n rows=\"4\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"avatar_lock_staff_message\")}\n value={this.state.avatar_lock_staff_message}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n type=\"button\"\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n >\n {gettext(\"Close\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Save changes\")}\n </Button>\n </div>\n </form>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n return this.getFormBody()\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error) {\n return \"modal-dialog modal-message modal-avatar-controls\"\n } else {\n return \"modal-dialog modal-avatar-controls\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Avatar controls\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport { addNameChange } from \"misago/reducers/username-history\"\nimport { updateUsername } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n error: null,\n\n username: \"\",\n validators: {\n username: [validators.usernameContent()],\n },\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.moderate_username).then(\n () => {\n this.setState({\n isLoaded: true,\n })\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(this.validate().username[0])\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.profile.api.moderate_username, {\n username: this.state.username,\n })\n }\n\n handleSuccess(apiResponse) {\n this.setState({\n username: \"\",\n })\n\n store.dispatch(\n addNameChange(apiResponse, this.props.profile, this.props.user)\n )\n store.dispatch(\n updateUsername(this.props.profile, apiResponse.username, apiResponse.slug)\n )\n\n snackbar.success(gettext(\"Username has been changed.\"))\n }\n\n getFormBody() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"New username\")} for=\"id_username\">\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Change username\")}\n </Button>\n </div>\n </form>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n return this.getFormBody()\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error) {\n return \"modal-dialog modal-message modal-rename-user\"\n } else {\n return \"modal-dialog modal-rename-user\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change username\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport Loader from \"misago/components/modal-loader\"\nimport ModalMessage from \"misago/components/modal-message\"\nimport YesNoSwitch from \"misago/components/yes-no-switch\"\nimport misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isLoading: false,\n isDeleted: false,\n error: null,\n\n countdown: 5,\n confirm: false,\n\n with_content: false,\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.profile.api.delete).then(\n () => {\n this.setState({\n isLoaded: true,\n })\n\n this.countdown()\n },\n (rejection) => {\n this.setState({\n isLoaded: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n countdown = () => {\n window.setTimeout(() => {\n if (this.state.countdown > 1) {\n this.setState({\n countdown: this.state.countdown - 1,\n })\n this.countdown()\n } else if (!this.state.confirm) {\n this.setState({\n confirm: true,\n })\n }\n }, 1000)\n }\n\n send() {\n return ajax.post(this.props.profile.api.delete, {\n with_content: this.state.with_content,\n })\n }\n\n handleSuccess() {\n polls.stop(\"user-profile\")\n\n if (this.state.with_content) {\n this.setState({\n isDeleted: interpolate(\n gettext(\n \"%(username)s's account, threads, posts and other content has been deleted.\"\n ),\n {\n username: this.props.profile.username,\n },\n true\n ),\n })\n } else {\n this.setState({\n isDeleted: interpolate(\n gettext(\n \"%(username)s's account has been deleted and other content has been hidden.\"\n ),\n {\n username: this.props.profile.username,\n },\n true\n ),\n })\n }\n }\n\n getButtonLabel() {\n if (this.state.confirm) {\n return interpolate(\n gettext(\"Delete %(username)s\"),\n {\n username: this.props.profile.username,\n },\n true\n )\n } else {\n return interpolate(\n gettext(\"Please wait... (%(countdown)ss)\"),\n {\n countdown: this.state.countdown,\n },\n true\n )\n }\n }\n\n getForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"User content\")} for=\"id_with_content\">\n <YesNoSwitch\n id=\"id_with_content\"\n disabled={this.state.isLoading}\n labelOn={gettext(\"Delete together with user's account\")}\n labelOff={gettext(\"Hide after deleting user's account\")}\n onChange={this.bindInput(\"with_content\")}\n value={this.state.with_content}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n type=\"button\"\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n >\n {gettext(\"Cancel\")}\n </button>\n\n <Button\n className=\"btn-danger\"\n loading={this.state.isLoading}\n disabled={!this.state.confirm}\n >\n {this.getButtonLabel()}\n </Button>\n </div>\n </form>\n )\n }\n\n getDeletedBody() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.state.isDeleted}</p>\n <p>\n <a href={misago.get(\"USERS_LIST_URL\")}>\n {gettext(\"Return to users list\")}\n </a>\n </p>\n </div>\n </div>\n )\n }\n\n getModalBody() {\n if (this.state.error) {\n return (\n <ModalMessage icon=\"remove_circle_outline\" message={this.state.error} />\n )\n } else if (this.state.isLoaded) {\n if (this.state.isDeleted) {\n return this.getDeletedBody()\n } else {\n return this.getForm()\n }\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state.error || this.state.isDeleted) {\n return \"modal-dialog modal-message modal-delete-account\"\n } else {\n return \"modal-dialog modal-delete-account\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Delete user account\")}</h4>\n </div>\n {this.getModalBody()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport AvatarControls from \"misago/components/profile/moderation/avatar-controls\"\nimport ChangeUsername from \"misago/components/profile/moderation/change-username\"\nimport DeleteAccount from \"misago/components/profile/moderation/delete-account\"\nimport modal from \"misago/services/modal\"\n\nlet select = function (store) {\n return {\n tick: store.tick,\n user: store.auth,\n profile: store.profile,\n }\n}\n\nexport default class extends React.Component {\n showAvatarDialog = () => {\n modal.show(connect(select)(AvatarControls))\n }\n\n showRenameDialog = () => {\n modal.show(connect(select)(ChangeUsername))\n }\n\n showDeleteDialog = () => {\n modal.show(connect(select)(DeleteAccount))\n }\n\n render() {\n const { moderation } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right\" role=\"menu\">\n {!!moderation.avatar && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showAvatarDialog}\n >\n <span className=\"material-icon\">portrait</span>\n {gettext(\"Avatar controls\")}\n </button>\n </li>\n )}\n {!!moderation.rename && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showRenameDialog}\n >\n <span className=\"material-icon\">credit_card</span>\n {gettext(\"Change username\")}\n </button>\n </li>\n )}\n {!!moderation.delete && (\n <li>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.showDeleteDialog}\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete account\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import React from \"react\"\nimport Status, { StatusIcon, StatusLabel } from \"../user-status\"\n\nconst ProfileDataList = ({ profile }) => (\n <ul className=\"profile-data-list\">\n {profile.is_active === false && (\n <li className=\"user-account-disabled\">\n <abbr\n title={gettext(\n \"This user's account has been disabled by administrator.\"\n )}\n >\n {gettext(\"Account disabled\")}\n </abbr>\n </li>\n )}\n <li className=\"user-status-display\">\n <Status user={profile} status={profile.status}>\n <StatusIcon user={profile} status={profile.status} />\n <StatusLabel\n user={profile}\n status={profile.status}\n className=\"status-label\"\n />\n </Status>\n </li>\n {profile.rank.is_tab ? (\n <li className=\"user-rank\">\n <a href={profile.rank.url} className=\"item-title\">\n {profile.rank.name}\n </a>\n </li>\n ) : (\n <li className=\"user-rank\">\n <span className=\"item-title\">{profile.rank.name}</span>\n </li>\n )}\n {(profile.title || profile.rank.title) && (\n <li className=\"user-title\">{profile.title || profile.rank.title}</li>\n )}\n <li className=\"user-joined-on\">\n <abbr\n title={interpolate(\n gettext(\"Joined on %(joined_on)s\"),\n {\n joined_on: profile.joined_on.format(\"LL, LT\"),\n },\n true\n )}\n >\n {interpolate(\n gettext(\"Joined %(joined_on)s\"),\n {\n joined_on: profile.joined_on.fromNow(),\n },\n true\n )}\n </abbr>\n </li>\n {profile.email && (\n <li className=\"user-email\">\n <a href={\"mailto:\" + profile.email} className=\"item-title\">\n {profile.email}\n </a>\n </li>\n )}\n </ul>\n)\n\nexport default ProfileDataList\n","import React from \"react\"\nimport Avatar from \"../avatar\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n PageHeaderDetails,\n} from \"../PageHeader\"\nimport FollowButton from \"./follow-button\"\nimport MessageButton from \"./message-button\"\nimport ModerationOptions from \"./moderation/nav\"\nimport ProfileDataList from \"./ProfileDataList\"\n\nconst ProfileHeader = ({ profile, user, moderation, message, follow }) => (\n <PageHeaderContainer>\n <PageHeader\n styleName={\n profile.rank.css_class ? \"rank-\" + profile.rank.css_class : \"profile\"\n }\n >\n <PageHeaderBanner\n styleName={\n profile.rank.css_class ? \"rank-\" + profile.rank.css_class : \"profile\"\n }\n >\n <div className=\"profile-page-header\">\n <div className=\"profile-page-header-avatar\">\n <Avatar\n className=\"user-avatar hidden-sm hidden-md hidden-lg\"\n user={profile}\n size={200}\n size2x={400}\n />\n <Avatar\n className=\"user-avatar hidden-xs hidden-md hidden-lg\"\n user={profile}\n size={64}\n size2x={128}\n />\n <Avatar\n className=\"user-avatar hidden-xs hidden-sm\"\n user={profile}\n size={128}\n size2x={256}\n />\n </div>\n <h1>{profile.username}</h1>\n </div>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"profile-page-header-details\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol>\n <ProfileDataList profile={profile} />\n </FlexRowCol>\n </FlexRowSection>\n {message && (\n <FlexRowSection>\n <FlexRowCol>\n <MessageButton\n className=\"btn btn-default btn-block btn-outline\"\n profile={profile}\n user={user}\n />\n </FlexRowCol>\n {moderation.available && !follow && (\n <FlexRowCol shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n {follow && (\n <FlexRowSection>\n <FlexRowCol>\n <FollowButton\n className=\"btn btn-block btn-outline\"\n profile={profile}\n />\n </FlexRowCol>\n {moderation.available && (\n <FlexRowCol shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n {moderation.available && !follow && !message && (\n <FlexRowSection>\n <FlexRowCol className=\"hidden-xs\" shrink>\n <div className=\"dropdown\">\n <ProfileModerationButton />\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n <FlexRowCol className=\"hidden-sm hidden-md hidden-lg\">\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">settings</span>\n {gettext(\"Options\")}\n </button>\n <ModerationOptions\n profile={profile}\n moderation={moderation}\n />\n </div>\n </FlexRowCol>\n </FlexRowSection>\n )}\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n)\n\nconst ProfileModerationButton = () => (\n <button\n className=\"btn btn-default btn-icon btn-outline dropdown-toggle\"\n type=\"button\"\n title={gettext(\"Options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">settings</span>\n </button>\n)\n\nexport default ProfileHeader\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nconst ProfileNav = ({ baseUrl, page, pages }) => (\n <div className=\"nav-container\">\n <div className=\"dropdown hidden-sm hidden-md hidden-lg\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {pages.map((page) => (\n <li key={page.component}>\n <Link to={baseUrl + page.component + \"/\"}>\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"nav nav-pills hidden-xs\" role=\"menu\">\n {pages.map((page) => (\n <Li path={baseUrl + page.component + \"/\"} key={page.component}>\n <Link to={baseUrl + page.component + \"/\"}>\n <span className=\"material-icon\">{page.icon}</span>\n {page.name}\n </Link>\n </Li>\n ))}\n </ul>\n </div>\n)\n\nexport default ProfileNav\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport BanDetails from \"./ban-details\"\nimport Details from \"./details\"\nimport { Posts, Threads } from \"./feed\"\nimport Followers from \"./followers\"\nimport Follows from \"./follows\"\nimport UsernameHistory from \"./username-history\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago\"\nimport { hydrate } from \"misago/reducers/profile\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport PageContainer from \"../PageContainer\"\nimport ProfileHeader from \"./ProfileHeader\"\nimport ProfileNav from \"./ProfileNav\"\n\nexport default class extends WithDropdown {\n constructor(props) {\n super(props)\n\n this.startPolling(props.profile.api.index)\n }\n\n startPolling(api) {\n polls.start({\n poll: \"user-profile\",\n url: api,\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data))\n }\n\n render() {\n const baseUrl = misago.get(\"PROFILE\").url\n const pages = misago.get(\"PROFILE_PAGES\")\n const page = pages.filter((page) => {\n const url = baseUrl + page.component + \"/\"\n return this.props.location.pathname === url\n })[0]\n const { profile, user } = this.props\n const moderation = getModeration(profile, user)\n const message = user.acl.can_start_private_threads && profile.id !== user.id\n const follow = profile.acl.can_follow && profile.id !== user.id\n\n return (\n <div className=\"page page-user-profile\">\n <ProfileHeader\n profile={this.props.profile}\n user={this.props.user}\n moderation={moderation}\n message={message}\n follow={follow}\n />\n <PageContainer>\n <ProfileNav baseUrl={baseUrl} page={page} pages={pages} />\n\n {this.props.children}\n </PageContainer>\n </div>\n )\n }\n}\n\nconst getModeration = (profile, user) => {\n const moderation = {\n available: false,\n rename: false,\n avatar: false,\n delete: false,\n }\n\n if (user.is_anonymouse) return moderation\n\n moderation.rename = profile.acl.can_rename\n moderation.avatar = profile.acl.can_moderate_avatar\n moderation.delete = profile.acl.can_delete\n moderation.available = (\n moderation.rename || moderation.avatar || moderation.delete\n )\n\n return moderation\n}\n\nexport function select(store) {\n return {\n isAuthenticated: store.auth.user.id === store.profile.id,\n\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n posts: store.posts,\n profile: store.profile,\n profileDetails: store[\"profile-details\"],\n \"username-history\": store[\"username-history\"],\n }\n}\n\nconst COMPONENTS = {\n posts: Posts,\n threads: Threads,\n followers: Followers,\n follows: Follows,\n details: Details,\n \"username-history\": UsernameHistory,\n \"ban-details\": BanDetails,\n}\n\nexport function paths() {\n let paths = []\n misago.get(\"PROFILE_PAGES\").forEach(function (item) {\n paths.push(\n Object.assign({}, item, {\n path: misago.get(\"PROFILE\").url + item.component + \"/\",\n component: connect(select)(COMPONENTS[item.component]),\n })\n )\n })\n\n return paths\n}\n","import React from \"react\"\nimport Route from \"./route\"\n\nexport function Threads(props) {\n let emptyMessage = null\n if (props.user.id === props.profile.id) {\n emptyMessage = gettext(\"You have no started threads.\")\n } else {\n emptyMessage = interpolate(\n gettext(\"%(username)s started no threads.\"),\n {\n username: props.profile.username,\n },\n true\n )\n }\n\n let header = null\n if (!props.posts.isLoaded) {\n header = gettext(\"Loading...\")\n } else if (props.profile.id === props.user.id) {\n const message = ngettext(\n \"You have started %(threads)s thread.\",\n \"You have started %(threads)s threads.\",\n props.profile.threads\n )\n\n header = interpolate(\n message,\n {\n threads: props.profile.threads,\n },\n true\n )\n } else {\n const message = ngettext(\n \"%(username)s has started %(threads)s thread.\",\n \"%(username)s has started %(threads)s threads.\",\n props.profile.threads\n )\n\n header = interpolate(\n message,\n {\n username: props.profile.username,\n threads: props.profile.threads,\n },\n true\n )\n }\n\n return (\n <Route\n api={props.profile.api.threads}\n emptyMessage={emptyMessage}\n header={header}\n title={gettext(\"Threads\")}\n {...props}\n />\n )\n}\n\nexport function Posts(props) {\n let emptyMessage = null\n if (props.user.id === props.profile.id) {\n emptyMessage = gettext(\"You have posted no messages.\")\n } else {\n emptyMessage = interpolate(\n gettext(\"%(username)s posted no messages.\"),\n {\n username: props.profile.username,\n },\n true\n )\n }\n\n let header = null\n if (!props.posts.isLoaded) {\n header = gettext(\"Loading...\")\n } else if (props.profile.id === props.user.id) {\n const message = ngettext(\n \"You have posted %(posts)s message.\",\n \"You have posted %(posts)s messages.\",\n props.profile.posts\n )\n\n header = interpolate(\n message,\n {\n posts: props.profile.posts,\n },\n true\n )\n } else {\n const message = ngettext(\n \"%(username)s has posted %(posts)s message.\",\n \"%(username)s has posted %(posts)s messages.\",\n props.profile.posts\n )\n\n header = interpolate(\n message,\n {\n username: props.profile.username,\n posts: props.profile.posts,\n },\n true\n )\n }\n\n return (\n <Route\n api={props.profile.api.posts}\n emptyMessage={emptyMessage}\n header={header}\n title={gettext(\"Posts\")}\n {...props}\n />\n )\n}\n","import { connect } from \"react-redux\"\nimport Profile, { paths, select } from \"misago/components/profile/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"PROFILE\") && context.has(\"PROFILE_PAGES\")) {\n mount({\n root: misago.get(\"PROFILE\").url,\n component: connect(select)(Profile),\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:profile\",\n initializer: initializer,\n after: \"reducer:profile-hydrate\",\n})\n","import React from \"react\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class RequestLinkForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n email: \"\",\n\n validators: {\n email: [validators.email()],\n },\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Enter a valid email address.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"SEND_ACTIVATION_API\"), {\n email: this.state.email,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if ([\"already_active\", \"inactive_admin\"].indexOf(rejection.code) > -1) {\n snackbar.info(rejection.detail)\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-activation-link\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder={gettext(\"Your e-mail address\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Send link\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class LinkSent extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"Activation link was sent to %(email)s\"),\n {\n email: this.props.user.email,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-activation-link well-done\">\n <div className=\"done-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n <div className=\"message-body\">\n <p>{this.getMessage()}</p>\n </div>\n <button\n className=\"btn btn-primary btn-block\"\n type=\"button\"\n onClick={this.props.callback}\n >\n {gettext(\"Request another link\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n complete = (apiResponse) => {\n this.setState({\n complete: apiResponse,\n })\n }\n\n reset = () => {\n this.setState({\n complete: false,\n })\n }\n\n render() {\n if (this.state.complete) {\n return <LinkSent user={this.state.complete} callback={this.reset} />\n } else {\n return <RequestLinkForm callback={this.complete} />\n }\n }\n}\n","import misago from \"misago/index\"\nimport RequestActivationLink from \"misago/components/request-activation-link\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"request-activation-link-mount\")) {\n mount(RequestActivationLink, \"request-activation-link-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:request-activation-link\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class RequestResetForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n email: \"\",\n\n validators: {\n email: [validators.email()],\n },\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Enter a valid email address.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"SEND_PASSWORD_RESET_API\"), {\n email: this.state.email,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if ([\"inactive_user\", \"inactive_admin\"].indexOf(rejection.code) > -1) {\n this.props.showInactivePage(rejection)\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-password-reset\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder={gettext(\"Your e-mail address\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Send link\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class LinkSent extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"Reset password link was sent to %(email)s\"),\n {\n email: this.props.user.email,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-request-password-reset well-done\">\n <div className=\"done-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n <div className=\"message-body\">\n <p>{this.getMessage()}</p>\n </div>\n <button\n type=\"button\"\n className=\"btn btn-primary btn-block\"\n onClick={this.props.callback}\n >\n {gettext(\"Request another link\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport class AccountInactivePage extends React.Component {\n getActivateButton() {\n if (this.props.activation === \"inactive_user\") {\n return (\n <p>\n <a href={misago.get(\"REQUEST_ACTIVATION_URL\")}>\n {gettext(\"Activate your account.\")}\n </a>\n </p>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"page page-message page-message-info page-forgotten-password-inactive\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n\n <div className=\"message-body\">\n <p className=\"lead\">{gettext(\"Your account is inactive.\")}</p>\n <p>{this.props.message}</p>\n {this.getActivateButton()}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n complete = (apiResponse) => {\n this.setState({\n complete: apiResponse,\n })\n }\n\n reset = () => {\n this.setState({\n complete: false,\n })\n }\n\n showInactivePage(apiResponse) {\n ReactDOM.render(\n <AccountInactivePage\n activation={apiResponse.code}\n message={apiResponse.detail}\n />,\n document.getElementById(\"page-mount\")\n )\n }\n\n render() {\n if (this.state.complete) {\n return <LinkSent callback={this.reset} user={this.state.complete} />\n }\n\n return (\n <RequestResetForm\n callback={this.complete}\n showInactivePage={this.showInactivePage}\n />\n )\n }\n}\n","import misago from \"misago/index\"\nimport RequestPasswordReset from \"misago/components/request-password-reset\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"request-password-reset-mount\")) {\n mount(RequestPasswordReset, \"request-password-reset-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:request-password-reset\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport misago from \"misago/index\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport SignInModal from \"misago/components/sign-in.js\"\nimport ajax from \"misago/services/ajax\"\nimport auth from \"misago/services/auth\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\n\nexport class ResetPasswordForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n password: \"\",\n }\n }\n\n clean() {\n if (this.state.password.trim().length) {\n return true\n } else {\n snackbar.error(gettext(\"Enter new password.\"))\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"CHANGE_PASSWORD_API\"), {\n password: this.state.password,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <div className=\"well well-form well-form-reset-password\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-group\">\n <div className=\"control-input\">\n <input\n type=\"password\"\n className=\"form-control\"\n placeholder={gettext(\"Enter new password\")}\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </div>\n </div>\n\n <Button\n className=\"btn-primary btn-block\"\n loading={this.state.isLoading}\n >\n {gettext(\"Change password\")}\n </Button>\n </form>\n </div>\n )\n }\n}\n\nexport class PasswordChangedPage extends React.Component {\n getMessage() {\n return interpolate(\n gettext(\"%(username)s, your password has been changed successfully.\"),\n {\n username: this.props.user.username,\n },\n true\n )\n }\n\n showSignIn() {\n modal.show(SignInModal)\n }\n\n render() {\n return (\n <div className=\"page page-message page-message-success page-forgotten-password-changed\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">check</span>\n </div>\n\n <div className=\"message-body\">\n <p className=\"lead\">{this.getMessage()}</p>\n <p>\n {gettext(\n \"You will have to sign in using new password before continuing.\"\n )}\n </p>\n <p>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.showSignIn}\n >\n {gettext(\"Sign in\")}\n </button>\n </p>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n complete = (apiResponse) => {\n auth.softSignOut()\n\n // nuke \"redirect_to\" field so we don't end\n // coming back to error page after sign in\n $('#hidden-login-form input[name=\"redirect_to\"]').remove()\n\n ReactDOM.render(\n <PasswordChangedPage user={apiResponse} />,\n document.getElementById(\"page-mount\")\n )\n }\n\n render() {\n return <ResetPasswordForm callback={this.complete} />\n }\n}\n","import misago from \"misago\"\nimport ResetPasswordForm from \"misago/components/reset-password-form\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n if (document.getElementById(\"reset-password-form-mount\")) {\n mount(ResetPasswordForm, \"reset-password-form-mount\", false)\n }\n}\n\nmisago.addInitializer({\n name: \"component:reset-password-form\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport misago from \"misago\"\nimport Form from \"misago/components/form\"\nimport { load as updatePosts } from \"misago/reducers/posts\"\nimport { update as updateSearch } from \"misago/reducers/search\"\nimport { hydrate as updateUsers } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../FlexRow\"\nimport {\n PageHeader,\n PageHeaderContainer,\n PageHeaderBanner,\n PageHeaderDetails,\n} from \"../PageHeader\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n query: props.search.query,\n }\n }\n\n componentDidMount() {\n if (this.state.query.length) {\n this.handleSubmit()\n }\n }\n\n onQueryChange = (event) => {\n this.changeValue(\"query\", event.target.value)\n }\n\n clean() {\n if (!this.state.query.trim().length) {\n snackbar.error(gettext(\"You have to enter search query.\"))\n return false\n }\n\n return true\n }\n\n send() {\n store.dispatch(\n updateSearch({\n isLoading: true,\n })\n )\n\n const query = this.state.query.trim()\n\n let url = window.location.href\n const urlQuery = url.indexOf(\"?q=\")\n if (urlQuery > 0) {\n url = url.substring(0, urlQuery + 3)\n }\n window.history.pushState({}, \"\", url + encodeURIComponent(query))\n\n return ajax.get(misago.get(\"SEARCH_API\"), { q: query })\n }\n\n handleSuccess(providers) {\n store.dispatch(\n updateSearch({\n query: this.state.query.trim(),\n isLoading: false,\n providers,\n })\n )\n\n providers.forEach((provider) => {\n if (provider.id === \"users\") {\n store.dispatch(updateUsers(provider.results.results))\n } else if (provider.id === \"threads\") {\n store.dispatch(updatePosts(provider.results))\n }\n })\n }\n\n handleError(rejection) {\n snackbar.apiError(rejection)\n\n store.dispatch(\n updateSearch({\n isLoading: false,\n })\n )\n }\n\n render() {\n return (\n <form onSubmit={this.handleSubmit}>\n <PageHeaderContainer>\n <PageHeader styleName=\"site-search\">\n <PageHeaderBanner styleName=\"site-search\">\n <h1>{gettext(\"Search\")}</h1>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"page-header-search-form\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n type=\"text\"\n value={this.state.query}\n placeholder={gettext(\"Search\")}\n onChange={this.onQueryChange}\n />\n </FlexRowCol>\n <FlexRowCol shrink>\n <button\n className=\"btn btn-secondary btn-icon btn-outline\"\n disabled={this.state.isLoading}\n >\n <span className=\"material-icon\">search</span>\n </button>\n </FlexRowCol>\n </FlexRowSection>\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n </form>\n )\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nexport default function (props) {\n return (\n <div className=\"list-group nav-side\">\n {props.providers.map((provider) => {\n return (\n <Link\n activeClassName=\"active\"\n className=\"list-group-item\"\n key={provider.id}\n to={provider.url}\n >\n <span className=\"material-icon\">{provider.icon}</span>\n {provider.name}\n <Badge results={provider.results} />\n </Link>\n )\n })}\n </div>\n )\n}\n\nexport function Badge(props) {\n if (!props.results) return null\n\n let count = props.results.count\n if (count > 1000000) {\n count = Math.ceil(count / 1000000) + \"KK\"\n } else if (count > 1000) {\n count = Math.ceil(count / 1000) + \"K\"\n }\n\n return <span className=\"badge\">{count}</span>\n}\n","import React from \"react\"\nimport PageContainer from \"../PageContainer\"\nimport SearchForm from \"./form\"\nimport SideNav from \"./sidenav\"\n\nexport default function (props) {\n return (\n <div className=\"page page-search\">\n <SearchForm provider={props.provider} search={props.search} />\n <PageContainer>\n <div className=\"row\">\n <div className=\"col-md-3\">\n <SideNav providers={props.search.providers} />\n </div>\n <div className=\"col-md-9\">\n {props.children}\n <SearchTime provider={props.provider} search={props.search} />\n </div>\n </div>\n </PageContainer>\n </div>\n )\n}\n\nexport function SearchTime(props) {\n let time = null\n props.search.providers.forEach((p) => {\n if (p.id === props.provider.id) {\n time = p.time\n }\n })\n\n if (time === null) return null\n\n const copy = gettext(\"Search took %(time)s s to complete\")\n\n return (\n <footer className=\"search-footer\">\n <p>{interpolate(copy, { time }, true)}</p>\n </footer>\n )\n}\n","import React from \"react\"\nimport PostFeed from \"misago/components/post-feed\"\nimport Button from \"misago/components/button\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\nimport {\n update as updatePosts,\n append as appendPosts,\n} from \"misago/reducers/posts\"\nimport { updateProvider } from \"misago/reducers/search\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n return (\n <div>\n <PostFeed isReady={true} posts={props.results} />\n <LoadMore {...props} />\n </div>\n )\n}\n\nexport class LoadMore extends React.Component {\n onClick = () => {\n store.dispatch(\n updatePosts({\n isBusy: true,\n })\n )\n\n ajax\n .get(this.props.provider.api, {\n q: this.props.query,\n page: this.props.next,\n })\n .then(\n (providers) => {\n providers.forEach((provider) => {\n if (provider.id !== \"threads\") return\n store.dispatch(appendPosts(provider.results))\n store.dispatch(updateProvider(provider))\n })\n\n store.dispatch(\n updatePosts({\n isBusy: false,\n })\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n store.dispatch(\n updatePosts({\n isBusy: false,\n })\n )\n }\n )\n }\n\n render() {\n if (!this.props.more) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.props.isBusy}\n onClick={this.onClick}\n >\n {gettext(\"Show more\")}\n </Button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport SearchPage from \"../page\"\nimport Results from \"./results\"\n\nexport default function (props) {\n return (\n <SearchPage provider={props.route.provider} search={props.search}>\n <Blankslate\n loading={props.search.isLoading}\n query={props.search.query}\n posts={props.posts}\n >\n <Results\n provider={props.route.provider}\n query={props.search.query}\n {...props.posts}\n />\n </Blankslate>\n </SearchPage>\n )\n}\n\nexport function Blankslate({ children, loading, posts, query }) {\n if (posts && posts.count) return children\n\n if (query.length) {\n return (\n <p className=\"lead\">\n {loading\n ? gettext(\"Loading results...\")\n : gettext(\"No threads matching search query have been found.\")}\n </p>\n )\n }\n\n return (\n <p className=\"lead\">\n {gettext(\"Enter at least two characters to search threads.\")}\n </p>\n )\n}\n","import React from \"react\"\nimport SearchPage from \"../page\"\nimport UsersList from \"misago/components/users-list\"\n\nexport default function (props) {\n return (\n <SearchPage provider={props.route.provider} search={props.search}>\n <Blankslate\n loading={props.search.isLoading}\n query={props.search.query}\n users={props.users}\n >\n <UsersList\n cols={3}\n isReady={!props.search.isLoading}\n users={props.users}\n />\n </Blankslate>\n </SearchPage>\n )\n}\n\nexport function Blankslate({ children, loading, query, users }) {\n if (users.length) return children\n\n if (query.length) {\n return (\n <p className=\"lead\">\n {loading\n ? gettext(\"Loading results...\")\n : gettext(\"No users matching search query have been found.\")}\n </p>\n )\n }\n\n return (\n <p className=\"lead\">\n {gettext(\"Enter at least two characters to search users.\")}\n </p>\n )\n}\n","import { connect } from \"react-redux\"\nimport SearchThreads from \"./threads\"\nimport SearchUsers from \"./users\"\n\nconst components = {\n threads: SearchThreads,\n users: SearchUsers,\n}\n\nexport function select(store) {\n return {\n posts: store.posts,\n search: store.search,\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n }\n}\n\nexport default function (providers) {\n return providers.map((provider) => {\n return {\n path: provider.url,\n component: connect(select)(components[provider.id]),\n provider: provider,\n }\n })\n}\n","import paths from \"misago/components/search\"\nimport misago from \"misago\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.get(\"CURRENT_LINK\") === \"misago:search\") {\n mount({\n paths: paths(misago.get(\"SEARCH_PROVIDERS\")),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:search\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\n\nconst TYPES_CLASSES = {\n info: \"alert-info\",\n success: \"alert-success\",\n warning: \"alert-warning\",\n error: \"alert-danger\",\n}\n\nexport class Snackbar extends React.Component {\n getSnackbarClass() {\n let snackbarClass = \"alerts-snackbar\"\n if (this.props.isVisible) {\n snackbarClass += \" in\"\n } else {\n snackbarClass += \" out\"\n }\n return snackbarClass\n }\n\n render() {\n return (\n <div className={this.getSnackbarClass()}>\n <p className={\"alert \" + TYPES_CLASSES[this.props.type]}>\n {this.props.message}\n </p>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return state.snackbar\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport { Snackbar, select } from \"misago/components/snackbar\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(Snackbar), \"snackbar-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:snackbar\",\n initializer: initializer,\n after: \"snackbar\",\n})\n","import React from \"react\"\n\nconst Header = ({ backendName }) => {\n const pageTitleTpl = gettext(\"Sign in with %(backend)s\")\n const pageTitle = interpolate(pageTitleTpl, { backend: backendName }, true)\n\n return (\n <div className=\"page-header-bg\">\n <div className=\"page-header\">\n <div className=\"container\">\n <h1>{pageTitle}</h1>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Header\n","import React from \"react\"\nimport misago from \"misago\"\nimport RegisterLegalFootnote from \"misago/components/RegisterLegalFootnote\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport * as validators from \"misago/utils/validators\"\nimport Header from \"./header\"\n\nexport default class Register extends Form {\n constructor(props) {\n super(props)\n\n const formValidators = {\n email: [validators.email()],\n username: [validators.usernameContent()],\n }\n\n if (!!misago.get(\"TERMS_OF_SERVICE_ID\")) {\n formValidators.termsOfService = [validators.requiredTermsOfService()]\n }\n\n if (!!misago.get(\"PRIVACY_POLICY_ID\")) {\n formValidators.privacyPolicy = [validators.requiredPrivacyPolicy()]\n }\n\n this.state = {\n email: props.email || \"\",\n emailProtected: !!props.email,\n username: props.username || \"\",\n\n termsOfService: null,\n privacyPolicy: null,\n\n validators: formValidators,\n errors: {},\n\n isLoading: false,\n }\n }\n\n clean() {\n let errors = this.validate()\n let lengths = [\n this.state.email.trim().length,\n this.state.username.trim().length,\n ]\n\n if (lengths.indexOf(0) !== -1) {\n snackbar.error(gettext(\"Fill out all fields.\"))\n return false\n }\n\n const { validators } = this.state\n\n const checkTermsOfService = !!misago.get(\"TERMS_OF_SERVICE_ID\")\n if (checkTermsOfService && this.state.termsOfService === null) {\n snackbar.error(validators.termsOfService[0](null))\n return false\n }\n\n const checkPrivacyPolicy = !!misago.get(\"PRIVACY_POLICY_ID\")\n if (checkPrivacyPolicy && this.state.privacyPolicy === null) {\n snackbar.error(validators.privacyPolicy[0](null))\n snackbar.error(gettext(\"You need to accept the privacy policy.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.url, {\n email: this.state.email,\n username: this.state.username,\n terms_of_service: this.state.termsOfService,\n privacy_policy: this.state.privacyPolicy,\n })\n }\n\n handleSuccess(response) {\n const { onRegistrationComplete } = this.props\n onRegistrationComplete(response)\n }\n\n handleError(rejection) {\n if (rejection.status === 200) {\n // We've entered \"errored\" state because response is HTML instead of exptected JSON\n const { onRegistrationComplete } = this.props\n const { username } = this.state\n onRegistrationComplete({ activation: \"active\", step: \"done\", username })\n } else if (rejection.status === 400) {\n const stateUpdate = { errors: rejection }\n if (rejection.email) {\n stateUpdate.emailProtected = false\n }\n this.setState(stateUpdate)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n handlePrivacyPolicyChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"privacyPolicy\", value)\n }\n\n handleTermsOfServiceChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"termsOfService\", value)\n }\n\n handleToggleAgreement = (agreement, value) => {\n this.setState((prevState, props) => {\n if (prevState[agreement] === null) {\n const errors = { ...prevState.errors, [agreement]: null }\n return { errors, [agreement]: value }\n }\n\n const validator = this.state.validators[agreement][0]\n const errors = { ...prevState.errors, [agreement]: [validator(null)] }\n return { errors, [agreement]: null }\n })\n }\n\n render() {\n const { backend_name } = this.props\n const { email, emailProtected, username, isLoading } = this.state\n\n let emailHelpText = null\n if (emailProtected) {\n const emailHelpTextTpl = gettext(\n \"Your e-mail address has been verified by %(backend)s.\"\n )\n emailHelpText = interpolate(\n emailHelpTextTpl,\n { backend: backend_name },\n true\n )\n }\n\n return (\n <div className=\"page page-social-auth page-social-sauth-register\">\n <Header backendName={backend_name} />\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">\n {gettext(\"Complete your details\")}\n </h3>\n </div>\n <div className=\"panel-body\">\n <FormGroup\n for=\"id_username\"\n label={gettext(\"Username\")}\n validation={this.state.errors.username}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n disabled={isLoading}\n onChange={this.bindInput(\"username\")}\n value={username}\n />\n </FormGroup>\n <FormGroup\n for=\"id_email\"\n label={gettext(\"E-mail address\")}\n helpText={emailHelpText}\n validation={\n emailProtected ? null : this.state.errors.email\n }\n >\n <input\n type=\"email\"\n id=\"id_email\"\n className=\"form-control\"\n disabled={isLoading || emailProtected}\n onChange={this.bindInput(\"email\")}\n value={email}\n />\n </FormGroup>\n <RegisterLegalFootnote\n errors={this.state.errors}\n privacyPolicy={this.state.privacyPolicy}\n termsOfService={this.state.termsOfService}\n onPrivacyPolicyChange={this.handlePrivacyPolicyChange}\n onTermsOfServiceChange={this.handleTermsOfServiceChange}\n />\n </div>\n <div className=\"panel-footer\">\n <Button\n className=\"btn-primary\"\n loading={this.state.isLoading}\n >\n {gettext(\"Sign in\")}\n </Button>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Header from \"./header\"\nimport misago from \"misago\"\n\nconst Complete = ({ activation, backend_name, username }) => {\n let icon = \"\"\n let message = \"\"\n if (activation === \"user\") {\n message = gettext(\n \"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\"\n )\n } else if (activation === \"admin\") {\n message = gettext(\n \"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\"\n )\n } else {\n message = gettext(\n \"%(username)s, your account has been created and you have been signed in to it.\"\n )\n }\n\n if (activation === \"active\") {\n icon = \"check\"\n } else {\n icon = \"info_outline\"\n }\n\n return (\n <div className=\"page page-social-auth page-social-sauth-register\">\n <Header backendName={backend_name} />\n <div className=\"container\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <div className=\"panel panel-default panel-form\">\n <div className=\"panel-heading\">\n <h3 className=\"panel-title\">\n {gettext(\"Registration completed!\")}\n </h3>\n </div>\n <div className=\"panel-body panel-message-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">{icon}</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {interpolate(message, { username }, true)}\n </p>\n <p className=\"help-block\">\n <a\n className=\"btn btn-default\"\n href={misago.get(\"MISAGO_PATH\")}\n >\n {gettext(\"Return to forum index\")}\n </a>\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default Complete\n","import React from \"react\"\nimport Register from \"./register\"\nimport Complete from \"./complete\"\n\nexport default class SocialAuth extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n step: props.step,\n\n activation: props.activation || \"\",\n email: props.email || \"\",\n username: props.username || \"\",\n }\n }\n\n handleRegistrationComplete = ({ activation, email, step, username }) => {\n this.setState({ activation, email, step, username })\n }\n\n render() {\n const { backend_name, url } = this.props\n const { activation, email, step, username } = this.state\n\n if (step === \"register\") {\n return (\n <Register\n backend_name={backend_name}\n email={email}\n url={url}\n username={username}\n onRegistrationComplete={this.handleRegistrationComplete}\n />\n )\n }\n\n return (\n <Complete\n activation={activation}\n backend_name={backend_name}\n email={email}\n url={url}\n username={username}\n />\n )\n }\n}\n","import React from \"react\"\nimport SocialAuth from \"misago/components/social-auth\"\nimport misago from \"misago\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer(context) {\n if (context.get(\"CURRENT_LINK\") === \"misago:social-complete\") {\n const props = context.get(\"SOCIAL_AUTH_FORM\")\n mount(<SocialAuth {...props} />, \"page-mount\")\n }\n}\n\nmisago.addInitializer({\n name: \"component:social-auth\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport Form from \"./form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as participants from \"misago/reducers/participants\"\nimport { updateAcl } from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n username: \"\",\n }\n }\n\n onUsernameChange = (event) => {\n this.changeValue(\"username\", event.target.value)\n }\n\n clean() {\n if (!this.state.username.trim().length) {\n snackbar.error(gettext(\"You have to enter user name.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.patch(this.props.thread.api.index, [\n { op: \"add\", path: \"participants\", value: this.state.username },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n }\n\n handleSuccess(data) {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n snackbar.success(gettext(\"New participant has been added to thread.\"))\n\n modal.hide()\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-sm\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_username\" label={gettext(\"User to add\")}>\n <input\n id=\"id_username\"\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onUsernameChange}\n type=\"text\"\n value={this.state.username}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-block btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Add participant\")}\n </button>\n <button\n className=\"btn btn-block btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Add participant\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport AddParticipantModal from \"misago/components/add-participant\"\nimport modal from \"misago/services/modal\"\n\nexport default class extends React.Component {\n onClick = () => {\n modal.show(<AddParticipantModal thread={this.props.thread} />)\n }\n\n render() {\n if (!this.props.thread.acl.can_add_participants) return null\n\n return (\n <div className=\"col-xs-12 col-sm-3\">\n <button\n className=\"btn btn-default btn-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">person_add</span>\n {gettext(\"Add participant\")}\n </button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { changeOwner } from \"./actions\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.isUser = props.participant.id === props.user.id\n }\n\n onClick = () => {\n let confirmed = false\n if (this.isUser) {\n confirmed = window.confirm(\n gettext(\"Are you sure you want to take over this thread?\")\n )\n } else {\n const message = gettext(\n \"Are you sure you want to change thread owner to %(user)s?\"\n )\n confirmed = window.confirm(\n interpolate(\n message,\n {\n user: this.props.participant.username,\n },\n true\n )\n )\n }\n\n if (!confirmed) return\n\n changeOwner(this.props.thread, this.props.participant)\n }\n\n render() {\n if (this.props.participant.is_owner) return null\n if (!this.props.thread.acl.can_change_owner) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n {gettext(\"Make owner\")}\n </button>\n </li>\n )\n }\n}\n","import * as participants from \"misago/reducers/participants\"\nimport { updateAcl } from \"misago/reducers/thread\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport function leave(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"remove\", path: \"participants\", value: participant.id },\n ])\n .then(\n () => {\n snackbar.success(gettext(\"You have left this thread.\"))\n window.setTimeout(() => {\n window.location = misago.get(\"PRIVATE_THREADS_URL\")\n }, 3 * 1000)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n\nexport function remove(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"remove\", path: \"participants\", value: participant.id },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n .then(\n (data) => {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n const message = gettext(\"%(user)s has been removed from this thread.\")\n snackbar.success(\n interpolate(\n message,\n {\n user: participant.username,\n },\n true\n )\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n\nexport function changeOwner(thread, participant) {\n ajax\n .patch(thread.api.index, [\n { op: \"replace\", path: \"owner\", value: participant.id },\n { op: \"add\", path: \"acl\", value: 1 },\n ])\n .then(\n (data) => {\n store.dispatch(updateAcl(data))\n store.dispatch(participants.replace(data.participants))\n\n const message = gettext(\"%(user)s has been made new thread owner.\")\n snackbar.success(\n interpolate(\n message,\n {\n user: participant.username,\n },\n true\n )\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n}\n","import React from \"react\"\nimport { remove, leave } from \"./actions\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.isUser = props.participant.id === props.user.id\n }\n\n onClick = () => {\n let confirmed = false\n if (this.isUser) {\n confirmed = window.confirm(\n gettext(\"Are you sure you want to leave this thread?\")\n )\n } else {\n const message = gettext(\n \"Are you sure you want to remove %(user)s from this thread?\"\n )\n confirmed = window.confirm(\n interpolate(\n message,\n {\n user: this.props.participant.username,\n },\n true\n )\n )\n }\n\n if (!confirmed) return\n\n if (this.isUser) {\n leave(this.props.thread, this.props.participant)\n } else {\n remove(this.props.thread, this.props.participant)\n }\n }\n\n render() {\n const isModerator = this.props.user.acl.can_moderate_private_threads\n\n if (!(this.props.userIsOwner || this.isUser || isModerator)) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n {this.isUser ? gettext(\"Leave thread\") : gettext(\"Remove\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport MakeOwner from \"./make-owner\"\nimport Remove from \"./remove\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function (props) {\n const participant = props.participant\n\n let className = \"btn btn-default\"\n if (participant.is_owner) {\n className = \"btn btn-primary\"\n }\n className += \" btn-user btn-block\"\n\n return (\n <div className=\"col-xs-12 col-sm-3 col-md-2 participant-card\">\n <div className=\"dropdown\">\n <button\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className={className}\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <Avatar size=\"34\" user={participant} />\n <span className=\"btn-text\">{participant.username}</span>\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n <UserStatus isOwner={participant.is_owner} />\n <li className=\"dropdown-header\" />\n <li>\n <a href={participant.url}>{gettext(\"See profile\")}</a>\n </li>\n <li role=\"separator\" className=\"divider\" />\n <MakeOwner {...props} />\n <Remove {...props} />\n </ul>\n </div>\n </div>\n )\n}\n\nexport function UserStatus({ isOwner }) {\n if (!isOwner) return null\n\n return (\n <li className=\"dropdown-header dropdown-header-owner\">\n <span className=\"material-icon\">start</span>\n <span className=\"icon-text\">{gettext(\"Thread owner\")}</span>\n </li>\n )\n}\n","import React from \"react\"\nimport Card from \"./card\"\n\nexport default function ({ participants, thread, user, userIsOwner }) {\n return (\n <div className=\"participants-cards\">\n <div className=\"row\">\n {participants.map((participant) => {\n return (\n <Card\n key={participant.id}\n participant={participant}\n thread={thread}\n user={user}\n userIsOwner={userIsOwner}\n />\n )\n })}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport AddParticipant from \"./add-participant\"\nimport CardsList from \"./cards-list\"\nimport * as utils from \"./utils\"\n\nexport default function (props) {\n if (!props.participants.length) return null\n\n return (\n <div className=\"panel panel-default panel-participants\">\n <div className=\"panel-body\">\n <CardsList\n userIsOwner={getUserIsOwner(props.user, props.participants)}\n {...props}\n />\n <div className=\"row\">\n <AddParticipant thread={props.thread} />\n <div className=\"col-xs-12 col-sm-9\">\n <p>{utils.getParticipantsCopy(props.participants)}</p>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport function getUserIsOwner(user, participants) {\n return participants[0].id === user.id\n}\n","export function getParticipantsCopy(participants) {\n const count = participants.length\n const message = ngettext(\n \"This thread has %(users)s participant.\",\n \"This thread has %(users)s participants.\",\n count\n )\n\n return interpolate(\n message,\n {\n users: count,\n },\n true\n )\n}\n","import React from \"react\"\n\nconst ICON = {\n changed_title: \"edit\",\n\n pinned_globally: \"bookmark\",\n pinned_locally: \"bookmark_border\",\n unpinned: \"panorama_fish_eye\",\n\n moved: \"arrow_forward\",\n merged: \"call_merge\",\n\n approved: \"done\",\n\n opened: \"lock_open\",\n closed: \"lock_outline\",\n\n unhid: \"visibility\",\n hid: \"visibility_off\",\n\n changed_owner: \"grade\",\n tookover: \"grade\",\n\n added_participant: \"person_add\",\n\n owner_left: \"person_outline\",\n participant_left: \"person_outline\",\n removed_participant: \"remove_circle_outline\",\n}\n\nconst EventIcon = (props) => (\n <span className=\"event-icon-bg\">\n <span className=\"material-icon\">{ICON[props.post.event_type]}</span>\n </span>\n)\n\nexport default EventIcon\n","import React from \"react\"\nimport moment from \"moment\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function (props) {\n if (isVisible(props.post.acl)) {\n return (\n <li className=\"event-controls\">\n <Hide {...props} />\n <Unhide {...props} />\n <Delete {...props} />\n </li>\n )\n } else {\n return null\n }\n}\n\nexport function isVisible(acl) {\n return acl.can_hide\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: this.props.user.username,\n url: Object.assign(this.props.post.url, {\n hidden_by: this.props.user.url,\n }),\n })\n )\n\n const op = { op: \"replace\", path: \"is-hidden\", value: true }\n\n ajax.patch(this.props.post.api.index, [op]).then(\n (patch) => {\n store.dispatch(post.patch(this.props.post, patch))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: false,\n })\n )\n }\n )\n }\n\n render() {\n if (!this.props.post.is_hidden) {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Hide\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: false,\n })\n )\n\n const op = { op: \"replace\", path: \"is-hidden\", value: false }\n\n ajax.patch(this.props.post.api.index, [op]).then(\n (patch) => {\n store.dispatch(post.patch(this.props.post, patch))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n is_hidden: true,\n })\n )\n }\n )\n }\n\n render() {\n if (this.props.post.is_hidden) {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Unhide\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n const decision = window.confirm(\n gettext(\n \"Are you sure you wish to delete this event? This action is not reversible!\"\n )\n )\n if (decision) {\n this.delete()\n }\n }\n\n delete = () => {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n ajax.delete(this.props.post.api.index).then(\n () => {\n snackbar.success(gettext(\"Event has been deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: false,\n })\n )\n }\n )\n }\n\n render() {\n return (\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n {gettext(\"Delete\")}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport Controls from \"./controls\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst DATE_URL = '<a href=\"%(url)s\" title=\"%(absolute)s\">%(relative)s</a>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <ul className=\"list-inline event-info\">\n <Hidden {...props} />\n <Poster {...props} />\n <Controls {...props} />\n </ul>\n )\n}\n\nexport function Hidden(props) {\n if (props.post.is_hidden) {\n let user = null\n if (props.post.url.hidden_by) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.post.url.hidden_by),\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.post.hidden_on.format(\"LLL\")),\n relative: escapeHtml(props.post.hidden_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"Hidden by %(event_by)s %(event_on)s.\")),\n {\n event_by: user,\n event_on: date,\n },\n true\n )\n\n return (\n <li\n className=\"event-hidden-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n } else {\n return null\n }\n}\n\nexport function Poster(props) {\n let user = null\n if (props.post.poster) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.post.poster.url),\n user: escapeHtml(props.post.poster_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.post.poster_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_URL,\n {\n url: escapeHtml(props.post.url.index),\n absolute: escapeHtml(props.post.posted_on.format(\"LLL\")),\n relative: escapeHtml(props.post.posted_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"By %(event_by)s %(event_on)s.\")),\n {\n event_by: user,\n event_on: date,\n },\n true\n )\n\n return (\n <li\n className=\"event-posters\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst MESSAGE = {\n pinned_globally: gettext(\"Thread has been pinned globally.\"),\n pinned_locally: gettext(\"Thread has been pinned locally.\"),\n unpinned: gettext(\"Thread has been unpinned.\"),\n\n approved: gettext(\"Thread has been approved.\"),\n\n opened: gettext(\"Thread has been opened.\"),\n closed: gettext(\"Thread has been closed.\"),\n\n unhid: gettext(\"Thread has been revealed.\"),\n hid: gettext(\"Thread has been made hidden.\"),\n\n tookover: gettext(\"Took thread over.\"),\n\n owner_left: gettext(\"Owner has left thread. This thread is now closed.\"),\n participant_left: gettext(\"Participant has left thread.\"),\n}\n\nconst ITEM_LINK = '<a href=\"%(url)s\" class=\"item-title\">%(name)s</a>'\nconst ITEM_SPAN = '<span class=\"item-title\">%(name)s</span>'\n\nexport default function (props) {\n if (MESSAGE[props.post.event_type]) {\n return <p className=\"event-message\">{MESSAGE[props.post.event_type]}</p>\n } else if (props.post.event_type === \"changed_title\") {\n return <ChangedTitle {...props} />\n } else if (props.post.event_type === \"moved\") {\n return <Moved {...props} />\n } else if (props.post.event_type === \"merged\") {\n return <Merged {...props} />\n } else if (props.post.event_type === \"changed_owner\") {\n return <ChangedOwner {...props} />\n } else if (props.post.event_type === \"added_participant\") {\n return <AddedParticipant {...props} />\n } else if (props.post.event_type === \"removed_participant\") {\n return <RemovedParticipant {...props} />\n } else {\n return null\n }\n}\n\nexport function ChangedTitle(props) {\n const msgstring = escapeHtml(\n gettext(\"Thread title has been changed from %(old_title)s.\")\n )\n const oldTitle = interpolate(\n ITEM_SPAN,\n {\n name: escapeHtml(props.post.event_context.old_title),\n },\n true\n )\n const message = interpolate(\n msgstring,\n {\n old_title: oldTitle,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function Moved(props) {\n const msgstring = escapeHtml(\n gettext(\"Thread has been moved from %(from_category)s.\")\n )\n const fromCategory = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.from_category.url),\n name: escapeHtml(props.post.event_context.from_category.name),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n from_category: fromCategory,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function Merged(props) {\n const msgstring = escapeHtml(\n gettext(\"The %(merged_thread)s thread has been merged into this thread.\")\n )\n const mergedThread = interpolate(\n ITEM_SPAN,\n {\n name: escapeHtml(props.post.event_context.merged_thread),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n merged_thread: mergedThread,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function ChangedOwner(props) {\n const msgstring = escapeHtml(gettext(\"Changed thread owner to %(user)s.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function AddedParticipant(props) {\n const msgstring = escapeHtml(gettext(\"Added %(user)s to thread.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n\nexport function RemovedParticipant(props) {\n const msgstring = escapeHtml(gettext(\"Removed %(user)s from thread.\"))\n const newOwner = interpolate(\n ITEM_LINK,\n {\n url: escapeHtml(props.post.event_context.user.url),\n name: escapeHtml(props.post.event_context.user.username),\n },\n true\n )\n\n const message = interpolate(\n msgstring,\n {\n user: newOwner,\n },\n true\n )\n\n return (\n <p\n className=\"event-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\n\nexport default function ({ post }) {\n if (post.is_read) return null\n\n return (\n <div className=\"event-label\">\n <span className=\"label label-unread\">{gettext(\"New event\")}</span>\n </div>\n )\n}\n","import React from \"react\"\nimport * as post from \"misago/reducers/post\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n /*\n Super naive and de-facto placeholder implementation for reading posts on scroll\n */\n componentDidMount() {\n if (this.props.post.is_read) return // don't register read tracker\n\n $(this.element).waypoint({\n handler: (direction) => {\n if (direction !== \"down\" || this.props.post.is_read) return\n\n // after 1500ms run flag post as read logic\n window.setTimeout(() => {\n // check if post's bottom edge is still in viewport\n const boundingClientRect = this.element.getBoundingClientRect()\n const offsetBottom =\n boundingClientRect.height + boundingClientRect.top\n const clientHeight = document.documentElement.clientHeight\n\n if (offsetBottom < 5) return // scrolled past the post\n if (offsetBottom > clientHeight) return // scrolled back up\n\n // mark post as read\n store.dispatch(\n post.patch(this.props.post, {\n is_read: true,\n })\n )\n\n // call API to let it know we have unread post\n ajax.post(this.props.post.api.read).then(\n (data) => {\n store.dispatch(\n thread.update(this.props.thread, {\n is_read: data.thread_is_read,\n })\n )\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }, 1000)\n },\n offset: \"bottom-in-view\",\n })\n }\n\n render() {\n return (\n <div\n className={this.props.className}\n ref={(node) => {\n if (node) this.element = node\n }}\n >\n {this.props.children}\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Icon from \"./icon\"\nimport Info from \"./info\"\nimport Message from \"./message\"\nimport UnreadLabel from \"./unread-label\"\nimport Waypoint from \"../waypoint\"\n\nexport default function (props) {\n let className = \"event\"\n if (props.post.isDeleted) {\n className = \"hide\"\n } else if (props.post.is_hidden) {\n className = \"event post-hidden\"\n }\n\n return (\n <li id={\"post-\" + props.post.id} className={className}>\n <UnreadLabel post={props.post} />\n <div className=\"event-body\">\n <div className=\"event-icon\">\n <Icon {...props} />\n </div>\n <Waypoint className=\"event-content\" post={props.post}>\n <Message {...props} />\n <Info {...props} />\n </Waypoint>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport formatFilesize from \"misago/utils/file-size\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default function (props) {\n return (\n <div className=\"col-xs-12 col-md-6\">\n <AttachmentPreview {...props} />\n <div className=\"post-attachment\">\n <a\n href={props.attachment.url.index}\n className=\"attachment-name item-title\"\n >\n {props.attachment.filename}\n </a>\n <AttachmentDetails {...props} />\n </div>\n </div>\n )\n}\n\nexport function AttachmentPreview(props) {\n if (props.attachment.is_image) {\n return (\n <div className=\"post-attachment-preview\">\n <AttachmentThumbnail {...props} />\n </div>\n )\n } else {\n return (\n <div className=\"post-attachment-preview\">\n <AttachmentIcon {...props} />\n </div>\n )\n }\n}\n\nexport function AttachmentIcon(props) {\n return (\n <a href={props.attachment.url.index} className=\"material-icon\">\n insert_drive_file\n </a>\n )\n}\n\nexport function AttachmentThumbnail(props) {\n const url = props.attachment.url.thumb || props.attachment.url.index\n return (\n <a\n className=\"post-thumbnail\"\n href={props.attachment.url.index}\n style={{ backgroundImage: 'url(\"' + escapeHtml(url) + '\")' }}\n />\n )\n}\n\nexport function AttachmentDetails(props) {\n let user = null\n if (props.attachment.url.uploader) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.attachment.url.uploader),\n user: escapeHtml(props.attachment.uploader_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.attachment.uploader_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.attachment.uploaded_on.format(\"LLL\")),\n relative: escapeHtml(props.attachment.uploaded_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(\n gettext(\n \"%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.\"\n )\n ),\n {\n filetype: props.attachment.filetype,\n size: formatFilesize(props.attachment.size),\n uploader: user,\n uploaded_on: date,\n },\n true\n )\n\n return (\n <p\n className=\"post-attachment-description\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n )\n}\n","import React from \"react\"\nimport batch from \"misago/utils/batch\"\nimport Attachment from \"./attachment\"\n\nexport default function (props) {\n if (!isVisible(props.post)) {\n return null\n }\n\n return (\n <div className=\"post-attachments\">\n {batch(props.post.attachments, 2).map((row) => {\n const key = row\n .map((a) => {\n return a ? a.id : 0\n })\n .join(\"_\")\n return <Row key={key} row={row} />\n })}\n </div>\n )\n}\n\nexport function isVisible(post) {\n return (!post.is_hidden || post.acl.can_see_hidden) && post.attachments\n}\n\nexport function Row(props) {\n return (\n <div className=\"row\">\n {props.row.map((attachment) => {\n return (\n <Attachment\n attachment={attachment}\n key={attachment ? attachment.id : 0}\n />\n )\n })}\n </div>\n )\n}\n","import React from \"react\"\nimport Waypoint from \"../waypoint\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst HIDDEN_BY_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\nconst HIDDEN_BY_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst HIDDEN_ON =\n '<abbr class=\"last-title\" title=\"%(absolute)s\">%(relative)s</abbr>'\n\nexport default function (props) {\n if (props.post.is_hidden && !props.post.acl.can_see_hidden) {\n return <Hidden {...props} />\n } else if (props.post.content) {\n return <Default {...props} />\n } else {\n return <Invalid {...props} />\n }\n}\n\nexport function Default(props) {\n return (\n <Waypoint className=\"post-body\" post={props.post}>\n <MisagoMarkup markup={props.post.content} />\n </Waypoint>\n )\n}\n\nexport function Hidden(props) {\n let user = null\n if (props.post.hidden_by) {\n user = interpolate(\n HIDDEN_BY_URL,\n {\n url: escapeHtml(props.post.url.hidden_by),\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n } else {\n user = interpolate(\n HIDDEN_BY_SPAN,\n {\n user: escapeHtml(props.post.hidden_by_name),\n },\n true\n )\n }\n\n const date = interpolate(\n HIDDEN_ON,\n {\n absolute: escapeHtml(props.post.hidden_on.format(\"LLL\")),\n relative: escapeHtml(props.post.hidden_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"Hidden by %(hidden_by)s %(hidden_on)s.\")),\n {\n hidden_by: user,\n hidden_on: date,\n },\n true\n )\n\n return (\n <Waypoint className=\"post-body post-body-hidden\" post={props.post}>\n <p className=\"lead\">\n {gettext(\"This post is hidden. You cannot see its contents.\")}\n </p>\n <p className=\"text-muted\" dangerouslySetInnerHTML={{ __html: message }} />\n </Waypoint>\n )\n}\n\nexport function Invalid(props) {\n return (\n <Waypoint className=\"post-body post-body-invalid\" post={props.post}>\n <p className=\"lead\">\n {gettext(\"This post's contents cannot be displayed.\")}\n </p>\n <p className=\"text-muted\">\n {gettext(\"This error is caused by invalid post content manipulation.\")}\n </p>\n </Waypoint>\n )\n}\n","import React from \"react\"\n\nexport function FlagBestAnswer({ post, thread, user }) {\n if (!(isVisible(post) && post.id === thread.best_answer)) {\n return null\n }\n\n let message = null\n if (user.id && thread.best_answer_marked_by === user.id) {\n message = interpolate(\n gettext(\"Marked as best answer by you %(marked_on)s.\"),\n {\n marked_on: thread.best_answer_marked_on.fromNow(),\n },\n true\n )\n } else {\n message = interpolate(\n gettext(\"Marked as best answer by %(marked_by)s %(marked_on)s.\"),\n {\n marked_by: thread.best_answer_marked_by_name,\n marked_on: thread.best_answer_marked_on.fromNow(),\n },\n true\n )\n }\n\n return (\n <div className=\"post-status-message post-status-best-answer\">\n <span className=\"material-icon\">check_box</span>\n <p>{message}</p>\n </div>\n )\n}\n\nexport function FlagHidden(props) {\n if (!(isVisible(props.post) && props.post.is_hidden)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-hidden\">\n <span className=\"material-icon\">visibility_off</span>\n <p>\n {gettext(\n \"This post is hidden. Only users with permission may see its contents.\"\n )}\n </p>\n </div>\n )\n}\n\nexport function FlagUnapproved(props) {\n if (!(isVisible(props.post) && props.post.is_unapproved)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-unapproved\">\n <span className=\"material-icon\">remove_circle_outline</span>\n <p>\n {gettext(\n \"This post is unapproved. Only users with permission to approve posts and its author may see its contents.\"\n )}\n </p>\n </div>\n )\n}\n\nexport function FlagProtected(props) {\n if (!(isVisible(props.post) && props.post.is_protected)) {\n return null\n }\n\n return (\n <div className=\"post-status-message post-status-protected visible-xs-block\">\n <span className=\"material-icon\">lock_outline</span>\n <p>{gettext(\"This post is protected. Only moderators may change it.\")}</p>\n </div>\n )\n}\n\nexport function isVisible(post) {\n return !post.is_hidden || post.acl.can_see_hidden\n}\n","import moment from \"moment\"\nimport * as thread from \"misago/reducers/thread\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport function approve(props) {\n store.dispatch(\n post.patch(props.post, {\n is_unapproved: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-unapproved\", value: false }]\n\n const previousState = {\n is_unapproved: props.post.is_unapproved,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function protect(props) {\n store.dispatch(\n post.patch(props.post, {\n is_protected: true,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: true }]\n\n const previousState = {\n is_protected: props.post.is_protected,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unprotect(props) {\n store.dispatch(\n post.patch(props.post, {\n is_protected: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: false }]\n\n const previousState = {\n is_protected: props.post.is_protected,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function hide(props) {\n store.dispatch(\n post.patch(props.post, {\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(props.post.url, {\n hidden_by: props.user.url,\n }),\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: true }]\n\n const previousState = {\n is_hidden: props.post.is_hidden,\n hidden_on: props.post.hidden_on,\n hidden_by_name: props.post.hidden_by_name,\n url: props.post.url,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unhide(props) {\n store.dispatch(\n post.patch(props.post, {\n is_hidden: false,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: false }]\n\n const previousState = {\n is_hidden: props.post.is_hidden,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function like(props) {\n const lastLikes = props.post.last_likes || []\n const concatedLikes = [props.user].concat(lastLikes)\n const finalLikes =\n concatedLikes.length > 3 ? concatedLikes.slice(0, -1) : concatedLikes\n\n store.dispatch(\n post.patch(props.post, {\n is_liked: true,\n likes: props.post.likes + 1,\n last_likes: finalLikes,\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-liked\", value: true }]\n\n const previousState = {\n is_liked: props.post.is_liked,\n likes: props.post.likes,\n last_likes: props.post.last_likes,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function unlike(props) {\n store.dispatch(\n post.patch(props.post, {\n is_liked: false,\n likes: props.post.likes - 1,\n last_likes: props.post.last_likes.filter((user) => {\n return !user.id || user.id !== props.user.id\n }),\n })\n )\n\n const ops = [{ op: \"replace\", path: \"is-liked\", value: false }]\n\n const previousState = {\n is_liked: props.post.is_liked,\n likes: props.post.likes,\n last_likes: props.post.last_likes,\n }\n\n patch(props, ops, previousState)\n}\n\nexport function patch(props, ops, previousState) {\n ajax.patch(props.post.api.index, ops).then(\n (newState) => {\n store.dispatch(post.patch(props.post, newState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(post.patch(props.post, previousState))\n }\n )\n}\n\nexport function remove(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to delete this post? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n store.dispatch(\n post.patch(props.post, {\n isDeleted: true,\n })\n )\n\n ajax.delete(props.post.api.index).then(\n () => {\n snackbar.success(gettext(\"Post has been deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(\n post.patch(props.post, {\n isDeleted: false,\n })\n )\n }\n )\n}\n\nexport function markAsBestAnswer(props) {\n const { post, user } = props\n\n store.dispatch(\n thread.update({\n best_answer: post.id,\n best_answer_is_protected: post.is_protected,\n best_answer_marked_on: moment(),\n best_answer_marked_by: user.id,\n best_answer_marked_by_name: user.username,\n best_answer_marked_by_slug: user.slug,\n })\n )\n\n const ops = [\n { op: \"replace\", path: \"best-answer\", value: post.id },\n { op: \"add\", path: \"acl\", value: true },\n ]\n\n const previousState = {\n best_answer: props.thread.best_answer,\n best_answer_is_protected: props.thread.best_answer_is_protected,\n best_answer_marked_on: props.thread.best_answer_marked_on,\n best_answer_marked_by: props.thread.best_answer_marked_by,\n best_answer_marked_by_name: props.thread.best_answer_marked_by_name,\n best_answer_marked_by_slug: props.thread.best_answer_marked_by_slug,\n }\n\n patchThread(props, ops, previousState)\n}\n\nexport function unmarkBestAnswer(props) {\n const { post } = props\n\n store.dispatch(\n thread.update({\n best_answer: null,\n best_answer_is_protected: false,\n best_answer_marked_on: null,\n best_answer_marked_by: null,\n best_answer_marked_by_name: null,\n best_answer_marked_by_slug: null,\n })\n )\n\n const ops = [\n { op: \"remove\", path: \"best-answer\", value: post.id },\n { op: \"add\", path: \"acl\", value: true },\n ]\n\n const previousState = {\n best_answer: props.thread.best_answer,\n best_answer_is_protected: props.thread.best_answer_is_protected,\n best_answer_marked_on: props.thread.best_answer_marked_on,\n best_answer_marked_by: props.thread.best_answer_marked_by,\n best_answer_marked_by_name: props.thread.best_answer_marked_by_name,\n best_answer_marked_by_slug: props.thread.best_answer_marked_by_slug,\n }\n\n patchThread(props, ops, previousState)\n}\n\nexport function patchThread(props, ops, previousState) {\n ajax.patch(props.thread.api.index, ops).then(\n (newState) => {\n if (newState.best_answer_marked_on) {\n newState.best_answer_marked_on = moment(newState.best_answer_marked_on)\n }\n store.dispatch(thread.update(newState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(thread.update(previousState))\n }\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport Avatar from \"misago/components/avatar\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport ajax from \"misago/services/ajax\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n\n error: null,\n likes: [],\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.post.api.likes).then(\n (data) => {\n this.setState({\n isReady: true,\n likes: data.map(hydrateLike),\n })\n },\n (rejection) => {\n this.setState({\n isReady: true,\n error: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.error) {\n return (\n <ModalDialog className=\"modal-message\">\n <Message message={this.state.error} />\n </ModalDialog>\n )\n } else if (this.state.isReady) {\n if (this.state.likes.length) {\n return (\n <ModalDialog className=\"modal-sm\" likes={this.state.likes}>\n <LikesList likes={this.state.likes} />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog className=\"modal-message\">\n <Message message={gettext(\"No users have liked this post.\")} />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog className=\"modal-sm\">\n <Loader />\n </ModalDialog>\n )\n }\n}\n\nexport function hydrateLike(data) {\n return Object.assign({}, data, {\n liked_on: moment(data.liked_on),\n })\n}\n\nexport function ModalDialog({ className, children, likes }) {\n let title = gettext(\"Post Likes\")\n if (likes) {\n const likesCount = likes.length\n const message = ngettext(\"%(likes)s like\", \"%(likes)s likes\", likesCount)\n\n title = interpolate(message, { likes: likesCount }, true)\n }\n\n return (\n <div className={\"modal-dialog \" + (className || \"\")} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{title}</h4>\n </div>\n {children}\n </div>\n </div>\n )\n}\n\nexport function LikesList(props) {\n return (\n <div className=\"modal-body modal-post-likers\">\n <ul className=\"media-list\">\n {props.likes.map((like) => {\n return <LikeDetails key={like.id} {...like} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function LikeDetails(props) {\n if (props.url) {\n const user = {\n id: props.liker_id,\n avatars: props.avatars,\n }\n\n return (\n <li className=\"media\">\n <div className=\"media-left\">\n <a className=\"user-avatar\" href={props.url}>\n <Avatar size=\"50\" user={user} />\n </a>\n </div>\n <div className=\"media-body\">\n <a className=\"item-title\" href={props.url}>\n {props.username}\n </a>{\" \"}\n <LikeDate likedOn={props.liked_on} />\n </div>\n </li>\n )\n }\n\n return (\n <li className=\"media\">\n <div className=\"media-left\">\n <span className=\"user-avatar\">\n <Avatar size=\"50\" />\n </span>\n </div>\n <div className=\"media-body\">\n <strong>{props.username}</strong> <LikeDate likedOn={props.liked_on} />\n </div>\n </li>\n )\n}\n\nexport function LikeDate(props) {\n return (\n <span className=\"text-muted\" title={props.likedOn.format(\"LLL\")}>\n {props.likedOn.fromNow()}\n </span>\n )\n}\n","import React from \"react\"\nimport * as actions from \"./controls/actions\"\nimport LikesModal from \"misago/components/post-likes\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\n\nexport default function (props) {\n if (!isVisible(props.post)) return null\n\n return (\n <div className=\"post-footer\">\n <MarkAsBestAnswer {...props} />\n <MarkAsBestAnswerCompact {...props} />\n <Like {...props} />\n <Likes\n lastLikes={props.post.last_likes}\n likes={props.post.likes}\n {...props}\n />\n <LikesCompact likes={props.post.likes} {...props} />\n <Reply {...props} />\n <Edit {...props} />\n </div>\n )\n}\n\nexport function isVisible(post) {\n return (\n (!post.is_hidden || post.acl.can_see_hidden) &&\n (post.acl.can_reply ||\n post.acl.can_edit ||\n (post.acl.can_see_likes && (post.last_likes || []).length) ||\n post.acl.can_like)\n )\n}\n\nexport class MarkAsBestAnswer extends React.Component {\n onClick = () => {\n actions.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <button\n className=\"hidden-xs btn btn-default btn-sm pull-left\"\n disabled={this.props.post.isBusy || post.id === thread.best_answer}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Best answer\")}\n </button>\n )\n }\n}\n\nexport class MarkAsBestAnswerCompact extends React.Component {\n onClick = () => {\n actions.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <button\n className=\"visible-xs-inline-block btn btn-default btn-sm pull-left\"\n disabled={this.props.post.isBusy || post.id === thread.best_answer}\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">check_box</span>\n </button>\n )\n }\n}\n\nexport class Like extends React.Component {\n onClick = () => {\n if (this.props.post.is_liked) {\n actions.unlike(this.props)\n } else {\n actions.like(this.props)\n }\n }\n\n render() {\n if (!this.props.post.acl.can_like) return null\n\n let className = \"btn btn-default btn-sm pull-left\"\n if (this.props.post.is_liked) {\n className = \"btn btn-success btn-sm pull-left\"\n }\n\n return (\n <button\n className={className}\n disabled={this.props.post.isBusy}\n onClick={this.onClick}\n type=\"button\"\n >\n {this.props.post.is_liked ? gettext(\"Liked\") : gettext(\"Like\")}\n </button>\n )\n }\n}\n\nexport class Likes extends React.Component {\n onClick = () => {\n modal.show(<LikesModal post={this.props.post} />)\n }\n\n render() {\n const hasLikes = (this.props.post.last_likes || []).length > 0\n if (!this.props.post.acl.can_see_likes || !hasLikes) return null\n\n if (this.props.post.acl.can_see_likes === 2) {\n return (\n <button\n className=\"btn btn-link btn-sm pull-left hidden-xs\"\n onClick={this.onClick}\n type=\"button\"\n >\n {getLikesMessage(this.props.likes, this.props.lastLikes)}\n </button>\n )\n }\n\n return (\n <p className=\"pull-left hidden-xs\">\n {getLikesMessage(this.props.likes, this.props.lastLikes)}\n </p>\n )\n }\n}\n\nexport class LikesCompact extends Likes {\n render() {\n const hasLikes = (this.props.post.last_likes || []).length > 0\n if (!this.props.post.acl.can_see_likes || !hasLikes) return null\n\n if (this.props.post.acl.can_see_likes === 2) {\n return (\n <button\n className=\"btn btn-link btn-sm likes-compact pull-left visible-xs-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">favorite</span>\n {this.props.likes}\n </button>\n )\n }\n\n return (\n <p className=\"likes-compact pull-left visible-xs-block\">\n <span className=\"material-icon\">favorite</span>\n {this.props.likes}\n </p>\n )\n }\n}\n\nexport function getLikesMessage(likes, users) {\n const usernames = users.slice(0, 3).map((u) => u.username)\n\n if (usernames.length == 1) {\n return interpolate(\n gettext(\"%(user)s likes this.\"),\n {\n user: usernames[0],\n },\n true\n )\n }\n\n const hiddenLikes = likes - usernames.length\n\n const otherUsers = usernames.slice(0, -1).join(\", \")\n const lastUser = usernames.slice(-1)[0]\n\n const usernamesList = interpolate(\n gettext(\"%(users)s and %(last_user)s\"),\n {\n users: otherUsers,\n last_user: lastUser,\n },\n true\n )\n\n if (hiddenLikes === 0) {\n return interpolate(\n gettext(\"%(users)s like this.\"),\n {\n users: usernamesList,\n },\n true\n )\n }\n\n const message = ngettext(\n \"%(users)s and %(likes)s other user like this.\",\n \"%(users)s and %(likes)s other users like this.\",\n hiddenLikes\n )\n\n return interpolate(\n message,\n {\n users: usernames.join(\", \"),\n likes: hiddenLikes,\n },\n true\n )\n}\n\nexport class Reply extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"REPLY\",\n\n config: this.props.thread.api.editor,\n submit: this.props.thread.api.posts.index,\n\n context: {\n reply: this.props.post.id,\n },\n })\n }\n\n render() {\n if (this.props.post.acl.can_reply) {\n return (\n <button\n className=\"btn btn-primary btn-sm pull-right\"\n type=\"button\"\n onClick={this.onClick}\n >\n {gettext(\"Reply\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"EDIT\",\n\n config: this.props.post.api.editor,\n submit: this.props.post.api.index,\n })\n }\n\n render() {\n if (this.props.post.acl.can_edit) {\n return (\n <button\n className=\"hidden-xs btn btn-default btn-sm pull-right\"\n type=\"button\"\n onClick={this.onClick}\n >\n {gettext(\"Edit\")}\n </button>\n )\n } else {\n return null\n }\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.move, {\n new_thread: this.state.url,\n posts: [this.props.post.id],\n })\n }\n\n handleSuccess(success) {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected post was moved to the other thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to move post to\")}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Move post\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move post\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className=\"modal-body post-changelog-diff\">\n <ul className=\"list-unstyled\">\n {props.diff.map((item, i) => {\n return <DiffItem item={item} key={i} />\n })}\n </ul>\n </div>\n )\n}\n\nexport function DiffItem(props) {\n if (props.item[0] === \"?\") return null\n\n return (\n <li className={getItemClassName(props.item)}>{cleanItem(props.item)}</li>\n )\n}\n\nexport function getItemClassName(item) {\n let className = \"diff-item\"\n if (item[0] === \"-\") {\n className += \" diff-item-sub\"\n } else if (item[0] === \"+\") {\n className += \" diff-item-add\"\n }\n return className\n}\n\nexport function cleanItem(item) {\n return item.substr(2)\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\n\nexport default class extends React.Component {\n onClick = () => {\n this.props.revertEdit(this.props.edit.id)\n }\n\n render() {\n if (!this.props.canRevert) return null\n\n return (\n <div className=\"modal-footer visible-xs-block\">\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={gettext(\"Revert post to state from before this edit.\")}\n >\n {gettext(\"Revert\")}\n </Button>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default class extends React.Component {\n goLast = () => {\n this.props.goToEdit()\n }\n\n goForward = () => {\n this.props.goToEdit(this.props.edit.next)\n }\n\n goBack = () => {\n this.props.goToEdit(this.props.edit.previous)\n }\n\n revertEdit = () => {\n this.props.revertEdit(this.props.edit.id)\n }\n\n render() {\n return (\n <div className=\"modal-toolbar post-changelog-toolbar\">\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-4\">\n <div className=\"row\">\n <div className=\"col-xs-4\">\n <GoBackBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goBack}\n />\n </div>\n <div className=\"col-xs-4\">\n <GoForwardBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goForward}\n />\n </div>\n <div className=\"col-xs-4\">\n <GoLastBtn\n disabled={this.props.disabled}\n edit={this.props.edit}\n onClick={this.goLast}\n />\n </div>\n </div>\n </div>\n <div className=\"col-xs-12 col-sm-5 xs-margin-top-half post-change-label\">\n <Label edit={this.props.edit} />\n </div>\n <RevertBtn\n canRevert={this.props.canRevert}\n disabled={this.props.disabled}\n onClick={this.revertEdit}\n />\n </div>\n </div>\n )\n }\n}\n\nexport function GoBackBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.previous}\n onClick={props.onClick}\n title={gettext(\"See previous change\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Button>\n )\n}\n\nexport function GoForwardBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.next}\n onClick={props.onClick}\n title={gettext(\"See next change\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Button>\n )\n}\n\nexport function GoLastBtn(props) {\n return (\n <Button\n className=\"btn-default btn-block btn-icon btn-sm\"\n disabled={props.disabled || !props.edit.next}\n onClick={props.onClick}\n title={gettext(\"See previous change\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Button>\n )\n}\n\nexport function RevertBtn(props) {\n if (!props.canRevert) return null\n\n return (\n <div className=\"col-sm-3 hidden-xs\">\n <Button\n className=\"btn-default btn-sm btn-block\"\n disabled={props.disabled}\n onClick={props.onClick}\n title={gettext(\"Revert post to state from before this edit.\")}\n >\n {gettext(\"Revert\")}\n </Button>\n </div>\n )\n}\n\nexport function Label(props) {\n let user = null\n if (props.edit.url.editor) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.edit.url.editor),\n user: escapeHtml(props.edit.editor_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.edit.editor_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.edit.edited_on.format(\"LLL\")),\n relative: escapeHtml(props.edit.edited_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(gettext(\"By %(edited_by)s %(edited_on)s.\")),\n {\n edited_by: user,\n edited_on: date,\n },\n true\n )\n\n return <p dangerouslySetInnerHTML={{ __html: message }} />\n}\n","import moment from \"moment\"\n\nexport function hydrateEdit(json) {\n return Object.assign({}, json, {\n edited_on: moment(json.edited_on),\n })\n}\n","import React from \"react\"\nimport Diff from \"./diff\"\nimport Footer from \"./footer\"\nimport Toolbar from \"./toolbar\"\nimport { hydrateEdit } from \"./utils\"\nimport Message from \"misago/components/modal-message\"\nimport Loader from \"misago/components/modal-loader\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isBusy: true,\n\n canRevert: props.post.acl.can_edit,\n\n error: null,\n edit: null,\n }\n }\n\n componentDidMount() {\n this.goToEdit()\n }\n\n goToEdit = (edit = null) => {\n this.setState({\n isBusy: true,\n })\n\n let url = this.props.post.api.edits\n if (edit !== null) {\n url += \"?edit=\" + edit\n }\n\n ajax.get(url).then(\n (data) => {\n this.setState({\n isReady: true,\n isBusy: false,\n edit: hydrateEdit(data),\n })\n },\n (rejection) => {\n this.setState({\n isReady: true,\n isBusy: false,\n error: rejection.detail,\n })\n }\n )\n }\n\n revertEdit = (edit) => {\n if (this.state.isBusy) return\n\n const confirmation = window.confirm(\n gettext(\n \"Are you sure you with to revert this post to the state from before this edit?\"\n )\n )\n if (!confirmation) return\n\n this.setState({\n isBusy: true,\n })\n\n const url = this.props.post.api.edits + \"?edit=\" + edit\n ajax.post(url).then(\n (data) => {\n const hydratedPost = post.hydrate(data)\n store.dispatch(post.patch(data, hydratedPost))\n\n snackbar.success(gettext(\"Post has been reverted to previous state.\"))\n modal.hide()\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n this.setState({\n isBusy: false,\n })\n }\n )\n }\n\n render() {\n if (this.state.error) {\n return (\n <ModalDialog className=\"modal-dialog modal-message\">\n <Message message={this.state.error} />\n </ModalDialog>\n )\n } else if (this.state.isReady) {\n return (\n <ModalDialog>\n <Toolbar\n canRevert={this.state.canRevert}\n disabled={this.state.isBusy}\n edit={this.state.edit}\n goToEdit={this.goToEdit}\n revertEdit={this.revertEdit}\n />\n <Diff diff={this.state.edit.diff} />\n <Footer\n canRevert={this.state.canRevert}\n disabled={this.state.isBusy}\n edit={this.state.edit}\n revertEdit={this.revertEdit}\n />\n </ModalDialog>\n )\n }\n\n return (\n <ModalDialog>\n <Loader />\n </ModalDialog>\n )\n }\n}\n\nexport function ModalDialog(props) {\n return (\n <div className={props.className || \"modal-dialog\"} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Post edits history\")}</h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport Select from \"misago/components/select\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default function (props) {\n return <PostingConfig {...props} Form={ModerationForm} />\n}\n\nexport class PostingConfig extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isError: false,\n\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n post: item.post,\n })\n })\n\n this.setState({\n isLoaded: true,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.isError) {\n return <Error message={this.state.isError} />\n } else if (this.state.isLoaded) {\n return (\n <ModerationForm {...this.props} categories={this.state.categories} />\n )\n } else {\n return <Loader />\n }\n }\n}\n\nexport class ModerationForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n categories: props.categories,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.acl = {}\n this.props.categories.forEach((category) => {\n if (category.post) {\n if (!this.state.category) {\n this.state.category = category.id\n }\n\n this.acl[category.id] = {\n can_pin_threads: category.post.pin,\n can_close_threads: category.post.close,\n can_hide_threads: category.post.hide,\n }\n }\n })\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.split, {\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n posts: [this.props.post.id],\n })\n }\n\n handleSuccess(apiResponse) {\n store.dispatch(\n post.patch(this.props.post, {\n isDeleted: true,\n })\n )\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected post was split into new thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup\n label={gettext(\"Thread weight\")}\n for=\"id_weight\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup\n label={gettext(\"Hide thread\")}\n for=\"id_is_hidden\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup\n label={gettext(\"Close thread\")}\n for=\"id_is_closed\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <Modal className=\"modal-dialog\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.state.categories}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Split post\")}\n </Button>\n </div>\n </form>\n </Modal>\n )\n }\n}\n\nexport function Loader() {\n return (\n <Modal className=\"modal-dialog\">\n <ModalLoader />\n </Modal>\n )\n}\n\nexport function Error(props) {\n return (\n <Modal className=\"modal-dialog modal-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move this post at the moment.\")}\n </p>\n <p>{props.message}</p>\n </div>\n </Modal>\n )\n}\n\nexport function Modal(props) {\n return (\n <div className={props.className} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">\n {gettext(\"Split post into new thread\")}\n </h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport modal from \"misago/services/modal\"\nimport posting from \"misago/services/posting\"\nimport * as moderation from \"./actions\"\nimport MoveModal from \"./move\"\nimport PostChangelog from \"misago/components/post-changelog\"\nimport SplitModal from \"./split\"\n\nexport default function (props) {\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <Permalink {...props} />\n <Edit {...props} />\n <MarkAsBestAnswer {...props} />\n <UnmarkMarkBestAnswer {...props} />\n <PostEdits {...props} />\n <Approve {...props} />\n <Move {...props} />\n <Split {...props} />\n <Protect {...props} />\n <Unprotect {...props} />\n <Hide {...props} />\n <Unhide {...props} />\n <Delete {...props} />\n </ul>\n )\n}\n\nexport class Permalink extends React.Component {\n onClick = () => {\n let permaUrl = window.location.protocol + \"//\"\n permaUrl += window.location.host\n permaUrl += this.props.post.url.index\n\n prompt(gettext(\"Permament link to this post:\"), permaUrl)\n }\n\n render() {\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">link</span>\n {gettext(\"Permament link\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Edit extends React.Component {\n onClick = () => {\n posting.open({\n mode: \"EDIT\",\n\n config: this.props.post.api.editor,\n submit: this.props.post.api.index,\n })\n }\n\n render() {\n if (!this.props.post.acl.can_edit) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">edit</span>\n {gettext(\"Edit\")}\n </button>\n </li>\n )\n }\n}\n\nexport class MarkAsBestAnswer extends React.Component {\n onClick = () => {\n moderation.markAsBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (!thread.acl.can_mark_best_answer) return null\n if (!post.acl.can_mark_as_best_answer) return null\n if (post.id === thread.best_answer) return null\n if (thread.best_answer && !thread.acl.can_change_best_answer) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Mark as best answer\")}\n </button>\n </li>\n )\n }\n}\n\nexport class UnmarkMarkBestAnswer extends React.Component {\n onClick = () => {\n moderation.unmarkBestAnswer(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id !== thread.best_answer) return null\n if (!thread.acl.can_unmark_best_answer) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">check_box_outline_blank</span>\n {gettext(\"Unmark best answer\")}\n </button>\n </li>\n )\n }\n}\n\nexport class PostEdits extends React.Component {\n onClick = () => {\n modal.show(<PostChangelog post={this.props.post} />)\n }\n\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const message = ngettext(\n \"This post was edited %(edits)s time.\",\n \"This post was edited %(edits)s times.\",\n this.props.post.edits\n )\n\n const title = interpolate(\n message,\n {\n edits: this.props.post.edits,\n },\n true\n )\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">edit</span>\n {gettext(\"Changes history\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Approve extends React.Component {\n onClick = () => {\n moderation.approve(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_approve) return null\n if (!this.props.post.is_unapproved) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Move extends React.Component {\n onClick = () => {\n modal.show(<MoveModal {...this.props} />)\n }\n\n render() {\n if (!this.props.post.acl.can_move) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Split extends React.Component {\n onClick = () => {\n modal.show(<SplitModal {...this.props} />)\n }\n\n render() {\n if (!this.props.post.acl.can_move) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">call_split</span>\n {gettext(\"Split\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Protect extends React.Component {\n onClick = () => {\n moderation.protect(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_protect) return null\n if (this.props.post.is_protected) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Protect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unprotect extends React.Component {\n onClick = () => {\n moderation.unprotect(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_protect) return null\n if (!this.props.post.is_protected) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Remove protection\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n moderation.hide(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id === thread.best_answer) return null\n if (!post.acl.can_hide) return null\n if (post.is_hidden) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n moderation.unhide(this.props)\n }\n\n render() {\n if (!this.props.post.acl.can_unhide) return null\n if (!this.props.post.is_hidden) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n moderation.remove(this.props)\n }\n\n render() {\n const { post, thread } = this.props\n\n if (post.id === thread.best_answer) return null\n if (!post.acl.can_delete) return null\n\n return (\n <li>\n <button className=\"btn btn-link\" onClick={this.onClick} type=\"button\">\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport Dropdown from \"./dropdown\"\n\nexport default function (props) {\n return (\n <div className=\"pull-right dropdown\">\n <button\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n className=\"btn btn-default btn-icon dropdown-toggle\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">expand_more</span>\n </button>\n <Dropdown {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport * as posts from \"misago/reducers/posts\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n onClick = () => {\n if (this.props.post.isSelected) {\n store.dispatch(posts.deselect(this.props.post))\n } else {\n store.dispatch(posts.select(this.props.post))\n }\n }\n\n render() {\n if (\n !(this.props.thread.acl.can_merge_posts || isVisible(this.props.post.acl))\n ) {\n return null\n }\n\n return (\n <div className=\"pull-right\">\n <button\n className=\"btn btn-default btn-icon\"\n onClick={this.onClick}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {this.props.post.isSelected\n ? \"check_box\"\n : \"check_box_outline_blank\"}\n </span>\n </button>\n </div>\n )\n }\n}\n\nexport function isVisible(acl) {\n return (\n acl.can_approve ||\n acl.can_hide ||\n acl.can_protect ||\n acl.can_unhide ||\n acl.can_delete ||\n acl.can_move\n )\n}\n","import React from \"react\"\nimport Controls from \"./controls\"\nimport Select from \"./select\"\nimport {\n StatusIcon,\n getStatusClassName,\n getStatusDescription,\n} from \"misago/components/user-status\"\nimport PostChangelog from \"misago/components/post-changelog\"\nimport modal from \"misago/services/modal\"\n\nexport default function (props) {\n return (\n <div className=\"post-heading\">\n <UnreadLabel {...props} />\n <UnreadCompact {...props} />\n <PostedOn {...props} />\n <PostedOnCompact {...props} />\n <PostEdits {...props} />\n <PostEditsCompacts {...props} />\n <ProtectedLabel {...props} />\n <Select {...props} />\n <Controls {...props} />\n </div>\n )\n}\n\nexport function UnreadLabel(props) {\n if (props.post.is_read) return null\n\n return (\n <span className=\"label label-unread hidden-xs\">{gettext(\"New post\")}</span>\n )\n}\n\nexport function UnreadCompact(props) {\n if (props.post.is_read) return null\n\n return (\n <span className=\"label label-unread visible-xs-inline-block\">\n {gettext(\"New\")}\n </span>\n )\n}\n\nexport function PostedOn(props) {\n const tooltip = interpolate(\n gettext(\"posted %(posted_on)s\"),\n {\n posted_on: props.post.posted_on.format(\"LL, LT\"),\n },\n true\n )\n\n return (\n <a\n href={props.post.url.index}\n className=\"btn btn-link posted-on hidden-xs\"\n title={tooltip}\n >\n {props.post.posted_on.fromNow()}\n </a>\n )\n}\n\nexport function PostedOnCompact(props) {\n return (\n <a\n href={props.post.url.index}\n className=\"btn btn-link posted-on visible-xs-inline-block\"\n >\n {props.post.posted_on.fromNow()}\n </a>\n )\n}\n\nexport class PostEdits extends React.Component {\n onClick = () => {\n modal.show(<PostChangelog post={this.props.post} />)\n }\n\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const tooltip = ngettext(\n \"This post was edited %(edits)s time.\",\n \"This post was edited %(edits)s times.\",\n this.props.post.edits\n )\n\n const title = interpolate(\n tooltip,\n {\n edits: this.props.post.edits,\n },\n true\n )\n\n const label = ngettext(\n \"edited %(edits)s time\",\n \"edited %(edits)s times\",\n this.props.post.edits\n )\n\n return (\n <button\n className=\"btn btn-link btn-see-edits hidden-xs\"\n onClick={this.onClick}\n title={title}\n type=\"button\"\n >\n {interpolate(\n label,\n {\n edits: this.props.post.edits,\n },\n true\n )}\n </button>\n )\n }\n}\n\nexport class PostEditsCompacts extends PostEdits {\n render() {\n const isHidden =\n this.props.post.is_hidden && !this.props.post.acl.can_see_hidden\n const isUnedited = this.props.post.edits === 0\n if (isHidden || isUnedited) return null\n\n const label = ngettext(\n \"%(edits)s edit\",\n \"%(edits)s edits\",\n this.props.post.edits\n )\n\n return (\n <button\n className=\"btn btn-link btn-see-edits visible-xs-inline-block\"\n onClick={this.onClick}\n type=\"button\"\n >\n {interpolate(\n label,\n {\n edits: this.props.post.edits,\n },\n true\n )}\n </button>\n )\n }\n}\n\nexport function ProtectedLabel(props) {\n const postAuthor = props.post.poster && props.post.poster.id === props.user.id\n const hasAcl = props.post.acl.can_protect\n const isVisible =\n props.user.id && props.post.is_protected && (postAuthor || hasAcl)\n\n if (!isVisible) {\n return null\n }\n\n return (\n <span\n className=\"label label-protected hidden-xs\"\n title={gettext(\"This post is protected and may not be edited.\")}\n >\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"protected\")}\n </span>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Controls from \"misago/components/posts-list/post/controls\"\nimport Select from \"misago/components/posts-list/post/select\"\n\nexport default function ({ post, thread }) {\n return (\n <div className=\"post-side post-side-anonymous\">\n <Select post={post} thread={thread} />\n <Controls post={post} thread={thread} />\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size={100} />\n </span>\n </div>\n <div className=\"media-body\">\n <span className=\"media-heading item-title\">{post.poster_name}</span>\n\n <span className=\"user-title user-title-anonymous\">\n {gettext(\"Removed user\")}\n </span>\n </div>\n </div>\n </div>\n )\n}\n","export default function ({ title, rank }) {\n return rank.is_tab || !!title || !!rank.title\n}\n","import React from \"react\"\nimport hasVisibleTitle from \"./has-visible-title\"\n\nexport default function ({ poster }) {\n const message = ngettext(\"%(posts)s post\", \"%(posts)s posts\", poster.posts)\n\n let className = \"user-postcount\"\n if (hasVisibleTitle(poster)) {\n className += \" hidden-xs hidden-sm\"\n }\n\n return (\n <span className={className}>\n {interpolate(\n message,\n {\n posts: poster.posts,\n },\n true\n )}\n </span>\n )\n}\n","import React from \"react\"\nimport UserStatus, { StatusLabel } from \"misago/components/user-status\"\nimport hasVisibleTitle from \"./has-visible-title\"\n\nexport default function ({ poster }) {\n let className = \"hidden-xs\"\n if (hasVisibleTitle(poster)) {\n className += \" hidden-sm\"\n }\n\n return (\n <span className={className}>\n <UserStatus status={poster.status}>\n <StatusLabel status={poster.status} user={poster} />\n </UserStatus>\n </span>\n )\n}\n","import React from \"react\"\n\nexport default function ({ rank, title }) {\n let userTitle = title || rank.title\n if (!userTitle && rank.is_tab) {\n userTitle = rank.name\n }\n\n if (!userTitle) return null\n\n let className = \"user-title\"\n if (rank.css_class) {\n className += \" user-title-\" + rank.css_class\n }\n\n if (rank.is_tab) {\n return (\n <div className={className}>\n <a href={rank.url}>{userTitle}</a>\n </div>\n )\n }\n\n return <div className={className}>{userTitle}</div>\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Controls from \"misago/components/posts-list/post/controls\"\nimport Select from \"misago/components/posts-list/post/select\"\nimport UserStatus, { StatusIcon } from \"misago/components/user-status\"\nimport UserPostcount from \"./user-postcount\"\nimport UserStatusLabel from \"./user-status\"\nimport UserTitle from \"./user-title\"\n\nexport default function ({ post, thread }) {\n const { poster } = post\n\n return (\n <div className=\"post-side post-side-registered\">\n <Select post={post} thread={thread} />\n <Controls post={post} thread={thread} />\n <div className=\"media\">\n <div className=\"media-left\">\n <a href={poster.url}>\n <Avatar className=\"poster-avatar\" size={100} user={poster} />\n </a>\n </div>\n <div className=\"media-body\">\n <div className=\"media-heading\">\n <a className=\"item-title\" href={poster.url}>\n {poster.username}\n </a>\n <UserStatus status={poster.status}>\n <StatusIcon status={poster.status} />\n </UserStatus>\n </div>\n\n <UserTitle rank={poster.rank} title={poster.title} />\n\n <UserStatusLabel poster={poster} />\n <UserPostcount poster={poster} />\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport Anonymous from \"./anonymous\"\nimport Registered from \"./registered\"\n\nexport default function (props) {\n if (props.post.poster) {\n return <Registered {...props} />\n }\n\n return <Anonymous {...props} />\n}\n","import React from \"react\"\nimport Attachments from \"./attachments\"\nimport Body from \"./body\"\nimport {\n FlagBestAnswer,\n FlagHidden,\n FlagUnapproved,\n FlagProtected,\n} from \"./flags\"\nimport Footer from \"./footer\"\nimport Header from \"./header\"\nimport PostSide from \"./post-side\"\n\nexport default function (props) {\n let className = \"post\"\n if (props.post.isDeleted) {\n className = \"hide\"\n } else if (props.post.is_hidden && !props.post.acl.can_see_hidden) {\n className = \"post post-hidden\"\n }\n\n if (props.post.poster && props.post.poster.rank.css_class) {\n className += \" post-\" + props.post.poster.rank.css_class\n }\n\n if (!props.post.is_read) {\n className += \" post-new\"\n }\n\n return (\n <li id={\"post-\" + props.post.id} className={className}>\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <PostSide {...props} />\n <div className=\"panel-content\">\n <Header {...props} />\n <FlagBestAnswer {...props} />\n <FlagUnapproved {...props} />\n <FlagProtected {...props} />\n <FlagHidden {...props} />\n <Body {...props} />\n <Attachments {...props} />\n <Footer {...props} />\n </div>\n </div>\n </div>\n </li>\n )\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nconst PostPreview = () => (\n <li className=\"post\">\n <div className=\"panel panel-default panel-post\">\n <div className=\"panel-body\">\n <div className=\"post-side post-side-registered\">\n <div className=\"media\">\n <div className=\"media-left\">\n <span>\n <Avatar className=\"poster-avatar\" size=\"100\" />\n </span>\n </div>\n <div className=\"media-body\">\n <span className=\"media-heading item-title\">\n <span className=\"ui-preview-text\" style={{ width: \"80px\" }}>\n \n </span>\n </span>\n <span className=\"user-title user-title-anonymous\">\n <span className=\"ui-preview-text\" style={{ width: \"60px\" }}>\n \n </span>\n </span>\n </div>\n </div>\n </div>\n <div className=\"panel-content\">\n <div className=\"post-body\">\n <article className=\"misago-markup\">\n <p className=\"ui-preview-text\" style={{ width: \"100%\" }}>\n \n </p>\n <p className=\"ui-preview-text\" style={{ width: \"70%\" }}>\n \n </p>\n <p\n className=\"ui-preview-text hidden-xs hidden-sm\"\n style={{ width: \"85%\" }}\n >\n \n </p>\n </article>\n </div>\n </div>\n </div>\n </div>\n </li>\n)\n\nexport default PostPreview\n","import React from \"react\"\nimport Event from \"./event\"\nimport Post from \"./post\"\nimport PostPreview from \"./post/preview\"\n\nexport default function (props) {\n if (!props.posts.isLoaded) {\n return (\n <ul className=\"posts-list ui-preview\">\n <PostPreview />\n </ul>\n )\n }\n\n return (\n <ul className=\"posts-list ui-ready\">\n {props.posts.results.map((post) => {\n return <ListItem key={post.id} post={post} {...props} />\n })}\n </ul>\n )\n}\n\nexport function ListItem(props) {\n if (props.post.is_event) {\n return <Event {...props} />\n }\n\n return <Post {...props} />\n}\n","import React from \"react\"\nimport Avatar from \"./avatar\"\n\nconst ThreadStarterCard = ({ thread }) => (\n <div className=\"thread-user-card\">\n <div className=\"thread-user-card-media\">\n {thread.starter ? (\n <a href={thread.url.starter}>\n <Avatar size={40} user={thread.starter} />\n </a>\n ) : (\n <Avatar size={40} />\n )}\n </div>\n <div className=\"thread-user-card-body\">\n <div className=\"thread-user-card-header\">\n {thread.starter ? (\n <a\n className=\"item-title\"\n href={thread.url.starter}\n title={gettext(\"Thread author\")}\n >\n {thread.starter.username}\n </a>\n ) : (\n <span className=\"item-title\" title={gettext(\"Thread author\")}>\n {thread.starter_name}\n </span>\n )}\n </div>\n <div>\n <span\n className=\"text-muted\"\n title={interpolate(\n gettext(\"Started on: %(timestamp)s\"),\n {\n timestamp: thread.started_on.format(\"LLL\"),\n },\n true\n )}\n >\n {thread.started_on.fromNow()}\n </span>\n </div>\n </div>\n </div>\n)\n\nexport default ThreadStarterCard\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport { getTitleValidators } from \"misago/components/posting/utils/validators\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: props.thread.title,\n\n validators: {\n title: getTitleValidators(),\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n return true\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.patch(this.props.thread.api.index, [\n { op: \"replace\", path: \"title\", value: this.state.title },\n ])\n }\n\n handleSuccess = (data) => {\n this.handleSuccessUnmounted(data)\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n\n modal.hide()\n }\n\n handleSuccessUnmounted = (data) => {\n store.dispatch(thread.release())\n store.dispatch(thread.update(data))\n }\n\n handleError = (rejection) => {\n store.dispatch(thread.release())\n\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_modal_title\" label={gettext(\"Thread title\")}>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_modal_title\"\n onChange={this.onChange}\n value={this.state.title}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Change title\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change title\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport MergeConflict from \"misago/components/merge-conflict\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.post(this.props.thread.api.merge, {\n other_thread: this.state.url,\n })\n }\n\n handleSuccess = (success) => {\n this.handleSuccessUnmounted(success)\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleSuccessUnmounted = (success) => {\n snackbar.success(gettext(\"Thread has been merged with other one.\"))\n window.location = success.url\n }\n\n handleError = (rejection) => {\n store.dispatch(thread.release())\n\n if (rejection.status === 400) {\n if (rejection.best_answers || rejection.polls) {\n modal.show(\n <MergeConflict\n api={this.props.thread.api.merge}\n bestAnswers={rejection.best_answers}\n data={{ other_thread: this.state.url }}\n polls={rejection.polls}\n onError={this.handleError}\n onSuccess={this.handleSuccessUnmounted}\n />\n )\n } else if (rejection.best_answer) {\n snackbar.error(rejection.best_answer[0])\n } else if (rejection.poll) {\n snackbar.error(rejection.poll[0])\n } else {\n snackbar.error(rejection.detail)\n }\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to merge with\")}\n help_text={gettext(\n \"Merge will delete current thread and move its contents to the thread specified here.\"\n )}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Merge thread\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge thread\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport * as posts from \"misago/reducers/posts\"\nimport * as thread from \"misago/reducers/thread\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isError: false,\n\n category: null,\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n let category = null\n\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n // pick first category that allows posting and if it may, override it with initial one\n if (item.post !== false && !category) {\n category = item.id\n }\n\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n })\n })\n\n this.setState({\n isReady: true,\n\n category,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n send() {\n // freeze thread\n store.dispatch(thread.busy())\n\n return ajax.patch(this.props.thread.api.index, [\n { op: \"replace\", path: \"category\", value: this.state.category },\n ])\n }\n\n handleSuccess() {\n // refresh thread and displayed posts\n ajax\n .get(this.props.thread.api.posts.index, { page: this.props.posts.page })\n .then(\n (data) => {\n store.dispatch(thread.replace(data))\n store.dispatch(posts.load(data.post_set))\n store.dispatch(thread.release())\n\n snackbar.success(gettext(\"Thread has been moved.\"))\n modal.hide()\n },\n (rejection) => {\n store.dispatch(thread.release())\n snackbar.apiError(rejection)\n }\n )\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (event) => {\n this.changeValue(\"category\", event.target.value)\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup for=\"id_category\" label={gettext(\"New category\")}>\n <CategorySelect\n choices={this.state.categories}\n disabled={this.state.isLoading || this.props.thread.isBusy}\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading || this.props.thread.isBusy}\n >\n {gettext(\"Move thread\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n } else if (this.state.isError) {\n return <ModalMessage message={this.state.isError} />\n } else {\n return <ModalLoading />\n }\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move thread\")}</h4>\n </div>\n )\n}\n\nexport function ModalLoading(props) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <ModalHeader />\n <ModalLoader />\n </div>\n </div>\n )\n}\n\nexport function ModalMessage(props) {\n return (\n <div className=\"modal-dialog modal-message\" role=\"document\">\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move this thread at the moment.\")}\n </p>\n <p>{props.message}</p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport ThreadChangeTitleModal from \"./ThreadChangeTitleModal\"\nimport MergeModal from \"./merge\"\nimport MoveModal from \"./move\"\n\nexport default class extends React.Component {\n callApi = (ops, successMessage) => {\n store.dispatch(thread.busy())\n\n // by the chance update thread acl too\n ops.push({ op: \"add\", path: \"acl\", value: true })\n\n ajax.patch(this.props.thread.api.index, ops).then(\n (data) => {\n store.dispatch(thread.update(data))\n store.dispatch(thread.release())\n snackbar.success(successMessage)\n },\n (rejection) => {\n store.dispatch(thread.release())\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n changeTitle = () => {\n modal.show(<ThreadChangeTitleModal thread={this.props.thread} />)\n }\n\n pinGlobally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 2,\n },\n ],\n gettext(\"Thread has been pinned globally.\")\n )\n }\n\n pinLocally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 1,\n },\n ],\n gettext(\"Thread has been pinned locally.\")\n )\n }\n\n unpin = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 0,\n },\n ],\n gettext(\"Thread has been unpinned.\")\n )\n }\n\n approve = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-unapproved\",\n value: false,\n },\n ],\n gettext(\"Thread has been approved.\")\n )\n }\n\n open = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: false,\n },\n ],\n gettext(\"Thread has been opened.\")\n )\n }\n\n close = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: true,\n },\n ],\n gettext(\"Thread has been closed.\")\n )\n }\n\n unhide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: false,\n },\n ],\n gettext(\"Thread has been made visible.\")\n )\n }\n\n hide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: true,\n },\n ],\n gettext(\"Thread has been made hidden.\")\n )\n }\n\n move = () => {\n modal.show(\n <MoveModal posts={this.props.posts} thread={this.props.thread} />\n )\n }\n\n merge = () => {\n modal.show(<MergeModal thread={this.props.thread} />)\n }\n\n delete = () => {\n if (\n !window.confirm(gettext(\"Are you sure you want to delete this thread?\"))\n ) {\n return\n }\n\n store.dispatch(thread.busy())\n\n ajax.delete(this.props.thread.api.index).then(\n (data) => {\n snackbar.success(gettext(\"Thread has been deleted.\"))\n window.location = this.props.thread.category.url.index\n },\n (rejection) => {\n store.dispatch(thread.release())\n snackbar.apiError(rejection)\n }\n )\n }\n\n render() {\n const { moderation } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n {!!moderation.edit && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.changeTitle}\n type=\"button\"\n >\n <span className=\"material-icon\">edit</span>\n {gettext(\"Change title\")}\n </button>\n </li>\n )}\n {!!moderation.pinGlobally && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.pinGlobally}\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark</span>\n {gettext(\"Pin globally\")}\n </button>\n </li>\n )}\n {!!moderation.pinLocally && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.pinLocally}\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark_border</span>\n {gettext(\"Pin locally\")}\n </button>\n </li>\n )}\n {!!moderation.unpin && (\n <li>\n <button className=\"btn btn-link\" onClick={this.unpin} type=\"button\">\n <span className=\"material-icon\">panorama_fish_eye</span>\n {gettext(\"Unpin\")}\n </button>\n </li>\n )}\n {!!moderation.move && (\n <li>\n <button className=\"btn btn-link\" onClick={this.move} type=\"button\">\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )}\n {!!moderation.merge && (\n <li>\n <button className=\"btn btn-link\" onClick={this.merge} type=\"button\">\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge\")}\n </button>\n </li>\n )}\n {!!moderation.approve && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.approve}\n type=\"button\"\n >\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )}\n {!!moderation.open && (\n <li>\n <button className=\"btn btn-link\" onClick={this.open} type=\"button\">\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Open\")}\n </button>\n </li>\n )}\n {!!moderation.close && (\n <li>\n <button className=\"btn btn-link\" onClick={this.close} type=\"button\">\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Close\")}\n </button>\n </li>\n )}\n {!!moderation.unhide && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.unhide}\n type=\"button\"\n >\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )}\n {!!moderation.hide && (\n <li>\n <button className=\"btn btn-link\" onClick={this.hide} type=\"button\">\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )}\n {!!moderation.delete && (\n <li>\n <button\n className=\"btn btn-link\"\n onClick={this.delete}\n type=\"button\"\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import ThreadModerationOptions from \"./controls\"\n\nexport default ThreadModerationOptions\n","import React from \"react\"\nimport ThreadModerationOptions from \"./moderation/thread\"\n\nconst ThreadModeration = ({ thread, posts, moderation }) => (\n <div className=\"dropdown\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Thread options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={thread.isBusy}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ThreadModerationOptions\n thread={thread}\n posts={posts}\n moderation={moderation}\n />\n </div>\n)\n\nexport default ThreadModeration\n","import classnames from \"classnames\"\nimport React from \"react\"\nimport * as actions from \"../../reducers/thread\"\nimport ajax from \"../../services/ajax\"\nimport snackbar from \"../../services/snackbar\"\nimport store from \"../../services/store\"\n\nconst ThreadSubscriptionButton = ({ stickToBottom, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-outline btn-block\"\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">{getIcon(thread.subscription)}</span>\n {getLabel(thread.subscription)}\n </button>\n <ul\n className={classnames(\"dropdown-menu dropdown-menu-right\", {\n \"stick-to-bottom\": stickToBottom,\n })}\n >\n <li>\n <button className=\"btn btn-link\" onClick={() => unsubscribe(thread)}>\n <span className=\"material-icon\">star_border</span>\n {gettext(\"Unsubscribe\")}\n </button>\n </li>\n <li>\n <button className=\"btn btn-link\" onClick={() => alert(thread)}>\n <span className=\"material-icon\">star_half</span>\n {gettext(\"Subscribe\")}\n </button>\n </li>\n <li>\n <button className=\"btn btn-link\" onClick={() => email(thread)}>\n <span className=\"material-icon\">star</span>\n {gettext(\"Subscribe with e-mail\")}\n </button>\n </li>\n </ul>\n </div>\n)\n\nfunction getIcon(subscription) {\n if (subscription === true) return \"star\"\n if (subscription === false) return \"star_half\"\n\n return \"star_border\"\n}\n\nfunction getLabel(subscription) {\n if (subscription === true) return gettext(\"E-mail\")\n if (subscription === false) return gettext(\"Enabled\")\n\n return gettext(\"Disabled\")\n}\n\nfunction alert(thread) {\n if (thread.subscription !== false) {\n update(thread, false, \"notify\")\n }\n}\n\nfunction email(thread) {\n if (thread.subscription !== true) {\n update(thread, true, \"email\")\n }\n}\n\nfunction unsubscribe(thread) {\n if (thread.subscription !== null) {\n update(thread, null, \"unsubscribe\")\n }\n}\n\nfunction update(thread, newState, value) {\n const oldState = {\n subscription: thread.subscription,\n }\n\n store.dispatch(\n actions.update({\n subscription: newState,\n })\n )\n\n ajax\n .patch(thread.api.index, [\n { op: \"replace\", path: \"subscription\", value: value },\n ])\n .then(\n (finalState) => {\n store.dispatch(actions.update(finalState))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail[0])\n } else {\n snackbar.apiError(rejection)\n }\n\n store.dispatch(actions.update(oldState))\n }\n )\n}\n\nexport default ThreadSubscriptionButton\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst Breadcrumbs = ({ children, className }) => (\n <ul className={classnames(\"breadcrumbs\", className)}>{children}</ul>\n)\n\nexport default Breadcrumbs\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst BreadcrumbsCategory = ({ category, className }) => (\n <li className={classnames(\"breadcrumbs-item\", className)}>\n <a href={category.url.index}>\n <span\n className=\"material-icon\"\n style={{ color: category.color || \"inherit\" }}\n >\n label\n </span>\n {!!category.short_name && (\n <span\n className=\"breadcrumbs-item-name hidden-sm hidden-md hidden-lg\"\n title={category.name}\n >\n {category.short_name}\n </span>\n )}\n {!!category.short_name && (\n <span className=\"breadcrumbs-item-name hidden-xs\">{category.name}</span>\n )}\n {!category.short_name && (\n <span className=\"breadcrumbs-item-name\">{category.name}</span>\n )}\n </a>\n </li>\n)\n\nexport default BreadcrumbsCategory\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst BreadcrumbsRootCategory = ({ category, className }) => (\n <li className={classnames(\"breadcrumbs-item\", className)}>\n <a href={category.url.index}>\n <span className=\"material-icon\">chevron_right</span>\n <span className=\"breadcrumbs-item-name\">\n {category.special_role === \"root_category\"\n ? gettext(\"Threads\")\n : gettext(\"Private threads\")}\n </span>\n </a>\n </li>\n)\n\nexport default BreadcrumbsRootCategory\n","import React from \"react\"\nimport {\n Breadcrumbs,\n BreadcrumbsCategory,\n BreadcrumbsRootCategory,\n} from \"../../Breadcrumbs\"\n\nconst ThreadHeaderBreadcrumbs = ({ breadcrumbs }) => (\n <Breadcrumbs>\n {breadcrumbs.map((category) =>\n category.special_role ? (\n <BreadcrumbsRootCategory key={category.id} category={category} />\n ) : (\n <BreadcrumbsCategory key={category.id} category={category} />\n )\n )}\n </Breadcrumbs>\n)\n\nexport default ThreadHeaderBreadcrumbs\n","import ThreadHeader from \"./ThreadHeader\"\n\nexport default ThreadHeader\n","import React from \"react\"\nimport { FlexRow, FlexRowCol, FlexRowSection } from \"../../FlexRow\"\nimport ThreadFlags from \"../../ThreadFlags\"\nimport ThreadReplies from \"../../ThreadReplies\"\nimport ThreadStarterCard from \"../../ThreadStarterCard\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n PageHeaderDetails,\n} from \"../../PageHeader\"\nimport ThreadModeration from \"../ThreadModeration\"\nimport ThreadSubscriptionButton from \"../ThreadSubscriptionButton\"\nimport ThreadHeaderBreadcrumbs from \"./ThreadHeaderBreadcrumbs\"\n\nconst ThreadHeader = ({ styleName, thread, posts, user, moderation }) => (\n <PageHeaderContainer>\n <PageHeader styleName={styleName}>\n <PageHeaderBanner styleName={styleName}>\n <ThreadHeaderBreadcrumbs breadcrumbs={thread.path} />\n <h1>{thread.title}</h1>\n </PageHeaderBanner>\n <PageHeaderDetails className=\"page-header-thread-details\">\n <FlexRow>\n <FlexRowSection auto>\n <FlexRowCol shrink>\n <ThreadStarterCard thread={thread} />\n </FlexRowCol>\n <FlexRowCol auto />\n {thread.replies > 0 && (\n <FlexRowCol shrink>\n <ThreadReplies thread={thread} />\n </FlexRowCol>\n )}\n {hasFlags(thread) && (\n <FlexRowCol shrink>\n <ThreadFlags thread={thread} />\n </FlexRowCol>\n )}\n </FlexRowSection>\n {user.is_authenticated && (\n <FlexRowSection>\n <FlexRowCol>\n <ThreadSubscriptionButton thread={thread} />\n </FlexRowCol>\n {moderation.enabled && (\n <FlexRowCol shrink>\n <ThreadModeration\n thread={thread}\n posts={posts}\n moderation={moderation}\n />\n </FlexRowCol>\n )}\n </FlexRowSection>\n )}\n </FlexRow>\n </PageHeaderDetails>\n </PageHeader>\n </PageHeaderContainer>\n)\n\nconst hasFlags = (thread) => {\n return (\n thread.is_closed ||\n thread.is_hidden ||\n thread.is_unapproved ||\n thread.weight > 0 ||\n thread.best_answer ||\n thread.has_poll ||\n thread.has_unapproved_posts\n )\n}\n\nexport default ThreadHeader\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadPagination = ({ baseUrl, posts }) => (\n <div className=\"misago-pagination\">\n {posts.isLoaded && posts.first ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl}\n title={gettext(\"Go to first page\")}\n >\n <span className=\"material-icon\">first_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to first page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">first_page</span>\n </button>\n )}\n {posts.isLoaded && posts.previous ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + (posts.previous > 1 ? posts.previous + \"/\" : \"\")}\n title={gettext(\"Go to previous page\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to previous page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_left</span>\n </button>\n )}\n {posts.isLoaded && posts.next ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + posts.next + \"/\"}\n title={gettext(\"Go to next page\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to next page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_right</span>\n </button>\n )}\n {posts.isLoaded && posts.last ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + posts.last + \"/\"}\n title={gettext(\"Go to last page\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to last page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">last_page</span>\n </button>\n )}\n </div>\n)\n\nexport default ThreadPagination\n","import React from \"react\"\n\nconst ThreadPostsLeft = ({ posts }) => {\n if (posts.more) {\n return (\n <p>\n {interpolate(\n ngettext(\n \"There is %(more)s more post in this thread.\",\n \"There are %(more)s more posts in this thread.\",\n posts.more\n ),\n { more: posts.more },\n true\n )}\n </p>\n )\n }\n\n return <p>{gettext(\"There are no more posts in this thread.\")}</p>\n}\n\nexport default ThreadPostsLeft\n","import React from \"react\"\n\nexport default function ({ errors, posts }) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Moderation\")}</h4>\n </div>\n <div className=\"modal-body\">\n <p className=\"lead\">\n {gettext(\"One or more posts could not be changed:\")}\n </p>\n\n <ul className=\"list-unstyled list-errored-items\">\n {errors.map((post) => {\n return (\n <PostErrors\n errors={post.detail}\n key={post.id}\n post={posts[post.id]}\n />\n )\n })}\n </ul>\n </div>\n </div>\n </div>\n )\n}\n\nexport function PostErrors({ errors, post }) {\n const heading = interpolate(\n gettext(\"%(username)s on %(posted_on)s\"),\n {\n posted_on: post.posted_on.format(\"LL, LT\"),\n username: post.poster_name,\n },\n true\n )\n\n return (\n <li>\n <h5>{heading}:</h5>\n {errors.map((error, i) => {\n return <p key={i}>{error}</p>\n })}\n </li>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport * as post from \"misago/reducers/post\"\nimport * as posts from \"misago/reducers/posts\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport ErrorsList from \"./errors-list\"\n\nexport function approve(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-unapproved\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_unapproved: false,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_unapproved: post.is_unapproved,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function protect(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: true }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: true,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: post.is_protected,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function unprotect(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-protected\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: false,\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_protected: post.is_protected,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function hide(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: true }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: true,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(post.url, {\n hidden_by: props.user.url,\n }),\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: post.is_hidden,\n hidden_on: post.hidden_on,\n hidden_by_name: post.hidden_by_name,\n url: post.url,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function unhide(props) {\n const { selection } = props\n\n const ops = [{ op: \"replace\", path: \"is-hidden\", value: false }]\n\n const newState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: false,\n hidden_on: moment(),\n hidden_by_name: props.user.username,\n url: Object.assign(post.url, {\n hidden_by: props.user.url,\n }),\n }\n })\n\n const previousState = selection.map((post) => {\n return {\n id: post.id,\n is_hidden: post.is_hidden,\n hidden_on: post.hidden_on,\n hidden_by_name: post.hidden_by_name,\n url: post.url,\n }\n })\n\n patch(props, ops, newState, previousState)\n}\n\nexport function patch(props, ops, newState, previousState) {\n const { selection, thread } = props\n\n // patch selected items\n newState.forEach((item) => {\n post.patch(item, item)\n })\n\n // deselect all the things\n store.dispatch(posts.deselectAll())\n\n // call ajax\n const data = {\n ops,\n\n ids: selection.map((post) => {\n return post.id\n }),\n }\n\n ajax.patch(thread.api.posts.index, data).then(\n (data) => {\n data.forEach((item) => {\n store.dispatch(post.patch(item, item))\n })\n },\n (rejection) => {\n if (rejection.status !== 400) {\n // rollback all\n previousState.forEach((item) => {\n store.dispatch(post.patch(item, item))\n })\n return snackbar.apiError(rejection)\n }\n\n let errors = []\n let rollback = []\n\n rejection.forEach((item) => {\n if (item.detail) {\n errors.push(item)\n rollback.push(item.id)\n } else {\n store.dispatch(post.patch(item, item))\n }\n\n previousState.forEach((item) => {\n if (rollback.indexOf(item) !== -1) {\n store.dispatch(post.patch(item, item))\n }\n })\n })\n\n let posts = {}\n selection.forEach((item) => {\n posts[item.id] = item\n })\n\n modal.show(<ErrorsList errors={errors} posts={posts} />)\n }\n )\n}\n\nexport function merge(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to merge selected posts? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n props.selection.slice(1).map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n ajax\n .post(props.thread.api.posts.merge, {\n posts: props.selection.map((post) => post.id),\n })\n .then(\n (data) => {\n store.dispatch(post.patch(data, post.hydrate(data)))\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n props.selection.slice(1).map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: false,\n })\n )\n })\n }\n )\n\n store.dispatch(posts.deselectAll())\n}\n\nexport function remove(props) {\n let confirmed = window.confirm(\n gettext(\n \"Are you sure you want to delete selected posts? This action is not reversible!\"\n )\n )\n if (!confirmed) {\n return\n }\n\n props.selection.map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n const ids = props.selection.map((post) => {\n return post.id\n })\n\n ajax.delete(props.thread.api.posts.index, ids).then(\n () => {\n return\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n props.selection.map((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: false,\n })\n )\n })\n }\n )\n\n store.dispatch(posts.deselectAll())\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n url: \"\",\n\n validators: {\n url: [],\n },\n errors: {},\n }\n }\n\n clean() {\n if (!this.state.url.trim().length) {\n snackbar.error(gettext(\"You have to enter link to the other thread.\"))\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.move, {\n new_thread: this.state.url,\n posts: this.props.selection.map((post) => post.id),\n })\n }\n\n handleSuccess(success) {\n this.props.selection.forEach((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected posts were moved to the other thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onUrlChange = (event) => {\n this.changeValue(\"url\", event.target.value)\n }\n\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-content\">\n <ModalHeader />\n <div className=\"modal-body\">\n <FormGroup\n for=\"id_url\"\n label={gettext(\"Link to thread you want to move posts to\")}\n >\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n id=\"id_url\"\n onChange={this.onUrlChange}\n value={this.state.url}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button\n className=\"btn btn-primary\"\n disabled={this.state.isLoading}\n >\n {gettext(\"Move posts\")}\n </button>\n </div>\n </div>\n </form>\n </div>\n )\n }\n}\n\nexport function ModalHeader(props) {\n return (\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move posts\")}</h4>\n </div>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport ModalLoader from \"misago/components/modal-loader\"\nimport Select from \"misago/components/select\"\nimport * as post from \"misago/reducers/post\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\nimport ErrorsModal from \"./errors-list\"\n\nexport default function (props) {\n return <PostingConfig {...props} Form={ModerationForm} />\n}\n\nexport class PostingConfig extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoaded: false,\n isError: false,\n\n categories: [],\n }\n }\n\n componentDidMount() {\n ajax.get(misago.get(\"THREAD_EDITOR_API\")).then(\n (data) => {\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n post: item.post,\n })\n })\n\n this.setState({\n isLoaded: true,\n categories,\n })\n },\n (rejection) => {\n this.setState({\n isError: rejection.detail,\n })\n }\n )\n }\n\n render() {\n if (this.state.isError) {\n return <Error message={this.state.isError} />\n } else if (this.state.isLoaded) {\n return (\n <ModerationForm {...this.props} categories={this.state.categories} />\n )\n } else {\n return <Loader />\n }\n }\n}\n\nexport class ModerationForm extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n categories: props.categories,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.acl = {}\n this.props.categories.forEach((category) => {\n if (category.post) {\n if (!this.state.category) {\n this.state.category = category.id\n }\n\n this.acl[category.id] = {\n can_pin_threads: category.post.pin,\n can_close_threads: category.post.close,\n can_hide_threads: category.post.hide,\n }\n }\n })\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(this.props.thread.api.posts.split, {\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n posts: this.props.selection.map((post) => post.id),\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.selection.forEach((selection) => {\n store.dispatch(\n post.patch(selection, {\n isDeleted: true,\n })\n )\n })\n\n modal.hide()\n\n snackbar.success(gettext(\"Selected posts were split into new thread.\"))\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n } else if (rejection.status === 403 && Array.isArray(rejection)) {\n modal.show(<ErrorsModal errors={rejection} />)\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup\n label={gettext(\"Thread weight\")}\n for=\"id_weight\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup\n label={gettext(\"Hide thread\")}\n for=\"id_is_hidden\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup\n label={gettext(\"Close thread\")}\n for=\"id_is_closed\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n >\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n render() {\n return (\n <Modal className=\"modal-dialog\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n labelClass=\"col-sm-4\"\n controlClass=\"col-sm-8\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.state.categories}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Split posts\")}\n </Button>\n </div>\n </form>\n </Modal>\n )\n }\n}\n\nexport function Loader() {\n return (\n <Modal className=\"modal-dialog\">\n <ModalLoader />\n </Modal>\n )\n}\n\nexport function Error(props) {\n return (\n <Modal className=\"modal-dialog modal-message\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\"You can't move selected posts at the moment.\")}\n </p>\n <p>{props.message}</p>\n <button className=\"btn btn-default\" data-dismiss=\"modal\" type=\"button\">\n {gettext(\"Ok\")}\n </button>\n </div>\n </Modal>\n )\n}\n\nexport function Modal(props) {\n return (\n <div className={props.className} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">\n {gettext(\"Split posts into new thread\")}\n </h4>\n </div>\n {props.children}\n </div>\n </div>\n )\n}\n","import React from \"react\"\nimport modal from \"misago/services/modal\"\nimport * as moderation from \"./actions\"\nimport MoveModal from \"./move\"\nimport SplitModal from \"./split\"\n\nexport default function (props) {\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <Approve {...props} />\n <Merge {...props} />\n <Move {...props} />\n <Split {...props} />\n <Protect {...props} />\n <Unprotect {...props} />\n <Unhide {...props} />\n <Hide {...props} />\n <Delete {...props} />\n </ul>\n )\n}\n\nexport class Approve extends React.Component {\n onClick = () => {\n moderation.approve(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_approve && post.is_unapproved\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Merge extends React.Component {\n onClick = () => {\n moderation.merge(this.props)\n }\n\n render() {\n const isVisible =\n this.props.selection.length > 1 &&\n this.props.selection.find((post) => {\n return post.acl.can_merge\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Move extends React.Component {\n onClick = () => {\n modal.show(<MoveModal {...this.props} />)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_move\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Split extends React.Component {\n onClick = () => {\n modal.show(<SplitModal {...this.props} />)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_move\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">call_split</span>\n {gettext(\"Split\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Protect extends React.Component {\n onClick = () => {\n moderation.protect(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return !post.is_protected && post.acl.can_protect\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Protect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unprotect extends React.Component {\n onClick = () => {\n moderation.unprotect(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.is_protected && post.acl.can_protect\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Unprotect\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Hide extends React.Component {\n onClick = () => {\n moderation.hide(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_hide && !post.is_hidden\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Unhide extends React.Component {\n onClick = () => {\n moderation.unhide(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_unhide && post.is_hidden\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide\")}\n </button>\n </li>\n )\n }\n}\n\nexport class Delete extends React.Component {\n onClick = () => {\n moderation.remove(this.props)\n }\n\n render() {\n const isVisible = this.props.selection.find((post) => {\n return post.acl.can_delete\n })\n\n if (!isVisible) return null\n\n return (\n <li>\n <button type=\"button\" className=\"btn btn-link\" onClick={this.onClick}>\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete\")}\n </button>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport { ThreadPostsModerationOptions } from \"./moderation/posts\"\n\nconst ThreadPostsModeration = ({ thread, user, selection, dropup }) => (\n <div className={dropup ? \"dropup\" : \"dropdown\"}>\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Posts options\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={selection.length === 0}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ThreadPostsModerationOptions\n thread={thread}\n user={user}\n selection={selection}\n />\n </div>\n)\n\nexport default ThreadPostsModeration\n","import React from \"react\"\n\nconst ThreadReplyButton = ({ onClick }) => (\n <button\n className=\"btn btn-primary btn-outline btn-block\"\n type=\"button\"\n onClick={onClick}\n >\n <span className=\"material-icon\">chat</span>\n {gettext(\"Reply\")}\n </button>\n)\n\nexport default ThreadReplyButton\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadPagination from \"./ThreadPagination\"\nimport ThreadPostsLeft from \"./ThreadPostsLeft\"\nimport ThreadPostsModeration from \"./ThreadPostsModeration\"\nimport ThreadReplyButton from \"./ThreadReplyButton\"\nimport ThreadSubscriptionButton from \"./ThreadSubscriptionButton\"\n\nconst ThreadToolbarBottom = ({\n thread,\n posts,\n user,\n selection,\n moderation,\n onReply,\n}) => (\n <Toolbar>\n <ToolbarSection>\n <ToolbarItem>\n <ThreadPagination baseUrl={thread.url.index} posts={posts} />\n </ToolbarItem>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n dropup\n />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection className=\"hidden-xs hidden-sm\" auto>\n <ToolbarItem>\n <ThreadPostsLeft posts={posts} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSpacer className=\"hidden-md hidden-lg\" />\n {user.is_authenticated && (\n <ToolbarSection>\n <ToolbarItem>\n <ThreadSubscriptionButton thread={thread} />\n </ToolbarItem>\n {thread.acl.can_reply && (\n <ToolbarItem>\n <ThreadReplyButton onClick={onReply} />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem className=\"hidden-xs\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n dropup\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadToolbarBottom\n","import classnames from \"classnames\"\nimport React from \"react\"\n\nconst ThreadPollButton = ({ compact, onClick }) => (\n <button\n className={classnames(\"btn btn-default btn-outline\", {\n \"btn-block\": !compact,\n \"btn-icon\": compact,\n })}\n type=\"button\"\n title={compact ? gettext(\"Add poll\") : null}\n onClick={onClick}\n >\n <span className=\"material-icon\">poll</span>\n {!compact && gettext(\"Add poll\")}\n </button>\n)\n\nexport default ThreadPollButton\n","import React from \"react\"\n\nconst ThreadShortcutsButton = ({ user, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Shortcuts\")}\n aria-expanded=\"true\"\n aria-haspopup=\"true\"\n data-toggle=\"dropdown\"\n type=\"button\"\n >\n <span className=\"material-icon\">bookmark</span>\n </button>\n <ul className=\"dropdown-menu\">\n {user.is_authenticated && thread.is_new && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.new_post}>\n <span className=\"material-icon\">comment</span>\n {gettext(\"Go to new post\")}\n </a>\n </li>\n )}\n {thread.best_answer && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.best_answer}>\n <span className=\"material-icon\">check_circle</span>\n {gettext(\"Go to best answer\")}\n </a>\n </li>\n )}\n {thread.has_unapproved_posts && thread.acl.can_approve && (\n <li>\n <a className=\"btn btn-link\" href={thread.url.unapproved_post}>\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Go to unapproved post\")}\n </a>\n </li>\n )}\n <li>\n <a className=\"btn btn-link\" href={thread.url.last_post}>\n <span className=\"material-icon\">reply</span>\n {gettext(\"Go to last post\")}\n </a>\n </li>\n </ul>\n </div>\n)\n\nexport default ThreadShortcutsButton\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadPagination from \"./ThreadPagination\"\nimport ThreadPollButton from \"./ThreadPollButton\"\nimport ThreadPostsModeration from \"./ThreadPostsModeration\"\nimport ThreadReplyButton from \"./ThreadReplyButton\"\nimport ThreadShortcutsButton from \"./ThreadShortcutsButton\"\n\nconst ThreadToolbarTop = ({\n thread,\n posts,\n user,\n selection,\n moderation,\n onPoll,\n onReply,\n}) => (\n <Toolbar>\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n <ToolbarItem className=\"hidden-xs hidden-sm\">\n <ThreadPagination baseUrl={thread.url.index} posts={posts} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSpacer />\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadPollButton onClick={onPoll} />\n </ToolbarItem>\n </ToolbarSection>\n )}\n {thread.acl.can_reply ? (\n <ToolbarSection>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n <ToolbarItem>\n <ThreadReplyButton onClick={onReply} />\n </ToolbarItem>\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadPollButton onClick={onPoll} compact />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem className=\"hidden-xs\" shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n ) : (\n <ToolbarSection>\n <ToolbarItem className=\"hidden-sm hidden-md hidden-lg\" shrink>\n <ThreadShortcutsButton thread={thread} user={user} />\n </ToolbarItem>\n {thread.acl.can_start_poll && !thread.poll && (\n <ToolbarItem>\n <ThreadPollButton onClick={onPoll} />\n </ToolbarItem>\n )}\n {moderation.enabled && (\n <ToolbarItem shrink>\n <ThreadPostsModeration\n thread={thread}\n user={user}\n selection={selection}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadToolbarTop\n","import React from \"react\"\nimport Participants from \"misago/components/participants\"\nimport { Poll } from \"misago/components/poll\"\nimport PostsList from \"misago/components/posts-list\"\nimport * as participants from \"misago/reducers/participants\"\nimport * as poll from \"misago/reducers/poll\"\nimport * as posts from \"misago/reducers/posts\"\nimport * as thread from \"misago/reducers/thread\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\nimport snackbar from \"misago/services/snackbar\"\nimport posting from \"misago/services/posting\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport PageContainer from \"../PageContainer\"\nimport ThreadHeader from \"./ThreadHeader\"\nimport ThreadToolbarBottom from \"./ThreadToolbarBottom\"\nimport ThreadToolbarTop from \"./ThreadToolbarTop\"\n\nexport default class extends React.Component {\n componentDidMount() {\n if (this.shouldFetchData()) {\n this.fetchData()\n this.setPageTitle()\n }\n\n this.startPollingApi()\n }\n\n componentDidUpdate() {\n if (this.shouldFetchData()) {\n this.fetchData()\n this.startPollingApi()\n this.setPageTitle()\n }\n }\n\n componentWillUnmount() {\n this.stopPollingApi()\n }\n\n shouldFetchData() {\n if (this.props.posts.isLoaded) {\n const page = (this.props.params.page || 1) * 1\n return page != this.props.posts.page\n } else {\n return false\n }\n }\n\n fetchData() {\n store.dispatch(posts.unload())\n\n ajax\n .get(\n this.props.thread.api.posts.index,\n {\n page: this.props.params.page || 1,\n },\n \"posts\"\n )\n .then(\n (data) => {\n this.update(data)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n startPollingApi() {\n polls.start({\n poll: \"thread-posts\",\n\n url: this.props.thread.api.posts.index,\n data: {\n page: this.props.params.page || 1,\n },\n update: this.update,\n\n frequency: 120 * 1000,\n delayed: true,\n })\n }\n\n stopPollingApi() {\n polls.stop(\"thread-posts\")\n }\n\n setPageTitle() {\n title.set({\n title: this.props.thread.title,\n parent: this.props.thread.category.name,\n page: (this.props.params.page || 1) * 1,\n })\n }\n\n update = (data) => {\n store.dispatch(thread.replace(data))\n store.dispatch(posts.load(data.post_set))\n\n if (data.participants) {\n store.dispatch(participants.replace(data.participants))\n }\n\n if (data.poll) {\n store.dispatch(poll.replace(data.poll))\n }\n\n this.setPageTitle()\n }\n\n openPollForm = () => {\n posting.open({\n mode: \"POLL\",\n submit: this.props.thread.api.poll,\n\n thread: this.props.thread,\n poll: null,\n })\n }\n\n openReplyForm = () => {\n posting.open({\n mode: \"REPLY\",\n\n config: this.props.thread.api.editor,\n submit: this.props.thread.api.posts.index,\n })\n }\n\n render() {\n const category = this.props.thread.category\n\n let className = \"page page-thread\"\n if (category.css_class) {\n className += \" page-thread-\" + category.css_class\n }\n\n const styleName =\n category.special_role === \"private_threads\"\n ? \"private-threads\"\n : category.css_class || \"category-threads\"\n\n const threadModeration = getThreadModeration(\n this.props.thread,\n this.props.user\n )\n\n const postsModeration = getPostsModeration(\n this.props.posts.results,\n this.props.user\n )\n const selection = this.props.posts.results.filter((post) => post.isSelected)\n\n return (\n <div className={className}>\n <ThreadHeader\n styleName={styleName}\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n moderation={threadModeration}\n />\n <PageContainer>\n <Participants\n participants={this.props.participants}\n thread={this.props.thread}\n user={this.props.user}\n />\n <ThreadToolbarTop\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n selection={selection}\n moderation={postsModeration}\n onPoll={this.openPollForm}\n onReply={this.openReplyForm}\n />\n <Poll\n poll={this.props.poll}\n thread={this.props.thread}\n user={this.props.user}\n />\n <PostsList {...this.props} />\n <ThreadToolbarBottom\n thread={this.props.thread}\n posts={this.props.posts}\n user={this.props.user}\n selection={selection}\n moderation={postsModeration}\n onReply={this.openReplyForm}\n />\n </PageContainer>\n </div>\n )\n }\n}\n\nconst getThreadModeration = (thread, user) => {\n const moderation = {\n enabled: false,\n edit: false,\n approve: false,\n close: false,\n open: false,\n hide: false,\n unhide: false,\n move: false,\n merge: false,\n pinGlobally: false,\n pinLocally: false,\n unpin: false,\n delete: false,\n }\n\n if (!user.is_authenticated) return moderation\n\n moderation.edit = thread.acl.can_edit\n moderation.approve = thread.acl.can_approve && thread.is_unapproved\n moderation.close = thread.acl.can_close && !thread.is_closed\n moderation.open = thread.acl.can_close && thread.is_closed\n moderation.hide = thread.acl.can_hide && !thread.is_hidden\n moderation.unhide = thread.acl.can_unhide && thread.is_hidden\n moderation.move = thread.acl.can_move\n moderation.merge = thread.acl.can_merge\n moderation.pinGlobally = thread.acl.can_pin_globally && thread.weight < 2\n moderation.pinLocally = thread.acl.can_pin && thread.weight !== 1\n moderation.unpin =\n (thread.acl.can_pin && thread.weight === 1) ||\n (thread.acl.can_pin_globally && thread.weight === 2)\n moderation.delete = thread.acl.can_delete\n\n moderation.enabled =\n moderation.edit ||\n moderation.approve ||\n moderation.close ||\n moderation.open ||\n moderation.hide ||\n moderation.unhide ||\n moderation.move ||\n moderation.merge ||\n moderation.pinGlobally ||\n moderation.pinLocally ||\n moderation.unpin ||\n moderation.delete\n\n return moderation\n}\n\nconst getPostsModeration = (posts, user) => {\n const moderation = {\n enabled: false,\n approve: false,\n move: false,\n merge: false,\n protect: false,\n hide: false,\n delete: false,\n }\n\n if (!user.is_authenticated) return moderation\n\n posts.forEach((post) => {\n if (!post.is_event) {\n if (post.acl.can_approve && post.is_unapproved) {\n moderation.approve = true\n }\n if (post.acl.can_move) moderation.move = true\n if (post.acl.can_merge) moderation.merge = true\n if (post.acl.can_protect || post.acl.can_unprotect) {\n moderation.protect = true\n }\n if (post.acl.can_hide || post.acl.can_unhide) {\n moderation.hide = true\n }\n if (post.acl.can_delete) moderation.delete = true\n\n if (\n moderation.approve ||\n moderation.move ||\n moderation.merge ||\n moderation.protect ||\n moderation.hide ||\n moderation.delete\n ) {\n moderation.enabled = true\n }\n }\n })\n\n return moderation\n}\n","import { connect } from \"react-redux\"\nimport Route from \"misago/components/thread/route\"\nimport misago from \"misago/index\"\n\nexport function select(store) {\n return {\n participants: store.participants,\n poll: store.poll,\n posts: store.posts,\n thread: store.thread,\n tick: store.tick.tick,\n user: store.auth.user,\n }\n}\n\nexport function paths() {\n const thread = misago.get(\"THREAD\")\n const basePath = thread.url.index.replace(\n thread.slug + \"-\" + thread.pk,\n \":slug\"\n )\n\n return [\n {\n path: basePath,\n component: connect(select)(Route),\n },\n {\n path: basePath + \":page/\",\n component: connect(select)(Route),\n },\n ]\n}\n","import { paths } from \"misago/components/thread/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"THREAD\") && context.has(\"POSTS\")) {\n mount({\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:thread\",\n initializer: initializer,\n after: \"store\",\n})\n","export function compareLastPostAge(a, b) {\n if (a.last_post > b.last_post) {\n return -1\n } else if (a.last_post < b.last_post) {\n return 1\n } else {\n return 0\n }\n}\n\nexport function compareGlobalWeight(a, b) {\n if (a.weight === 2 && a.weight > b.weight) {\n return -1\n } else if (b.weight === 2 && a.weight < b.weight) {\n return 1\n } else {\n return compareLastPostAge(a, b)\n }\n}\n\nexport function compareWeight(a, b) {\n if (a.weight > b.weight) {\n return -1\n } else if (a.weight < b.weight) {\n return 1\n } else {\n return compareLastPostAge(a, b)\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadsCategoryPicker = ({\n allItems,\n parentUrl,\n category,\n categories,\n list,\n}) => (\n <div className=\"dropdown threads-category-picker\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline dropdown-toggle btn-block text-ellipsis\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {category && (\n <span\n className=\"material-icon\"\n style={{ color: category.color || \"inherit\" }}\n >\n label\n </span>\n )}\n {category && category.short_name && (\n <span className={category.short_name && \"hidden-md hidden-lg\"}>\n {category.short_name}\n </span>\n )}\n {category ? (\n <span className={category.short_name && \"hidden-xs hidden-sm\"}>\n {category.name}\n </span>\n ) : (\n allItems\n )}\n </button>\n <ul className=\"dropdown-menu\">\n <li>\n <Link to={parentUrl + list.path}>{allItems}</Link>\n </li>\n <li role=\"separator\" className=\"divider\" />\n {categories.map((choice) => (\n <li key={choice.id}>\n <Link to={choice.url.index + list.path}>\n <span\n className=\"material-icon\"\n style={{ color: choice.color || \"inherit\" }}\n >\n label\n </span>\n {choice.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n)\n\nexport default ThreadsCategoryPicker\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst ThreadsListPicker = ({ baseUrl, list, lists }) => (\n <div className=\"dropdown threads-list-picker\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline dropdown-toggle btn-block\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n {list.longName}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {lists.map((choice) => (\n <li key={choice.type}>\n <Link to={baseUrl + choice.path}>{choice.longName}</Link>\n </li>\n ))}\n </ul>\n </div>\n)\n\nexport default ThreadsListPicker\n","import React from \"react\"\n\nexport default class extends React.Component {\n render() {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Threads moderation\")}</h4>\n </div>\n <div className=\"modal-body\">\n <p className=\"lead\">\n {gettext(\"One or more threads could not be deleted:\")}\n </p>\n\n <ul className=\"list-unstyled list-errored-items\">\n {this.props.errors.map((item) => {\n return (\n <ThreadErrors\n errors={item.errors}\n key={item.thread.id}\n thread={item.thread}\n />\n )\n })}\n </ul>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport function ThreadErrors({ errors, thread }) {\n return (\n <li>\n <h5>{thread.title}</h5>\n {errors.map((message, i) => {\n return <p>{message}</p>\n })}\n </li>\n )\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport Select from \"misago/components/select\"\nimport misago from \"misago/index\"\nimport { filterThreads } from \"misago/reducers/threads\"\nimport * as select from \"misago/reducers/selection\"\nimport ErrorsModal from \"misago/components/threads/moderation/errors-list\"\nimport MergeConflict from \"misago/components/merge-conflict\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport * as validators from \"misago/utils/validators\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n\n title: \"\",\n category: null,\n weight: 0,\n is_hidden: 0,\n is_closed: false,\n\n validators: {\n title: [validators.required()],\n },\n\n errors: {},\n }\n\n this.acl = {}\n for (const i in props.user.acl.categories) {\n if (!props.user.acl.categories.hasOwnProperty(i)) {\n continue\n }\n\n const acl = props.user.acl.categories[i]\n this.acl[acl.id] = acl\n }\n\n this.categoryChoices = []\n props.categories.forEach((category) => {\n if (category.level > 0) {\n const acl = this.acl[category.id]\n const disabled =\n !acl.can_start_threads ||\n (category.is_closed && !acl.can_close_threads)\n\n this.categoryChoices.push({\n value: category.id,\n disabled: disabled,\n level: category.level - 1,\n label: category.name,\n })\n\n if (!disabled && !this.state.category) {\n this.state.category = category.id\n }\n }\n })\n\n this.isHiddenChoices = [\n {\n value: 0,\n icon: \"visibility\",\n label: gettext(\"No\"),\n },\n {\n value: 1,\n icon: \"visibility_off\",\n label: gettext(\"Yes\"),\n },\n ]\n\n this.isClosedChoices = [\n {\n value: false,\n icon: \"lock_outline\",\n label: gettext(\"No\"),\n },\n {\n value: true,\n icon: \"lock\",\n label: gettext(\"Yes\"),\n },\n ]\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"MERGE_THREADS_API\"), this.getFormdata())\n }\n\n getFormdata = () => {\n return {\n threads: this.props.threads.map((thread) => thread.id),\n title: this.state.title,\n category: this.state.category,\n weight: this.state.weight,\n is_hidden: this.state.is_hidden,\n is_closed: this.state.is_closed,\n }\n }\n\n handleSuccess = (apiResponse) => {\n // unfreeze and remove merged threads\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n this.props.deleteThread(thread)\n })\n\n // deselect all threads\n store.dispatch(select.none())\n\n // append merged thread, filter threads\n this.props.addThreads([apiResponse])\n store.dispatch(\n filterThreads(this.props.route.category, this.props.categoriesMap)\n )\n\n // hide modal\n modal.hide()\n }\n\n handleError = (rejection) => {\n if (rejection.status === 400) {\n if (rejection.best_answers || rejection.polls) {\n modal.show(\n <MergeConflict\n api={misago.get(\"MERGE_THREADS_API\")}\n bestAnswers={rejection.best_answers}\n data={this.getFormdata()}\n polls={rejection.polls}\n onError={this.handleError}\n onSuccess={this.handleSuccess}\n />\n )\n } else {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n snackbar.error(gettext(\"Form contains errors.\"))\n }\n } else if (rejection.status === 403 && Array.isArray(rejection)) {\n modal.show(<ErrorsModal errors={rejection} />)\n } else if (rejection.best_answer) {\n snackbar.error(rejection.best_answer[0])\n } else if (rejection.poll) {\n snackbar.error(rejection.poll[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n onCategoryChange = (ev) => {\n const categoryId = ev.target.value\n const newState = {\n category: categoryId,\n }\n\n if (this.acl[categoryId].can_pin_threads < newState.weight) {\n newState.weight = 0\n }\n\n if (!this.acl[categoryId].can_hide_threads) {\n newState.is_hidden = 0\n }\n\n if (!this.acl[categoryId].can_close_threads) {\n newState.is_closed = false\n }\n\n this.setState(newState)\n }\n\n getWeightChoices() {\n const choices = [\n {\n value: 0,\n icon: \"remove\",\n label: gettext(\"Not pinned\"),\n },\n {\n value: 1,\n icon: \"bookmark_border\",\n label: gettext(\"Pinned locally\"),\n },\n ]\n\n if (this.acl[this.state.category].can_pin_threads == 2) {\n choices.push({\n value: 2,\n icon: \"bookmark\",\n label: gettext(\"Pinned globally\"),\n })\n }\n\n return choices\n }\n\n renderWeightField() {\n if (this.acl[this.state.category].can_pin_threads) {\n return (\n <FormGroup label={gettext(\"Thread weight\")} for=\"id_weight\">\n <Select\n id=\"id_weight\"\n onChange={this.bindInput(\"weight\")}\n value={this.state.weight}\n choices={this.getWeightChoices()}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderHiddenField() {\n if (this.acl[this.state.category].can_hide_threads) {\n return (\n <FormGroup label={gettext(\"Hide thread\")} for=\"id_is_hidden\">\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_hidden\")}\n value={this.state.is_hidden}\n choices={this.isHiddenChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderClosedField() {\n if (this.acl[this.state.category].can_close_threads) {\n return (\n <FormGroup label={gettext(\"Close thread\")} for=\"id_is_closed\">\n <Select\n id=\"id_is_closed\"\n onChange={this.bindInput(\"is_closed\")}\n value={this.state.is_closed}\n choices={this.isClosedChoices}\n />\n </FormGroup>\n )\n } else {\n return null\n }\n }\n\n renderForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup\n label={gettext(\"Thread title\")}\n for=\"id_title\"\n validation={this.state.errors.title}\n >\n <input\n id=\"id_title\"\n className=\"form-control\"\n type=\"text\"\n onChange={this.bindInput(\"title\")}\n value={this.state.title}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n <FormGroup\n label={gettext(\"Category\")}\n for=\"id_category\"\n validation={this.state.errors.category}\n >\n <CategorySelect\n id=\"id_category\"\n onChange={this.onCategoryChange}\n value={this.state.category}\n choices={this.categoryChoices}\n />\n </FormGroup>\n <div className=\"clearfix\" />\n\n {this.renderWeightField()}\n {this.renderHiddenField()}\n {this.renderClosedField()}\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Merge threads\")}\n </Button>\n </div>\n </form>\n )\n }\n\n renderCantMergeMessage() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You can't move threads because there are no categories you are allowed to move them to.\"\n )}\n </p>\n <p>\n {gettext(\n \"You need permission to start threads in category to be able to merge threads to it.\"\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n\n getClassName() {\n if (!this.state.category) {\n return \"modal-dialog modal-message\"\n } else {\n return \"modal-dialog\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Merge threads\")}</h4>\n </div>\n {this.state.category\n ? this.renderForm()\n : this.renderCantMergeMessage()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport CategorySelect from \"misago/components/category-select\"\nimport * as select from \"misago/reducers/selection\"\nimport { filterThreads } from \"misago/reducers/threads\"\nimport modal from \"misago/services/modal\"\nimport store from \"misago/services/store\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n category: null,\n }\n\n const acls = {}\n for (const i in props.user.acl.categories) {\n if (!props.user.acl.categories.hasOwnProperty(i)) {\n continue\n }\n\n const acl = props.user.acl.categories[i]\n acls[acl.id] = acl\n }\n\n this.categoryChoices = []\n props.categories.forEach((category) => {\n if (category.level > 0) {\n const acl = acls[category.id]\n const disabled =\n !acl.can_start_threads ||\n (category.is_closed && !acl.can_close_threads)\n\n this.categoryChoices.push({\n value: category.id,\n disabled: disabled,\n level: category.level - 1,\n label: category.name,\n })\n\n if (!disabled && !this.state.category) {\n this.state.category = category.id\n }\n }\n })\n }\n\n handleSubmit = (event) => {\n // we don't reload page on submissions\n event.preventDefault()\n\n modal.hide()\n\n const onSuccess = () => {\n store.dispatch(\n filterThreads(this.props.route.category, this.props.categoriesMap)\n )\n\n // deselect threads moved outside of visible scope\n const storeState = store.getState()\n const leftThreads = storeState.threads.map((thread) => thread.id)\n store.dispatch(\n select.all(\n storeState.selection.filter((thread) => {\n return leftThreads.indexOf(thread) !== -1\n })\n )\n )\n }\n\n this.props.callApi(\n [\n { op: \"replace\", path: \"category\", value: this.state.category },\n { op: \"replace\", path: \"flatten-categories\", value: null },\n { op: \"add\", path: \"acl\", value: true },\n ],\n gettext(\"Selected threads were moved.\"),\n onSuccess\n )\n }\n\n getClassName() {\n if (!this.state.category) {\n return \"modal-dialog modal-message\"\n } else {\n return \"modal-dialog\"\n }\n }\n\n renderForm() {\n return (\n <form onSubmit={this.handleSubmit}>\n <div className=\"modal-body\">\n <FormGroup label={gettext(\"New category\")} for=\"id_new_category\">\n <CategorySelect\n id=\"id_new_category\"\n onChange={this.bindInput(\"category\")}\n value={this.state.category}\n choices={this.categoryChoices}\n />\n </FormGroup>\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <button className=\"btn btn-primary\">{gettext(\"Move threads\")}</button>\n </div>\n </form>\n )\n }\n\n renderCantMoveMessage() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {gettext(\n \"You can't move threads because there are no categories you are allowed to move them to.\"\n )}\n </p>\n <p>\n {gettext(\n \"You need permission to start threads in category to be able to move threads to it.\"\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Move threads\")}</h4>\n </div>\n {this.state.category\n ? this.renderForm()\n : this.renderCantMoveMessage()}\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ErrorsModal from \"misago/components/threads/moderation/errors-list\"\nimport MergeThreads from \"misago/components/threads/moderation/merge\"\nimport MoveThreads from \"misago/components/threads/moderation/move\"\nimport * as select from \"misago/reducers/selection\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default class extends React.Component {\n callApi = (ops, successMessage, onSuccess = null) => {\n // freeze threads\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // list ids\n const ids = this.props.threads.map((thread) => {\n return thread.id\n })\n\n // always return current acl\n ops.push({ op: \"add\", path: \"acl\", value: true })\n\n ajax.patch(this.props.api, { ids, ops }).then(\n (data) => {\n // unfreeze\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // update threads\n data.forEach((thread) => {\n this.props.updateThread(thread)\n })\n\n // show success message and call callback\n snackbar.success(successMessage)\n if (onSuccess) {\n onSuccess()\n }\n },\n (rejection) => {\n // unfreeze\n this.props.threads.forEach((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n // escape on non-400 error\n if (rejection.status !== 400) {\n return snackbar.apiError(rejection)\n }\n\n // build errors list\n let errors = []\n let threadsMap = {}\n\n this.props.threads.forEach((thread) => {\n threadsMap[thread.id] = thread\n })\n\n rejection.forEach(({ id, detail }) => {\n if (typeof threadsMap[id] !== \"undefined\") {\n errors.push({\n errors: detail,\n thread: threadsMap[id],\n })\n }\n })\n\n modal.show(<ErrorsModal errors={errors} />)\n }\n )\n }\n\n pinGlobally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 2,\n },\n ],\n gettext(\"Selected threads were pinned globally.\")\n )\n }\n\n pinLocally = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 1,\n },\n ],\n gettext(\"Selected threads were pinned locally.\")\n )\n }\n\n unpin = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"weight\",\n value: 0,\n },\n ],\n gettext(\"Selected threads were unpinned.\")\n )\n }\n\n approve = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-unapproved\",\n value: false,\n },\n ],\n gettext(\"Selected threads were approved.\")\n )\n }\n\n open = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: false,\n },\n ],\n gettext(\"Selected threads were opened.\")\n )\n }\n\n close = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-closed\",\n value: true,\n },\n ],\n gettext(\"Selected threads were closed.\")\n )\n }\n\n unhide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: false,\n },\n ],\n gettext(\"Selected threads were unhidden.\")\n )\n }\n\n hide = () => {\n this.callApi(\n [\n {\n op: \"replace\",\n path: \"is-hidden\",\n value: true,\n },\n ],\n gettext(\"Selected threads were hidden.\")\n )\n }\n\n move = () => {\n modal.show(\n <MoveThreads\n callApi={this.callApi}\n categories={this.props.categories}\n categoriesMap={this.props.categoriesMap}\n route={this.props.route}\n user={this.props.user}\n />\n )\n }\n\n merge = () => {\n const errors = []\n this.props.threads.forEach((thread) => {\n if (!thread.acl.can_merge) {\n errors.append({\n id: thread.id,\n title: thread.title,\n errors: [\n gettext(\n \"You don't have permission to merge this thread with others.\"\n ),\n ],\n })\n }\n })\n\n if (this.props.threads.length < 2) {\n snackbar.info(\n gettext(\"You have to select at least two threads to merge.\")\n )\n } else if (errors.length) {\n modal.show(<ErrorsModal errors={errors} />)\n return\n } else {\n modal.show(<MergeThreads {...this.props} />)\n }\n }\n\n delete = () => {\n if (\n !window.confirm(\n gettext(\"Are you sure you want to delete selected threads?\")\n )\n ) {\n return\n }\n\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n })\n\n const ids = this.props.threads.map((thread) => {\n return thread.id\n })\n\n ajax.delete(this.props.api, ids).then(\n () => {\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n this.props.deleteThread(thread)\n })\n\n snackbar.success(gettext(\"Selected threads were deleted.\"))\n },\n (rejection) => {\n if (rejection.status === 400) {\n const failedThreads = rejection.map((thread) => {\n return thread.id\n })\n\n this.props.threads.map((thread) => {\n this.props.freezeThread(thread.id)\n if (failedThreads.indexOf(thread.id) === -1) {\n this.props.deleteThread(thread)\n }\n })\n\n modal.show(<ErrorsModal errors={rejection} />)\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n const { moderation, threads } = this.props\n const noSelection = this.props.selection.length == 0\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right stick-to-bottom\">\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n onClick={() => store.dispatch(select.all(threads.map((t) => t.id)))}\n >\n <span className=\"material-icon\">check_box</span>\n {gettext(\"Select all\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={() => store.dispatch(select.none())}\n >\n <span className=\"material-icon\">check_box_outline_blank</span>\n {gettext(\"Select none\")}\n </button>\n </li>\n <li role=\"separator\" className=\"divider\" />\n {!!moderation.can_pin_globally && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.pinGlobally}\n >\n <span className=\"material-icon\">bookmark</span>\n {gettext(\"Pin threads globally\")}\n </button>\n </li>\n )}\n {!!moderation.can_pin && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.pinLocally}\n >\n <span className=\"material-icon\">bookmark_border</span>\n {gettext(\"Pin threads locally\")}\n </button>\n </li>\n )}\n {!!moderation.can_pin && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.unpin}\n >\n <span className=\"material-icon\">panorama_fish_eye</span>\n {gettext(\"Unpin threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_move && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.move}\n >\n <span className=\"material-icon\">arrow_forward</span>\n {gettext(\"Move threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_merge && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.merge}\n >\n <span className=\"material-icon\">call_merge</span>\n {gettext(\"Merge threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_approve && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.approve}\n >\n <span className=\"material-icon\">done</span>\n {gettext(\"Approve threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_close && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.open}\n >\n <span className=\"material-icon\">lock_open</span>\n {gettext(\"Open threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_close && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.close}\n >\n <span className=\"material-icon\">lock_outline</span>\n {gettext(\"Close threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_unhide && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.unhide}\n >\n <span className=\"material-icon\">visibility</span>\n {gettext(\"Unhide threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_hide && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.hide}\n >\n <span className=\"material-icon\">visibility_off</span>\n {gettext(\"Hide threads\")}\n </button>\n </li>\n )}\n {!!moderation.can_delete && (\n <li>\n <button\n className=\"btn btn-link\"\n type=\"button\"\n disabled={noSelection}\n onClick={this.delete}\n >\n <span className=\"material-icon\">clear</span>\n {gettext(\"Delete threads\")}\n </button>\n </li>\n )}\n </ul>\n )\n }\n}\n","import React from \"react\"\nimport ModerationControls from \"./moderation/controls\"\n\nconst ThreadsToolbarModeration = ({\n api,\n categoriesMap,\n categories,\n threads,\n addThreads,\n freezeThread,\n updateThread,\n deleteThread,\n selection,\n moderation,\n route,\n user,\n disabled,\n}) => (\n <div className=\"dropdown threads-moderation\">\n <button\n type=\"button\"\n className=\"btn btn-default btn-outline btn-icon dropdown-toggle\"\n title={gettext(\"Moderation\")}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n disabled={disabled}\n >\n <span className=\"material-icon\">settings</span>\n </button>\n <ModerationControls\n api={api}\n categories={categories}\n categoriesMap={categoriesMap}\n threads={threads}\n addThreads={addThreads}\n freezeThread={freezeThread}\n updateThread={updateThread}\n deleteThread={deleteThread}\n selection={selection}\n moderation={moderation}\n route={route}\n user={user}\n disabled={disabled}\n />\n </div>\n)\n\nexport default ThreadsToolbarModeration\n","import React from \"react\"\nimport posting from \"../../services/posting\"\nimport Button from \"../button\"\nimport { Toolbar, ToolbarItem, ToolbarSection, ToolbarSpacer } from \"../Toolbar\"\nimport ThreadsCategoryPicker from \"./ThreadsCategoryPicker\"\nimport ThreadsListPicker from \"./ThreadsListPicker\"\nimport ThreadsToolbarModeration from \"./ThreadsToolbarModeration\"\n\nconst ThreadsToolbar = ({\n api,\n baseUrl,\n category,\n categories,\n categoriesMap,\n topCategory,\n topCategories,\n subCategory,\n subCategories,\n list,\n lists,\n threads,\n addThreads,\n startThread,\n freezeThread,\n updateThread,\n deleteThread,\n selection,\n moderation,\n route,\n user,\n disabled,\n}) => (\n <Toolbar>\n {topCategories.length > 0 && (\n <ToolbarSection>\n <ToolbarItem>\n <ThreadsCategoryPicker\n allItems={gettext(\"All categories\")}\n parentUrl={list.path}\n category={topCategory}\n categories={topCategories}\n list={list}\n />\n </ToolbarItem>\n {topCategory && subCategories.length > 0 && (\n <ToolbarItem>\n <ThreadsCategoryPicker\n allItems={gettext(\"All subcategories\")}\n parentUrl={topCategory.url.index}\n category={subCategory}\n categories={subCategories}\n list={list}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n {lists.length > 1 && (\n <ToolbarSection className=\"hidden-xs\">\n <ToolbarItem>\n <ThreadsListPicker baseUrl={baseUrl} list={list} lists={lists} />\n </ToolbarItem>\n </ToolbarSection>\n )}\n <ToolbarSpacer />\n {!!user.id && (\n <ToolbarSection>\n <ToolbarItem>\n <Button\n className=\"btn-primary btn-outline btn-block\"\n disabled={disabled}\n onClick={() => {\n posting.open(\n startThread || {\n mode: \"START\",\n\n config: misago.get(\"THREAD_EDITOR_API\"),\n submit: misago.get(\"THREADS_API\"),\n\n category: category.id,\n }\n )\n }}\n >\n <span className=\"material-icon\">chat</span>\n {gettext(\"Start thread\")}\n </Button>\n </ToolbarItem>\n {!!moderation.allow && (\n <ToolbarItem shrink>\n <ThreadsToolbarModeration\n api={api}\n categories={categories}\n categoriesMap={categoriesMap}\n threads={threads.filter(\n (thread) => selection.indexOf(thread.id) !== -1\n )}\n addThreads={addThreads}\n freezeThread={freezeThread}\n updateThread={updateThread}\n deleteThread={deleteThread}\n selection={selection}\n moderation={moderation}\n route={route}\n user={user}\n disabled={disabled}\n />\n </ToolbarItem>\n )}\n </ToolbarSection>\n )}\n </Toolbar>\n)\n\nexport default ThreadsToolbar\n","import React from \"react\"\nimport PageContainer from \"../PageContainer\"\nimport ThreadsToolbar from \"./ThreadsToolbar\"\n\nexport default class extends React.Component {\n render() {\n const { root } = this.props\n const { category, categories, categoriesMap } = this.props.route\n const topCategory = getTopCategory(root, category, categoriesMap)\n\n return (\n <PageContainer>\n <ThreadsToolbar\n api={this.props.api}\n baseUrl={category.url.index}\n category={category}\n categories={categories}\n categoriesMap={categoriesMap}\n topCategory={topCategory}\n topCategories={categories.filter((cat) => cat.parent === root.id)}\n subCategories={\n !!topCategory\n ? categories.filter((cat) => cat.parent === topCategory.id)\n : []\n }\n subCategory={category.level === 2 ? category : null}\n subcategories={this.props.subcategories}\n list={this.props.route.list}\n lists={this.props.route.lists}\n threads={this.props.threads}\n addThreads={this.props.addThreads}\n startThread={this.props.startThread}\n freezeThread={this.props.freezeThread}\n deleteThread={this.props.deleteThread}\n updateThread={this.props.updateThread}\n selection={this.props.selection}\n moderation={this.props.moderation}\n route={this.props.route}\n user={this.props.user}\n disabled={\n !this.props.isLoaded ||\n this.props.isBusy ||\n this.props.busyThreads.length\n }\n />\n {this.props.children}\n </PageContainer>\n )\n }\n}\n\nconst getTopCategory = (root, category, categoriesMap) => {\n if (!category.parent) return null\n if (category.parent === root.id) return category\n return categoriesMap[category.parent]\n}\n","import misago from \"misago/index\"\n\nexport function getPageTitle(route) {\n if (route.category.level) {\n if (route.list.path) {\n return {\n title: route.list.longName,\n parent: route.category.name,\n }\n } else {\n return {\n title: route.category.name,\n }\n }\n } else if (misago.get(\"THREADS_ON_INDEX\")) {\n if (route.list.path) {\n return {\n title: route.list.longName,\n }\n } else {\n return null\n }\n } else {\n if (route.list.path) {\n return {\n title: route.list.longName,\n parent: gettext(\"Threads\"),\n }\n } else {\n return {\n title: gettext(\"Threads\"),\n }\n }\n }\n}\n\nexport function getTitle(route) {\n if (route.category.level) {\n return route.category.name\n } else if (misago.get(\"THREADS_ON_INDEX\")) {\n if (misago.get(\"SETTINGS\").index_header) {\n return misago.get(\"SETTINGS\").index_header\n } else {\n return misago.get(\"SETTINGS\").forum_name\n }\n } else {\n return gettext(\"Threads\")\n }\n}\n\nexport function isThreadChanged(current, fromDb) {\n return (\n [\n current.title === fromDb.title,\n current.weight === fromDb.weight,\n current.category === fromDb.category,\n current.last_post === fromDb.last_post,\n current.last_poster_name === fromDb.last_poster_name,\n ].indexOf(false) >= 0\n )\n}\n\nexport function diffThreads(current, fromDb) {\n let currentMap = {}\n current.forEach(function (thread) {\n currentMap[thread.id] = thread\n })\n\n return fromDb.filter(function (thread) {\n if (currentMap[thread.id]) {\n return isThreadChanged(currentMap[thread.id], thread)\n } else {\n return true\n }\n })\n}\n\nexport function getModerationActions(threads) {\n let moderation = {\n allow: false,\n\n can_approve: 0,\n can_close: 0,\n can_delete: 0,\n can_hide: 0,\n can_merge: 0,\n can_move: 0,\n can_pin: 0,\n can_pin_globally: 0,\n can_unhide: 0,\n }\n\n threads.forEach(function (thread) {\n if (\n thread.is_unapproved &&\n thread.acl.can_approve > moderation.can_approve\n ) {\n moderation.can_approve = thread.acl.can_approve\n }\n\n if (thread.acl.can_close > moderation.can_close) {\n moderation.can_close = thread.acl.can_close\n }\n\n if (thread.acl.can_delete > moderation.can_delete) {\n moderation.can_delete = thread.acl.can_delete\n }\n\n if (thread.acl.can_hide > moderation.can_hide) {\n moderation.can_hide = thread.acl.can_hide\n }\n\n if (thread.acl.can_merge > moderation.can_merge) {\n moderation.can_merge = thread.acl.can_merge\n }\n\n if (thread.acl.can_move > moderation.can_move) {\n moderation.can_move = thread.acl.can_move\n }\n\n if (thread.acl.can_pin > moderation.can_pin) {\n moderation.can_pin = thread.acl.can_pin\n }\n\n if (thread.acl.can_pin_globally > moderation.can_pin_globally) {\n moderation.can_pin_globally = thread.acl.can_pin_globally\n }\n\n if (thread.is_hidden && thread.acl.can_unhide > moderation.can_unhide) {\n moderation.can_unhide = thread.acl.can_unhide\n }\n\n moderation.allow =\n moderation.can_approve ||\n moderation.can_close ||\n moderation.can_delete ||\n moderation.can_hide ||\n moderation.can_merge ||\n moderation.can_move ||\n moderation.can_pin ||\n moderation.can_pin_globally ||\n moderation.can_unhide\n })\n\n return moderation\n}\n","import React from \"react\"\n\nconst ThreadsListEmpty = ({ category, list, message }) => {\n if (list.type === \"all\") {\n if (message) {\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">{message}</p>\n <p>{gettext(\"Why not start one yourself?\")}</p>\n </li>\n )\n }\n\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {category.special_role\n ? gettext(\"There are no threads on this forum... yet!\")\n : gettext(\"There are no threads in this category.\")}\n </p>\n <p>{gettext(\"Why not start one yourself?\")}</p>\n </li>\n )\n }\n\n return (\n <li className=\"list-group-item empty-message\">\n <p className=\"lead\">\n {gettext(\"No threads matching specified criteria were found.\")}\n </p>\n </li>\n )\n}\n\nexport default ThreadsListEmpty\n","import React from \"react\"\n\nconst ThreadsListItemActivity = ({ thread }) => (\n <a\n href={thread.url.last_post}\n className=\"threads-list-item-last-activity\"\n title={interpolate(\n gettext(\"Last activity: %(timestamp)s\"),\n {\n timestamp: thread.last_post_on.format(\"LLL\"),\n },\n true\n )}\n >\n {thread.last_post_on.fromNow(true)}\n </a>\n)\n\nexport default ThreadsListItemActivity\n","import React from \"react\"\n\nconst ThreadsListItemCategory = ({ parent, category }) => (\n <span>\n {parent && (\n <a\n href={parent.url.index}\n className={getClassName(parent) + \" threads-list-item-parent-category\"}\n style={parent.color ? { \"--label-color\": parent.color } : null}\n title={!!parent.short_name ? parent.name : null}\n >\n {parent.short_name || parent.name}\n </a>\n )}\n <a\n href={category.url.index}\n className={getClassName(category)}\n style={category.color ? { \"--label-color\": category.color } : null}\n title={!!category.short_name ? category.name : null}\n >\n {category.short_name || category.name}\n </a>\n </span>\n)\n\nconst getClassName = (category) => {\n let className = \"threads-list-item-category threads-list-category-label\"\n\n if (category.color) {\n className += \" threads-list-category-label-color\"\n }\n\n return className\n}\n\nexport default ThreadsListItemCategory\n","import React from \"react\"\nimport * as select from \"../../reducers/selection\"\nimport store from \"../../services/store\"\n\nconst ThreadsListItemCheckbox = ({ checked, disabled, thread }) => (\n <button\n className=\"btn btn-default btn-icon\"\n type=\"button\"\n disabled={disabled}\n onClick={() => store.dispatch(select.item(thread.id))}\n >\n <span className=\"material-icon\">\n {checked ? \"check_box\" : \"check_box_outline_blank\"}\n </span>\n </button>\n)\n\nexport default ThreadsListItemCheckbox\n","import React from \"react\"\n\nconst ThreadsListItemIcon = ({ thread }) => {\n let className = \"threads-list-icon\"\n if (!thread.is_read) className += \" threads-list-icon-new\"\n\n return (\n <a\n title={thread.is_read ? gettext(\"No new posts\") : gettext(\"New posts\")}\n href={thread.is_read ? thread.url.last_post : thread.url.new_post}\n className={className}\n >\n <span className=\"material-icon\">\n {thread.is_read ? \"chat_bubble_outline\" : \"chat_bubble\"}\n </span>\n </a>\n )\n}\n\nexport default ThreadsListItemIcon\n","import React from \"react\"\nimport Avatar from \"../avatar\"\n\nconst ThreadsListItemLastPoster = ({ thread }) =>\n !!thread.last_poster ? (\n <a\n href={thread.url.last_poster}\n className=\"threads-list-item-last-poster\"\n title={interpolate(\n gettext(\"Last post by: %(poster)s\"),\n { poster: thread.last_poster.username },\n true\n )}\n >\n <Avatar size={32} user={thread.last_poster} />\n </a>\n ) : (\n <span\n className=\"threads-list-item-last-poster\"\n title={interpolate(\n gettext(\"Last post by: %(poster)s\"),\n { poster: thread.last_poster_name },\n true\n )}\n >\n <Avatar size={32} />\n </span>\n )\n\nexport default ThreadsListItemLastPoster\n","import React from \"react\"\nimport { patch } from \"../../reducers/threads\"\nimport ajax from \"../../services/ajax\"\nimport snackbar from \"../../services/snackbar\"\nimport store from \"../../services/store\"\n\nconst SUBSCRIPTION = {\n unsubscribe: null,\n notify: false,\n email: true,\n}\n\nclass ThreadsListItemSubscriptionOptions extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n loading: false,\n }\n }\n\n update = (value) => {\n const { thread } = this.props\n\n this.setState({ loading: true })\n store.dispatch(patch(thread, { subscription: SUBSCRIPTION[value] }))\n\n ajax\n .patch(thread.api.index, [{ op: \"replace\", path: \"subscription\", value }])\n .then(\n () => {},\n (rejection) => {\n store.dispatch(\n patch(thread, {\n subscription: SUBSCRIPTION[thread.subscription],\n })\n )\n snackbar.apiError(rejection)\n }\n )\n .then(() => this.setState({ loading: false }))\n }\n\n render = () => {\n const { loading } = this.state\n const { disabled, thread } = this.props\n\n return (\n <ul className=\"dropdown-menu dropdown-menu-right\">\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === null}\n onClick={() => this.update(\"unsubscribe\")}\n >\n <span className=\"material-icon\">star_border</span>\n {gettext(\"Unsubscribe\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === false}\n onClick={() => this.update(\"notify\")}\n >\n <span className=\"material-icon\">star_half</span>\n {gettext(\"Subscribe with alert\")}\n </button>\n </li>\n <li>\n <button\n className=\"btn-link\"\n disabled={disabled || loading || thread.subscription === true}\n onClick={() => this.update(\"email\")}\n >\n <span className=\"material-icon\">star</span>\n {gettext(\"Subscribe with e-mail\")}\n </button>\n </li>\n </ul>\n )\n }\n}\n\nexport default ThreadsListItemSubscriptionOptions\n","import React from \"react\"\nimport ThreadsListItemSubscriptionOptions from \"./ThreadsListItemSubscriptionOptions\"\n\nconst ThreadsListItemSubscription = ({ disabled, thread }) => (\n <div className=\"dropdown\">\n <button\n className=\"btn btn-default btn-icon\"\n type=\"button\"\n title={getSubscriptionTitle(thread.subscription)}\n disabled={disabled}\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">\n {getSubscriptionIcon(thread.subscription)}\n </span>\n </button>\n <ThreadsListItemSubscriptionOptions disabled={disabled} thread={thread} />\n </div>\n)\n\nconst getSubscriptionTitle = (subscription) => {\n if (subscription === true) return gettext(\"Subscribed to e-mails\")\n if (subscription === false) return gettext(\"Subscribed to alerts\")\n return gettext(\"Not subscribed\")\n}\n\nconst getSubscriptionIcon = (subscription) => {\n if (subscription === true) return \"star\"\n if (subscription === false) return \"star_half\"\n return \"star_border\"\n}\n\nexport default ThreadsListItemSubscription\n","import React from \"react\"\nimport ThreadFlags from \"../ThreadFlags\"\nimport ThreadReplies from \"../ThreadReplies\"\nimport ThreadsListItemActivity from \"./ThreadsListItemActivity\"\nimport ThreadsListItemCategory from \"./ThreadsListItemCategory\"\nimport ThreadsListItemCheckbox from \"./ThreadsListItemCheckbox\"\nimport ThreadsListItemIcon from \"./ThreadsListItemIcon\"\nimport ThreadsListItemLastPoster from \"./ThreadsListItemLastPoster\"\nimport ThreadsListItemSubscription from \"./ThreadsListItemSubscription\"\n\nconst ThreadsListItem = ({\n activeCategory,\n categories,\n showOptions,\n showSubscription,\n thread,\n isBusy,\n isSelected,\n}) => {\n let parent = null\n let category = null\n\n if (activeCategory.id !== thread.category) {\n category = categories[thread.category]\n\n if (\n category.parent &&\n category.parent !== activeCategory.id &&\n categories[category.parent] &&\n !categories[category.parent].special_role\n ) {\n parent = categories[category.parent]\n }\n }\n\n const hasFlags =\n thread.is_closed ||\n thread.is_hidden ||\n thread.is_unapproved ||\n thread.weight > 0 ||\n thread.best_answer ||\n thread.has_poll ||\n thread.has_unapproved_posts\n\n const isNew = showOptions ? thread.is_new : true\n\n return (\n <li\n className={\n \"list-group-item threads-list-item\" +\n (isBusy ? \" threads-list-item-is-busy\" : \"\")\n }\n >\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <ThreadsListItemIcon thread={thread} />\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <a href={thread.url.index} className=\"threads-list-item-title\">\n {thread.title}\n </a>\n <a\n href={isNew ? thread.url.new_post : thread.url.index}\n className={\n \"threads-list-item-title-sm\" +\n (isNew ? \" threads-list-item-title-new\" : \"\")\n }\n >\n {thread.title}\n </a>\n </div>\n {showOptions && thread.moderation.length > 0 && (\n <div className=\"threads-list-item-col-checkbox-sm\">\n <ThreadsListItemCheckbox\n checked={isSelected}\n disabled={isBusy}\n thread={thread}\n />\n </div>\n )}\n </div>\n <div className=\"threads-list-item-bottom-row\">\n {hasFlags && (\n <div className=\"threads-list-item-col-flags\">\n <ThreadFlags thread={thread} />\n </div>\n )}\n {!!category && (\n <div className=\"threads-list-item-col-category\">\n <ThreadsListItemCategory parent={parent} category={category} />\n </div>\n )}\n <div className=\"threads-list-item-col-replies\">\n <ThreadReplies thread={thread} />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <ThreadsListItemLastPoster thread={thread} />\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <ThreadsListItemActivity thread={thread} />\n </div>\n {showOptions && showSubscription && (\n <div className=\"threads-list-item-col-subscription\">\n <ThreadsListItemSubscription disabled={isBusy} thread={thread} />\n </div>\n )}\n {showOptions && thread.moderation.length > 0 && (\n <div className=\"threads-list-item-col-checkbox\">\n <ThreadsListItemCheckbox\n checked={isSelected}\n disabled={isBusy}\n thread={thread}\n />\n </div>\n )}\n </div>\n </li>\n )\n}\n\nexport default ThreadsListItem\n","import React from \"react\"\n\nconst UIPreviewText = ({ width }) => (\n <span className=\"ui-preview-text\" style={{ width: width + \"px\" }}>\n \n </span>\n)\n\nexport default UIPreviewText\n","import React from \"react\"\nimport Avatar from \"../avatar\"\nimport { UIPreviewText } from \"../UIPreview\"\n\nconst ThreadsListLoader = ({ showOptions }) => (\n <div className=\"threads-list threads-list-loader\">\n <ul className=\"list-group\">\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"90\" /> <UIPreviewText width=\"40\" />{\" \"}\n <UIPreviewText width=\"120\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"90\" /> <UIPreviewText width=\"40\" />{\" \"}\n <UIPreviewText width=\"120\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"70\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"50\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"50\" />\n </span>\n </div>\n </div>\n </li>\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"120\" /> <UIPreviewText width=\"30\" />{\" \"}\n <UIPreviewText width=\"60\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"120\" /> <UIPreviewText width=\"30\" />{\" \"}\n <UIPreviewText width=\"60\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"55\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"60\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"70\" />\n </span>\n </div>\n </div>\n </li>\n <li className=\"list-group-item threads-list-item\">\n <div className=\"threads-list-item-top-row\">\n {showOptions && (\n <div className=\"threads-list-item-col-icon\">\n <span className=\"threads-list-icon ui-preview-img\"></span>\n </div>\n )}\n <div className=\"threads-list-item-col-title\">\n <span className=\"threads-list-item-title\">\n <UIPreviewText width=\"40\" /> <UIPreviewText width=\"120\" />{\" \"}\n <UIPreviewText width=\"80\" />\n </span>\n <span className=\"threads-list-item-title-sm\">\n <UIPreviewText width=\"40\" /> <UIPreviewText width=\"120\" />{\" \"}\n <UIPreviewText width=\"80\" />\n </span>\n </div>\n </div>\n <div className=\"threads-list-item-bottom-row\">\n <div className=\"threads-list-item-col-category\">\n <UIPreviewText width=\"75\" />\n </div>\n <div className=\"threads-list-item-col-replies\">\n <UIPreviewText width=\"40\" />\n </div>\n <div className=\"threads-list-item-col-last-poster\">\n <span className=\"threads-list-item-last-poster\">\n <Avatar size={32} />\n </span>\n </div>\n <div className=\"threads-list-item-col-last-activity\">\n <span className=\"threads-list-item-last-activity\">\n <UIPreviewText width=\"60\" />\n </span>\n </div>\n </div>\n </li>\n </ul>\n </div>\n)\n\nexport default ThreadsListLoader\n","import React from \"react\"\n\nconst ThreadsListUpdatePrompt = ({ threads, onClick }) => (\n <li className=\"list-group-item threads-list-update-prompt\">\n <button\n type=\"button\"\n className=\"btn btn-block threads-list-update-prompt-btn\"\n onClick={onClick}\n >\n <span className=\"material-icon\">cached</span>\n <span className=\"threads-list-update-prompt-message\">\n {interpolate(\n ngettext(\n \"There is %(threads)s new or updated thread. Click here to show it.\",\n \"There are %(threads)s new or updated threads. Click here to show them.\",\n threads\n ),\n { threads },\n true\n )}\n </span>\n </button>\n </li>\n)\n\nexport default ThreadsListUpdatePrompt\n","import ThreadsList from \"./ThreadsList\"\n\nexport default ThreadsList\n","import React from \"react\"\nimport ThreadsListEmpty from \"./ThreadsListEmpty\"\nimport ThreadsListItem from \"./ThreadsListItem\"\nimport ThreadsListLoader from \"./ThreadsListLoader\"\nimport ThreadsListUpdatePrompt from \"./ThreadsListUpdatePrompt\"\n\nconst ThreadsList = ({\n list,\n categories,\n category,\n threads,\n busyThreads,\n selection,\n isLoaded,\n showOptions,\n updatedThreads,\n applyUpdate,\n emptyMessage,\n}) => {\n if (!isLoaded) {\n return <ThreadsListLoader showOptions={showOptions} />\n }\n\n return (\n <div className=\"threads-list\">\n {threads.length > 0 ? (\n <ul className=\"list-group\">\n {updatedThreads > 0 && (\n <ThreadsListUpdatePrompt\n threads={updatedThreads}\n onClick={applyUpdate}\n />\n )}\n {threads.map((thread) => (\n <ThreadsListItem\n key={thread.id}\n activeCategory={category}\n categories={categories}\n thread={thread}\n showOptions={showOptions}\n showSubscription={showOptions && list.type === \"subscribed\"}\n isBusy={busyThreads.indexOf(thread.id) >= 0}\n isSelected={selection.indexOf(thread.id) >= 0}\n />\n ))}\n </ul>\n ) : (\n <ul className=\"list-group\">\n {updatedThreads > 0 && (\n <ThreadsListUpdatePrompt\n threads={updatedThreads}\n onClick={applyUpdate}\n />\n )}\n <ThreadsListEmpty\n category={category}\n list={list}\n message={emptyMessage}\n />\n </ul>\n )}\n </div>\n )\n}\n\nexport default ThreadsList\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport {\n compareGlobalWeight,\n compareWeight,\n} from \"misago/components/threads/compare\"\nimport Container from \"misago/components/threads/container\"\nimport {\n diffThreads,\n getModerationActions,\n getPageTitle,\n getTitle,\n} from \"misago/components/threads/utils\"\nimport ThreadsList from \"misago/components/ThreadsList\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport * as select from \"misago/reducers/selection\"\nimport { append, deleteThread, hydrate, patch } from \"misago/reducers/threads\"\nimport ajax from \"misago/services/ajax\"\nimport polls from \"misago/services/polls\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport * as sets from \"misago/utils/sets\"\nimport {\n PageHeaderHTMLMessage,\n PageHeaderMessage,\n PageHeaderPlain,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n constructor(props) {\n super(props)\n\n this.state = {\n isMounted: true,\n\n isLoaded: false,\n isBusy: false,\n\n diff: {\n results: [],\n },\n\n moderation: [],\n busyThreads: [],\n\n dropdown: false,\n subcategories: [],\n\n next: 0,\n }\n\n let category = this.getCategory()\n\n if (misago.has(\"THREADS\")) {\n this.initWithPreloadedData(category, misago.get(\"THREADS\"))\n } else {\n this.initWithoutPreloadedData(category)\n }\n }\n\n getCategory() {\n if (!this.props.route.category.special_role) {\n return this.props.route.category.id\n } else {\n return null\n }\n }\n\n initWithPreloadedData(category, data) {\n this.state = Object.assign(this.state, {\n moderation: getModerationActions(data.results),\n subcategories: data.subcategories,\n next: data.next,\n })\n\n this.startPolling(category)\n }\n\n initWithoutPreloadedData(category) {\n this.loadThreads(category)\n }\n\n loadThreads(category, next = 0) {\n ajax\n .get(\n this.props.options.api,\n {\n category: category,\n list: this.props.route.list.type,\n start: next || 0,\n },\n \"threads\"\n )\n .then(\n (data) => {\n if (!this.state.isMounted) {\n // user changed route before loading completion\n return\n }\n\n if (next === 0) {\n store.dispatch(hydrate(data.results))\n } else {\n store.dispatch(append(data.results, this.getSorting()))\n }\n\n this.setState({\n isLoaded: true,\n isBusy: false,\n\n moderation: getModerationActions(store.getState().threads),\n\n subcategories: data.subcategories,\n\n next: data.next,\n })\n\n this.startPolling(category)\n },\n (rejection) => {\n snackbar.apiError(rejection)\n }\n )\n }\n\n startPolling(category) {\n polls.start({\n poll: \"threads\",\n url: this.props.options.api,\n data: {\n category: category,\n list: this.props.route.list.type,\n },\n frequency: 120 * 1000,\n update: this.pollResponse,\n })\n }\n\n componentDidMount() {\n this.setPageTitle()\n\n if (misago.has(\"THREADS\")) {\n // unlike in other components, routes are root components for threads\n // so we can't dispatch store action from constructor\n store.dispatch(hydrate(misago.pop(\"THREADS\").results))\n\n this.setState({\n isLoaded: true,\n })\n }\n\n store.dispatch(select.none())\n }\n\n componentWillUnmount() {\n this.state.isMounted = false\n polls.stop(\"threads\")\n }\n\n getTitle() {\n if (this.props.options.title) {\n return this.props.options.title\n }\n\n return getTitle(this.props.route)\n }\n\n setPageTitle() {\n if (this.props.route.category.level || !misago.get(\"THREADS_ON_INDEX\")) {\n title.set(getPageTitle(this.props.route))\n } else if (this.props.options.title) {\n title.set(this.props.options.title)\n } else {\n if (misago.get(\"SETTINGS\").index_title) {\n document.title = misago.get(\"SETTINGS\").index_title\n } else {\n document.title = misago.get(\"SETTINGS\").forum_name\n }\n }\n }\n\n getSorting() {\n if (this.props.route.category.level) {\n return compareWeight\n } else {\n return compareGlobalWeight\n }\n }\n\n // AJAX\n\n loadMore = () => {\n this.setState({\n isBusy: true,\n })\n\n this.loadThreads(this.getCategory(), this.state.next)\n }\n\n pollResponse = (data) => {\n this.setState({\n diff: Object.assign({}, data, {\n results: diffThreads(this.props.threads, data.results),\n }),\n })\n }\n\n addThreads = (threads) => {\n store.dispatch(append(threads, this.getSorting()))\n }\n\n applyDiff = () => {\n this.addThreads(this.state.diff.results)\n\n this.setState(\n Object.assign({}, this.state.diff, {\n moderation: getModerationActions(store.getState().threads),\n\n diff: {\n results: [],\n },\n })\n )\n }\n\n // Thread state utils\n\n freezeThread = (thread) => {\n this.setState(function (currentState) {\n return {\n busyThreads: sets.toggle(currentState.busyThreads, thread),\n }\n })\n }\n\n updateThread = (thread) => {\n store.dispatch(patch(thread, thread, this.getSorting()))\n }\n\n deleteThread = (thread) => {\n store.dispatch(deleteThread(thread))\n }\n\n getMoreButton() {\n if (!this.state.next) return null\n\n return (\n <div className=\"pager-more\">\n <Button\n className=\"btn btn-default btn-outline\"\n loading={this.state.isBusy || this.state.busyThreads.length}\n onClick={this.loadMore}\n >\n {gettext(\"Show more\")}\n </Button>\n </div>\n )\n }\n\n getClassName() {\n let className = \"page page-threads\"\n className += \" page-threads-\" + this.props.route.list.type\n if (isIndex(this.props)) {\n className += \" page-threads-index\"\n }\n if (this.props.route.category.css_class) {\n className += \" page-threads-\" + this.props.route.category.css_class\n }\n return className\n }\n\n render() {\n const root = this.props.route.categories[0]\n const { category, list } = this.props.route\n const specialRole = category.special_role\n\n return (\n <div className={this.getClassName()}>\n {specialRole == \"root_category\" &&\n misago.get(\"THREADS_ON_INDEX\") &&\n misago.get(\"SETTINGS\").index_header && (\n <PageHeaderPlain\n header={misago.get(\"SETTINGS\").index_header}\n message={\n category.description && (\n <PageHeaderHTMLMessage message={category.description.html} />\n )\n }\n styleName=\"forum-index\"\n />\n )}\n {specialRole == \"root_category\" && !misago.get(\"THREADS_ON_INDEX\") && (\n <PageHeaderPlain header={gettext(\"Threads\")} styleName=\"threads\" />\n )}\n {specialRole == \"private_threads\" && (\n <PageHeaderPlain\n header={this.props.options.title}\n message={\n this.props.options.pageLead && (\n <PageHeaderMessage>\n <p>{this.props.options.pageLead}</p>\n </PageHeaderMessage>\n )\n }\n styleName=\"private-threads\"\n />\n )}\n {!specialRole && (\n <PageHeaderPlain\n header={category.name}\n message={\n category.description && (\n <PageHeaderHTMLMessage message={category.description.html} />\n )\n }\n styleName={category.css_class || \"category-threads\"}\n />\n )}\n <Container\n api={this.props.options.api}\n root={root}\n route={this.props.route}\n user={this.props.user}\n pageLead={this.props.options.pageLead}\n threads={this.props.threads}\n threadsCount={this.state.count}\n moderation={this.state.moderation}\n selection={this.props.selection}\n busyThreads={this.state.busyThreads}\n addThreads={this.addThreads}\n startThread={this.props.options.startThread}\n freezeThread={this.freezeThread}\n deleteThread={this.deleteThread}\n updateThread={this.updateThread}\n isLoaded={this.state.isLoaded}\n isBusy={this.state.isBusy}\n >\n <ThreadsList\n category={category}\n categories={this.props.route.categoriesMap}\n list={list}\n selection={this.props.selection}\n threads={this.props.threads}\n updatedThreads={this.state.diff.results.length}\n applyUpdate={this.applyDiff}\n showOptions={!!this.props.user.id}\n isLoaded={this.state.isLoaded}\n busyThreads={this.state.busyThreads}\n emptyMessage={this.props.options.emptyMessage}\n />\n {this.getMoreButton()}\n </Container>\n </div>\n )\n }\n}\n\nfunction isIndex(props) {\n if (props.route.category.level || !misago.get(\"THREADS_ON_INDEX\"))\n return false\n if (props.options.title) return false\n\n return true\n}\n","import { paths } from \"misago/components/threads/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nconst PRIVATE_THREADS_LIST = \"misago:private-threads\"\n\nexport default function initializer(context) {\n if (context.has(\"THREADS\") && context.has(\"CATEGORIES\")) {\n mount({\n paths: paths(context.get(\"user\"), getListOptions(context)),\n })\n }\n}\n\nexport function getListOptions(context) {\n const currentLink = context.get(\"CURRENT_LINK\")\n if (\n currentLink.substr(0, PRIVATE_THREADS_LIST.length) === PRIVATE_THREADS_LIST\n ) {\n return {\n api: context.get(\"PRIVATE_THREADS_API\"),\n startThread: {\n mode: \"START_PRIVATE\",\n submit: misago.get(\"PRIVATE_THREADS_API\"),\n },\n title: gettext(\"Private threads\"),\n pageLead: gettext(\n \"Private threads are threads which only those that started them and those they have invited may see and participate in.\"\n ),\n emptyMessage: gettext(\"You aren't participating in any private threads.\"),\n }\n }\n\n return {\n api: context.get(\"THREADS_API\"),\n }\n}\n\nmisago.addInitializer({\n name: \"component:threads\",\n initializer: initializer,\n after: \"store\",\n})\n","import { connect } from \"react-redux\"\nimport Route from \"misago/components/threads/route\"\nimport misago from \"misago/index\"\n\nexport function getSelect(options) {\n return function (store) {\n return {\n options: options,\n selection: store.selection,\n threads: store.threads,\n tick: store.tick.tick,\n user: store.auth.user,\n }\n }\n}\n\nexport function getLists(user) {\n let lists = [\n {\n type: \"all\",\n path: \"\",\n name: gettext(\"All\"),\n longName: gettext(\"All threads\"),\n },\n ]\n\n if (user.id) {\n lists.push({\n type: \"my\",\n path: \"my/\",\n name: gettext(\"My\"),\n longName: gettext(\"My threads\"),\n })\n lists.push({\n type: \"new\",\n path: \"new/\",\n name: gettext(\"New\"),\n longName: gettext(\"New threads\"),\n })\n lists.push({\n type: \"unread\",\n path: \"unread/\",\n name: gettext(\"Unread\"),\n longName: gettext(\"Unread threads\"),\n })\n lists.push({\n type: \"subscribed\",\n path: \"subscribed/\",\n name: gettext(\"Subscribed\"),\n longName: gettext(\"Subscribed threads\"),\n })\n\n if (user.acl.can_see_unapproved_content_lists) {\n lists.push({\n type: \"unapproved\",\n path: \"unapproved/\",\n name: gettext(\"Unapproved\"),\n longName: gettext(\"Unapproved content\"),\n })\n }\n }\n\n return lists\n}\n\nexport function paths(user, mode) {\n let lists = getLists(user)\n let routes = []\n let categoriesMap = {}\n\n misago.get(\"CATEGORIES\").forEach(function (category) {\n lists.forEach(function (list) {\n categoriesMap[category.id] = category\n\n routes.push({\n path: category.url.index + list.path,\n component: connect(getSelect(mode))(Route),\n\n categories: misago.get(\"CATEGORIES\"),\n categoriesMap,\n category,\n\n lists,\n list,\n })\n })\n })\n\n return routes\n}\n","const MAX_RESULTS = 5\n\nexport default function (data) {\n const filtered = data.filter((section) => {\n return section.results.count > 0\n })\n\n return filtered.map((section) => {\n return Object.assign({}, section, {\n count: section.results.count,\n results: section.results.results.slice(0, MAX_RESULTS),\n })\n })\n}\n","export const HEADER = \"HEADER\"\nexport const RESULT = \"RESULT\"\nexport const FOOTER = \"FOOTER\"\n","import React from \"react\"\n\nexport default function ({ value, onChange }) {\n return (\n <input\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n aria-controls=\"dropdown-menu dropdown-search-results\"\n autoComplete=\"off\"\n className=\"form-control\"\n value={value}\n onChange={onChange}\n placeholder={gettext(\"Search\")}\n role=\"combobox\"\n type=\"text\"\n />\n )\n}\n","import React from \"react\"\nimport Input from \"./input\"\n\nexport default function ({ children, onChange, query }) {\n return (\n <ul className=\"dropdown-menu dropdown-search-results\" role=\"menu\">\n <li className=\"form-group\">\n <Input value={query} onChange={onChange} />\n </li>\n {children}\n </ul>\n )\n}\n","import React from \"react\"\n\nexport default function () {\n return (\n <li className=\"dropdown-search-message\">\n {gettext(\"Search returned no results.\")}\n </li>\n )\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\n\nexport default function ({ message }) {\n return (\n <li className=\"dropdown-search-loader\">\n <Loader />\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ provider, query }) {\n const url = provider.url + \"?q=\" + encodeURI(query)\n const label = ngettext(\n 'See full \"%(provider)s\" results page with %(count)s result.',\n 'See full \"%(provider)s\" results page with %(count)s results.',\n provider.count\n )\n\n return (\n <li className=\"dropdown-search-footer\">\n <a href={url}>\n {interpolate(\n label,\n {\n count: provider.count,\n provider: provider.name,\n },\n true\n )}\n </a>\n </li>\n )\n}\n","import React from \"react\"\n\nexport default function ({ provider }) {\n return <li className=\"dropdown-search-header\">{provider.name}</li>\n}\n","import moment from \"moment\"\nimport React from \"react\"\n\nexport default function ({ result }) {\n const { poster, thread } = result\n const footer = gettext(\n \"Posted by %(poster)s on %(posted_on)s in %(category)s.\"\n )\n\n return (\n <li>\n <a href={result.url.index} className=\"dropdown-search-thread\">\n <h5>{thread.title}</h5>\n <small className=\"dropdown-search-post-content\">\n {$(result.content).text()}\n </small>\n <small className=\"dropdown-search-post-footer\">\n {interpolate(\n footer,\n {\n category: result.category.name,\n posted_on: moment(result.posted_on).format(\"LL\"),\n poster: result.poster_name,\n },\n true\n )}\n </small>\n </a>\n </li>\n )\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport Avatar from \"misago/components/avatar\"\n\nexport default function ({ result }) {\n const { rank } = result\n\n const detail = gettext(\"%(title)s, joined on %(joined_on)s\")\n const title = result.title || rank.title || rank.name\n\n return (\n <li>\n <a href={result.url} className=\"dropdown-search-user\">\n <div className=\"media\">\n <div className=\"media-left\">\n <Avatar size={38} user={result} />\n </div>\n <div className=\"media-body\">\n <h5 className=\"media-heading\">{result.username}</h5>\n <small>\n {interpolate(\n detail,\n {\n title,\n joined_on: moment(result.joined_on).format(\"LL\"),\n },\n true\n )}\n </small>\n </div>\n </div>\n </a>\n </li>\n )\n}\n","import React from \"react\"\nimport Thread from \"./thread\"\nimport User from \"./user\"\n\nexport default function ({ provider, result }) {\n if (provider.id === \"threads\") {\n return <Thread result={result} />\n }\n\n return <User result={result} />\n}\n","import React from \"react\"\nimport { HEADER, FOOTER } from \"../constants\"\nimport Footer from \"./footer\"\nimport Header from \"./header\"\nimport Result from \"./result\"\n\nexport default function ({ provider, result, type, query }) {\n if (type === HEADER) {\n return <Header provider={provider} />\n } else if (type === FOOTER) {\n return <Footer provider={provider} query={query} />\n }\n\n return <Result provider={provider} result={result} />\n}\n","import { HEADER, RESULT, FOOTER } from \"./constants\"\n\nexport default function (results) {\n const flatlist = []\n flattenProviders(results, flatlist)\n return flatlist\n}\n\nfunction flattenProviders(results, flatlist) {\n const arrayLength = results.length\n for (var i = 0; i < arrayLength; i++) {\n const provider = results[i]\n\n flatlist.push({\n provider,\n type: HEADER,\n })\n\n flattenProvider(provider, flatlist)\n }\n}\n\nfunction flattenProvider(provider, flatlist) {\n const arrayLength = provider.results.length\n for (var i = 0; i < arrayLength; i++) {\n const result = provider.results[i]\n flatlist.push({\n provider,\n result,\n type: RESULT,\n })\n }\n\n flatlist.push({\n provider,\n type: FOOTER,\n })\n}\n","import React from \"react\"\nimport { RESULT } from \"./constants\"\nimport DropdownMenu from \"./dropdown-menu\"\nimport Empty from \"./empty\"\nimport Loader from \"./loader\"\nimport Result from \"./result\"\nimport flattenResults from \"./flatten-results\"\n\nexport default function ({ isLoading, onChange, results, query }) {\n if (!query.trim().length) {\n return <DropdownMenu onChange={onChange} query={query} />\n }\n\n if (results.length) {\n const flatResults = flattenResults(results)\n\n return (\n <DropdownMenu onChange={onChange} query={query}>\n {flatResults.map((props) => {\n const { type, provider, result } = props\n\n if (type === RESULT) {\n return (\n <Result\n key={[provider.id, type, result.id].join(\"_\")}\n {...props}\n />\n )\n }\n\n return (\n <Result\n key={[provider.id, type].join(\"_\")}\n query={query}\n {...props}\n />\n )\n })}\n </DropdownMenu>\n )\n } else if (isLoading) {\n return (\n <DropdownMenu onChange={onChange} query={query}>\n <Loader />\n </DropdownMenu>\n )\n }\n\n return (\n <DropdownMenu onChange={onChange} query={query}>\n <Empty />\n </DropdownMenu>\n )\n}\n","import React from \"react\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport misago from \"misago\"\nimport cleanResults from \"./clean-results\"\nimport Dropdown from \"./dropdown\"\n\nexport default class extends React.Component {\n constructor() {\n super()\n\n this.state = {\n isLoading: false,\n isOpen: false,\n query: \"\",\n results: [],\n }\n\n this.intervalId = null\n }\n\n componentDidMount() {\n document.addEventListener(\"mousedown\", this.onDocumentMouseDown)\n document.addEventListener(\"keydown\", this.onEscape)\n }\n\n componentWillUnmount() {\n document.removeEventListener(\"mousedown\", this.onDocumentMouseDown)\n document.removeEventListener(\"keydown\", this.onEscape)\n }\n\n onToggle = (ev) => {\n this.setState((prevState, props) => {\n if (!prevState.isOpen) {\n window.setTimeout(() => {\n this.container.querySelector(\"input\").focus()\n }, 100)\n }\n\n return { isOpen: !prevState.isOpen }\n })\n }\n\n onDocumentMouseDown = (ev) => {\n let closeResults = true\n let node = ev.target\n\n while (node !== null && node !== document) {\n if (node === this.container) {\n closeResults = false\n return\n }\n\n node = node.parentNode\n }\n\n if (closeResults) {\n this.setState({ isOpen: false })\n }\n }\n\n onEscape = (ev) => {\n if (ev.key === \"Escape\") {\n this.setState({ isOpen: false })\n }\n }\n\n onChange = (ev) => {\n const query = ev.target.value\n\n this.setState({ query })\n this.loadResults(query.trim())\n }\n\n loadResults(query) {\n if (!query.length) return\n\n const delay = 300 + Math.random() * 300\n\n if (this.intervalId) {\n window.clearTimeout(this.intervalId)\n }\n\n this.setState({ isLoading: true })\n\n this.intervalId = window.setTimeout(() => {\n ajax.get(misago.get(\"SEARCH_API\"), { q: query }).then(\n (data) => {\n this.setState({\n intervalId: null,\n isLoading: false,\n results: cleanResults(data),\n })\n },\n (rejection) => {\n snackbar.apiError(rejection)\n\n this.setState({\n intervalId: null,\n isLoading: false,\n results: [],\n })\n }\n )\n }, delay)\n }\n\n render() {\n let className = \"navbar-search dropdown\"\n if (this.state.isOpen) className += \" open\"\n\n return (\n <div\n className={className}\n ref={(container) => (this.container = container)}\n >\n <a\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className=\"navbar-icon\"\n data-toggle=\"dropdown\"\n href={misago.get(\"SEARCH_URL\")}\n onClick={this.onToggle}\n >\n <i className=\"material-icon\">search</i>\n </a>\n <Dropdown\n isLoading={this.state.isLoading}\n onChange={this.onChange}\n results={this.state.results}\n query={this.state.query}\n />\n </div>\n )\n }\n}\n","import React from \"react\"\nimport zxcvbn from \"misago/services/zxcvbn\"\n\nexport const STYLES = [\n \"progress-bar-danger\",\n \"progress-bar-warning\",\n \"progress-bar-warning\",\n \"progress-bar-primary\",\n \"progress-bar-success\",\n]\n\nexport const LABELS = [\n gettext(\"Entered password is very weak.\"),\n gettext(\"Entered password is weak.\"),\n gettext(\"Entered password is average.\"),\n gettext(\"Entered password is strong.\"),\n gettext(\"Entered password is very strong.\"),\n]\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this._score = 0\n this._password = null\n this._inputs = []\n\n this.state = {\n loaded: false,\n }\n }\n\n componentDidMount() {\n zxcvbn.load().then(() => {\n this.setState({ loaded: true })\n })\n }\n\n getScore(password, inputs) {\n let cacheStale = false\n\n if (password !== this._password) {\n cacheStale = true\n }\n\n if (inputs.length !== this._inputs.length) {\n cacheStale = true\n } else {\n inputs.map((value, i) => {\n if (value.trim() !== this._inputs[i]) {\n cacheStale = true\n }\n })\n }\n\n if (cacheStale) {\n this._score = zxcvbn.scorePassword(password, inputs)\n this._password = password\n this._inputs = inputs.map(function (value) {\n return value.trim()\n })\n }\n\n return this._score\n }\n\n render() {\n if (!this.state.loaded) return null\n\n let score = this.getScore(this.props.password, this.props.inputs)\n\n return (\n <div className=\"help-block password-strength\">\n <div className=\"progress\">\n <div\n className={\"progress-bar \" + STYLES[score]}\n style={{ width: 20 + 20 * score + \"%\" }}\n role=\"progress-bar\"\n aria-valuenow={score}\n aria-valuemin=\"0\"\n aria-valuemax=\"4\"\n >\n <span className=\"sr-only\">{LABELS[score]}</span>\n </div>\n </div>\n <p className=\"text-small\">{LABELS[score]}</p>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Button from \"misago/components/button\"\nimport Form from \"misago/components/form\"\nimport FormGroup from \"misago/components/form-group\"\nimport PasswordStrength from \"misago/components/password-strength\"\nimport RegisterLegalFootnote from \"misago/components/RegisterLegalFootnote\"\nimport StartSocialAuth from \"misago/components/StartSocialAuth\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport auth from \"misago/services/auth\"\nimport captcha from \"misago/services/captcha\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\nimport showBannedPage from \"misago/utils/banned-page\"\nimport * as validators from \"misago/utils/validators\"\n\nexport class RegisterForm extends Form {\n constructor(props) {\n super(props)\n\n const { username, password } = this.props.criteria\n\n let passwordMinLength = 0\n password.forEach((item) => {\n if (item.name === \"MinimumLengthValidator\") {\n passwordMinLength = item.min_length\n }\n })\n\n const formValidators = {\n username: [\n validators.usernameContent(),\n validators.usernameMinLength(username.min_length),\n validators.usernameMaxLength(username.max_length),\n ],\n email: [validators.email()],\n password: [validators.passwordMinLength(passwordMinLength)],\n captcha: captcha.validator(),\n }\n\n if (!!misago.get(\"TERMS_OF_SERVICE_ID\")) {\n formValidators.termsOfService = [validators.requiredTermsOfService()]\n }\n\n if (!!misago.get(\"PRIVACY_POLICY_ID\")) {\n formValidators.privacyPolicy = [validators.requiredPrivacyPolicy()]\n }\n\n this.state = {\n isLoading: false,\n\n username: \"\",\n email: \"\",\n password: \"\",\n captcha: \"\",\n\n termsOfService: null,\n privacyPolicy: null,\n\n validators: formValidators,\n errors: {},\n }\n }\n\n clean() {\n if (this.isValid()) {\n return true\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n this.setState({\n errors: this.validate(),\n })\n return false\n }\n }\n\n send() {\n return ajax.post(misago.get(\"USERS_API\"), {\n username: this.state.username,\n email: this.state.email,\n password: this.state.password,\n captcha: this.state.captcha,\n terms_of_service: this.state.termsOfService,\n privacy_policy: this.state.privacyPolicy,\n })\n }\n\n handleSuccess(apiResponse) {\n this.props.callback(apiResponse)\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n this.setState({\n errors: Object.assign({}, this.state.errors, rejection),\n })\n\n if (rejection.__all__ && rejection.__all__.length > 0) {\n snackbar.error(rejection.__all__[0])\n } else {\n snackbar.error(gettext(\"Form contains errors.\"))\n }\n } else if (rejection.status === 403 && rejection.ban) {\n showBannedPage(rejection.ban)\n modal.hide()\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n handlePrivacyPolicyChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"privacyPolicy\", value)\n }\n\n handleTermsOfServiceChange = (event) => {\n const value = event.target.value\n this.handleToggleAgreement(\"termsOfService\", value)\n }\n\n handleToggleAgreement = (agreement, value) => {\n this.setState((prevState, props) => {\n if (prevState[agreement] === null) {\n const errors = { ...prevState.errors, [agreement]: null }\n return { errors, [agreement]: value }\n }\n\n const validator = this.state.validators[agreement][0]\n const errors = { ...prevState.errors, [agreement]: [validator(null)] }\n return { errors, [agreement]: null }\n })\n }\n\n render() {\n return (\n <div className=\"modal-dialog modal-register\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Register\")}</h4>\n </div>\n <form onSubmit={this.handleSubmit}>\n <input type=\"type\" style={{ display: \"none\" }} />\n <input type=\"password\" style={{ display: \"none\" }} />\n <div className=\"modal-body\">\n <StartSocialAuth\n buttonClassName=\"col-xs-12 col-sm-6\"\n buttonLabel={gettext(\"Join with %(site)s\")}\n formLabel={gettext(\"Or create forum account:\")}\n />\n\n <FormGroup\n label={gettext(\"Username\")}\n for=\"id_username\"\n validation={this.state.errors.username}\n >\n <input\n type=\"text\"\n id=\"id_username\"\n className=\"form-control\"\n aria-describedby=\"id_username_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"username\")}\n value={this.state.username}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"E-mail\")}\n for=\"id_email\"\n validation={this.state.errors.email}\n >\n <input\n type=\"text\"\n id=\"id_email\"\n className=\"form-control\"\n aria-describedby=\"id_email_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"email\")}\n value={this.state.email}\n />\n </FormGroup>\n\n <FormGroup\n label={gettext(\"Password\")}\n for=\"id_password\"\n validation={this.state.errors.password}\n extra={\n <PasswordStrength\n password={this.state.password}\n inputs={[this.state.username, this.state.email]}\n />\n }\n >\n <input\n type=\"password\"\n id=\"id_password\"\n className=\"form-control\"\n aria-describedby=\"id_password_status\"\n disabled={this.state.isLoading}\n onChange={this.bindInput(\"password\")}\n value={this.state.password}\n />\n </FormGroup>\n\n {captcha.component({\n form: this,\n })}\n\n <RegisterLegalFootnote\n errors={this.state.errors}\n privacyPolicy={this.state.privacyPolicy}\n termsOfService={this.state.termsOfService}\n onPrivacyPolicyChange={this.handlePrivacyPolicyChange}\n onTermsOfServiceChange={this.handleTermsOfServiceChange}\n />\n </div>\n <div className=\"modal-footer\">\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n disabled={this.state.isLoading}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <Button className=\"btn-primary\" loading={this.state.isLoading}>\n {gettext(\"Register account\")}\n </Button>\n </div>\n </form>\n </div>\n </div>\n )\n }\n}\n\nexport class RegisterComplete extends React.Component {\n getLead() {\n if (this.props.activation === \"user\") {\n return gettext(\n \"%(username)s, your account has been created but you need to activate it before you will be able to sign in.\"\n )\n } else if (this.props.activation === \"admin\") {\n return gettext(\n \"%(username)s, your account has been created but board administrator will have to activate it before you will be able to sign in.\"\n )\n }\n }\n\n getSubscript() {\n if (this.props.activation === \"user\") {\n return gettext(\n \"We have sent an e-mail to %(email)s with link that you have to click to activate your account.\"\n )\n } else if (this.props.activation === \"admin\") {\n return gettext(\n \"We will send an e-mail to %(email)s when this takes place.\"\n )\n }\n }\n\n render() {\n return (\n <div\n className=\"modal-dialog modal-message modal-register\"\n role=\"document\"\n >\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Registration complete\")}</h4>\n </div>\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">info_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">\n {interpolate(\n this.getLead(),\n { username: this.props.username },\n true\n )}\n </p>\n <p>\n {interpolate(\n this.getSubscript(),\n { email: this.props.email },\n true\n )}\n </p>\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n complete: false,\n }\n }\n\n completeRegistration = (apiResponse) => {\n if (apiResponse.activation === \"active\") {\n modal.hide()\n auth.signIn(apiResponse)\n } else {\n this.setState({\n complete: apiResponse,\n })\n }\n }\n\n render() {\n if (this.state.complete) {\n return (\n <RegisterComplete\n activation={this.state.complete.activation}\n email={this.state.complete.email}\n username={this.state.complete.username}\n />\n )\n }\n\n return <RegisterForm callback={this.completeRegistration} {...this.props} />\n }\n}\n","import React from \"react\"\nimport Loader from \"misago/components/loader\"\nimport RegisterForm from \"misago/components/register.js\"\nimport ajax from \"misago/services/ajax\"\nimport captcha from \"misago/services/captcha\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n isLoaded: false,\n\n criteria: null,\n }\n }\n\n showRegisterForm = () => {\n if (misago.get(\"SETTINGS\").account_activation === \"closed\") {\n snackbar.info(gettext(\"New registrations are currently disabled.\"))\n } else if (this.state.isLoaded) {\n modal.show(<RegisterForm criteria={this.state.criteria} />)\n } else {\n this.setState({ isLoading: true })\n\n Promise.all([\n captcha.load(),\n ajax.get(misago.get(\"AUTH_CRITERIA_API\")),\n ]).then(\n (result) => {\n this.setState({\n isLoading: false,\n isLoaded: true,\n criteria: result[1],\n })\n\n modal.show(<RegisterForm criteria={result[1]} />)\n },\n () => {\n this.setState({ isLoading: false })\n\n snackbar.error(\n gettext(\"Registration is currently unavailable due to an error.\")\n )\n }\n )\n }\n }\n\n getClassName() {\n return this.props.className + (this.state.isLoading ? \" btn-loading\" : \"\")\n }\n\n render() {\n return (\n <button\n className={\"btn \" + this.getClassName()}\n disabled={this.state.isLoading}\n onClick={this.showRegisterForm}\n type=\"button\"\n >\n {gettext(\"Register\")}\n {this.state.isLoading ? <Loader /> : null}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport NavbarSearch from \"misago/components/navbar-search\"\nimport RegisterButton from \"misago/components/register-button\"\nimport SignInModal from \"misago/components/sign-in.js\"\nimport misago from \"misago\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\nimport modal from \"misago/services/modal\"\n\nexport class GuestMenu extends React.Component {\n showSignInModal() {\n modal.show(SignInModal)\n }\n\n render() {\n const delegateAuth = misago.get(\"SETTINGS\").DELEGATE_AUTH\n \n return (\n <ul\n className=\"dropdown-menu user-dropdown dropdown-menu-right\"\n role=\"menu\"\n >\n <li className=\"guest-preview\">\n <h4>{gettext(\"You are browsing as guest.\")}</h4>\n <p>\n {gettext(\n \"Sign in or register to start and participate in discussions.\"\n )}\n </p>\n {delegateAuth ? (\n <div className=\"row\">\n <div className=\"col-xs-12\">\n <a\n className=\"btn btn-default btn-sign-in btn-block\"\n href={misago.get(\"SETTINGS\").LOGIN_URL}\n >\n {gettext(\"Sign in\")}\n </a>\n </div>\n </div>\n ) : (\n <div className=\"row\">\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sign-in btn-block\"\n onClick={this.showSignInModal}\n type=\"button\"\n >\n {gettext(\"Sign in\")}\n </button>\n </div>\n <div className=\"col-xs-6\">\n <RegisterButton className=\"btn-primary btn-register btn-block\">\n {gettext(\"Register\")}\n </RegisterButton>\n </div>\n </div>\n )}\n </li>\n </ul>\n )\n }\n}\n\nexport class GuestNav extends GuestMenu {\n render() {\n if (misago.get(\"SETTINGS\").DELEGATE_AUTH) {\n return (\n <div className=\"nav nav-guest\">\n <a\n className=\"btn navbar-btn btn-default btn-sign-in\"\n href={misago.get(\"SETTINGS\").LOGIN_URL}\n >\n {gettext(\"Sign in\")}\n </a>\n <div className=\"navbar-left\">\n <NavbarSearch />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"nav nav-guest\">\n <button\n className=\"btn navbar-btn btn-default btn-sign-in\"\n onClick={this.showSignInModal}\n type=\"button\"\n >\n {gettext(\"Sign in\")}\n </button>\n <RegisterButton className=\"navbar-btn btn-primary btn-register\">\n {gettext(\"Register\")}\n </RegisterButton>\n <div className=\"navbar-left\">\n <NavbarSearch />\n </div>\n </div>\n )\n }\n}\n\nexport class CompactGuestNav extends React.Component {\n showGuestMenu() {\n dropdown.show(GuestMenu)\n }\n\n render() {\n return (\n <button type=\"button\" onClick={this.showGuestMenu}>\n <Avatar size=\"64\" />\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport Loader from \"misago/components/loader\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n }\n }\n\n callApi(avatarType) {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: avatarType,\n })\n .then(\n (response) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.success(response.detail)\n this.props.onComplete(response)\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n setGravatar = () => {\n this.callApi(\"gravatar\")\n }\n\n setGenerated = () => {\n this.callApi(\"generated\")\n }\n\n getGravatarButton() {\n if (this.props.options.gravatar) {\n return (\n <Button\n onClick={this.setGravatar}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block btn-avatar-gravatar\"\n >\n {gettext(\"Download my Gravatar\")}\n </Button>\n )\n } else {\n return null\n }\n }\n\n getCropButton() {\n if (!this.props.options.crop_src) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-crop\"\n disabled={this.state.isLoading}\n onClick={this.props.showCrop}\n >\n {gettext(\"Re-crop uploaded image\")}\n </Button>\n )\n }\n\n getUploadButton() {\n if (!this.props.options.upload) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-upload\"\n disabled={this.state.isLoading}\n onClick={this.props.showUpload}\n >\n {gettext(\"Upload new image\")}\n </Button>\n )\n }\n\n getGalleryButton() {\n if (!this.props.options.galleries) return null\n\n return (\n <Button\n className=\"btn-default btn-block btn-avatar-gallery\"\n disabled={this.state.isLoading}\n onClick={this.props.showGallery}\n >\n {gettext(\"Pick avatar from gallery\")}\n </Button>\n )\n }\n\n getAvatarPreview() {\n let userPeview = {\n id: this.props.user.id,\n avatars: this.props.options.avatars,\n }\n\n if (this.state.isLoading) {\n return (\n <div className=\"avatar-preview preview-loading\">\n <Avatar size=\"200\" user={userPeview} />\n <Loader />\n </div>\n )\n }\n\n return (\n <div className=\"avatar-preview\">\n <Avatar size=\"200\" user={userPeview} />\n </div>\n )\n }\n\n render() {\n return (\n <div className=\"modal-body modal-avatar-index\">\n <div className=\"row\">\n <div className=\"col-md-5\">{this.getAvatarPreview()}</div>\n <div className=\"col-md-7\">\n {this.getGravatarButton()}\n\n <Button\n onClick={this.setGenerated}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block btn-avatar-generate\"\n >\n {gettext(\"Generate my individual avatar\")}\n </Button>\n\n {this.getCropButton()}\n {this.getUploadButton()}\n {this.getGalleryButton()}\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: false,\n deviceRatio: 1,\n }\n }\n\n getAvatarSize() {\n if (this.props.upload) {\n return this.props.options.crop_tmp.size\n } else {\n return this.props.options.crop_src.size\n }\n }\n\n getImagePath() {\n if (this.props.upload) {\n return this.props.dataUrl\n } else {\n return this.props.options.crop_src.url\n }\n }\n\n componentDidMount() {\n let cropit = $(\".crop-form\")\n let cropperWidth = this.getAvatarSize()\n\n const initialWidth = cropit.width()\n while (initialWidth < cropperWidth) {\n cropperWidth = cropperWidth / 2\n }\n\n const deviceRatio = this.getAvatarSize() / cropperWidth\n\n cropit.width(cropperWidth)\n\n cropit.cropit({\n width: cropperWidth,\n height: cropperWidth,\n exportZoom: deviceRatio,\n imageState: {\n src: this.getImagePath(),\n },\n onImageLoaded: () => {\n if (this.props.upload) {\n // center uploaded image\n let zoomLevel = cropit.cropit(\"zoom\")\n let imageSize = cropit.cropit(\"imageSize\")\n\n // is it wider than taller?\n if (imageSize.width > imageSize.height) {\n let displayedWidth = imageSize.width * zoomLevel\n let offsetX = (displayedWidth - this.getAvatarSize()) / -2\n\n cropit.cropit(\"offset\", {\n x: offsetX,\n y: 0,\n })\n } else if (imageSize.width < imageSize.height) {\n let displayedHeight = imageSize.height * zoomLevel\n let offsetY = (displayedHeight - this.getAvatarSize()) / -2\n\n cropit.cropit(\"offset\", {\n x: 0,\n y: offsetY,\n })\n } else {\n cropit.cropit(\"offset\", {\n x: 0,\n y: 0,\n })\n }\n } else {\n // use preserved crop\n let crop = this.props.options.crop_src.crop\n\n if (crop) {\n cropit.cropit(\"zoom\", crop.zoom)\n cropit.cropit(\"offset\", {\n x: crop.x,\n y: crop.y,\n })\n }\n }\n },\n })\n }\n\n componentWillUnmount() {\n $(\".crop-form\").cropit(\"disable\")\n }\n\n cropAvatar = () => {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n let avatarType = this.props.upload ? \"crop_tmp\" : \"crop_src\"\n let cropit = $(\".crop-form\")\n\n const deviceRatio = cropit.cropit(\"exportZoom\")\n const cropitOffset = cropit.cropit(\"offset\")\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: avatarType,\n crop: {\n offset: {\n x: cropitOffset.x * deviceRatio,\n y: cropitOffset.y * deviceRatio,\n },\n zoom: cropit.cropit(\"zoom\") * deviceRatio,\n },\n })\n .then(\n (data) => {\n this.props.onComplete(data)\n snackbar.success(data.detail)\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"modal-body modal-avatar-crop\">\n <div className=\"crop-form\">\n <div className=\"cropit-preview\" />\n <input type=\"range\" className=\"cropit-image-zoom-input\" />\n </div>\n </div>\n <div className=\"modal-footer\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.cropAvatar}\n loading={this.state.isLoading}\n className=\"btn-primary btn-block\"\n >\n {this.props.upload\n ? gettext(\"Set avatar\")\n : gettext(\"Crop image\")}\n </Button>\n\n <Button\n onClick={this.props.showIndex}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport AvatarCrop from \"misago/components/change-avatar/crop\"\nimport Button from \"misago/components/button\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport fileSize from \"misago/utils/file-size\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n image: null,\n preview: null,\n progress: 0,\n uploaded: null,\n dataUrl: null,\n }\n }\n\n validateFile(image) {\n if (image.size > this.props.options.upload.limit) {\n return interpolate(\n gettext(\"Selected file is too big. (%(filesize)s)\"),\n {\n filesize: fileSize(image.size),\n },\n true\n )\n }\n\n let invalidTypeMsg = gettext(\"Selected file type is not supported.\")\n if (\n this.props.options.upload.allowed_mime_types.indexOf(image.type) === -1\n ) {\n return invalidTypeMsg\n }\n\n let extensionFound = false\n let loweredFilename = image.name.toLowerCase()\n this.props.options.upload.allowed_extensions.map(function (extension) {\n if (loweredFilename.substr(extension.length * -1) === extension) {\n extensionFound = true\n }\n })\n\n if (!extensionFound) {\n return invalidTypeMsg\n }\n\n return false\n }\n\n pickFile = () => {\n document.getElementById(\"avatar-hidden-upload\").click()\n }\n\n uploadFile = () => {\n let image = document.getElementById(\"avatar-hidden-upload\").files[0]\n if (!image) return\n\n let validationError = this.validateFile(image)\n if (validationError) {\n snackbar.error(validationError)\n return\n }\n\n this.setState({\n image,\n preview: URL.createObjectURL(image),\n progress: 0,\n })\n\n let data = new FormData()\n data.append(\"avatar\", \"upload\")\n data.append(\"image\", image)\n\n ajax\n .upload(this.props.user.api.avatar, data, (progress) => {\n this.setState({\n progress,\n })\n })\n .then(\n (data) => {\n this.setState({\n options: data,\n uploaded: data.detail,\n })\n\n snackbar.info(\n gettext(\"Your image has been uploaded and you may now crop it.\")\n )\n },\n (rejection) => {\n if (rejection.status === 400 || rejection.status === 413) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n image: null,\n progress: 0,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n getUploadRequirements(options) {\n let extensions = options.allowed_extensions.map(function (extension) {\n return extension.substr(1)\n })\n\n return interpolate(\n gettext(\"%(files)s files smaller than %(limit)s\"),\n {\n files: extensions.join(\", \"),\n limit: fileSize(options.limit),\n },\n true\n )\n }\n\n getUploadButton() {\n return (\n <div className=\"modal-body modal-avatar-upload\">\n <Button className=\"btn-pick-file\" onClick={this.pickFile}>\n <div className=\"material-icon\">input</div>\n {gettext(\"Select file\")}\n </Button>\n <p className=\"text-muted\">\n {this.getUploadRequirements(this.props.options.upload)}\n </p>\n </div>\n )\n }\n\n getUploadProgressLabel() {\n return interpolate(\n gettext(\"%(progress)s % complete\"),\n {\n progress: this.state.progress,\n },\n true\n )\n }\n\n getUploadProgress() {\n return (\n <div className=\"modal-body modal-avatar-upload\">\n <div className=\"upload-progress\">\n <img src={this.state.preview} />\n\n <div className=\"progress\">\n <div\n className=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"{this.state.progress}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n style={{ width: this.state.progress + \"%\" }}\n >\n <span className=\"sr-only\">{this.getUploadProgressLabel()}</span>\n </div>\n </div>\n </div>\n </div>\n )\n }\n\n renderUpload() {\n return (\n <div>\n <input\n type=\"file\"\n id=\"avatar-hidden-upload\"\n className=\"hidden-file-upload\"\n onChange={this.uploadFile}\n />\n {this.state.image ? this.getUploadProgress() : this.getUploadButton()}\n <div className=\"modal-footer\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.props.showIndex}\n disabled={!!this.state.image}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n )\n }\n\n renderCrop() {\n return (\n <AvatarCrop\n options={this.state.options}\n user={this.props.user}\n upload={this.state.uploaded}\n dataUrl={this.state.preview}\n onComplete={this.props.onComplete}\n showError={this.props.showError}\n showIndex={this.props.showIndex}\n />\n )\n }\n\n render() {\n if (this.state.uploaded) return this.renderCrop()\n\n return this.renderUpload()\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport Button from \"misago/components/button\"\nimport misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport batch from \"misago/utils/batch\"\n\nexport class GalleryItem extends React.Component {\n select = () => {\n this.props.select(this.props.id)\n }\n\n getClassName() {\n if (this.props.selection === this.props.id) {\n if (this.props.disabled) {\n return \"btn btn-avatar btn-disabled avatar-selected\"\n } else {\n return \"btn btn-avatar avatar-selected\"\n }\n } else if (this.props.disabled) {\n return \"btn btn-avatar btn-disabled\"\n } else {\n return \"btn btn-avatar\"\n }\n }\n\n render() {\n return (\n <button\n type=\"button\"\n className={this.getClassName()}\n disabled={this.props.disabled}\n onClick={this.select}\n >\n <img src={this.props.url} />\n </button>\n )\n }\n}\n\nexport class Gallery extends React.Component {\n render() {\n return (\n <div className=\"avatars-gallery\">\n <h3>{this.props.name}</h3>\n\n <div className=\"avatars-gallery-images\">\n {batch(this.props.images, 4, null).map((row, i) => {\n return (\n <div className=\"row\" key={i}>\n {row.map((item, i) => {\n return (\n <div className=\"col-xs-3\" key={i}>\n {item ? (\n <GalleryItem\n disabled={this.props.disabled}\n select={this.props.select}\n selection={this.props.selection}\n {...item}\n />\n ) : (\n <div className=\"blank-avatar\" />\n )}\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n selection: null,\n isLoading: false,\n }\n }\n\n select = (image) => {\n this.setState({\n selection: image,\n })\n }\n\n save = () => {\n if (this.state.isLoading) {\n return false\n }\n\n this.setState({\n isLoading: true,\n })\n\n ajax\n .post(this.props.user.api.avatar, {\n avatar: \"galleries\",\n image: this.state.selection,\n })\n .then(\n (response) => {\n this.setState({\n isLoading: false,\n })\n\n snackbar.success(response.detail)\n this.props.onComplete(response)\n this.props.showIndex()\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n this.setState({\n isLoading: false,\n })\n } else {\n this.props.showError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <div>\n <div className=\"modal-body modal-avatar-gallery\">\n {this.props.options.galleries.map((item, i) => {\n return (\n <Gallery\n name={item.name}\n images={item.images}\n selection={this.state.selection}\n disabled={this.state.isLoading}\n select={this.select}\n key={i}\n />\n )\n })}\n </div>\n <div className=\"modal-footer\">\n <div className=\"row\">\n <div className=\"col-md-6 col-md-offset-3\">\n <Button\n onClick={this.save}\n loading={this.state.isLoading}\n disabled={!this.state.selection}\n className=\"btn-primary btn-block\"\n >\n {this.state.selection\n ? gettext(\"Save choice\")\n : gettext(\"Select avatar\")}\n </Button>\n\n <Button\n onClick={this.props.showIndex}\n disabled={this.state.isLoading}\n className=\"btn-default btn-block\"\n >\n {gettext(\"Cancel\")}\n </Button>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport AvatarIndex from \"misago/components/change-avatar/index\"\nimport AvatarCrop from \"misago/components/change-avatar/crop\"\nimport AvatarUpload from \"misago/components/change-avatar/upload\"\nimport AvatarGallery from \"misago/components/change-avatar/gallery\"\nimport Loader from \"misago/components/modal-loader\"\nimport { updateAvatar } from \"misago/reducers/users\"\nimport ajax from \"misago/services/ajax\"\nimport store from \"misago/services/store\"\n\nexport class ChangeAvatarError extends React.Component {\n getErrorReason() {\n if (this.props.reason) {\n return <p dangerouslySetInnerHTML={{ __html: this.props.reason }} />\n } else {\n return null\n }\n }\n\n render() {\n return (\n <div className=\"modal-body\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">remove_circle_outline</span>\n </div>\n <div className=\"message-body\">\n <p className=\"lead\">{this.props.message}</p>\n {this.getErrorReason()}\n <button\n className=\"btn btn-default\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n {gettext(\"Ok\")}\n </button>\n </div>\n </div>\n )\n }\n}\n\nexport default class extends React.Component {\n componentDidMount() {\n ajax.get(this.props.user.api.avatar).then(\n (options) => {\n this.setState({\n component: AvatarIndex,\n options: options,\n error: null,\n })\n },\n (rejection) => {\n this.showError(rejection)\n }\n )\n }\n\n showError = (error) => {\n this.setState({\n error,\n })\n }\n\n showIndex = () => {\n this.setState({\n component: AvatarIndex,\n })\n }\n\n showUpload = () => {\n this.setState({\n component: AvatarUpload,\n })\n }\n\n showCrop = () => {\n this.setState({\n component: AvatarCrop,\n })\n }\n\n showGallery = () => {\n this.setState({\n component: AvatarGallery,\n })\n }\n\n completeFlow = (options) => {\n store.dispatch(updateAvatar(this.props.user, options.avatars))\n\n this.setState({\n component: AvatarIndex,\n options,\n })\n }\n\n getBody() {\n if (this.state) {\n if (this.state.error) {\n return (\n <ChangeAvatarError\n message={this.state.error.detail}\n reason={this.state.error.reason}\n />\n )\n } else {\n return (\n <this.state.component\n options={this.state.options}\n user={this.props.user}\n onComplete={this.completeFlow}\n showError={this.showError}\n showIndex={this.showIndex}\n showCrop={this.showCrop}\n showUpload={this.showUpload}\n showGallery={this.showGallery}\n />\n )\n }\n } else {\n return <Loader />\n }\n }\n\n getClassName() {\n if (this.state && this.state.error) {\n return \"modal-dialog modal-message modal-change-avatar\"\n } else {\n return \"modal-dialog modal-change-avatar\"\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()} role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n type=\"button\"\n className=\"close\"\n data-dismiss=\"modal\"\n aria-label={gettext(\"Close\")}\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Change your avatar\")}</h4>\n </div>\n\n {this.getBody()}\n </div>\n </div>\n )\n }\n}\n\nexport function select(state) {\n return {\n user: state.auth.user,\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport Avatar from \"misago/components/avatar\"\nimport ChangeAvatarModal, { select } from \"misago/components/change-avatar/root\"\nimport NavbarSearch from \"misago/components/navbar-search\"\nimport misago from \"misago\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\nimport modal from \"misago/services/modal\"\n\nexport class UserMenu extends React.Component {\n changeAvatar() {\n modal.show(connect(select)(ChangeAvatarModal))\n }\n\n render() {\n const { user } = this.props\n\n return (\n <ul\n className=\"dropdown-menu user-dropdown dropdown-menu-right\"\n role=\"menu\"\n >\n <li className=\"dropdown-header\">\n <strong>{user.username}</strong>\n <div className=\"row user-stats\">\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">message</span>\n {user.posts}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">forum</span>\n {user.threads}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">favorite</span>\n {user.followers}\n </div>\n <div className=\"col-sm-3\">\n <span className=\"material-icon\">favorite_outline</span>\n {user.following}\n </div>\n </div>\n </li>\n <li className=\"divider\" />\n <li>\n <a href={user.url}>\n <span className=\"material-icon\">account_circle</span>\n {gettext(\"See your profile\")}\n </a>\n </li>\n <li>\n <a href={misago.get(\"USERCP_URL\")}>\n <span className=\"material-icon\">done_all</span>\n {gettext(\"Change options\")}\n </a>\n </li>\n <li>\n <button\n className=\"btn-link\"\n onClick={this.changeAvatar}\n type=\"button\"\n >\n <span className=\"material-icon\">portrait</span>\n {gettext(\"Change avatar\")}\n </button>\n </li>\n {!!user.acl.can_use_private_threads && (\n <li>\n <a href={misago.get(\"PRIVATE_THREADS_URL\")}>\n <span className=\"material-icon\">message</span>\n {gettext(\"Private threads\")}\n <PrivateThreadsBadge user={user} />\n </a>\n </li>\n )}\n <li className=\"divider\" />\n <li className=\"dropdown-buttons\">\n <button\n className=\"btn btn-default btn-block\"\n onClick={() =>\n document.getElementById(\"hidden-logout-form\").submit()\n }\n type=\"button\"\n >\n {gettext(\"Log out\")}\n </button>\n </li>\n </ul>\n )\n }\n}\n\nexport function PrivateThreadsBadge({ user }) {\n if (!user.unread_private_threads) return null\n\n return <span className=\"badge\">{user.unread_private_threads}</span>\n}\n\nexport function UserNav({ user }) {\n return (\n <ul className=\"ul nav navbar-nav nav-user\">\n <li>\n <NavbarSearch />\n </li>\n <UserPrivateThreadsLink user={user} />\n <li className=\"dropdown\">\n <a\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n className=\"dropdown-toggle\"\n data-toggle=\"dropdown\"\n href={user.url}\n role=\"button\"\n >\n <Avatar user={user} size=\"64\" />\n </a>\n <UserMenu user={user} />\n </li>\n </ul>\n )\n}\n\nexport function UserPrivateThreadsLink({ user }) {\n if (!user.acl.can_use_private_threads) return null\n\n let title = null\n if (user.unread_private_threads) {\n title = gettext(\"You have unread private threads!\")\n } else {\n title = gettext(\"Private threads\")\n }\n\n return (\n <li>\n <a\n className=\"navbar-icon\"\n href={misago.get(\"PRIVATE_THREADS_URL\")}\n title={title}\n >\n <span className=\"material-icon\">message</span>\n {user.unread_private_threads > 0 && (\n <span className=\"badge\">{user.unread_private_threads}</span>\n )}\n </a>\n </li>\n )\n}\n\nexport function selectUserMenu(state) {\n return {\n user: state.auth.user,\n }\n}\n\nexport class CompactUserNav extends React.Component {\n showUserMenu() {\n dropdown.showConnected(\"user-menu\", connect(selectUserMenu)(UserMenu))\n }\n\n render() {\n return (\n <button type=\"button\" onClick={this.showUserMenu}>\n <Avatar user={this.props.user} size=\"50\" />\n </button>\n )\n }\n}\n","import React from \"react\"\nimport { GuestNav, CompactGuestNav } from \"./guest-nav\"\nimport { UserNav, CompactUserNav } from \"./user-nav\"\n\nexport class UserMenu extends React.Component {\n render() {\n if (this.props.isAuthenticated) {\n return <UserNav user={this.props.user} />\n } else {\n return <GuestNav />\n }\n }\n}\n\nexport class CompactUserMenu extends React.Component {\n render() {\n if (this.props.isAuthenticated) {\n return <CompactUserNav user={this.props.user} />\n } else {\n return <CompactGuestNav />\n }\n }\n}\n\nexport function select(state) {\n return state.auth\n}\n","import { connect } from \"react-redux\"\nimport misago from \"misago/index\"\nimport {\n UserMenu,\n CompactUserMenu,\n select,\n} from \"misago/components/user-menu/root\"\nimport mount from \"misago/utils/mount-component\"\n\nexport default function initializer() {\n mount(connect(select)(UserMenu), \"user-menu-mount\")\n mount(connect(select)(CompactUserMenu), \"user-menu-compact-mount\")\n}\n\nmisago.addInitializer({\n name: \"component:user-menu\",\n initializer: initializer,\n after: \"store\",\n})\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Li from \"misago/components/li\"\n\nconst UsersNav = ({ baseUrl, page, pages }) => (\n <div className=\"nav-container\">\n <div className=\"dropdown hidden-sm hidden-md hidden-lg\">\n <button\n className=\"btn btn-default btn-block btn-outline dropdown-toggle\"\n type=\"button\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span className=\"material-icon\">menu</span>\n {page.name}\n </button>\n <ul className=\"dropdown-menu stick-to-bottom\">\n {pages.map((page) => {\n const url = getPageUrl(baseUrl, page)\n return (\n <li key={url}>\n <Link to={url}>{page.name}</Link>\n </li>\n )\n })}\n </ul>\n </div>\n <ul className=\"nav nav-pills hidden-xs\" role=\"menu\">\n {pages.map((page) => {\n const url = getPageUrl(baseUrl, page)\n return (\n <Li path={url} key={url}>\n <Link to={url}>{page.name}</Link>\n </Li>\n )\n })}\n </ul>\n </div>\n)\n\nconst getPageUrl = (baseUrl, page) => {\n let url = baseUrl\n if (page.component === \"rank\") {\n url += page.slug\n } else {\n url += page.component\n }\n return url + \"/\"\n}\n\nexport default UsersNav\n","import React from \"react\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n getEmptyMessage() {\n return interpolate(\n gettext(\n \"No users have posted any new messages during last %(days)s days.\"\n ),\n { days: this.props.trackedPeriod },\n true\n )\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead\">{this.getEmptyMessage()}</p>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport Avatar from \"misago/components/avatar\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n getClassName() {\n if (this.props.hiddenOnMobile) {\n return \"list-group-item hidden-xs hidden-sm\"\n } else {\n return \"list-group-item\"\n }\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"rank-user-avatar\">\n <span>\n <Avatar size=\"50\" />\n </span>\n </div>\n\n <div className=\"rank-user\">\n <div className=\"user-name\">\n <span className=\"item-title\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 80) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n\n <div className=\"user-details\">\n <span className=\"user-status\">\n <span className=\"status-icon ui-preview-text\"> </span>\n <span\n className=\"status-label ui-preview-text hidden-xs hidden-sm\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n <span className=\"rank-name\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n <span className=\"user-title hidden-xs hidden-sm\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n </div>\n <div className=\"user-compact-stats visible-xs-block\">\n <span className=\"rank-position\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Rank\")}</small>\n </span>\n <span className=\"rank-posts-counted\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </span>\n </div>\n </div>\n\n <div className=\"rank-position hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Rank\")}</small>\n </div>\n\n <div className=\"rank-posts-counted hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </div>\n\n <div className=\"rank-posts-total hidden-xs\">\n <strong>\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(20, 30) + \"px\" }}\n >\n \n </span>\n </strong>\n <small>{gettext(\"Total posts\")}</small>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ItemPreview from \"misago/components/users/active-posters/list-item-preview\"\nimport * as random from \"misago/utils/random\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead ui-preview\">\n <span\n className=\"ui-preview-text\"\n style={{ width: random.int(50, 220) + \"px\" }}\n >\n \n </span>\n </p>\n\n <div className=\"active-posters ui-preview\">\n <ul className=\"list-group\">\n {[0, 1, 2].map((i) => {\n return <ItemPreview hiddenOnMobile={i > 0} key={i} />\n })}\n </ul>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { Link } from \"react-router\"\nimport Avatar from \"misago/components/avatar\"\nimport Status, { StatusIcon, StatusLabel } from \"misago/components/user-status\"\nimport misago from \"misago/index\"\nimport * as random from \"misago/utils/random\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.rank.css_class) {\n return \"list-group-item list-group-rank-\" + this.props.rank.css_class\n } else {\n return \"list-group-item\"\n }\n }\n\n getUserStatus() {\n if (this.props.user.status) {\n return (\n <Status user={this.props.user} status={this.props.user.status}>\n <StatusIcon user={this.props.user} status={this.props.user.status} />\n <StatusLabel\n user={this.props.user}\n status={this.props.user.status}\n className=\"status-label hidden-xs hidden-sm\"\n />\n </Status>\n )\n }\n\n return (\n <span className=\"user-status\">\n <span className=\"status-icon ui-preview-text\"> </span>\n <span\n className=\"status-label ui-preview-text hidden-xs hidden-sm\"\n style={{ width: random.int(30, 50) + \"px\" }}\n >\n \n </span>\n </span>\n )\n }\n\n getRankName() {\n if (!this.props.rank.is_tab) {\n return (\n <span className=\"rank-name item-title\">{this.props.rank.name}</span>\n )\n }\n\n let rankUrl = misago.get(\"USERS_LIST_URL\") + this.props.rank.slug + \"/\"\n return (\n <Link to={rankUrl} className=\"rank-name item-title\">\n {this.props.rank.name}\n </Link>\n )\n }\n\n getUserTitle() {\n if (!this.props.user.title) return null\n\n return (\n <span className=\"user-title hidden-xs hidden-sm\">\n {this.props.user.title}\n </span>\n )\n }\n\n render() {\n return (\n <li className={this.getClassName()}>\n <div className=\"rank-user-avatar\">\n <a href={this.props.user.url}>\n <Avatar user={this.props.user} size={50} size2x={64} />\n </a>\n </div>\n\n <div className=\"rank-user\">\n <div className=\"user-name\">\n <a href={this.props.user.url} className=\"item-title\">\n {this.props.user.username}\n </a>\n </div>\n <div className=\"user-details\">\n {this.getUserStatus()}\n {this.getRankName()}\n {this.getUserTitle()}\n </div>\n <div className=\"user-compact-stats visible-xs-block\">\n <span className=\"rank-position\">\n <strong>#{this.props.counter}</strong>\n <small>{gettext(\"Rank\")}</small>\n </span>\n\n <span className=\"rank-posts-counted\">\n <strong>{this.props.user.meta.score}</strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </span>\n </div>\n </div>\n\n <div className=\"rank-position hidden-xs\">\n <strong>#{this.props.counter}</strong>\n <small>{gettext(\"Rank\")}</small>\n </div>\n\n <div className=\"rank-posts-counted hidden-xs\">\n <strong>{this.props.user.meta.score}</strong>\n <small>{gettext(\"Ranked posts\")}</small>\n </div>\n\n <div className=\"rank-posts-total hidden-xs\">\n <strong>{this.props.user.posts}</strong>\n <small>{gettext(\"Total posts\")}</small>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport ListItem from \"misago/components/users/active-posters/list-item\"\nimport PageContainer from \"../../PageContainer\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n getLeadMessage() {\n let message = ngettext(\n \"%(posters)s top poster from last %(days)s days.\",\n \"%(posters)s top posters from last %(days)s days.\",\n this.props.count\n )\n\n return interpolate(\n message,\n {\n posters: this.props.count,\n days: this.props.trackedPeriod,\n },\n true\n )\n }\n\n render() {\n return (\n <div className=\"active-posters-list\">\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={this.props.page}\n pages={misago.get(\"USERS_LISTS\")}\n />\n <p className=\"lead\">{this.getLeadMessage()}</p>\n\n <div className=\"active-posters ui-ready\">\n <ul className=\"list-group\">\n {this.props.users.map((user, i) => {\n return (\n <ListItem\n user={user}\n rank={user.rank}\n counter={i + 1}\n key={user.id}\n />\n )\n })}\n </ul>\n </div>\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport ListEmpty from \"misago/components/users/active-posters/list-empty\"\nimport ListPreview from \"misago/components/users/active-posters/list-preview\"\nimport ListReady from \"misago/components/users/active-posters/list-ready\"\nimport misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/users\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"USERS\")) {\n this.initWithPreloadedData(misago.pop(\"USERS\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling()\n }\n\n initWithPreloadedData(data) {\n this.state = {\n isLoaded: true,\n\n trackedPeriod: data.tracked_period,\n count: data.count,\n }\n\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling() {\n polls.start({\n poll: \"active-posters\",\n url: misago.get(\"USERS_API\"),\n data: {\n list: \"active\",\n },\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data.results))\n\n this.setState({\n isLoaded: true,\n\n trackedPeriod: data.tracked_period,\n count: data.count,\n })\n }\n\n componentDidMount() {\n title.set({\n title: this.props.route.extra.name,\n parent: gettext(\"Users\"),\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"active-posters\")\n }\n\n render() {\n const page = { name: this.props.route.extra.name }\n\n if (this.state.isLoaded) {\n if (this.state.count > 0) {\n return (\n <ListReady\n page={page}\n users={this.props.users}\n trackedPeriod={this.state.trackedPeriod}\n count={this.state.count}\n />\n )\n } else {\n return (\n <ListEmpty page={page} trackedPeriod={this.state.trackedPeriod} />\n )\n }\n } else {\n return <ListPreview page={page} />\n }\n }\n}\n","import React from \"react\"\nimport stringCount from \"misago/utils/string-count\"\n\nexport default class extends React.Component {\n getClassName() {\n if (this.props.copy && this.props.copy.length) {\n if (\n stringCount(this.props.copy, \"<p\") === 1 &&\n this.props.copy.indexOf(\"<br\") === -1\n ) {\n return \"page-lead lead\"\n }\n }\n\n return \"page-lead\"\n }\n\n render() {\n if (this.props.copy && this.props.copy.length) {\n return (\n <div\n className={this.getClassName()}\n dangerouslySetInnerHTML={{\n __html: this.props.copy,\n }}\n />\n )\n } else {\n return null\n }\n }\n}\n","export default function (string, subString) {\n string = (string + \"\").toLowerCase()\n subString = (subString + \"\").toLowerCase()\n\n if (subString.length <= 0) return 0\n\n let n = 0\n let pos = 0\n let step = subString.length\n\n while (true) {\n pos = string.indexOf(subString, pos)\n if (pos >= 0) {\n n += 1\n pos += step\n } else {\n break\n }\n }\n\n return n\n}\n","import React from \"react\"\nimport UsersList from \"../../users-list\"\n\nconst RankUsersList = ({ users }) => (\n <UsersList cols={4} isReady={true} showStatus={true} users={users} />\n)\n\nexport default RankUsersList\n","import React from \"react\"\nimport UsersList from \"misago/components/users-list\"\n\nclass RankUsersListLoader extends React.Component {\n shouldComponentUpdate() {\n return false\n }\n\n render = () => <UsersList cols={4} isReady={false} />\n}\n\nexport default RankUsersListLoader\n","import React from \"react\"\n\nconst RankUsersLeft = ({ users }) => {\n if (users.more) {\n return (\n <p>\n {interpolate(\n ngettext(\n \"There is %(more)s more member with this role.\",\n \"There are %(more)s more members with this role.\",\n users.more\n ),\n { more: users.more },\n true\n )}\n </p>\n )\n }\n\n return <p>{gettext(\"There are no more members with this role.\")}</p>\n}\n\nexport default RankUsersLeft\n","import React from \"react\"\nimport { Link } from \"react-router\"\n\nconst RankUsersPagination = ({ baseUrl, users }) => (\n <div className=\"misago-pagination\">\n {users.isLoaded && users.first ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl}\n title={gettext(\"Go to first page\")}\n >\n <span className=\"material-icon\">first_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to first page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">first_page</span>\n </button>\n )}\n {users.isLoaded && users.previous ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + (users.previous > 1 ? users.previous + \"/\" : \"\")}\n title={gettext(\"Go to previous page\")}\n >\n <span className=\"material-icon\">chevron_left</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to previous page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_left</span>\n </button>\n )}\n {users.isLoaded && users.next ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + users.next + \"/\"}\n title={gettext(\"Go to next page\")}\n >\n <span className=\"material-icon\">chevron_right</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to next page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">chevron_right</span>\n </button>\n )}\n {users.isLoaded && users.last ? (\n <Link\n className=\"btn btn-default btn-outline btn-icon\"\n to={baseUrl + users.last + \"/\"}\n title={gettext(\"Go to last page\")}\n >\n <span className=\"material-icon\">last_page</span>\n </Link>\n ) : (\n <button\n className=\"btn btn-default btn-outline btn-icon\"\n title={gettext(\"Go to last page\")}\n type=\"button\"\n disabled\n >\n <span className=\"material-icon\">last_page</span>\n </button>\n )}\n </div>\n)\n\nexport default RankUsersPagination\n","import React from \"react\"\nimport { Toolbar, ToolbarItem, ToolbarSection } from \"../../Toolbar\"\nimport RankUsersLeft from \"./RankUsersLeft\"\nimport RankUsersPagination from \"./RankUsersPagination\"\n\nconst RankUsersToolbar = ({ baseUrl, users }) => (\n <Toolbar>\n <ToolbarSection>\n <ToolbarItem>\n <RankUsersPagination baseUrl={baseUrl} users={users} />\n </ToolbarItem>\n </ToolbarSection>\n <ToolbarSection auto>\n <ToolbarItem>\n <RankUsersLeft users={users} />\n </ToolbarItem>\n </ToolbarSection>\n </Toolbar>\n)\n\nexport default RankUsersToolbar\n","import React from \"react\"\nimport PageLead from \"misago/components/page-lead\"\nimport misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/users\"\nimport polls from \"misago/services/polls\"\nimport store from \"misago/services/store\"\nimport title from \"misago/services/page-title\"\nimport PageContainer from \"../../PageContainer\"\nimport RankUsersList from \"./RankUsersList\"\nimport RankUsersListLoader from \"./RankUsersListLoader\"\nimport RankUsersToolbar from \"./RankUsersToolbar\"\nimport UsersNav from \"../UsersNav\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n if (misago.has(\"USERS\")) {\n this.initWithPreloadedData(misago.pop(\"USERS\"))\n } else {\n this.initWithoutPreloadedData()\n }\n\n this.startPolling(props.params.page || 1)\n }\n\n initWithPreloadedData(data) {\n this.state = Object.assign(data, {\n isLoaded: true,\n })\n store.dispatch(hydrate(data.results))\n }\n\n initWithoutPreloadedData() {\n this.state = {\n isLoaded: false,\n }\n }\n\n startPolling(page) {\n polls.start({\n poll: \"rank-users\",\n url: misago.get(\"USERS_API\"),\n data: {\n rank: this.props.route.rank.id,\n page: page,\n },\n frequency: 90 * 1000,\n update: this.update,\n })\n }\n\n update = (data) => {\n store.dispatch(hydrate(data.results))\n\n data.isLoaded = true\n this.setState(data)\n }\n\n componentDidMount() {\n title.set({\n title: this.props.route.rank.name,\n page: this.props.params.page || null,\n parent: gettext(\"Users\"),\n })\n }\n\n componentWillUnmount() {\n polls.stop(\"rank-users\")\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.params.page !== nextProps.params.page) {\n title.set({\n title: this.props.route.rank.name,\n page: nextProps.params.page || null,\n parent: gettext(\"Users\"),\n })\n\n this.setState({\n isLoaded: false,\n })\n\n polls.stop(\"rank-users\")\n this.startPolling(nextProps.params.page)\n }\n }\n\n getClassName() {\n if (this.props.route.rank.css_class) {\n return \"rank-users-list rank-users-\" + this.props.route.rank.css_class\n } else {\n return \"rank-users-list\"\n }\n }\n\n getRankDescription() {\n if (this.props.route.rank.description) {\n return (\n <div className=\"rank-description\">\n <PageLead copy={this.props.route.rank.description.html} />\n </div>\n )\n } else {\n return null\n }\n }\n\n getComponent() {\n if (this.state.isLoaded) {\n if (this.state.count > 0) {\n return <RankUsersList users={this.props.users} />\n } else {\n return (\n <p className=\"lead\">\n {gettext(\"There are no users with this rank at the moment.\")}\n </p>\n )\n }\n } else {\n return <RankUsersListLoader />\n }\n }\n\n render() {\n return (\n <div className={this.getClassName()}>\n <PageContainer>\n <UsersNav\n baseUrl={misago.get(\"USERS_LIST_URL\")}\n page={{ name: this.props.route.rank.name }}\n pages={misago.get(\"USERS_LISTS\")}\n />\n {this.getRankDescription()}\n {this.getComponent()}\n <RankUsersToolbar\n baseUrl={\n misago.get(\"USERS_LIST_URL\") + this.props.route.rank.slug + \"/\"\n }\n users={this.state}\n />\n </PageContainer>\n </div>\n )\n }\n}\n","import React from \"react\"\nimport { connect } from \"react-redux\"\nimport ActivePosters from \"misago/components/users/active-posters/root\"\nimport Rank from \"misago/components/users/rank/root\"\nimport WithDropdown from \"misago/components/with-dropdown\"\nimport misago from \"misago/index\"\nimport {\n PageHeader,\n PageHeaderBanner,\n PageHeaderContainer,\n} from \"../PageHeader\"\n\nexport default class extends WithDropdown {\n render() {\n return (\n <div className=\"page page-users-lists\">\n <PageHeaderContainer>\n <PageHeader styleName=\"users-lists\">\n <PageHeaderBanner styleName=\"users-lists\">\n <h1>{gettext(\"Users\")}</h1>\n </PageHeaderBanner>\n </PageHeader>\n </PageHeaderContainer>\n {this.props.children}\n </div>\n )\n }\n}\n\nexport function select(store) {\n return {\n tick: store.tick.tick,\n user: store.auth.user,\n users: store.users,\n }\n}\n\nexport function paths() {\n let paths = []\n\n misago.get(\"USERS_LISTS\").forEach(function (item) {\n if (item.component === \"rank\") {\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.slug + \"/:page/\",\n component: connect(select)(Rank),\n rank: item,\n })\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.slug + \"/\",\n component: connect(select)(Rank),\n rank: item,\n })\n } else if (item.component === \"active-posters\") {\n paths.push({\n path: misago.get(\"USERS_LIST_URL\") + item.component + \"/\",\n component: connect(select)(ActivePosters),\n extra: {\n name: item.name,\n },\n })\n }\n })\n\n return paths\n}\n","import Users, { paths } from \"misago/components/users/root\"\nimport misago from \"misago/index\"\nimport mount from \"misago/utils/routed-component\"\n\nexport default function initializer(context) {\n if (context.has(\"USERS_LISTS\")) {\n mount({\n root: misago.get(\"USERS_LIST_URL\"),\n component: Users,\n paths: paths(),\n })\n }\n}\n\nmisago.addInitializer({\n name: \"component:users\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport include from \"misago/services/include\"\n\nexport default function initializer(context) {\n include.init(context.get(\"STATIC_URL\"))\n}\n\nmisago.addInitializer({\n name: \"include\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport storage from \"misago/services/local-storage\"\n\nexport default function initializer() {\n storage.init(\"misago_\")\n}\n\nmisago.addInitializer({\n name: \"local-storage\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport dropdown from \"misago/services/mobile-navbar-dropdown\"\n\nexport default function initializer() {\n let element = document.getElementById(\"mobile-navbar-dropdown-mount\")\n if (element) {\n dropdown.init(element)\n }\n}\n\nmisago.addInitializer({\n name: \"dropdown\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport modal from \"misago/services/modal\"\n\nexport default function initializer() {\n let element = document.getElementById(\"modal-mount\")\n if (element) {\n modal.init(element)\n }\n}\n\nmisago.addInitializer({\n name: \"modal\",\n initializer: initializer,\n before: \"store\",\n})\n","import moment from \"moment\"\nimport misago from \"misago/index\"\n\nexport default function initializer() {\n moment.locale($(\"html\").attr(\"lang\"))\n}\n\nmisago.addInitializer({\n name: \"moment\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport title from \"misago/services/page-title\"\n\nexport default function initializer(context) {\n title.init(\n context.get(\"SETTINGS\").forum_index_title,\n context.get(\"SETTINGS\").forum_name\n )\n}\n\nmisago.addInitializer({\n name: \"page-title\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\nimport polls from \"misago/services/polls\"\n\nexport default function initializer() {\n polls.init(ajax, snackbar)\n}\n\nmisago.addInitializer({\n name: \"polls\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default function initializer() {\n posting.init(ajax, snackbar, document.getElementById(\"posting-placeholder\"))\n}\n\nmisago.addInitializer({\n name: \"posting\",\n initializer: initializer,\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/auth\"\nimport store from \"misago/services/store\"\n\nexport default function initializer(context) {\n store.addReducer(\n \"auth\",\n reducer,\n Object.assign(\n {\n isAuthenticated: context.get(\"isAuthenticated\"),\n isAnonymous: !context.get(\"isAuthenticated\"),\n\n user: context.get(\"user\"),\n },\n initialState\n )\n )\n}\n\nmisago.addInitializer({\n name: \"reducer:auth\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/participants\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\")) {\n initialState = misago.get(\"THREAD\").participants\n }\n\n store.addReducer(\"participants\", reducer, initialState || [])\n}\n\nmisago.addInitializer({\n name: \"reducer:participants\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/poll\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\") && misago.get(\"THREAD\").poll) {\n initialState = hydrate(misago.get(\"THREAD\").poll)\n } else {\n initialState = {\n isBusy: false,\n }\n }\n\n store.addReducer(\"poll\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:poll\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/posts\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"POSTS\")) {\n initialState = hydrate(misago.get(\"POSTS\"))\n } else {\n initialState = {\n isLoaded: false,\n isBusy: false,\n }\n }\n\n store.addReducer(\"posts\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:posts\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/profile-details\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"PROFILE_DETAILS\")) {\n initialState = misago.get(\"PROFILE_DETAILS\")\n }\n\n store.addReducer(\"profile-details\", reducer, initialState || {})\n}\n\nmisago.addInitializer({\n name: \"reducer:profile-details\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport { hydrate } from \"misago/reducers/profile\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n if (misago.has(\"PROFILE\")) {\n store.dispatch(hydrate(misago.get(\"PROFILE\")))\n }\n}\n\nmisago.addInitializer({\n name: \"reducer:profile-hydrate\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/profile\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"profile\", reducer, {})\n}\n\nmisago.addInitializer({\n name: \"reducer:profile\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago\"\nimport reducer, { initialState } from \"misago/reducers/search\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\n \"search\",\n reducer,\n Object.assign({}, initialState, {\n providers: misago.get(\"SEARCH_PROVIDERS\") || [],\n query: misago.get(\"SEARCH_QUERY\") || \"\",\n })\n )\n}\n\nmisago.addInitializer({\n name: \"reducer:search\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/selection\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"selection\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:selection\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"snackbar\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:snackbar\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { hydrate } from \"misago/reducers/thread\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n let initialState = null\n if (misago.has(\"THREAD\")) {\n initialState = hydrate(misago.get(\"THREAD\"))\n } else {\n initialState = {\n isBusy: false,\n }\n }\n\n store.addReducer(\"thread\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:thread\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/threads\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"threads\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:threads\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer, { initialState } from \"misago/reducers/tick\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"tick\", reducer, initialState)\n}\n\nmisago.addInitializer({\n name: \"reducer:tick\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/username-history\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"username-history\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:username-history\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport reducer from \"misago/reducers/users\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.addReducer(\"users\", reducer, [])\n}\n\nmisago.addInitializer({\n name: \"reducer:users\",\n initializer: initializer,\n before: \"store\",\n})\n","import misago from \"misago/index\"\nimport snackbar from \"misago/services/snackbar\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n snackbar.init(store)\n}\n\nmisago.addInitializer({\n name: \"snackbar\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport store from \"misago/services/store\"\n\nexport default function initializer() {\n store.init()\n}\n\nmisago.addInitializer({\n name: \"store\",\n initializer: initializer,\n before: \"_end\",\n})\n","import misago from \"misago/index\"\nimport { doTick } from \"misago/reducers/tick\"\nimport store from \"misago/services/store\"\n\nconst TICK_PERIOD = 50 * 1000 //do the tick every 50s\n\nexport default function initializer() {\n window.setInterval(function () {\n store.dispatch(doTick())\n }, TICK_PERIOD)\n}\n\nmisago.addInitializer({\n name: \"tick-start\",\n initializer: initializer,\n after: \"store\",\n})\n","import misago from \"misago/index\"\nimport include from \"misago/services/include\"\nimport zxcvbn from \"misago/services/zxcvbn\"\n\nexport default function initializer() {\n zxcvbn.init(include)\n}\n\nmisago.addInitializer({\n name: \"zxcvbn\",\n initializer: initializer,\n})\n","import { UPDATE_AVATAR, UPDATE_USERNAME } from \"misago/reducers/users\"\n\nexport var initialState = {\n signedIn: false,\n signedOut: false,\n}\n\nexport const PATCH_USER = \"PATCH_USER\"\nexport const SIGN_IN = \"SIGN_IN\"\nexport const SIGN_OUT = \"SIGN_OUT\"\n\nexport function patch(patch) {\n return {\n type: PATCH_USER,\n patch,\n }\n}\n\nexport function signIn(user) {\n return {\n type: SIGN_IN,\n user,\n }\n}\n\nexport function signOut(soft = false) {\n return {\n type: SIGN_OUT,\n soft,\n }\n}\n\nexport default function auth(state = initialState, action = null) {\n switch (action.type) {\n case PATCH_USER:\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, action.patch)\n return newState\n\n case SIGN_IN:\n return Object.assign({}, state, {\n signedIn: action.user,\n })\n\n case SIGN_OUT:\n return Object.assign({}, state, {\n isAuthenticated: false,\n isAnonymous: true,\n signedOut: !action.soft,\n })\n\n case UPDATE_AVATAR:\n if (state.isAuthenticated && state.user.id === action.userId) {\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, {\n avatars: action.avatars,\n })\n return newState\n }\n return state\n\n case UPDATE_USERNAME:\n if (state.isAuthenticated && state.user.id === action.userId) {\n let newState = Object.assign({}, state)\n newState.user = Object.assign({}, state.user, {\n username: action.username,\n slug: action.slug,\n })\n return newState\n }\n return state\n\n default:\n return state\n }\n}\n","export const REPLACE_PARTICIPANTS = \"REPLACE_PARTICIPANTS\"\n\nexport function replace(newState) {\n return {\n type: REPLACE_PARTICIPANTS,\n state: newState,\n }\n}\n\nexport default function participants(state = [], action = null) {\n switch (action.type) {\n case REPLACE_PARTICIPANTS:\n return action.state\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\n\nexport const BUSY_POLL = \"BUSY_POLL\"\nexport const RELEASE_POLL = \"RELEASE_POLL\"\nexport const REMOVE_POLL = \"REMOVE_POLL\"\nexport const REPLACE_POLL = \"REPLACE_POLL\"\nexport const UPDATE_POLL = \"UPDATE_POLL\"\n\nexport function hydrate(json) {\n let hasSelectedChoices = false\n for (const i in json.choices) {\n const choice = json.choices[i]\n if (choice.selected) {\n hasSelectedChoices = true\n break\n }\n }\n\n return Object.assign({}, json, {\n posted_on: moment(json.posted_on),\n\n hasSelectedChoices,\n endsOn: json.length\n ? moment(json.posted_on).add(json.length, \"days\")\n : null,\n\n isBusy: false,\n })\n}\n\nexport function busy() {\n return {\n type: BUSY_POLL,\n }\n}\n\nexport function release() {\n return {\n type: RELEASE_POLL,\n }\n}\n\nexport function replace(newState, hydrated = false) {\n return {\n type: REPLACE_POLL,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function update(data) {\n return {\n type: UPDATE_POLL,\n data,\n }\n}\n\nexport function remove() {\n return {\n type: REMOVE_POLL,\n }\n}\n\nexport default function poll(state = {}, action = null) {\n switch (action.type) {\n case BUSY_POLL:\n return Object.assign({}, state, { isBusy: true })\n\n case RELEASE_POLL:\n return Object.assign({}, state, { isBusy: false })\n\n case REMOVE_POLL:\n return {\n isBusy: false,\n }\n\n case REPLACE_POLL:\n return action.state\n\n case UPDATE_POLL:\n return Object.assign({}, state, action.data)\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport { hydrateUser } from \"./users\"\n\nexport const PATCH_POST = \"PATCH_POST\"\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n posted_on: moment(json.posted_on),\n updated_on: moment(json.updated_on),\n hidden_on: moment(json.hidden_on),\n\n attachments: json.attachments\n ? json.attachments.map(hydrateAttachment)\n : null,\n poster: json.poster ? hydrateUser(json.poster) : null,\n\n isSelected: false,\n isBusy: false,\n isDeleted: false,\n })\n}\n\nexport function hydrateAttachment(json) {\n return Object.assign({}, json, {\n uploaded_on: moment(json.uploaded_on),\n })\n}\n\nexport function patch(post, patch) {\n return {\n type: PATCH_POST,\n post,\n patch,\n }\n}\n\nexport default function post(state = {}, action = null) {\n switch (action.type) {\n case PATCH_POST:\n if (state.id == action.post.id) {\n return Object.assign({}, state, action.patch)\n }\n return state\n\n default:\n return state\n }\n}\n","import postReducer, {\n PATCH_POST,\n hydrate as hydratePost,\n} from \"misago/reducers/post\"\n\nexport const APPEND_POSTS = \"APPEND_POSTS\"\nexport const SELECT_POST = \"SELECT_POST\"\nexport const DESELECT_POST = \"DESELECT_POST\"\nexport const DESELECT_POSTS = \"DESELECT_POSTS\"\nexport const LOAD_POSTS = \"LOAD_POSTS\"\nexport const UNLOAD_POSTS = \"UNLOAD_POSTS\"\nexport const UPDATE_POSTS = \"UPDATE_POSTS\"\n\nexport function select(post) {\n return {\n type: SELECT_POST,\n post,\n }\n}\n\nexport function deselect(post) {\n return {\n type: DESELECT_POST,\n post,\n }\n}\n\nexport function deselectAll() {\n return {\n type: DESELECT_POSTS,\n }\n}\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n results: json.results.map(hydratePost),\n isLoaded: true,\n isBusy: false,\n isSelected: false,\n })\n}\n\nexport function load(newState, hydrated = false) {\n return {\n type: LOAD_POSTS,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function append(newState, hydrated = false) {\n return {\n type: APPEND_POSTS,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function unload() {\n return {\n type: UNLOAD_POSTS,\n }\n}\n\nexport function update(newState) {\n return {\n type: UPDATE_POSTS,\n update: newState,\n }\n}\n\nexport default function posts(state = {}, action = null) {\n switch (action.type) {\n case SELECT_POST:\n const selectedPosts = state.results.map((post) => {\n if (post.id == action.post.id) {\n return Object.assign({}, post, {\n isSelected: true,\n })\n } else {\n return post\n }\n })\n\n return Object.assign({}, state, {\n results: selectedPosts,\n })\n\n case DESELECT_POST:\n const deseletedPosts = state.results.map((post) => {\n if (post.id == action.post.id) {\n return Object.assign({}, post, {\n isSelected: false,\n })\n } else {\n return post\n }\n })\n\n return Object.assign({}, state, {\n results: deseletedPosts,\n })\n\n case DESELECT_POSTS:\n const deseletedAllPosts = state.results.map((post) => {\n return Object.assign({}, post, {\n isSelected: false,\n })\n })\n\n return Object.assign({}, state, {\n results: deseletedAllPosts,\n })\n\n case APPEND_POSTS:\n let results = state.results.slice()\n const resultsIds = state.results.map((post) => {\n return post.id\n })\n\n action.state.results.map((post) => {\n if (resultsIds.indexOf(post.id) === -1) {\n results.push(post)\n }\n })\n\n return Object.assign({}, action.state, {\n results,\n })\n\n case LOAD_POSTS:\n return action.state\n\n case UNLOAD_POSTS:\n return Object.assign({}, state, {\n isLoaded: false,\n })\n\n case UPDATE_POSTS:\n return Object.assign({}, state, action.update)\n\n case PATCH_POST:\n const reducedPosts = state.results.map((post) => {\n return postReducer(post, action)\n })\n\n return Object.assign({}, state, {\n results: reducedPosts,\n })\n\n default:\n return state\n }\n}\n","export const LOAD_DETAILS = \"LOAD_DETAILS\"\n\nexport function load(newState) {\n return {\n type: LOAD_DETAILS,\n\n newState,\n }\n}\n\nexport default function details(state = {}, action = null) {\n switch (action.type) {\n case LOAD_DETAILS:\n return action.newState\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport {\n UPDATE_AVATAR,\n UPDATE_USERNAME,\n hydrateStatus,\n} from \"misago/reducers/users\"\n\nexport const HYDRATE_PROFILE = \"HYDRATE_PROFILE\"\nexport const PATCH_PROFILE = \"PATCH_PROFILE\"\n\nexport function hydrate(profile) {\n return {\n type: HYDRATE_PROFILE,\n profile,\n }\n}\n\nexport function patch(patch) {\n return {\n type: PATCH_PROFILE,\n patch,\n }\n}\n\nexport default function auth(state = {}, action = null) {\n switch (action.type) {\n case HYDRATE_PROFILE:\n return Object.assign({}, action.profile, {\n joined_on: moment(action.profile.joined_on),\n status: hydrateStatus(action.profile.status),\n })\n\n case PATCH_PROFILE:\n return Object.assign({}, state, action.patch)\n\n case UPDATE_AVATAR:\n if (state.id === action.userId) {\n return Object.assign({}, state, {\n avatars: action.avatars,\n })\n }\n return state\n\n case UPDATE_USERNAME:\n if (state.id === action.userId) {\n return Object.assign({}, state, {\n username: action.username,\n slug: action.slug,\n })\n }\n return state\n\n default:\n return state\n }\n}\n","export const REPLACE_SEARCH = \"REPLACE_SEARCH\"\nexport const UPDATE_SEARCH = \"UPDATE_SEARCH\"\nexport const UPDATE_SEARCH_PROVIDER = \"UPDATE_SEARCH_PROVIDER\"\n\nexport const initialState = {\n isLoading: false,\n query: \"\",\n providers: [],\n}\n\nexport function replace(newState) {\n return {\n type: REPLACE_SEARCH,\n state: {\n isLoading: false,\n providers: newState,\n },\n }\n}\n\nexport function update(newState) {\n return {\n type: UPDATE_SEARCH,\n update: newState,\n }\n}\n\nexport function updateProvider(provider) {\n return {\n type: UPDATE_SEARCH_PROVIDER,\n provider: provider,\n }\n}\n\nexport default function participants(state = {}, action = null) {\n switch (action.type) {\n case REPLACE_SEARCH:\n return action.state\n\n case UPDATE_SEARCH:\n return Object.assign({}, state, action.update)\n\n case UPDATE_SEARCH_PROVIDER:\n return Object.assign({}, state, {\n providers: state.providers.map((provider) => {\n if (provider.id === action.provider.id) {\n return action.provider\n } else {\n return provider\n }\n }),\n })\n\n default:\n return state\n }\n}\n","import { toggle } from \"misago/utils/sets\"\n\nexport const SELECT_ALL = \"SELECT_ALL\"\nexport const SELECT_NONE = \"SELECT_NONE\"\nexport const SELECT_ITEM = \"SELECT_ITEM\"\n\nexport function all(itemsIds) {\n return {\n type: SELECT_ALL,\n items: itemsIds,\n }\n}\n\nexport function none() {\n return {\n type: SELECT_NONE,\n }\n}\n\nexport function item(itemId) {\n return {\n type: SELECT_ITEM,\n item: itemId,\n }\n}\n\nexport default function selection(state = [], action = null) {\n switch (action.type) {\n case SELECT_ALL:\n return action.items\n\n case SELECT_NONE:\n return []\n\n case SELECT_ITEM:\n return toggle(state, action.item)\n\n default:\n return state\n }\n}\n","export var initialState = {\n type: \"info\",\n message: \"\",\n isVisible: false,\n}\n\nexport const SHOW_SNACKBAR = \"SHOW_SNACKBAR\"\nexport const HIDE_SNACKBAR = \"HIDE_SNACKBAR\"\n\nexport function showSnackbar(message, type) {\n return {\n type: SHOW_SNACKBAR,\n message,\n messageType: type,\n }\n}\n\nexport function hideSnackbar() {\n return {\n type: HIDE_SNACKBAR,\n }\n}\n\nexport default function snackbar(state = initialState, action = null) {\n if (action.type === SHOW_SNACKBAR) {\n return {\n type: action.messageType,\n message: action.message,\n isVisible: true,\n }\n } else if (action.type === HIDE_SNACKBAR) {\n return Object.assign({}, state, {\n isVisible: false,\n })\n } else {\n return state\n }\n}\n","import moment from \"moment\"\nimport { REMOVE_POLL, REPLACE_POLL } from \"./poll\"\n\nexport const BUSY_THREAD = \"BUSY_THREAD\"\nexport const RELEASE_THREAD = \"RELEASE_THREAD\"\nexport const REPLACE_THREAD = \"REPLACE_THREAD\"\nexport const UPDATE_THREAD = \"UPDATE_THREAD\"\nexport const UPDATE_THREAD_ACL = \"UPDATE_THREAD_ACL\"\n\nexport function hydrate(json) {\n return Object.assign({}, json, {\n started_on: moment(json.started_on),\n last_post_on: moment(json.last_post_on),\n best_answer_marked_on: json.best_answer_marked_on\n ? moment(json.best_answer_marked_on)\n : null,\n\n isBusy: false,\n })\n}\n\nexport function busy() {\n return {\n type: BUSY_THREAD,\n }\n}\n\nexport function release() {\n return {\n type: RELEASE_THREAD,\n }\n}\n\nexport function replace(newState, hydrated = false) {\n return {\n type: REPLACE_THREAD,\n state: hydrated ? newState : hydrate(newState),\n }\n}\n\nexport function update(data) {\n return {\n type: UPDATE_THREAD,\n data,\n }\n}\n\nexport function updateAcl(data) {\n return {\n type: UPDATE_THREAD_ACL,\n data,\n }\n}\n\nexport default function thread(state = {}, action = null) {\n switch (action.type) {\n case BUSY_THREAD:\n return Object.assign({}, state, { isBusy: true })\n\n case RELEASE_THREAD:\n return Object.assign({}, state, { isBusy: false })\n\n case REMOVE_POLL:\n return Object.assign({}, state, { poll: null })\n\n case REPLACE_POLL:\n return Object.assign({}, state, { poll: action.state })\n\n case REPLACE_THREAD:\n return action.state\n\n case UPDATE_THREAD:\n return Object.assign({}, state, action.data)\n\n case UPDATE_THREAD_ACL:\n const acl = Object.assign({}, state.acl, action.data)\n return Object.assign({}, state, { acl })\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const APPEND_THREADS = \"APPEND_THREADS\"\nexport const DELETE_THREAD = \"DELETE_THREAD\"\nexport const FILTER_THREADS = \"FILTER_THREADS\"\nexport const HYDRATE_THREADS = \"HYDRATE_THREADS\"\nexport const PATCH_THREAD = \"PATCH_THREAD\"\nexport const SORT_THREADS = \"SORT_THREADS\"\n\nexport const MODERATION_PERMISSIONS = [\n \"can_announce\",\n \"can_approve\",\n \"can_close\",\n \"can_hide\",\n \"can_move\",\n \"can_merge\",\n \"can_pin\",\n \"can_review\",\n]\n\nexport function append(items, sorting) {\n return {\n type: APPEND_THREADS,\n items,\n sorting,\n }\n}\n\nexport function deleteThread(thread) {\n return {\n type: DELETE_THREAD,\n thread,\n }\n}\n\nexport function filterThreads(category, categoriesMap) {\n return {\n type: FILTER_THREADS,\n category,\n categoriesMap,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_THREADS,\n items,\n }\n}\n\nexport function patch(thread, patch, sorting = null) {\n return {\n type: PATCH_THREAD,\n thread,\n patch,\n sorting,\n }\n}\n\nexport function sort(sorting) {\n return {\n type: SORT_THREADS,\n sorting,\n }\n}\n\nexport function getThreadModerationOptions(thread_acl) {\n let options = []\n MODERATION_PERMISSIONS.forEach(function (perm) {\n if (thread_acl[perm]) {\n options.push(perm)\n }\n })\n return options\n}\n\nexport function hydrateThread(thread) {\n return Object.assign({}, thread, {\n started_on: moment(thread.started_on),\n last_post_on: moment(thread.last_post_on),\n moderation: getThreadModerationOptions(thread.acl),\n })\n}\n\nexport default function thread(state = [], action = null) {\n switch (action.type) {\n case APPEND_THREADS:\n const mergedState = concatUnique(action.items.map(hydrateThread), state)\n return mergedState.sort(action.sorting)\n\n case DELETE_THREAD:\n return state.filter(function (item) {\n return item.id !== action.thread.id\n })\n\n case FILTER_THREADS:\n return state.filter(function (item) {\n const itemCategory = action.categoriesMap[item.category]\n if (\n itemCategory.lft >= action.category.lft &&\n itemCategory.rght <= action.category.rght\n ) {\n // same or sub category\n return true\n } else if (item.weight == 2) {\n // globally pinned\n return true\n } else {\n // thread moved outside displayed scope, hide it\n return false\n }\n })\n\n case HYDRATE_THREADS:\n return action.items.map(hydrateThread)\n\n case PATCH_THREAD:\n const patchedState = state.map(function (item) {\n if (item.id === action.thread.id) {\n return Object.assign({}, item, action.patch)\n } else {\n return item\n }\n })\n\n if (action.sorting) {\n return patchedState.sort(action.sorting)\n }\n return patchedState\n\n case SORT_THREADS:\n return state.sort(action.sorting)\n\n default:\n return state\n }\n}\n","export var initialState = {\n tick: 0,\n}\n\nexport const TICK = \"TICK\"\n\nexport function doTick() {\n return {\n type: TICK,\n }\n}\n\nexport default function tick(state = initialState, action = null) {\n if (action.type === TICK) {\n return Object.assign({}, state, {\n tick: state.tick + 1,\n })\n } else {\n return state\n }\n}\n","import moment from \"moment\"\nimport { UPDATE_AVATAR, UPDATE_USERNAME } from \"misago/reducers/users\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const ADD_NAME_CHANGE = \"ADD_NAME_CHANGE\"\nexport const APPEND_HISTORY = \"APPEND_HISTORY\"\nexport const HYDRATE_HISTORY = \"HYDRATE_HISTORY\"\n\nexport function addNameChange(change, user, changedBy) {\n return {\n type: ADD_NAME_CHANGE,\n change,\n user,\n changedBy,\n }\n}\n\nexport function append(items) {\n return {\n type: APPEND_HISTORY,\n items: items,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_HISTORY,\n items: items,\n }\n}\n\nexport function hydrateNamechange(namechange) {\n return Object.assign({}, namechange, {\n changed_on: moment(namechange.changed_on),\n })\n}\n\nexport default function username(state = [], action = null) {\n switch (action.type) {\n case ADD_NAME_CHANGE:\n let newState = state.slice()\n newState.unshift({\n id: Math.floor(Date.now() / 1000), // just small hax for getting id\n changed_by: action.changedBy,\n changed_by_username: action.changedBy.username,\n changed_on: moment(),\n new_username: action.change.username,\n old_username: action.user.username,\n })\n return newState\n\n case APPEND_HISTORY:\n return concatUnique(state, action.items.map(hydrateNamechange))\n\n case HYDRATE_HISTORY:\n return action.items.map(hydrateNamechange)\n\n case UPDATE_AVATAR:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.changed_by && item.changed_by.id === action.userId) {\n item.changed_by = Object.assign({}, item.changed_by, {\n avatars: action.avatars,\n })\n }\n\n return item\n })\n\n case UPDATE_USERNAME:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.changed_by && item.changed_by.id === action.userId) {\n item.changed_by = Object.assign({}, item.changed_by, {\n username: action.username,\n slug: action.slug,\n })\n }\n\n return Object.assign({}, item)\n })\n\n default:\n return state\n }\n}\n","import moment from \"moment\"\nimport concatUnique from \"misago/utils/concat-unique\"\n\nexport const APPEND_USERS = \"APPEND_USERS\"\nexport const HYDRATE_USERS = \"HYDRATE_USERS\"\nexport const UPDATE_AVATAR = \"UPDATE_AVATAR\"\nexport const UPDATE_USERNAME = \"UPDATE_USERNAME\"\n\nexport function append(items) {\n return {\n type: APPEND_USERS,\n items,\n }\n}\n\nexport function hydrate(items) {\n return {\n type: HYDRATE_USERS,\n items,\n }\n}\n\nexport function hydrateStatus(status) {\n if (status) {\n return Object.assign({}, status, {\n last_click: status.last_click ? moment(status.last_click) : null,\n banned_until: status.banned_until ? moment(status.banned_until) : null,\n })\n } else {\n return null\n }\n}\n\nexport function hydrateUser(user) {\n return Object.assign({}, user, {\n joined_on: moment(user.joined_on),\n status: hydrateStatus(user.status),\n })\n}\n\nexport function updateAvatar(user, avatars) {\n return {\n type: UPDATE_AVATAR,\n userId: user.id,\n avatars,\n }\n}\n\nexport function updateUsername(user, username, slug) {\n return {\n type: UPDATE_USERNAME,\n userId: user.id,\n username,\n slug,\n }\n}\n\nexport default function user(state = [], action = null) {\n switch (action.type) {\n case APPEND_USERS:\n return concatUnique(state, action.items.map(hydrateUser))\n\n case HYDRATE_USERS:\n return action.items.map(hydrateUser)\n\n case UPDATE_AVATAR:\n return state.map(function (item) {\n item = Object.assign({}, item)\n if (item.id === action.userId) {\n item.avatars = action.avatars\n }\n\n return item\n })\n\n default:\n return state\n }\n}\n","export class Ajax {\n constructor() {\n this._cookieName = null\n this._csrfToken = null\n this._locks = {}\n }\n\n init(cookieName) {\n this._cookieName = cookieName\n }\n\n getCsrfToken() {\n if (document.cookie.indexOf(this._cookieName) !== -1) {\n let cookieRegex = new RegExp(this._cookieName + \"=([^;]*)\")\n let cookie = document.cookie.match(cookieRegex)[0]\n return cookie ? cookie.split(\"=\")[1] : null\n } else {\n return null\n }\n }\n\n request(method, url, data) {\n let self = this\n return new Promise(function (resolve, reject) {\n let xhr = {\n url: url,\n method: method,\n headers: {\n \"X-CSRFToken\": self.getCsrfToken(),\n },\n\n data: data ? JSON.stringify(data) : null,\n contentType: \"application/json; charset=utf-8\",\n dataType: \"json\",\n\n success: function (data) {\n resolve(data)\n },\n\n error: function (jqXHR) {\n let rejection = jqXHR.responseJSON || {}\n\n rejection.status = jqXHR.status\n\n if (rejection.status === 0) {\n rejection.detail = gettext(\"Lost connection with application.\")\n }\n\n if (rejection.status === 404) {\n if (!rejection.detail || rejection.detail === \"NOT FOUND\") {\n rejection.detail = gettext(\"Action link is invalid.\")\n }\n }\n\n if (rejection.status === 500 && !rejection.detail) {\n rejection.detail = gettext(\"Unknown error has occured.\")\n }\n\n rejection.statusText = jqXHR.statusText\n\n reject(rejection)\n },\n }\n\n $.ajax(xhr)\n })\n }\n\n get(url, params, lock) {\n if (params) {\n url += \"?\" + $.param(params)\n }\n\n if (lock) {\n let self = this\n\n // update url in existing lock?\n if (this._locks[lock]) {\n this._locks[lock].url = url\n }\n\n // immediately dereference promise handlers without doing anything\n // we are already waiting for existing response to resolve\n if (this._locks[lock] && this._locks[lock].waiter) {\n return {\n then: function () {\n return\n },\n }\n\n // return promise that will begin when original one resolves\n } else if (this._locks[lock] && this._locks[lock].wait) {\n this._locks[lock].waiter = true\n\n return new Promise(function (resolve, reject) {\n let wait = function (url) {\n // keep waiting on promise\n if (self._locks[lock].wait) {\n window.setTimeout(function () {\n wait(url)\n }, 300)\n\n // poll for new url\n } else if (self._locks[lock].url !== url) {\n wait(self._locks[lock].url)\n\n // ajax backend for response\n } else {\n self._locks[lock].waiter = false\n self.request(\"GET\", self._locks[lock].url).then(\n function (data) {\n if (self._locks[lock].url === url) {\n resolve(data)\n } else {\n self._locks[lock].waiter = true\n wait(self._locks[lock].url)\n }\n },\n function (rejection) {\n if (self._locks[lock].url === url) {\n reject(rejection)\n } else {\n self._locks[lock].waiter = true\n wait(self._locks[lock].url)\n }\n }\n )\n }\n }\n\n window.setTimeout(function () {\n wait(url)\n }, 300)\n })\n\n // setup new lock without waiter\n } else {\n this._locks[lock] = {\n url,\n wait: true,\n waiter: false,\n }\n\n return new Promise(function (resolve, reject) {\n self.request(\"GET\", url).then(\n function (data) {\n self._locks[lock].wait = false\n if (self._locks[lock].url === url) {\n resolve(data)\n }\n },\n function (rejection) {\n self._locks[lock].wait = false\n if (self._locks[lock].url === url) {\n reject(rejection)\n }\n }\n )\n })\n }\n } else {\n return this.request(\"GET\", url)\n }\n }\n\n post(url, data) {\n return this.request(\"POST\", url, data)\n }\n\n patch(url, data) {\n return this.request(\"PATCH\", url, data)\n }\n\n put(url, data) {\n return this.request(\"PUT\", url, data)\n }\n\n delete(url, data) {\n return this.request(\"DELETE\", url, data)\n }\n\n upload(url, data, progress) {\n let self = this\n return new Promise(function (resolve, reject) {\n let xhr = {\n url: url,\n method: \"POST\",\n headers: {\n \"X-CSRFToken\": self.getCsrfToken(),\n },\n\n data: data,\n contentType: false,\n processData: false,\n\n xhr: function () {\n let xhr = new window.XMLHttpRequest()\n xhr.upload.addEventListener(\n \"progress\",\n function (evt) {\n if (evt.lengthComputable) {\n progress(Math.round((evt.loaded / evt.total) * 100))\n }\n },\n false\n )\n return xhr\n },\n\n success: function (response) {\n resolve(response)\n },\n\n error: function (jqXHR) {\n let rejection = jqXHR.responseJSON || {}\n\n rejection.status = jqXHR.status\n\n if (rejection.status === 0) {\n rejection.detail = gettext(\"Lost connection with application.\")\n }\n\n if (rejection.status === 413 && !rejection.detail) {\n rejection.detail = gettext(\n \"Upload was rejected by server as too large.\"\n )\n }\n\n if (rejection.status === 404) {\n if (!rejection.detail || rejection.detail === \"NOT FOUND\") {\n rejection.detail = gettext(\"Action link is invalid.\")\n }\n }\n\n if (rejection.status === 500 && !rejection.detail) {\n rejection.detail = gettext(\"Unknown error has occured.\")\n }\n\n rejection.statusText = jqXHR.statusText\n\n reject(rejection)\n },\n }\n\n $.ajax(xhr)\n })\n }\n}\n\nexport default new Ajax()\n","import { signIn, signOut } from \"misago/reducers/auth\"\n\nexport class Auth {\n init(store, local, modal) {\n this._store = store\n this._local = local\n this._modal = modal\n\n // tell other tabs what auth state is because we are most current with it\n this.syncSession()\n\n // listen for other tabs to tell us that state changed\n this.watchState()\n }\n\n syncSession() {\n const state = this._store.getState().auth\n if (state.isAuthenticated) {\n this._local.set(\"auth\", {\n isAuthenticated: true,\n username: state.user.username,\n })\n } else {\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n }\n }\n\n watchState() {\n const state = this._store.getState().auth\n this._local.watch(\"auth\", (newState) => {\n if (newState.isAuthenticated) {\n this._store.dispatch(\n signIn({\n username: newState.username,\n })\n )\n } else if (state.isAuthenticated) {\n // check if we are authenticated in this tab\n // because some browser plugins prune local store\n // aggressively, forcing erroneous message to display here\n // tracking bug #955\n this._store.dispatch(signOut())\n }\n })\n this._modal.hide()\n }\n\n signIn(user) {\n this._store.dispatch(signIn(user))\n this._local.set(\"auth\", {\n isAuthenticated: true,\n username: user.username,\n })\n this._modal.hide()\n }\n\n signOut() {\n this._store.dispatch(signOut())\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n this._modal.hide()\n }\n\n softSignOut() {\n this._store.dispatch(signOut(true))\n this._local.set(\"auth\", {\n isAuthenticated: false,\n })\n this._modal.hide()\n }\n}\n\nexport default new Auth()\n","/* global grecaptcha */\nimport React from \"react\"\nimport FormGroup from \"misago/components/form-group\"\n\nexport class BaseCaptcha {\n init(context, ajax, include, snackbar) {\n this._context = context\n this._ajax = ajax\n this._include = include\n this._snackbar = snackbar\n }\n}\n\nexport class NoCaptcha extends BaseCaptcha {\n load() {\n return new Promise(function (resolve) {\n // immediately resolve as we don't have anything to validate\n resolve()\n })\n }\n\n validator() {\n return null\n }\n\n component() {\n return null\n }\n}\n\nexport class QACaptcha extends BaseCaptcha {\n load() {\n var self = this\n return new Promise((resolve, reject) => {\n self._ajax.get(self._context.get(\"CAPTCHA_API\")).then(\n function (data) {\n self.question = data.question\n self.helpText = data.help_text\n resolve()\n },\n function () {\n self._snackbar.error(gettext(\"Failed to load CAPTCHA.\"))\n reject()\n }\n )\n })\n }\n\n validator() {\n return []\n }\n\n component(kwargs) {\n return (\n <FormGroup\n label={this.question}\n for=\"id_captcha\"\n labelClass={kwargs.labelClass || \"\"}\n controlClass={kwargs.controlClass || \"\"}\n validation={kwargs.form.state.errors.captcha}\n helpText={this.helpText || null}\n >\n <input\n aria-describedby=\"id_captcha_status\"\n className=\"form-control\"\n disabled={kwargs.form.state.isLoading}\n id=\"id_captcha\"\n onChange={kwargs.form.bindInput(\"captcha\")}\n type=\"text\"\n value={kwargs.form.state.captcha}\n />\n </FormGroup>\n )\n }\n}\n\nexport class ReCaptchaComponent extends React.Component {\n componentDidMount() {\n grecaptcha.render(\"recaptcha\", {\n sitekey: this.props.siteKey,\n callback: (response) => {\n // fire fakey event to binding\n this.props.binding({\n target: {\n value: response,\n },\n })\n },\n })\n }\n\n render() {\n return <div id=\"recaptcha\" />\n }\n}\n\nexport class ReCaptcha extends BaseCaptcha {\n load() {\n this._include.include(\"https://www.google.com/recaptcha/api.js\", true)\n\n return new Promise(function (resolve) {\n var wait = function () {\n if (typeof grecaptcha === \"undefined\") {\n window.setTimeout(function () {\n wait()\n }, 200)\n } else {\n resolve()\n }\n }\n wait()\n })\n }\n\n validator() {\n return []\n }\n\n component(kwargs) {\n return (\n <FormGroup\n label={gettext(\"Please solve the quick test\")}\n for=\"id_captcha\"\n labelClass={kwargs.labelClass || \"\"}\n controlClass={kwargs.controlClass || \"\"}\n validation={kwargs.form.state.errors.captcha}\n helpText={gettext(\n \"This test helps us prevent automated spam registrations on our site.\"\n )}\n >\n <ReCaptchaComponent\n binding={kwargs.form.bindInput(\"captcha\")}\n siteKey={this._context.get(\"SETTINGS\").recaptcha_site_key}\n />\n </FormGroup>\n )\n }\n}\n\nexport class Captcha {\n init(context, ajax, include, snackbar) {\n switch (context.get(\"SETTINGS\").captcha_type) {\n case \"no\":\n this._captcha = new NoCaptcha()\n break\n\n case \"qa\":\n this._captcha = new QACaptcha()\n break\n\n case \"re\":\n this._captcha = new ReCaptcha()\n break\n }\n\n this._captcha.init(context, ajax, include, snackbar)\n }\n\n // accessors for underlying strategy\n\n load() {\n return this._captcha.load()\n }\n\n validator() {\n return this._captcha.validator()\n }\n\n component(kwargs) {\n return this._captcha.component(kwargs)\n }\n}\n\nexport default new Captcha()\n","export class Include {\n init(staticUrl) {\n this._staticUrl = staticUrl\n this._included = []\n }\n\n include(script, remote = false) {\n if (this._included.indexOf(script) === -1) {\n this._included.push(script)\n this._include(script, remote)\n }\n }\n\n _include(script, remote) {\n $.ajax({\n url: (!remote ? this._staticUrl : \"\") + script,\n cache: true,\n dataType: \"script\",\n })\n }\n}\n\nexport default new Include()\n","let storage = window.localStorage\n\nexport class LocalStorage {\n init(prefix) {\n this._prefix = prefix\n this._watchers = []\n\n window.addEventListener(\"storage\", (e) => {\n let newValueJson = JSON.parse(e.newValue)\n this._watchers.forEach(function (watcher) {\n if (watcher.key === e.key && e.oldValue !== e.newValue) {\n watcher.callback(newValueJson)\n }\n })\n })\n }\n\n set(key, value) {\n storage.setItem(this._prefix + key, JSON.stringify(value))\n }\n\n get(key) {\n let itemString = storage.getItem(this._prefix + key)\n if (itemString) {\n return JSON.parse(itemString)\n } else {\n return null\n }\n }\n\n watch(key, callback) {\n this._watchers.push({\n key: this._prefix + key,\n callback: callback,\n })\n }\n}\n\nexport default new LocalStorage()\n","import mount from \"misago/utils/mount-component\"\n\nexport class MobileNavbarDropdown {\n init(element) {\n this._element = element\n this._component = null\n }\n\n show(component) {\n if (this._component === component) {\n this.hide()\n } else {\n this._component = component\n mount(component, this._element.id)\n $(this._element).addClass(\"open\")\n }\n }\n\n showConnected(name, component) {\n if (this._component === name) {\n this.hide()\n } else {\n this._component = name\n mount(component, this._element.id, true)\n $(this._element).addClass(\"open\")\n }\n }\n\n hide() {\n $(this._element).removeClass(\"open\")\n this._component = null\n }\n}\n\nexport default new MobileNavbarDropdown()\n","import ReactDOM from \"react-dom\"\nimport mount from \"misago/utils/mount-component\"\n\nexport class Modal {\n init(element) {\n this._element = element\n\n this._modal = $(element).modal({ show: false })\n\n this._modal.on(\"hidden.bs.modal\", () => {\n ReactDOM.unmountComponentAtNode(this._element)\n })\n }\n\n show(component) {\n mount(component, this._element.id)\n this._modal.modal(\"show\")\n }\n\n hide() {\n this._modal.modal(\"hide\")\n }\n}\n\nexport default new Modal()\n","export class PageTitle {\n init(indexTitle, forumName) {\n this._indexTitle = indexTitle\n this._forumName = forumName\n }\n\n set(title) {\n if (!title) {\n document.title = this._indexTitle || this._forumName\n return\n }\n\n if (typeof title === \"string\") {\n title = { title: title }\n }\n\n let finalTitle = title.title\n\n if (title.page > 1) {\n const pageLabel = interpolate(\n gettext(\"page: %(page)s\"),\n {\n page: title.page,\n },\n true\n )\n\n finalTitle += \" (\" + pageLabel + \")\"\n }\n\n if (title.parent) {\n finalTitle += \" | \" + title.parent\n }\n\n document.title = finalTitle + \" | \" + this._forumName\n }\n}\n\nexport default new PageTitle()\n","export class Polls {\n init(ajax, snackbar) {\n this._ajax = ajax\n this._snackbar = snackbar\n\n this._polls = {}\n }\n\n start(kwargs) {\n this.stop(kwargs.poll)\n\n const poolServer = () => {\n this._polls[kwargs.poll] = kwargs\n\n this._ajax.get(kwargs.url, kwargs.data || null).then(\n (data) => {\n if (!this._polls[kwargs.poll]._stopped) {\n kwargs.update(data)\n\n this._polls[kwargs.poll].timeout = window.setTimeout(\n poolServer,\n kwargs.frequency\n )\n }\n },\n (rejection) => {\n if (!this._polls[kwargs.poll]._stopped) {\n if (kwargs.error) {\n kwargs.error(rejection)\n } else {\n this._snackbar.apiError(rejection)\n }\n }\n }\n )\n }\n\n if (kwargs.delayed) {\n this._polls[kwargs.poll] = {\n timeout: window.setTimeout(poolServer, kwargs.frequency),\n }\n } else {\n poolServer()\n }\n }\n\n stop(pollId) {\n if (this._polls[pollId]) {\n window.clearTimeout(this._polls[pollId].timeout)\n this._polls[pollId]._stopped = true\n }\n }\n}\n\nexport default new Polls()\n","import React from \"react\"\n\nexport default class extends React.Component {\n onClick = () => {\n this.props.replaceSelection(this.props.execAction)\n }\n\n render() {\n return (\n <button\n className={\"btn btn-icon \" + this.props.className}\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={this.props.title}\n type=\"button\"\n >\n {this.props.children}\n </button>\n )\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action execAction={insertCode} title={gettext(\"Insert code\")} {...props}>\n <span className=\"material-icon\">functions</span>\n </Action>\n )\n}\n\nexport function insertCode(selection, replace) {\n const syntax = $.trim(\n prompt(gettext(\"Enter name of syntax of your code (optional)\") + \":\")\n )\n replace(\"\\n\\n```\" + syntax + \"\\n\" + selection + \"\\n```\\n\\n\")\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeEmphasis}\n title={gettext(\"Emphase selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_italic</span>\n </Action>\n )\n}\n\nexport function makeEmphasis(selection, replace) {\n if (selection.length) {\n replace(\"*\" + selection + \"*\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={insertHr}\n title={gettext(\"Insert horizontal ruler\")}\n {...props}\n >\n <span className=\"material-icon\">remove</span>\n </Action>\n )\n}\n\nexport function insertHr(selection, replace) {\n replace(\"\\n\\n- - - - -\\n\\n\")\n}\n","const URL_PATTERN = new RegExp(\n \"^(https?:\\\\/\\\\/)?((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*(\\\\?[;&a-z\\\\d%_.~+=-]*)?(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n)\n\nexport default function (str) {\n return URL_PATTERN.test($.trim(str))\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertImage} title={gettext(\"Insert image\")} {...props}>\n <span className=\"material-icon\">insert_photo</span>\n </Action>\n )\n}\n\nexport function insertImage(selection, replace) {\n let url = \"\"\n let label = \"\"\n\n if (selection.length) {\n if (isUrl(selection)) {\n url = selection\n } else {\n label = selection\n }\n }\n\n url = $.trim(prompt(gettext(\"Enter link to image\") + \":\", url))\n\n if (url.length) {\n label = $.trim(prompt(gettext(\"Enter image label (optional)\") + \":\", label))\n if (label.length > 0) {\n replace(\"\")\n } else {\n replace(\"!(\" + url + \")\")\n }\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertLink} title={gettext(\"Insert link\")} {...props}>\n <span className=\"material-icon\">insert_link</span>\n </Action>\n )\n}\n\nexport function insertLink(selection, replace) {\n let url = \"\"\n let label = \"\"\n\n if (selection.length) {\n if (isUrl(selection)) {\n url = selection\n } else {\n label = selection\n }\n }\n\n url = $.trim(prompt(gettext(\"Enter link address\") + \":\", url) || \"\")\n if (url.length === 0) return false\n label = $.trim(prompt(gettext(\"Enter link label (optional)\") + \":\", label))\n\n if (url.length) {\n if (label.length > 0) {\n replace(\"[\" + label + \"](\" + url + \")\")\n } else {\n replace(url)\n }\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action\n execAction={insertSpoiler}\n title={gettext(\"Insert spoiler\")}\n {...props}\n >\n <span className=\"material-icon\">not_interested</span>\n </Action>\n )\n}\n\nexport function insertSpoiler(selection, replace) {\n replace(\"\\n\\n[spoiler]\\n\" + selection + \"\\n[/spoiler]\\n\\n\")\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeStrikethrough}\n title={gettext(\"Strikethrough selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_strikethrough</span>\n </Action>\n )\n}\n\nexport function makeStrikethrough(selection, replace) {\n if (selection.length) {\n replace(\"~~\" + selection + \"~~\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\n\nexport default function (props) {\n return (\n <Action\n execAction={makeStrong}\n title={gettext(\"Bolder selection\")}\n {...props}\n >\n <span className=\"material-icon\">format_bold</span>\n </Action>\n )\n}\n\nexport function makeStrong(selection, replace) {\n if (selection.length) {\n replace(\"**\" + selection + \"**\")\n }\n}\n","import React from \"react\"\nimport Action from \"./action\"\nimport isUrl from \"misago/utils/is-url\"\n\nexport default function (props) {\n return (\n <Action execAction={insertQuote} title={gettext(\"Insert quote\")} {...props}>\n <span className=\"material-icon\">format_quote</span>\n </Action>\n )\n}\n\nexport function insertQuote(selection, replace) {\n let title = $.trim(\n prompt(gettext(\"Enter quote autor, prefix usernames with @\") + \":\", title)\n )\n\n if (title) {\n replace('\\n\\n[quote=\"' + title + '\"]\\n' + selection + \"\\n[/quote]\\n\\n\")\n } else {\n replace(\"\\n\\n[quote]\\n\" + selection + \"\\n[/quote]\\n\\n\")\n }\n}\n","import React from \"react\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\nimport formatFilesize from \"misago/utils/file-size\"\n\nconst DATE_ABBR = '<abbr title=\"%(absolute)s\">%(relative)s</abbr>'\nconst USER_SPAN = '<span class=\"item-title\">%(user)s</span>'\nconst USER_URL = '<a href=\"%(url)s\" class=\"item-title\">%(user)s</a>'\n\nexport default class extends React.Component {\n onInsert = () => {\n this.props.replaceSelection(this.insertAttachment)\n }\n\n insertAttachment = (selection, replace) => {\n const item = this.props.item\n\n if (item.is_image) {\n if (item.url.thumb) {\n replace(\n \"[](\" +\n item.url.index +\n \")\"\n )\n } else {\n replace(\n \"[](\" +\n item.url.index +\n \")\"\n )\n }\n } else {\n replace(\"[\" + item.filename + \"](\" + item.url.index + \")\")\n }\n }\n\n onRemove = () => {\n this.updateItem({\n isRemoved: true,\n })\n }\n\n onUndo = () => {\n this.updateItem({\n isRemoved: false,\n })\n }\n\n updateItem = (newState) => {\n const updatedAttachments = this.props.attachments.map((item) => {\n if (item.id === this.props.item.id) {\n return Object.assign({}, item, newState)\n } else {\n return item\n }\n })\n this.props.onAttachmentsChange(updatedAttachments)\n }\n\n render() {\n return (\n <li className=\"editor-attachment-complete\">\n <div className=\"row\">\n <div className=\"col-xs-12 col-sm-8 col-md-9\">\n <Preview {...this.props} />\n <div className=\"editor-attachment-details\">\n <Filename {...this.props} />\n <Details {...this.props} />\n </div>\n </div>\n <div className=\"col-xs-12 col-sm-4 col-md-3 xs-margin-top-half\">\n <Actions\n onInsert={this.onInsert}\n onRemove={this.onRemove}\n onUndo={this.onUndo}\n {...this.props}\n />\n </div>\n </div>\n </li>\n )\n }\n}\n\nexport function Preview(props) {\n if (props.item.is_image) {\n return <Image {...props} />\n } else {\n return <Icon {...props} />\n }\n}\n\nexport function Image(props) {\n const thumbnailUrl = props.item.url.thumb || props.item.url.index\n\n return (\n <div className=\"editor-attachment-image\">\n <a\n href={props.item.url.index + \"?shva=1\"}\n style={{ backgroundImage: \"url('\" + thumbnailUrl + \"?shva=1')\" }}\n target=\"_blank\"\n />\n </div>\n )\n}\n\nexport function Icon(props) {\n return (\n <div className=\"editor-attachment-icon\">\n <span className=\"material-icon\">insert_drive_file</span>\n </div>\n )\n}\n\nexport function Filename(props) {\n return (\n <h4>\n <a\n className=\"item-title\"\n href={props.item.url.index + \"?shva=1\"}\n target=\"_blank\"\n >\n {props.item.filename}\n </a>\n </h4>\n )\n}\n\nexport function Details(props) {\n let user = null\n if (props.item.url.uploader) {\n user = interpolate(\n USER_URL,\n {\n url: escapeHtml(props.item.url.uploader),\n user: escapeHtml(props.item.uploader_name),\n },\n true\n )\n } else {\n user = interpolate(\n USER_SPAN,\n {\n user: escapeHtml(props.item.uploader_name),\n },\n true\n )\n }\n\n const date = interpolate(\n DATE_ABBR,\n {\n absolute: escapeHtml(props.item.uploaded_on.format(\"LLL\")),\n relative: escapeHtml(props.item.uploaded_on.fromNow()),\n },\n true\n )\n\n const message = interpolate(\n escapeHtml(\n gettext(\n \"%(filetype)s, %(size)s, uploaded by %(uploader)s %(uploaded_on)s.\"\n )\n ),\n {\n filetype: props.item.filetype,\n size: formatFilesize(props.item.size),\n uploader: user,\n uploaded_on: date,\n },\n true\n )\n\n return <p dangerouslySetInnerHTML={{ __html: message }} />\n}\n\nexport function Actions(props) {\n return (\n <div className=\"editor-attachment-actions\">\n <div className=\"row\">\n <Insert {...props} />\n <Remove {...props} />\n <Undo {...props} />\n </div>\n </div>\n )\n}\n\nexport function Insert(props) {\n if (!!props.item.isRemoved) {\n return null\n }\n\n return (\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onInsert}\n type=\"button\"\n >\n {gettext(\"Insert\")}\n </button>\n </div>\n )\n}\n\nexport function Remove(props) {\n if (!!props.item.isRemoved && props.item.acl.can_delete) {\n return null\n }\n\n return (\n <div className=\"col-xs-6\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onRemove}\n type=\"button\"\n >\n {gettext(\"Remove\")}\n </button>\n </div>\n )\n}\n\nexport function Undo(props) {\n if (!props.item.isRemoved) {\n return null\n }\n\n return (\n <div className=\"col-xs-12\">\n <button\n className=\"btn btn-default btn-sm btn-block\"\n onClick={props.onUndo}\n type=\"button\"\n >\n {gettext(\"Undo removal\")}\n </button>\n </div>\n )\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst STRONG = \"<strong>%(name)s</strong>\"\n\nexport default class extends React.Component {\n onClick = () => {\n const filteredAttachments = this.props.attachments.filter((item) => {\n return item.key !== this.props.item.key\n })\n this.props.onAttachmentsChange(filteredAttachments)\n }\n\n render() {\n const filename = interpolate(\n STRONG,\n {\n name: escapeHtml(this.props.item.filename),\n },\n true\n )\n\n const title = interpolate(\n gettext(\"Error uploading %(filename)s\"),\n {\n filename,\n progress: this.props.item.progress + \"%\",\n },\n true\n )\n\n return (\n <li className=\"editor-attachment-error\">\n <div className=\"editor-attachment-error-icon\">\n <span className=\"material-icon\">warning</span>\n </div>\n <div className=\"editor-attachment-error-message\">\n <h4 dangerouslySetInnerHTML={{ __html: title + \":\" }} />\n <p>{this.props.item.error}</p>\n <button\n className=\"btn btn-default btn-sm\"\n onClick={this.onClick}\n type=\"button\"\n >\n {gettext(\"Dismiss\")}\n </button>\n </div>\n </li>\n )\n }\n}\n","import React from \"react\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nconst STRONG = \"<strong>%(name)s</strong>\"\n\nexport default function (props) {\n const filename = interpolate(\n STRONG,\n {\n name: escapeHtml(props.item.filename),\n },\n true\n )\n\n const message = interpolate(\n gettext(\"Uploading %(filename)s... %(progress)s\"),\n {\n filename,\n progress: props.item.progress + \"%\",\n },\n true\n )\n\n return (\n <li className=\"editor-attachment-upload\">\n <div className=\"editor-attachment-progress-bar\">\n <div\n className=\"editor-attachment-progress\"\n style={{ width: props.item.progress + \"%\" }}\n />\n </div>\n <p\n className=\"editor-attachment-upload-message\"\n dangerouslySetInnerHTML={{ __html: message }}\n />\n </li>\n )\n}\n","import React from \"react\"\nimport AttachmentComplete from \"./complete\"\nimport AttachmentError from \"./error\"\nimport AttachmentUpload from \"./upload\"\nimport misago from \"misago\"\nimport escapeHtml from \"misago/utils/escape-html\"\n\nexport default function (props) {\n if (props.item.id) {\n return <AttachmentComplete {...props} />\n }\n\n if (props.item.error) {\n return <AttachmentError {...props} />\n }\n\n return <AttachmentUpload {...props} />\n}\n","import React from \"react\"\nimport Attachment from \"./attachment\"\n\nexport default function (props) {\n return (\n <ul className=\"list-unstyled editor-attachments-list\">\n {props.attachments.map((item) => {\n return <Attachment item={item} key={item.id || item.key} {...props} />\n })}\n </ul>\n )\n}\n","import React from \"react\"\nimport moment from \"moment\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n onChange = (event) => {\n const file = event.target.files[0]\n if (!file) {\n return\n }\n\n let upload = {\n id: null,\n key: getRandomKey(),\n progress: 0,\n error: null,\n filename: file.name,\n }\n\n this.props.onAttachmentsChange([upload].concat(this.props.attachments))\n\n const data = new FormData()\n data.append(\"upload\", file)\n\n ajax\n .upload(misago.get(\"ATTACHMENTS_API\"), data, (progress) => {\n upload.progress = progress\n this.props.onAttachmentsChange(this.props.attachments.concat())\n })\n .then(\n (data) => {\n data.uploaded_on = moment(data.uploaded_on)\n Object.assign(upload, data)\n this.props.onAttachmentsChange(this.props.attachments.concat())\n },\n (rejection) => {\n if (rejection.status === 400 || rejection.status === 413) {\n upload.error = rejection.detail\n this.props.onAttachmentsChange(this.props.attachments.concat())\n } else {\n snackbar.apiError(rejection)\n }\n }\n )\n }\n\n render() {\n return (\n <input id=\"editor-upload-field\" onChange={this.onChange} type=\"file\" />\n )\n }\n}\n\nexport function getRandomKey() {\n return \"upld-\" + Math.round(new Date().getTime())\n}\n","import React from \"react\"\nimport List from \"./list\"\nimport Uploader from \"./uploader\"\nimport misago from \"misago\"\n\nexport default function (props) {\n if (!misago.get(\"user\").acl.max_attachment_size) {\n return null\n }\n\n return (\n <div className=\"editor-attachments\">\n <List {...props} />\n <Uploader {...props} />\n </div>\n )\n}\n","import React from \"react\"\nimport misago from \"misago\"\n\nexport default class extends React.Component {\n onClick = () => {\n document.getElementById(\"editor-upload-field\").click()\n }\n\n render() {\n if (!misago.get(\"user\").acl.max_attachment_size) {\n return null\n }\n\n return (\n <button\n className={\"btn btn-icon \" + this.props.className}\n disabled={this.props.disabled}\n onClick={this.onClick}\n title={gettext(\"Upload file\")}\n type=\"button\"\n >\n <span className=\"material-icon\">file_upload</span>\n </button>\n )\n }\n}\n","import React from \"react\"\nimport MisagoMarkup from \"misago/components/misago-markup\"\n\nexport default function (props) {\n return (\n <div className=\"modal-dialog\" role=\"document\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <button\n aria-label={gettext(\"Close\")}\n className=\"close\"\n data-dismiss=\"modal\"\n type=\"button\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <h4 className=\"modal-title\">{gettext(\"Preview message\")}</h4>\n </div>\n <div className=\"modal-body markup-preview\">\n <MisagoMarkup markup={props.markup} />\n </div>\n </div>\n </div>\n )\n}\n","export const textareaId = \"editor-textarea\"\n\nexport function getTextarea() {\n return document.getElementById(textareaId)\n}\n\nexport function getValue() {\n return document.getElementById(textareaId).value\n}\n\nexport function getSelectionRange(start, end) {\n return {\n start,\n end,\n }\n}\n\nexport function getSelection() {\n const ctrl = getTextarea()\n if (document.selection) {\n ctrl.focus()\n const range = document.selection.createRange()\n const length = range.text.length\n range.moveStart(\"character\", -ctrl.value.length)\n return getSelectionRange(range.text.length - length, range.text.length)\n } else if (ctrl.selectionStart || ctrl.selectionStart == \"0\") {\n return getSelectionRange(ctrl.selectionStart, ctrl.selectionEnd)\n }\n}\n\nexport function getSelectionText() {\n const range = getSelection()\n return $.trim(getValue().substring(range.start, range.end))\n}\n\nexport function setSelection(selectionRange) {\n const ctrl = getTextarea()\n if (ctrl.setSelectionRange) {\n ctrl.focus()\n ctrl.setSelectionRange(selectionRange.start, selectionRange.end)\n } else if (ctrl.createTextRange) {\n const range = ctrl.createTextRange()\n range.collapse(true)\n range.moveStart(\"character\", selectionRange.start)\n range.moveEnd(\"character\", selectionRange.end)\n range.select()\n }\n}\n\nexport function _replace(myRange, replacement) {\n const ctrl = getTextarea()\n const text = ctrl.value\n const startText = text.substring(0, myRange.start)\n ctrl.value =\n text.substring(0, myRange.start) + replacement + text.substring(myRange.end)\n setSelection(\n getSelectionRange(\n startText.length + replacement.length,\n startText.length + replacement.length\n )\n )\n return ctrl.value\n}\n\nexport function replace(replacement) {\n return _replace(getSelection(), replacement)\n}\n","import React from \"react\"\nimport Code from \"./actions/code\"\nimport Emphasis from \"./actions/emphasis\"\nimport Hr from \"./actions/hr\"\nimport Image from \"./actions/image\"\nimport Link from \"./actions/link\"\nimport Spoiler from \"./actions/spoiler\"\nimport Strikethrough from \"./actions/strikethrough\"\nimport Strong from \"./actions/strong\"\nimport Quote from \"./actions/quote\"\nimport AttachmentsEditor from \"./attachments\"\nimport Upload from \"./attachments/upload-button\"\nimport MarkupPreview from \"./markup-preview\"\nimport * as textUtils from \"./textutils\"\nimport Button from \"misago/components/button\"\nimport misago from \"misago\"\nimport ajax from \"misago/services/ajax\"\nimport modal from \"misago/services/modal\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n isPreviewLoading: false,\n }\n }\n\n componentDidMount() {\n $(\"#editor-textarea\").atwho({\n at: \"@\",\n displayTpl: '<li><img src=\"${avatar}\" alt=\"\">${username}</li>',\n insertTpl: \"@${username}\",\n searchKey: \"username\",\n callbacks: {\n remoteFilter: function (query, callback) {\n $.getJSON(misago.get(\"MENTION_API\"), { q: query }, callback)\n },\n },\n })\n\n $(\"#editor-textarea\").on(\"inserted.atwho\", (event, flag, query) => {\n this.props.onChange(event)\n })\n }\n\n onPreviewClick = () => {\n if (this.state.isPreviewLoading) {\n return\n }\n\n this.setState({\n isPreviewLoading: true,\n })\n\n ajax.post(misago.get(\"PARSE_MARKUP_API\"), { post: this.props.value }).then(\n (data) => {\n modal.show(<MarkupPreview markup={data.parsed} />)\n\n this.setState({\n isPreviewLoading: false,\n })\n },\n (rejection) => {\n if (rejection.status === 400) {\n snackbar.error(rejection.detail)\n } else {\n snackbar.apiError(rejection)\n }\n\n this.setState({\n isPreviewLoading: false,\n })\n }\n )\n }\n\n replaceSelection = (operation) => {\n operation(textUtils.getSelectionText(), this._replaceSelection)\n }\n\n _replaceSelection = (newValue) => {\n this.props.onChange({\n target: {\n value: textUtils.replace(newValue),\n },\n })\n }\n\n render() {\n return (\n <div className=\"editor-border\">\n <textarea\n className=\"form-control\"\n value={this.props.value}\n disabled={this.props.loading}\n id=\"editor-textarea\"\n onChange={this.props.onChange}\n rows=\"9\"\n />\n <div className=\"editor-footer\">\n <div className=\"buttons-list pull-left\">\n <Strong\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Emphasis\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Strikethrough\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Hr\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Link\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Image\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Quote\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Spoiler\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Code\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n replaceSelection={this.replaceSelection}\n />\n <Upload\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n />\n </div>\n <Button\n className=\"btn-default btn-sm pull-left\"\n disabled={this.props.loading || this.state.isPreviewLoading}\n onClick={this.onPreviewClick}\n type=\"button\"\n >\n {gettext(\"Preview\")}\n </Button>\n <Button\n className=\"btn-primary btn-sm pull-right\"\n loading={this.props.loading}\n >\n {this.props.submitLabel || gettext(\"Post\")}\n </Button>\n <button\n className=\"btn btn-default btn-sm pull-right\"\n disabled={this.props.loading}\n onClick={this.props.onCancel}\n type=\"button\"\n >\n {gettext(\"Cancel\")}\n </button>\n <div className=\"clearfix visible-xs-block\" />\n <Protect\n canProtect={this.props.canProtect}\n disabled={this.props.loading}\n onProtect={this.props.onProtect}\n onUnprotect={this.props.onUnprotect}\n protect={this.props.protect}\n />\n </div>\n <AttachmentsEditor\n attachments={this.props.attachments}\n onAttachmentsChange={this.props.onAttachmentsChange}\n placeholder={this.props.placeholder}\n replaceSelection={this.replaceSelection}\n />\n </div>\n )\n }\n}\n\nexport function Protect(props) {\n if (!props.canProtect) return null\n\n const label = props.protect ? gettext(\"Protected\") : gettext(\"Protect\")\n\n return (\n <button\n className=\"btn btn-icon btn-default btn-protect btn-sm pull-right\"\n disabled={props.disabled}\n onClick={props.protect ? props.onUnprotect : props.onProtect}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.protect ? \"lock\" : \"lock_outline\"}\n </span>\n <span className=\"btn-text hidden-md hidden-lg\">{label}</span>\n </button>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n return (\n <div className={props.className}>\n <div className=\"container\">{props.children}</div>\n </div>\n )\n}\n","import React from \"react\"\nimport Container from \"./container\"\nimport Loader from \"misago/components/loader\"\n\nexport default function (props) {\n return (\n <Container className=\"posting-loader\">\n <Loader />\n </Container>\n )\n}\n","import React from \"react\"\nimport Container from \"./container\"\nimport posting from \"misago/services/posting\"\n\nexport default function (props) {\n return (\n <Container className=\"posting-message\">\n <div className=\"message-body\">\n <p>\n <span className=\"material-icon\">error_outline</span>\n {props.message}\n </p>\n <button\n type=\"button\"\n className=\"btn btn-default\"\n onClick={posting.close}\n >\n {gettext(\"Dismiss\")}\n </button>\n </div>\n </Container>\n )\n}\n","import React from \"react\"\n\nexport default function (props) {\n if (!props.showOptions) return null\n\n const { columns } = props\n\n let className = \"col-xs-12 xs-margin-top\"\n\n if (columns === 1) {\n className += \" col-sm-2\"\n } else {\n className += \" sm-margin-top\"\n }\n\n if (columns === 3) {\n className += \" col-md-3\"\n } else {\n className += \" col-md-2\"\n }\n className += \" posting-options\"\n\n const columnClassName = \"col-xs-\" + 12 / columns\n\n let textClassName = \"btn-text\"\n if (columns === 3) {\n textClassName += \" visible-sm-inline-block\"\n } else if (columns === 2) {\n textClassName += \" hidden-md hidden-lg\"\n } else {\n textClassName += \" hidden-sm\"\n }\n\n return (\n <div className={className}>\n <div className=\"row\">\n <PinOptions\n className={columnClassName}\n disabled={props.disabled}\n onPinGlobally={props.onPinGlobally}\n onPinLocally={props.onPinLocally}\n onUnpin={props.onUnpin}\n pin={props.pin}\n show={props.options.pin}\n textClassName={textClassName}\n />\n <HideOptions\n className={columnClassName}\n disabled={props.disabled}\n hide={props.hide}\n onHide={props.onHide}\n onUnhide={props.onUnhide}\n show={props.options.hide}\n textClassName={textClassName}\n />\n <CloseOptions\n className={columnClassName}\n close={props.close}\n disabled={props.disabled}\n onClose={props.onClose}\n onOpen={props.onOpen}\n show={props.options.close}\n textClassName={textClassName}\n />\n </div>\n </div>\n )\n}\n\nexport function CloseOptions(props) {\n if (!props.show) return null\n\n const label = props.close ? gettext(\"Closed\") : gettext(\"Open\")\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={props.close ? props.onOpen : props.onClose}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.close ? \"lock\" : \"lock_outline\"}\n </span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n\nexport function HideOptions(props) {\n if (!props.show) return null\n\n const label = props.hide ? gettext(\"Hidden\") : gettext(\"Not hidden\")\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={props.hide ? props.onUnhide : props.onHide}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">\n {props.hide ? \"visibility_off\" : \"visibility\"}\n </span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n\nexport function PinOptions(props) {\n if (!props.show) return null\n\n let icon = null\n let onClick = null\n let label = null\n\n switch (props.pin) {\n case 0:\n icon = \"radio_button_unchecked\"\n onClick = props.onPinLocally\n label = gettext(\"Unpinned\")\n break\n\n case 1:\n icon = \"bookmark_outline\"\n onClick = props.onPinGlobally\n label = gettext(\"Pinned locally\")\n\n if (props.show == 2) {\n onClick = props.onPinGlobally\n } else {\n onClick = props.onUnpin\n }\n\n break\n\n case 2:\n icon = \"bookmark\"\n onClick = props.onUnpin\n label = gettext(\"Pinned globally\")\n break\n }\n\n return (\n <div className={props.className}>\n <button\n className=\"btn btn-default btn-block\"\n disabled={props.disabled}\n onClick={onClick}\n title={label}\n type=\"button\"\n >\n <span className=\"material-icon\">{icon}</span>\n <span className={props.textClassName}>{label}</span>\n </button>\n </div>\n )\n}\n","import moment from \"moment\"\n\nexport function clean(attachments) {\n const completedAttachments = attachments.filter((attachment) => {\n return attachment.id && !attachment.isRemoved\n })\n\n return completedAttachments.map((a) => {\n return a.id\n })\n}\n\nexport function hydrate(attachments) {\n return attachments.map((attachment) => {\n return Object.assign({}, attachment, {\n uploaded_on: moment(attachment.uploaded_on),\n })\n })\n}\n","import React from \"react\"\nimport CategorySelect from \"misago/components/category-select\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport Options from \"./utils/options\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators, getTitleValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n showOptions: false,\n categoryOptions: null,\n\n title: \"\",\n category: props.category || null,\n categories: [],\n post: \"\",\n attachments: [],\n close: false,\n hide: false,\n pin: 0,\n\n validators: {\n title: getTitleValidators(),\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.config).then(this.loadSuccess, this.loadError)\n }\n\n loadSuccess = (data) => {\n let category = null\n let showOptions = false\n let categoryOptions = null\n\n // hydrate categories, extract posting options\n const categories = data.map((item) => {\n // pick first category that allows posting and if it may, override it with initial one\n if (\n item.post !== false &&\n (!category || item.id == this.state.category)\n ) {\n category = item.id\n categoryOptions = item.post\n }\n\n if (item.post && (item.post.close || item.post.hide || item.post.pin)) {\n showOptions = true\n }\n\n return Object.assign(item, {\n disabled: item.post === false,\n label: item.name,\n value: item.id,\n })\n })\n\n this.setState({\n isReady: true,\n showOptions,\n\n categories,\n category,\n categoryOptions,\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard thread?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onTitleChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n onCategoryChange = (event) => {\n const category = this.state.categories.find((item) => {\n return event.target.value == item.value\n })\n\n // if selected pin is greater than allowed, reduce it\n let pin = this.state.pin\n if (category.post.pin && category.post.pin < pin) {\n pin = category.post.pin\n }\n\n this.setState({\n category: category.id,\n categoryOptions: category.post,\n\n pin,\n })\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n onClose = () => {\n this.changeValue(\"close\", true)\n }\n\n onOpen = () => {\n this.changeValue(\"close\", false)\n }\n\n onPinGlobally = () => {\n this.changeValue(\"pin\", 2)\n }\n\n onPinLocally = () => {\n this.changeValue(\"pin\", 1)\n }\n\n onUnpin = () => {\n this.changeValue(\"pin\", 0)\n }\n\n onHide = () => {\n this.changeValue(\"hide\", true)\n }\n\n onUnhide = () => {\n this.changeValue(\"hide\", false)\n }\n\n clean() {\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n title: this.state.title,\n category: this.state.category,\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n close: this.state.close,\n hide: this.state.hide,\n pin: this.state.pin,\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your thread has been posted.\"))\n window.location = success.url\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.category || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n }\n\n if (!this.state.isReady) {\n return <Loader />\n }\n\n let columns = 0\n if (this.state.categoryOptions.close) columns += 1\n if (this.state.categoryOptions.hide) columns += 1\n if (this.state.categoryOptions.pin) columns += 1\n\n let titleStyle = null\n\n if (columns === 1) {\n titleStyle = \"col-sm-6\"\n } else {\n titleStyle = \"col-sm-8\"\n }\n\n if (columns === 3) {\n titleStyle += \" col-md-6\"\n } else if (columns) {\n titleStyle += \" col-md-7\"\n } else {\n titleStyle += \" col-md-9\"\n }\n\n return (\n <Container className=\"posting-form\" withFirstRow={true}>\n <form onSubmit={this.handleSubmit}>\n <div className=\"row first-row\">\n <div className={titleStyle}>\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onTitleChange}\n placeholder={gettext(\"Thread title\")}\n type=\"text\"\n value={this.state.title}\n />\n </div>\n <div className=\"col-xs-12 col-sm-4 col-md-3 xs-margin-top\">\n <CategorySelect\n choices={this.state.categories}\n disabled={this.state.isLoading}\n onChange={this.onCategoryChange}\n value={this.state.category}\n />\n </div>\n <Options\n close={this.state.close}\n columns={columns}\n disabled={this.state.isLoading}\n hide={this.state.hide}\n onClose={this.onClose}\n onHide={this.onHide}\n onOpen={this.onOpen}\n onPinGlobally={this.onPinGlobally}\n onPinLocally={this.onPinLocally}\n onUnhide={this.onUnhide}\n onUnpin={this.onUnpin}\n options={this.state.categoryOptions}\n pin={this.state.pin}\n showOptions={this.state.showOptions}\n />\n </div>\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post thread\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n }\n}\n","export default function (usernames) {\n const normalisedNames = usernames\n .split(\",\")\n .map((i) => i.trim().toLowerCase())\n const removedBlanks = normalisedNames.filter((i) => i.length > 0)\n const removedDuplicates = removedBlanks.filter((name, pos) => {\n return removedBlanks.indexOf(name) == pos\n })\n\n return removedDuplicates\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport cleanUsernames from \"./utils/usernames\"\nimport { getPostValidators, getTitleValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n const to = (props.to || []).map((user) => user.username).join(\", \")\n\n this.state = {\n isLoading: false,\n\n to: to,\n title: \"\",\n post: \"\",\n attachments: [],\n\n validators: {\n title: getTitleValidators(),\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard private thread?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onToChange = (event) => {\n this.changeValue(\"to\", event.target.value)\n }\n\n onTitleChange = (event) => {\n this.changeValue(\"title\", event.target.value)\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!cleanUsernames(this.state.to).length) {\n snackbar.error(gettext(\"You have to enter at least one recipient.\"))\n return false\n }\n\n if (!this.state.title.trim().length) {\n snackbar.error(gettext(\"You have to enter thread title.\"))\n return false\n }\n\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.title) {\n snackbar.error(errors.title[0])\n return false\n }\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n to: cleanUsernames(this.state.to),\n title: this.state.title,\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your thread has been posted.\"))\n window.location = success.url\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.to || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n return (\n <Container className=\"posting-form\" withFirstRow={true}>\n <form onSubmit={this.handleSubmit}>\n <div className=\"row first-row\">\n <div className=\"col-xs-12\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onToChange}\n placeholder={gettext(\n \"Comma separated list of user names, eg.: Danny, Lisa\"\n )}\n type=\"text\"\n value={this.state.to}\n />\n </div>\n </div>\n <div className=\"row first-row\">\n <div className=\"col-xs-12\">\n <input\n className=\"form-control\"\n disabled={this.state.isLoading}\n onChange={this.onTitleChange}\n placeholder={gettext(\"Thread title\")}\n type=\"text\"\n value={this.state.title}\n />\n </div>\n </div>\n <div className=\"row\">\n <div className=\"col-xs-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post thread\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n }\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n post: \"\",\n attachments: [],\n\n validators: {\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax\n .get(this.props.config, this.props.context || null)\n .then(this.loadSuccess, this.loadError)\n }\n\n componentWillReceiveProps(nextProps) {\n const context = this.props.context\n const newContext = nextProps.context\n\n if (context && newContext && context.reply === newContext.reply) return\n\n ajax\n .get(nextProps.config, nextProps.context || null)\n .then(this.appendData, snackbar.apiError)\n }\n\n loadSuccess = (data) => {\n this.setState({\n isReady: true,\n\n post: data.post\n ? '[quote=\"@' + data.poster + '\"]\\n' + data.post + \"\\n[/quote]\"\n : \"\",\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n appendData = (data) => {\n const newPost = data.post\n ? '[quote=\"@' + data.poster + '\"]\\n' + data.post + \"\\n[/quote]\\n\\n\"\n : \"\"\n\n this.setState((prevState, props) => {\n if (prevState.post.length > 0) {\n return {\n post: prevState.post + \"\\n\\n\" + newPost,\n }\n }\n\n return {\n post: newPost,\n }\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard your reply?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.post(this.props.submit, {\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Your reply has been posted.\"))\n window.location = success.url.index\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <Container className=\"posting-form\">\n <form onSubmit={this.handleSubmit} method=\"POST\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n submitLabel={gettext(\"Post reply\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n } else if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n } else {\n return <Loader />\n }\n }\n}\n","import React from \"react\"\nimport Editor from \"misago/components/editor\"\nimport Form from \"misago/components/form\"\nimport Container from \"./utils/container\"\nimport Loader from \"./utils/loader\"\nimport Message from \"./utils/message\"\nimport * as attachments from \"./utils/attachments\"\nimport { getPostValidators } from \"./utils/validators\"\nimport ajax from \"misago/services/ajax\"\nimport posting from \"misago/services/posting\"\nimport snackbar from \"misago/services/snackbar\"\n\nexport default class extends Form {\n constructor(props) {\n super(props)\n\n this.state = {\n isReady: false,\n isLoading: false,\n isErrored: false,\n\n post: \"\",\n attachments: [],\n protect: false,\n\n canProtect: false,\n\n validators: {\n post: getPostValidators(),\n },\n errors: {},\n }\n }\n\n componentDidMount() {\n ajax.get(this.props.config).then(this.loadSuccess, this.loadError)\n }\n\n loadSuccess = (data) => {\n this.setState({\n isReady: true,\n\n post: data.post,\n attachments: attachments.hydrate(data.attachments),\n protect: data.is_protected,\n\n canProtect: data.can_protect,\n })\n }\n\n loadError = (rejection) => {\n this.setState({\n isErrored: rejection.detail,\n })\n }\n\n onCancel = () => {\n const cancel = window.confirm(\n gettext(\"Are you sure you want to discard changes?\")\n )\n if (cancel) {\n posting.close()\n }\n }\n\n onProtect = () => {\n this.setState({\n protect: true,\n })\n }\n\n onUnprotect = () => {\n this.setState({\n protect: false,\n })\n }\n\n onPostChange = (event) => {\n this.changeValue(\"post\", event.target.value)\n }\n\n onAttachmentsChange = (attachments) => {\n this.setState({\n attachments,\n })\n }\n\n clean() {\n if (!this.state.post.trim().length) {\n snackbar.error(gettext(\"You have to enter a message.\"))\n return false\n }\n\n const errors = this.validate()\n\n if (errors.post) {\n snackbar.error(errors.post[0])\n return false\n }\n\n return true\n }\n\n send() {\n return ajax.put(this.props.submit, {\n post: this.state.post,\n attachments: attachments.clean(this.state.attachments),\n protect: this.state.protect,\n })\n }\n\n handleSuccess(success) {\n snackbar.success(gettext(\"Reply has been edited.\"))\n window.location = success.url.index\n\n // keep form loading\n this.setState({\n isLoading: true,\n })\n }\n\n handleError(rejection) {\n if (rejection.status === 400) {\n const errors = [].concat(\n rejection.non_field_errors || [],\n rejection.category || [],\n rejection.title || [],\n rejection.post || [],\n rejection.attachments || []\n )\n\n snackbar.error(errors[0])\n } else {\n snackbar.apiError(rejection)\n }\n }\n\n render() {\n if (this.state.isReady) {\n return (\n <Container className=\"posting-form\">\n <form onSubmit={this.handleSubmit} method=\"POST\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <Editor\n attachments={this.state.attachments}\n canProtect={this.state.canProtect}\n loading={this.state.isLoading}\n onAttachmentsChange={this.onAttachmentsChange}\n onCancel={this.onCancel}\n onChange={this.onPostChange}\n onProtect={this.onProtect}\n onUnprotect={this.onUnprotect}\n protect={this.state.protect}\n submitLabel={gettext(\"Edit reply\")}\n value={this.state.post}\n />\n </div>\n </div>\n </form>\n </Container>\n )\n } else if (this.state.isErrored) {\n return <Message message={this.state.isErrored} />\n } else {\n return <Loader />\n }\n }\n}\n","import React from \"react\"\nimport Start from \"./start\"\nimport StartPrivate from \"./start-private\"\nimport Reply from \"./reply\"\nimport Edit from \"./edit\"\n\nexport default function (props) {\n if (props.mode === \"START\") {\n return <Start {...props} />\n } else if (props.mode === \"START_PRIVATE\") {\n return <StartPrivate {...props} />\n } else if (props.mode === \"REPLY\") {\n return <Reply {...props} />\n } else if (props.mode === \"EDIT\") {\n return <Edit {...props} />\n } else {\n return null\n }\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { PollForm } from \"misago/components/poll\"\nimport PostingComponent from \"misago/components/posting\"\nimport mount from \"misago/utils/mount-component\"\n\nexport class Posting {\n init(ajax, snackbar, placeholder) {\n this._ajax = ajax\n this._snackbar = snackbar\n this._placeholder = $(placeholder)\n\n this._mode = null\n\n this._isOpen = false\n this._isClosing = false\n }\n\n open(props) {\n if (this._isOpen === false) {\n this._mode = props.mode\n this._isOpen = props.submit\n this._realOpen(props)\n } else if (this._isOpen !== props.submit) {\n let message = gettext(\n \"You are already working on other message. Do you want to discard it?\"\n )\n if (this._mode == \"POLL\") {\n message = gettext(\n \"You are already working on a poll. Do you want to discard it?\"\n )\n }\n\n const changeForm = window.confirm(message)\n if (changeForm) {\n this._mode = props.mode\n this._isOpen = props.submit\n this._realOpen(props)\n }\n } else if (this._mode == \"REPLY\" && props.mode == \"REPLY\") {\n this._realOpen(props)\n }\n }\n\n _realOpen(props) {\n if (props.mode == \"POLL\") {\n mount(<PollForm {...props} />, \"posting-mount\")\n } else {\n mount(<PostingComponent {...props} />, \"posting-mount\")\n }\n\n this._placeholder.addClass(\"slide-in\")\n\n $(\"html, body\").animate(\n {\n scrollTop: this._placeholder.offset().top,\n },\n 1000\n )\n }\n\n close = () => {\n if (this._isOpen && !this._isClosing) {\n this._isClosing = true\n this._placeholder.removeClass(\"slide-in\")\n\n window.setTimeout(() => {\n ReactDOM.unmountComponentAtNode(\n document.getElementById(\"posting-mount\")\n )\n this._isClosing = false\n this._isOpen = false\n }, 300)\n }\n }\n}\n\nexport default new Posting()\n","import { showSnackbar, hideSnackbar } from \"misago/reducers/snackbar\"\n\nconst HIDE_ANIMATION_LENGTH = 300\nconst MESSAGE_SHOW_LENGTH = 5000\n\nexport class Snackbar {\n init(store) {\n this._store = store\n this._timeout = null\n }\n\n alert(message, type) {\n if (this._timeout) {\n window.clearTimeout(this._timeout)\n this._store.dispatch(hideSnackbar())\n\n this._timeout = window.setTimeout(() => {\n this._timeout = null\n this.alert(message, type)\n }, HIDE_ANIMATION_LENGTH)\n } else {\n this._store.dispatch(showSnackbar(message, type))\n this._timeout = window.setTimeout(() => {\n this._store.dispatch(hideSnackbar())\n this._timeout = null\n }, MESSAGE_SHOW_LENGTH)\n }\n }\n\n // shorthands for message types\n\n info(message) {\n this.alert(message, \"info\")\n }\n\n success(message) {\n this.alert(message, \"success\")\n }\n\n warning(message) {\n this.alert(message, \"warning\")\n }\n\n error(message) {\n this.alert(message, \"error\")\n }\n\n // shorthand for api errors\n\n apiError(rejection) {\n let message = rejection.detail\n\n if (!message) {\n if (rejection.status === 404) {\n message = gettext(\"Action link is invalid.\")\n } else {\n message = gettext(\"Unknown error has occured.\")\n }\n }\n\n if (rejection.status === 403 && message === \"Permission denied\") {\n message = gettext(\"You don't have permission to perform this action.\")\n }\n\n this.error(message)\n }\n}\n\nexport default new Snackbar()\n","import { combineReducers, createStore } from \"redux\"\n\nexport class StoreWrapper {\n constructor() {\n this._store = null\n this._reducers = {}\n this._initialState = {}\n }\n\n addReducer(name, reducer, initialState) {\n this._reducers[name] = reducer\n this._initialState[name] = initialState\n }\n\n init() {\n this._store = createStore(\n combineReducers(this._reducers),\n this._initialState\n )\n }\n\n getStore() {\n return this._store\n }\n\n // Store API\n\n getState() {\n return this._store.getState()\n }\n\n dispatch(action) {\n return this._store.dispatch(action)\n }\n}\n\nexport default new StoreWrapper()\n","/* global zxcvbn */\nexport class Zxcvbn {\n init(include) {\n this._include = include\n this._isLoaded = false\n }\n\n scorePassword(password, inputs) {\n // 0-4 score, the more the stronger password\n if (this._isLoaded) {\n return zxcvbn(password, inputs).score\n }\n\n return 0\n }\n\n load() {\n if (!this._isLoaded) {\n this._include.include(\"misago/js/zxcvbn.js\")\n return this._loadingPromise()\n } else {\n return this._loadedPromise()\n }\n }\n\n _loadingPromise() {\n const self = this\n\n return new Promise(function (resolve, reject) {\n var wait = function (tries = 0) {\n tries += 1\n if (tries > 200) {\n reject()\n } else if (typeof zxcvbn === \"undefined\") {\n window.setTimeout(function () {\n wait(tries)\n }, 200)\n } else {\n self._isLoaded = true\n resolve()\n }\n }\n wait()\n })\n }\n\n _loadedPromise() {\n // we have already loaded zxcvbn.js, resolve away!\n return new Promise(function (resolve) {\n resolve()\n })\n }\n}\n\nexport default new Zxcvbn()\n","import moment from \"moment\"\nimport React from \"react\"\n\nexport default class extends React.Component {\n getReasonMessage() {\n if (this.props.message.html) {\n return (\n <div\n className=\"lead\"\n dangerouslySetInnerHTML={{\n __html: this.props.message.html,\n }}\n />\n )\n } else {\n return <p className=\"lead\">{this.props.message.plain}</p>\n }\n }\n\n getExpirationMessage() {\n if (this.props.expires) {\n if (this.props.expires.isAfter(moment())) {\n let title = interpolate(\n gettext(\"This ban expires on %(expires_on)s.\"),\n {\n expires_on: this.props.expires.format(\"LL, LT\"),\n },\n true\n )\n\n let message = interpolate(\n gettext(\"This ban expires %(expires_on)s.\"),\n {\n expires_on: this.props.expires.fromNow(),\n },\n true\n )\n\n return <abbr title={title}>{message}</abbr>\n } else {\n return gettext(\"This ban has expired.\")\n }\n } else {\n return gettext(\"This ban is permanent.\")\n }\n }\n\n render() {\n return (\n <div className=\"page page-error page-error-banned\">\n <div className=\"container\">\n <div className=\"message-panel\">\n <div className=\"message-icon\">\n <span className=\"material-icon\">highlight_off</span>\n </div>\n <div className=\"message-body\">\n {this.getReasonMessage()}\n <p className=\"message-footnote\">{this.getExpirationMessage()}</p>\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n","import moment from \"moment\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider, connect } from \"react-redux\"\nimport BannedPage from \"misago/components/banned-page\"\nimport misago from \"misago/index\"\nimport store from \"misago/services/store\"\n\nlet select = function (state) {\n return state.tick\n}\n\nlet RedrawedBannedPage = connect(select)(BannedPage)\n\nexport default function (ban, changeState) {\n ReactDOM.render(\n <Provider store={store.getStore()}>\n <RedrawedBannedPage\n message={ban.message}\n expires={ban.expires_on ? moment(ban.expires_on) : null}\n />\n </Provider>,\n\n document.getElementById(\"page-mount\")\n )\n\n if (typeof changeState === \"undefined\" || changeState) {\n let forumName = misago.get(\"SETTINGS\").forum_name\n document.title = gettext(\"You are banned\") + \" | \" + forumName\n window.history.pushState({}, \"\", misago.get(\"BANNED_URL\"))\n }\n}\n","export default function (list, rowWidth, padding = false) {\n let rows = []\n let row = []\n\n list.forEach(function (element) {\n row.push(element)\n if (row.length === rowWidth) {\n rows.push(row)\n row = []\n }\n })\n\n // pad row to required length?\n if (padding !== false && row.length > 0 && row.length < rowWidth) {\n for (let i = row.length; i < rowWidth; i++) {\n row.push(padding)\n }\n }\n\n if (row.length) {\n rows.push(row)\n }\n\n return rows\n}\n","export default function (a, b) {\n let ids = []\n return a.concat(b).filter(function (item) {\n if (ids.indexOf(item.id) === -1) {\n ids.push(item.id)\n return true\n } else {\n return false\n }\n })\n}\n","const map = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\",\n}\n\nexport default function (text) {\n return text.replace(/[&<>\"']/g, function (m) {\n return map[m]\n })\n}\n","export default function (bytes) {\n if (bytes > 1024 * 1024 * 1024) {\n return roundSize(bytes / (1024 * 1024 * 1024)) + \" GB\"\n } else if (bytes > 1024 * 1024) {\n return roundSize(bytes / (1024 * 1024)) + \" MB\"\n } else if (bytes > 1024) {\n return roundSize(bytes / 1024) + \" KB\"\n } else {\n return roundSize(bytes) + \" B\"\n }\n}\n\nexport function roundSize(value) {\n return value.toFixed(1)\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\nimport store from \"misago/services/store\"\n\nexport default function (Component, rootElementId, connected = true) {\n let rootElement = document.getElementById(rootElementId)\n\n let finalComponent = Component.props ? Component : <Component />\n\n if (rootElement) {\n if (connected) {\n ReactDOM.render(\n <Provider store={store.getStore()}>{finalComponent}</Provider>,\n\n rootElement\n )\n } else {\n ReactDOM.render(finalComponent, rootElement)\n }\n }\n}\n","export function int(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min\n}\n\nexport function range(min, max) {\n let array = new Array(int(min, max))\n for (let i = 0; i < array.length; i++) {\n array[i] = i\n }\n\n return array\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Provider } from \"react-redux\"\nimport { Router, browserHistory } from \"react-router\"\nimport store from \"misago/services/store\"\n\nconst rootElement = document.getElementById(\"page-mount\")\n\nexport default function (options) {\n let routes = {\n component: options.component || null,\n childRoutes: [],\n }\n\n if (options.root) {\n routes.childRoutes = [\n {\n path: options.root,\n onEnter: function (nextState, replaceState) {\n replaceState(null, options.paths[0].path)\n },\n },\n ].concat(options.paths)\n } else {\n routes.childRoutes = options.paths\n }\n\n ReactDOM.render(\n <Provider store={store.getStore()}>\n <Router routes={routes} history={browserHistory} />\n </Provider>,\n rootElement\n )\n}\n","export function push(array, value) {\n if (array.indexOf(value) === -1) {\n let copy = array.slice()\n copy.push(value)\n return copy\n } else {\n return array\n }\n}\n\nexport function remove(array, value) {\n if (array.indexOf(value) >= 0) {\n return array.filter(function (i) {\n return i !== value\n })\n } else {\n return array\n }\n}\n\nexport function toggle(array, value) {\n if (array.indexOf(value) === -1) {\n let copy = array.slice()\n copy.push(value)\n return copy\n } else {\n return array.filter(function (i) {\n return i !== value\n })\n }\n}\n","const EMAIL =\n /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i\nconst USERNAME = new RegExp(\"^[0-9a-z]+$\", \"i\")\n\nexport function required(message) {\n return function (value) {\n if (value === false || value === null || $.trim(value).length === 0) {\n return message || gettext(\"This field is required.\")\n }\n }\n}\n\nexport function requiredTermsOfService(message) {\n const error = gettext(\"You have to accept the terms of service.\")\n return required(message || error)\n}\n\nexport function requiredPrivacyPolicy(message) {\n const error = gettext(\"You have to accept the privacy policy.\")\n return required(message || error)\n}\n\nexport function email(message) {\n return function (value) {\n if (!EMAIL.test(value)) {\n return message || gettext(\"Enter a valid email address.\")\n }\n }\n}\n\nexport function minLength(limitValue, message) {\n return function (value) {\n var returnMessage = \"\"\n var length = $.trim(value).length\n\n if (length < limitValue) {\n if (message) {\n returnMessage = message(limitValue, length)\n } else {\n returnMessage = ngettext(\n \"Ensure this value has at least %(limit_value)s character (it has %(show_value)s).\",\n \"Ensure this value has at least %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n }\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n\nexport function maxLength(limitValue, message) {\n return function (value) {\n var returnMessage = \"\"\n var length = $.trim(value).length\n\n if (length > limitValue) {\n if (message) {\n returnMessage = message(limitValue, length)\n } else {\n returnMessage = ngettext(\n \"Ensure this value has at most %(limit_value)s character (it has %(show_value)s).\",\n \"Ensure this value has at most %(limit_value)s characters (it has %(show_value)s).\",\n limitValue\n )\n }\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n\nexport function usernameMinLength(lengthMin) {\n var message = function (lengthMin) {\n return ngettext(\n \"Username must be at least %(limit_value)s character long.\",\n \"Username must be at least %(limit_value)s characters long.\",\n lengthMin\n )\n }\n return minLength(lengthMin, message)\n}\n\nexport function usernameMaxLength(lengthMax) {\n var message = function (lengthMax) {\n return ngettext(\n \"Username cannot be longer than %(limit_value)s character.\",\n \"Username cannot be longer than %(limit_value)s characters.\",\n lengthMax\n )\n }\n return maxLength(lengthMax, message)\n}\n\nexport function usernameContent() {\n return function (value) {\n if (!USERNAME.test($.trim(value))) {\n return gettext(\n \"Username can only contain latin alphabet letters and digits.\"\n )\n }\n }\n}\n\nexport function passwordMinLength(limitValue) {\n return function (value) {\n const length = value.length\n\n if (length < limitValue) {\n const returnMessage = ngettext(\n \"Valid password must be at least %(limit_value)s character long.\",\n \"Valid password must be at least %(limit_value)s characters long.\",\n limitValue\n )\n\n return interpolate(\n returnMessage,\n {\n limit_value: limitValue,\n show_value: length,\n },\n true\n )\n }\n }\n}\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t174: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmisago\"] = self[\"webpackChunkmisago\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(32233); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(58339); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(64109); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(46226); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(93240); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(75147); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(4894); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(29223); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(3026); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(94795); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(95563); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(32488); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(11768); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(61323); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(15049); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(61814); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(95920); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(59203); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(72168); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(47806); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(77031); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(97751); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(76093); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(19764); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(47549); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(22331); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(21513); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(98749); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(98251); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(6720); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(10846); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(18255); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(14113); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(24444); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(1764); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(68351); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(81521); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(19984); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(41229); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(43589); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(24108); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(33934); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(85577); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(83526); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(43060); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(92292); })\n__webpack_require__.O(undefined, [736], function() { return __webpack_require__(33409); })\nvar __webpack_exports__ = __webpack_require__.O(undefined, [736], function() { return __webpack_require__(31341); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","n","window","self","hljs","e","replace","I","t","nodeName","toLowerCase","r","exec","index","i","k","test","o","u","a","firstChild","nextSibling","nodeType","nodeValue","length","push","event","offset","node","match","c","l","w","map","call","attributes","value","join","s","f","g","substring","reverse","forEach","splice","pop","substr","source","RegExp","cI","compiled","bK","split","Number","E","lR","b","bR","eW","eR","tE","iR","v","starts","concat","filter","Boolean","endsParent","parent","N","hasOwnProperty","h","y","classPrefix","C","sL","x","B","L","M","top","language","d","lastIndex","p","cN","Object","create","m","skip","eB","rB","rE","eE","Error","R","j","O","T","message","indexOf","languages","second_best","tabReplace","useBR","className","parentNode","document","createElementNS","innerHTML","textContent","trim","result","re","called","querySelectorAll","keys","highlight","highlightAuto","fixMarkup","highlightBlock","configure","initHighlighting","initHighlightingOnLoad","addEventListener","registerLanguage","aliases","listLanguages","getLanguage","inherit","IR","UIR","NR","CNR","BNR","RSR","BE","ASM","QSM","PWM","CLCM","CBCM","HCM","NM","CNM","BNM","CSSNM","RM","TM","UTM","METHOD_GUARD","name","keyword","built_in","literal","_","children","classnames","shrink","auto","styleName","dangerouslySetInnerHTML","__html","header","LegalAgreement","props","agreement","checked","errors","url","onChange","agreementHtml","interpolate","escapeHtml","label","gettext","type","error","privacyPolicy","termsOfService","onPrivacyPolicyChange","onTermsOfServiceChange","termsOfServiceId","misago","termsOfServiceUrl","privacyPolicyId","privacyPolicyUrl","FormHeader","text","buttonClassName","buttonLabel","formLabel","labelClassName","socialAuth","id","button_text","button_color","style","color","finalButtonLabel","site","href","thread","weight","title","best_answer","has_poll","is_unapproved","has_unapproved_posts","is_closed","is_hidden","ngettext","replies","Math","round","size","size2x","alt","src","getSrc","user","srcSet","width","height","avatars","avatar","av","resolveAvatarForSize","Button","this","disabled","loading","onClick","React","defaultProps","choices","item","repeat","level","display","helpText","ev","field","fieldname","target","input","rows","fields","for","help_text","validation","setState","state","isLoading","groups","group","initial","data","assign","ajax","api","onSuccess","rejection","status","snackbar","onSubmit","handleSubmit","CancelButton","onCancel","Form","then","cancel","FormDisplay","isValidated","getClassName","labelClass","htmlFor","controlClass","getFeedbackDescription","getFeedback","getHelpText","extra","validateRequired","required","changeValue","newState","formErrors","validateField","preventDefault","clean","promise","send","success","handleSuccess","handleError","validators","optional","validatedFields","fieldErrors","validate","requiredError","validationError","isControlled","isActive","path","location","pathname","activeClassName","modal","onError","bestAnswer","poll","polls","confirm","role","BestAnswerSelect","bestAnswers","onBestAnswerChange","PollSelect","onPollChange","choice","ytRegExp","domnode","highlightCode","embedYoutubePlayers","_youtube","codeblocks","code","anchors","onlyChild","childNodes","parseYoutubeUrl","youtubeMovie","swapYoutubePlayer","element","youtube","video","start","player","$","replaceWith","wrap","cleanedUrl","cleanUrl","getVideoIdFromUrl","timebit","bits","parseInt","onebox","documentNode","find","click","revealSpoiler","prevProps","prevState","nextProps","nextState","markup","ref","btn","addClass","icon","PanelMessage","PollChoice","hash","proc","votes","ceil","getVotesLabel","ChoiceVotes","UserChoice","selected","hydratedData","voters","voter","voted_on","moment","detail","ModalBody","ChoicesList","ChoiceDetails","key","VotesCount","VotesList","Voter","username","VoteDate","format","fromNow","isPollOver","showVoting","acl","is_public","can_delete","can_edit","can_see_votes","can_vote","hasSelectedChoices","allow_revotes","isVisible","controls","canVote","canChangeVote","ChangeVote","SeeVotes","Edit","Delete","control","isBusy","posting","submit","mode","store","newThreadAcl","DATE_ABBR","PollVotes","PollLength","PollIsPublic","PollCreation","poster","getPoster","posted_on","getPostedOn","poster_name","absolute","relative","ends_on","getEndsOn","endsOn","question","PollChoicesLeft","choicesLeft","PollAllowRevote","ChoiceSelect","toggleChoice","getChoicesLeft","selection","allowed_choices","getChoiceFromHash","deselectChoice","selectChoice","slice","showResults","isAfter","getIsPollOver","generateRandomHash","setChoices","canDelete","onDelete","onAdd","maxLength","placeholder","randomHash","random","toString","isEdit","non_field_errors","bindInput","PollPublicSwitch","iconOn","iconOff","labelOn","labelOff","post","content","Default","Invalid","category","tooltip","rank","userTitle","css_class","is_tab","isReady","posts","getTitleValidators","minLength","thread_title_length_min","limitValue","limit_value","show_value","thread_title_length_max","getPostValidators","post_length_max","validatePostLengthMin","post_length_min","getChoice","Icon","getIcon","getLabel","change","showActivation","password","isValid","form","append","val","showBannedPage","ban","getActivationButton","is_banned","is_online_hidden","is_offline_hidden","is_online","is_offline","getClass","StatusIcon","StatusLabel","banned_until","ban_expires","last_click","getHelp","emptyMessage","getEmptyMessage","changed_by","changed_by_username","renderUserAvatar","renderUsername","old_username","new_username","changed_on","changes","hiddenOnMobile","isLoaded","showStatus","Status","JoinDate","Posts","Threads","Followers","joined_on","getStatClassName","threads","followers","stat","colClassName","cols","list","Array","apply","users","dropdown","toggle","items","isOrdered","_items","order","after","before","undefined","get","values","values_only","_order","unordered","ordered","ordering","insertItem","insertAt","iterations","_initializers","_context","initializer","context","OrderedList","orderedValues","fallback","has","setInterval","patch","AUTH_SYNC_RATE","auth","storage","captcha","include","AcceptAgreement","submiting","accept","reload","handleDecline","handleAccept","getElementById","mount","signedIn","signedOut","getMessage","refresh","select","connect","AuthMessage","description","html","getTitle","is_read","LastThread","Empty","Private","Protected","can_browse","can_see_all_threads","last_thread_title","LastPosterAvatar","last_thread_new","LastPosterName","last_post","last_post_on","last_poster","last_poster_name","Message","isFirst","subcategories","categories","hydrate","startPolling","frequency","update","tick","Categories","SideNav","options","option","to","baseUrl","component","CompactNav","hideNav","delete","onPasswordChange","edit_details","DownloadData","data_downloads","downloads","isSubmiting","request_data_download","handleLoadDownloads","rowStyle","requested_on","DownloadButton","exportFile","file","colSpan","handleRequestDataDownload","verticalAlign","is_hiding_presence","limits_private_thread_invites_to","subscribe_to_started_threads","subscribe_to_replied_threads","privateThreadInvitesChoices","subscribeToChoices","next_on","next_change","length_min","length_max","phrases","changes_left","name_changes_expire","complete","slug","addNameChange","updateUsername","Promise","all","results","onComplete","getChangeForm","new_email","change_email","response","new_password","repeat_password","change_password","has_usable_password","page","PageHeader","FlexRow","PageContainer","WithDropdown","paths","ChangeForumOptions","EditDetails","delegateAuth","DELEGATE_AUTH","ChangeUsername","ChangeSignInCredentials","DeleteAccount","root","Options","expires_on","initWithPreloadedData","initWithoutPreloadedData","profile","user_message","staff_message","getUserMessage","getStaffMessage","getExpirationMessage","getPanelBody","isAuthenticated","SafeValue","rel","onEdit","showEditButton","Toolbar","dispatch","details","load","editing","newDetails","loadDetails","profileDetails","edit","loadItems","next","Feed","loadMore","LoadMoreButton","loadUsers","search","count","more","pages","setSpecialProps","PRELOADED_DATA_KEY","TITLE","API_FILTER","apiUrl","getMoreButton","getListBody","loadChanges","is_followed","follow","action","canMessage","can_start_private_threads","isProfileOwner","is_avatar_locked","avatar_lock_user_message","avatar_lock_staff_message","moderate_avatar","apiResponse","updateAvatar","avatar_hash","getFormBody","getModalBody","moderate_username","setTimeout","countdown","isDeleted","with_content","getButtonLabel","getDeletedBody","getForm","AvatarControls","moderation","showAvatarDialog","rename","showRenameDialog","showDeleteDialog","is_active","email","ProfileModerationButton","available","getModeration","can_follow","is_anonymouse","can_rename","can_moderate_avatar","COMPONENTS","follows","Follows","Details","UsernameHistory","BanDetails","Profile","RequestLinkForm","callback","LinkSent","reset","RequestActivationLink","RequestResetForm","showInactivePage","AccountInactivePage","activation","getActivateButton","ReactDOM","RequestPasswordReset","ResetPasswordForm","PasswordChangedPage","SignInModal","showSignIn","remove","query","updateSearch","urlQuery","history","pushState","encodeURIComponent","q","providers","provider","updateUsers","updatePosts","onQueryChange","Badge","SearchTime","time","copy","LoadMore","appendPosts","updateProvider","Blankslate","components","route","TYPES_CLASSES","info","warning","Snackbar","snackbarClass","getSnackbarClass","backendName","pageTitleTpl","pageTitle","backend","Register","handleToggleAgreement","validator","formValidators","emailProtected","terms_of_service","privacy_policy","onRegistrationComplete","step","stateUpdate","backend_name","emailHelpText","emailHelpTextTpl","RegisterLegalFootnote","handlePrivacyPolicyChange","handleTermsOfServiceChange","SocialAuth","handleRegistrationComplete","op","updateAcl","participants","ModalHeader","onUsernameChange","can_add_participants","participant","confirmed","isUser","is_owner","can_change_owner","isModerator","can_moderate_private_threads","userIsOwner","UserStatus","isOwner","getUserIsOwner","utils","ICON","changed_title","pinned_globally","pinned_locally","unpinned","moved","merged","approved","opened","closed","unhid","hid","changed_owner","tookover","added_participant","owner_left","participant_left","removed_participant","event_type","can_hide","Hide","Unhide","hidden_on","hidden_by_name","hidden_by","USER_SPAN","USER_URL","Hidden","Poster","date","event_by","event_on","MESSAGE","ITEM_LINK","ITEM_SPAN","ChangedTitle","Moved","Merged","ChangedOwner","AddedParticipant","RemovedParticipant","msgstring","oldTitle","event_context","old_title","fromCategory","from_category","mergedThread","merged_thread","newOwner","waypoint","handler","direction","boundingClientRect","getBoundingClientRect","offsetBottom","clientHeight","documentElement","read","thread_is_read","AttachmentPreview","attachment","filename","AttachmentDetails","is_image","AttachmentThumbnail","AttachmentIcon","thumb","backgroundImage","uploader","uploader_name","uploaded_on","filetype","formatFilesize","can_see_hidden","attachments","batch","row","Row","FlagBestAnswer","best_answer_marked_by","marked_on","best_answer_marked_on","marked_by","best_answer_marked_by_name","FlagHidden","FlagUnapproved","FlagProtected","is_protected","approve","protect","unprotect","hide","unhide","like","lastLikes","last_likes","concatedLikes","finalLikes","is_liked","likes","unlike","previousState","ops","markAsBestAnswer","best_answer_is_protected","best_answer_marked_by_slug","patchThread","unmarkBestAnswer","hydrateLike","ModalDialog","LikesList","liked_on","likesCount","LikeDetails","liker_id","LikeDate","likedOn","can_reply","can_see_likes","can_like","MarkAsBestAnswer","MarkAsBestAnswerCompact","Like","Likes","LikesCompact","Reply","actions","can_mark_best_answer","can_mark_as_best_answer","can_change_best_answer","hasLikes","getLikesMessage","usernames","hiddenLikes","otherUsers","lastUser","usernamesList","last_user","config","editor","reply","move","new_thread","onUrlChange","diff","DiffItem","revertEdit","canRevert","goToEdit","previous","GoBackBtn","goBack","GoForwardBtn","goForward","GoLastBtn","goLast","Label","RevertBtn","editor_name","edited_on","edited_by","hydrateEdit","json","edits","hydratedPost","PostingConfig","ModerationForm","isError","Loader","categoryId","can_pin_threads","can_hide_threads","can_close_threads","isHiddenChoices","isClosedChoices","pin","close","getWeightChoices","Modal","onCategoryChange","renderWeightField","renderHiddenField","renderClosedField","Permalink","UnmarkMarkBestAnswer","PostEdits","Approve","Move","Split","Protect","Unprotect","permaUrl","protocol","host","prompt","can_unmark_best_answer","isHidden","isUnedited","can_approve","can_move","can_protect","can_unhide","isSelected","can_merge_posts","UnreadLabel","UnreadCompact","PostedOn","PostedOnCompact","PostEditsCompacts","ProtectedLabel","postAuthor","hasAcl","hasVisibleTitle","ListItem","is_event","starter","starter_name","timestamp","started_on","handleSuccessUnmounted","best_answers","merge","other_thread","post_set","ModalMessage","ModalLoading","successMessage","callApi","changeTitle","pinGlobally","pinLocally","unpin","open","oldState","subscription","finalState","stickToBottom","unsubscribe","alert","short_name","special_role","breadcrumbs","ThreadReplies","hasFlags","ThreadFlags","is_authenticated","enabled","first","last","PostErrors","heading","ids","rollback","isArray","Merge","can_merge","dropup","onReply","compact","is_new","new_post","unapproved_post","onPoll","can_start_poll","setPageTitle","shouldFetchData","fetchData","startPollingApi","stopPollingApi","params","delayed","threadModeration","getThreadModeration","postsModeration","getPostsModeration","openPollForm","openReplyForm","can_close","can_pin_globally","can_pin","can_unprotect","basePath","pk","Route","compareLastPostAge","compareGlobalWeight","compareWeight","allItems","parentUrl","lists","longName","ThreadErrors","freezeThread","deleteThread","addThreads","filterThreads","categoriesMap","getFormdata","categoryChoices","can_start_threads","renderForm","renderCantMergeMessage","storeState","leftThreads","acls","renderCantMoveMessage","updateThread","threadsMap","failedThreads","noSelection","topCategory","topCategories","subCategory","subCategories","startThread","allow","getTopCategory","cat","busyThreads","getModerationActions","SUBSCRIPTION","notify","getSubscriptionIcon","activeCategory","showOptions","showSubscription","isNew","updatedThreads","applyUpdate","loadThreads","getCategory","current","fromDb","currentMap","isThreadChanged","getSorting","currentState","sets","isMounted","pollResponse","index_header","forum_name","index_title","specialRole","pageLead","threadsCount","applyDiff","PRIVATE_THREADS_LIST","getListOptions","routes","can_see_unapproved_content_lists","getLists","section","HEADER","RESULT","FOOTER","autoComplete","encodeURI","footer","flattenProvider","flatlist","arrayLength","flatResults","flattenProviders","flattenResults","isOpen","container","querySelector","focus","closeResults","loadResults","intervalId","onDocumentMouseDown","onEscape","removeEventListener","delay","clearTimeout","cleanResults","onToggle","STYLES","LABELS","_score","_password","_inputs","loaded","zxcvbn","inputs","cacheStale","score","getScore","RegisterForm","criteria","passwordMinLength","min_length","max_length","__all__","StartSocialAuth","RegisterComplete","getLead","getSubscript","completeRegistration","account_activation","showRegisterForm","GuestMenu","LOGIN_URL","showSignInModal","GuestNav","CompactGuestNav","showGuestMenu","avatarType","showError","gravatar","setGravatar","crop_src","showCrop","upload","showUpload","galleries","showGallery","userPeview","getAvatarPreview","getGravatarButton","setGenerated","getCropButton","getUploadButton","getGalleryButton","cropit","deviceRatio","cropitOffset","crop","zoom","crop_tmp","dataUrl","cropperWidth","getAvatarSize","initialWidth","exportZoom","imageState","getImagePath","onImageLoaded","zoomLevel","imageSize","offsetX","offsetY","cropAvatar","showIndex","image","files","validateFile","preview","URL","createObjectURL","progress","FormData","uploaded","limit","filesize","fileSize","invalidTypeMsg","allowed_mime_types","extensionFound","loweredFilename","allowed_extensions","extension","extensions","pickFile","getUploadRequirements","getUploadProgressLabel","uploadFile","getUploadProgress","renderCrop","renderUpload","GalleryItem","Gallery","images","save","ChangeAvatarError","reason","getErrorReason","AvatarIndex","AvatarUpload","AvatarCrop","AvatarGallery","completeFlow","getBody","UserMenu","ChangeAvatarModal","following","changeAvatar","can_use_private_threads","PrivateThreadsBadge","unread_private_threads","UserNav","UserPrivateThreadsLink","selectUserMenu","CompactUserNav","showUserMenu","CompactUserMenu","getPageUrl","days","trackedPeriod","rankUrl","getUserStatus","getRankName","getUserTitle","counter","meta","posters","getLeadMessage","tracked_period","string","subString","pos","stringCount","RankUsersListLoader","getRankDescription","getComponent","Rank","ActivePosters","Users","attr","forum_index_title","reducer","isAnonymous","initialState","doTick","PATCH_USER","SIGN_IN","SIGN_OUT","signIn","signOut","soft","UPDATE_AVATAR","userId","UPDATE_USERNAME","REPLACE_PARTICIPANTS","BUSY_POLL","RELEASE_POLL","REMOVE_POLL","REPLACE_POLL","UPDATE_POLL","add","busy","release","hydrated","PATCH_POST","updated_on","hydrateAttachment","hydrateUser","APPEND_POSTS","SELECT_POST","DESELECT_POST","DESELECT_POSTS","LOAD_POSTS","UNLOAD_POSTS","UPDATE_POSTS","deselect","deselectAll","hydratePost","unload","selectedPosts","deseletedPosts","deseletedAllPosts","resultsIds","reducedPosts","postReducer","LOAD_DETAILS","HYDRATE_PROFILE","PATCH_PROFILE","hydrateStatus","REPLACE_SEARCH","UPDATE_SEARCH","UPDATE_SEARCH_PROVIDER","SELECT_ALL","SELECT_NONE","SELECT_ITEM","itemsIds","none","itemId","SHOW_SNACKBAR","HIDE_SNACKBAR","showSnackbar","messageType","hideSnackbar","BUSY_THREAD","RELEASE_THREAD","REPLACE_THREAD","UPDATE_THREAD","UPDATE_THREAD_ACL","APPEND_THREADS","DELETE_THREAD","FILTER_THREADS","HYDRATE_THREADS","PATCH_THREAD","SORT_THREADS","MODERATION_PERMISSIONS","sorting","hydrateThread","thread_acl","perm","mergedState","concatUnique","sort","itemCategory","lft","rght","patchedState","TICK","ADD_NAME_CHANGE","APPEND_HISTORY","HYDRATE_HISTORY","changedBy","hydrateNamechange","namechange","unshift","floor","Date","now","APPEND_USERS","HYDRATE_USERS","Ajax","_cookieName","_csrfToken","_locks","cookieName","cookie","cookieRegex","method","resolve","reject","xhr","headers","getCsrfToken","JSON","stringify","contentType","dataType","jqXHR","responseJSON","statusText","lock","param","waiter","wait","request","processData","XMLHttpRequest","evt","lengthComputable","total","Auth","local","_store","_local","_modal","syncSession","watchState","getState","set","watch","BaseCaptcha","_ajax","_include","_snackbar","NoCaptcha","QACaptcha","kwargs","ReCaptchaComponent","grecaptcha","render","sitekey","siteKey","binding","ReCaptcha","recaptcha_site_key","Captcha","captcha_type","_captcha","init","Include","staticUrl","_staticUrl","_included","script","remote","cache","localStorage","LocalStorage","prefix","_prefix","_watchers","newValueJson","parse","newValue","watcher","oldValue","setItem","itemString","getItem","MobileNavbarDropdown","_element","_component","removeClass","show","on","PageTitle","indexTitle","forumName","_indexTitle","_forumName","finalTitle","Polls","_polls","stop","poolServer","_stopped","timeout","apiError","pollId","replaceSelection","execAction","insertCode","makeEmphasis","insertHr","URL_PATTERN","str","insertImage","isUrl","insertLink","insertSpoiler","makeStrikethrough","makeStrong","insertQuote","insertAttachment","updateItem","isRemoved","updatedAttachments","onAttachmentsChange","Preview","Filename","Actions","onInsert","onRemove","onUndo","Image","thumbnailUrl","Insert","Remove","Undo","filteredAttachments","getRandomKey","getTime","max_attachment_size","textareaId","getTextarea","getSelectionRange","end","getSelection","ctrl","range","createRange","moveStart","selectionStart","selectionEnd","_replace","myRange","replacement","startText","selectionRange","setSelectionRange","createTextRange","collapse","moveEnd","setSelection","isPreviewLoading","parsed","operation","_replaceSelection","atwho","at","displayTpl","insertTpl","searchKey","callbacks","remoteFilter","getJSON","flag","onPreviewClick","submitLabel","canProtect","onProtect","onUnprotect","columns","columnClassName","textClassName","PinOptions","onPinGlobally","onPinLocally","onUnpin","HideOptions","onHide","onUnhide","CloseOptions","onClose","onOpen","completedAttachments","categoryOptions","isErrored","loadSuccess","loadError","titleStyle","withFirstRow","onTitleChange","onPostChange","removedBlanks","cleanUsernames","onToChange","newPost","newContext","appendData","Posting","_isOpen","_isClosing","_placeholder","_mode","_realOpen","animate","scrollTop","_timeout","StoreWrapper","_reducers","_initialState","createStore","combineReducers","Zxcvbn","_isLoaded","_loadedPromise","_loadingPromise","tries","plain","expires","getReasonMessage","RedrawedBannedPage","BannedPage","changeState","rowWidth","padding","bytes","roundSize","toFixed","Component","rootElementId","connected","rootElement","finalComponent","int","min","max","childRoutes","onEnter","replaceState","browserHistory","array","EMAIL","USERNAME","requiredTermsOfService","requiredPrivacyPolicy","returnMessage","usernameMinLength","lengthMin","usernameMaxLength","lengthMax","usernameContent","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","getter","__esModule","definition","defineProperty","enumerable","globalThis","Function","hmd","obj","prop","prototype","Symbol","toStringTag","nmd","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/misago/templates/misago/profile/feed.html b/misago/templates/misago/profile/feed.html index 4f8aee31ff..58751b308d 100644 --- a/misago/templates/misago/profile/feed.html +++ b/misago/templates/misago/profile/feed.html @@ -4,64 +4,66 @@ <li id="post-{{ post.pk }}" class="post {% if profile.rank.css_class %}post-{{ profile.rank.css_class }}{% endif %}"> <div class="panel panel-default panel-post"> <div class="panel-body"> - <div class="post-side post-side-registered"> - <a class="btn btn-default btn-icon pull-right" href="{{ post.get_absolute_url }}"> - <span class="btn-text-left hidden-xs"> - {% trans "See post" %} - </span> - <span class="material-icon"> - chevron_right - </span> - </a> - <div class="media"> - <div class="media-left"> - <a href="{{ profile.get_absolute_url }}"> - <img src="{{ profile|avatar:50 }}" class="poster-avatar" alt="" height="50" width="50"/> - </a> - </div> - <div class="media-body"> - <div class="media-heading"> - <a class="item-title" href="{{ profile.get_absolute_url }}"> - {{ profile }} + <div class="panel-content"> + <div class="post-side post-side-registered"> + <a class="btn btn-default btn-icon pull-right" href="{{ post.get_absolute_url }}"> + <span class="btn-text-left hidden-xs"> + {% trans "See post" %} + </span> + <span class="material-icon"> + chevron_right + </span> + </a> + <div class="media"> + <div class="media-left"> + <a href="{{ profile.get_absolute_url }}"> + <img src="{{ profile|avatar:50 }}" class="poster-avatar" alt="" height="50" width="50"/> </a> </div> - {% if profile.rank.is_tab %} - <a href="{{ profile.rank.get_absolute_url }}" class="user-title {% if profile.rank.css_class %}user-title-{{ profile.rank.css_class }}{% endif %}"> - {% else %} - <span class="user-title {% if profile.rank.css_class %}user-title-{{ profile.rank.css_class }}{% endif %}"> - {% endif %} - {{ profile.get_any_title }} - {% if profile.rank.is_tab %} - </a> - {% else %} - </span> - {% endif %} + <div class="media-body"> + <div class="media-heading"> + <a class="item-title" href="{{ profile.get_absolute_url }}"> + {{ profile }} + </a> + </div> + {% if profile.rank.is_tab %} + <a href="{{ profile.rank.get_absolute_url }}" class="user-title {% if profile.rank.css_class %}user-title-{{ profile.rank.css_class }}{% endif %}"> + {% else %} + <span class="user-title {% if profile.rank.css_class %}user-title-{{ profile.rank.css_class }}{% endif %}"> + {% endif %} + {{ profile.get_any_title }} + {% if profile.rank.is_tab %} + </a> + {% else %} + </span> + {% endif %} + </div> </div> </div> - </div> - <div class="post-heading"> - <a class="btn btn-link item-title" href="{{ post.thread.get_absolute_url }}"> - {{ post.thread }} - </a> - <a class="btn btn-link post-category" href="{{ post.category.get_absolute_url }}"> - {{ post.category }} - </a> - <a class="btn btn-link posted-on" href="{{ post.get_absolute_url }}"> - {{ post.posted_on|date:'DATETIME_FORMAT' }} - </a> - </div> - {% if post.is_valid %} - <div class="post-body"> - <article class="misago-markup"> - {{ post.content|safe }} - </article> + <div class="post-heading"> + <a class="btn btn-link item-title" href="{{ post.thread.get_absolute_url }}"> + {{ post.thread }} + </a> + <a class="btn btn-link post-category" href="{{ post.category.get_absolute_url }}"> + {{ post.category }} + </a> + <a class="btn btn-link posted-on" href="{{ post.get_absolute_url }}"> + {{ post.posted_on|date:'DATETIME_FORMAT' }} + </a> </div> - {% else %} - <div class="post-body post-body-invalid"> - <p class="lead">{% trans "This post's contents cannot be displayed." %}</p> - <p class="text-muted">{% trans "This error is caused by invalid post content manipulation." %}</p> - </div> - {% endif %} + {% if post.is_valid %} + <div class="post-body"> + <article class="misago-markup"> + {{ post.content|safe }} + </article> + </div> + {% else %} + <div class="post-body post-body-invalid"> + <p class="lead">{% trans "This post's contents cannot be displayed." %}</p> + <p class="text-muted">{% trans "This error is caused by invalid post content manipulation." %}</p> + </div> + {% endif %} + </div> </div> </div> </li>