diff options
Diffstat (limited to 'glances/outputs/static')
-rw-r--r-- | glances/outputs/static/README.md | 2 | ||||
-rw-r--r-- | glances/outputs/static/css/style.scss | 10 | ||||
-rw-r--r-- | glances/outputs/static/js/components/help.vue | 2 | ||||
-rw-r--r-- | glances/outputs/static/js/components/plugin-alert.vue | 6 | ||||
-rw-r--r-- | glances/outputs/static/js/components/plugin-fs.vue | 12 | ||||
-rw-r--r-- | glances/outputs/static/js/components/plugin-process.vue | 6 | ||||
-rw-r--r-- | glances/outputs/static/js/components/plugin-processlist.vue | 106 | ||||
-rw-r--r-- | glances/outputs/static/js/filters.js | 8 | ||||
-rw-r--r-- | glances/outputs/static/js/services.js | 10 | ||||
-rw-r--r-- | glances/outputs/static/public/glances.js | 4 | ||||
-rw-r--r-- | glances/outputs/static/templates/index.html | 22 | ||||
-rw-r--r-- | glances/outputs/static/templates/index.html.tpl | 22 |
12 files changed, 99 insertions, 111 deletions
diff --git a/glances/outputs/static/README.md b/glances/outputs/static/README.md index bac2decb..5e8e7838 100644 --- a/glances/outputs/static/README.md +++ b/glances/outputs/static/README.md @@ -65,7 +65,7 @@ static | |--- public # path where builds are put | -|--- templates (bottle) +|--- templates ``` ## Data diff --git a/glances/outputs/static/css/style.scss b/glances/outputs/static/css/style.scss index 40c8c150..e7656b91 100644 --- a/glances/outputs/static/css/style.scss +++ b/glances/outputs/static/css/style.scss @@ -19,6 +19,15 @@ body { display: table-cell; text-align: right; } +.width-50 { + width: 50px; +} +.width-75 { + width: 75px; +} +.width-100 { + width: 100px; +} .plugin { margin-bottom: 20px; @@ -116,6 +125,7 @@ body { } /* Plugins */ + #processlist-plugin .table-cell { padding: 0px 5px 0px 5px; white-space: nowrap; diff --git a/glances/outputs/static/js/components/help.vue b/glances/outputs/static/js/components/help.vue index 468f1a1c..a08d7667 100644 --- a/glances/outputs/static/js/components/help.vue +++ b/glances/outputs/static/js/components/help.vue @@ -266,7 +266,7 @@ export default { }; }, mounted() { - fetch('api/3/help', { method: 'GET' }) + fetch('api/4/help', { method: 'GET' }) .then((response) => response.json()) .then((response) => (this.help = response)); } diff --git a/glances/outputs/static/js/components/plugin-alert.vue b/glances/outputs/static/js/components/plugin-alert.vue index 73db0502..4a9393af 100644 --- a/glances/outputs/static/js/components/plugin-alert.vue +++ b/glances/outputs/static/js/components/plugin-alert.vue @@ -11,6 +11,7 @@ <div class="table-row" v-for="(alert, alertId) in alerts" :key="alertId"> <div class="table-cell text-left"> {{ formatDate(alert.begin) }} + {{ alert.tz }} ({{ alert.ongoing ? 'ongoing' : alert.duration }}) - <span v-show="!alert.ongoing"> {{ alert.level }} on </span> <span :class="alert.level.toLowerCase()"> @@ -41,10 +42,11 @@ export default { alerts() { return (this.stats || []).map((alertalertStats) => { const alert = {}; + var tzoffset = new Date().getTimezoneOffset(); alert.name = alertalertStats[3]; alert.level = alertalertStats[2]; - alert.begin = alertalertStats[0] * 1000; - alert.end = alertalertStats[1] * 1000; + alert.begin = alertalertStats[0] * 1000 - tzoffset * 60 * 1000; + alert.end = alertalertStats[1] * 1000 - tzoffset * 60 * 1000; alert.ongoing = alertalertStats[1] == -1; alert.min = alertalertStats[6]; alert.mean = alertalertStats[5]; diff --git a/glances/outputs/static/js/components/plugin-fs.vue b/glances/outputs/static/js/components/plugin-fs.vue index f7dd5880..e01bf502 100644 --- a/glances/outputs/static/js/components/plugin-fs.vue +++ b/glances/outputs/static/js/components/plugin-fs.vue @@ -10,8 +10,8 @@ </div> <div class="table-row" v-for="(fs, fsId) in fileSystems" :key="fsId"> <div class="table-cell text-left"> - {{ fs.shortMountPoint }} - <span v-if="fs.shortMountPoint.length <= 12" class="visible-lg-inline"> + {{ $filters.minSize(fs.alias ? fs.alias : fs.mountPoint, 36, begin=false) }} + <span v-if="(fs.alias ? fs.alias : fs.mountPoint).length + fs.name.length <= 34" class="visible-lg-inline"> ({{ fs.name }}) </span> </div> @@ -55,18 +55,14 @@ export default { }, fileSystems() { const fileSystems = this.stats.map((fsData) => { - let shortMountPoint = fsData['mnt_point']; - if (shortMountPoint.length > 22) { - shortMountPoint = '_' + fsData['mnt_point'].slice(-21); - } return { name: fsData['device_name'], mountPoint: fsData['mnt_point'], - shortMountPoint: shortMountPoint, percent: fsData['percent'], size: fsData['size'], used: fsData['used'], - free: fsData['free'] + free: fsData['free'], + alias: fsData['alias'] !== undefined ? fsData['alias'] : null }; }); return orderBy(fileSystems, ['mnt_point']); diff --git a/glances/outputs/static/js/components/plugin-process.vue b/glances/outputs/static/js/components/plugin-process.vue index 36cf2500..05b053fb 100644 --- a/glances/outputs/static/js/components/plugin-process.vue +++ b/glances/outputs/static/js/components/plugin-process.vue @@ -64,13 +64,13 @@ export default { } function getColumnLabel(value) { const labels = { - io_counters: 'disk IO', cpu_percent: 'CPU consumption', memory_percent: 'memory consumption', - cpu_times: 'process time', username: 'user name', - name: 'process name', timemillis: 'process time', + cpu_times: 'process time', + io_counters: 'disk IO', + name: 'process name', None: 'None' }; return labels[value] || value; diff --git a/glances/outputs/static/js/components/plugin-processlist.vue b/glances/outputs/static/js/components/plugin-processlist.vue index 462fce61..ca9951bc 100644 --- a/glances/outputs/static/js/components/plugin-processlist.vue +++ b/glances/outputs/static/js/components/plugin-processlist.vue @@ -3,112 +3,88 @@ <section id="processlist-plugin" class="plugin"> <div class="table"> <div class="table-row"> - <div - class="table-cell" - :class="['sortable', sorter.column === 'cpu_percent' && 'sort']" - @click="$emit('update:sorter', 'cpu_percent')" - > + <div class="table-cell width-50" :class="['sortable', sorter.column === 'cpu_percent' && 'sort']" + @click="$emit('update:sorter', 'cpu_percent')"> CPU% </div> - <div - class="table-cell" - :class="['sortable', sorter.column === 'memory_percent' && 'sort']" - @click="$emit('update:sorter', 'memory_percent')" - > + <div class="table-cell width-50" :class="['sortable', sorter.column === 'memory_percent' && 'sort']" + @click="$emit('update:sorter', 'memory_percent')"> MEM% </div> - <div class="table-cell hidden-xs hidden-sm">VIRT</div> - <div class="table-cell hidden-xs hidden-sm">RES</div> - <div class="table-cell">PID</div> - <div - class="table-cell text-left" - :class="['sortable', sorter.column === 'username' && 'sort']" - @click="$emit('update:sorter', 'username')" - > + <div class="table-cell width-75 hidden-xs hidden-sm">VIRT</div> + <div class="table-cell width-75 hidden-xs hidden-sm">RES</div> + <div class="table-cell width-75">PID</div> + <div class="table-cell width-100 text-left" :class="['sortable', sorter.column === 'username' && 'sort']" + @click="$emit('update:sorter', 'username')"> USER </div> - <div - class="table-cell hidden-xs hidden-sm" + <div class="table-cell width-100 hidden-xs hidden-sm" :class="['sortable', sorter.column === 'timemillis' && 'sort']" - @click="$emit('update:sorter', 'timemillis')" - > + @click="$emit('update:sorter', 'timemillis')"> TIME+ </div> - <div - class="table-cell text-left hidden-xs hidden-sm" + <div class="table-cell width-75 text-left hidden-xs hidden-sm" :class="['sortable', sorter.column === 'num_threads' && 'sort']" - @click="$emit('update:sorter', 'num_threads')" - > + @click="$emit('update:sorter', 'num_threads')"> THR </div> - <div class="table-cell">NI</div> - <div class="table-cell">S</div> - <div - v-show="ioReadWritePresent" - class="table-cell hidden-xs hidden-sm" + <div class="table-cell width-50">NI</div> + <div class="table-cell width-50">S</div> + <div v-show="ioReadWritePresent" class="table-cell width-75 hidden-xs hidden-sm" :class="['sortable', sorter.column === 'io_counters' && 'sort']" - @click="$emit('update:sorter', 'io_counters')" - > + @click="$emit('update:sorter', 'io_counters')"> IOR/s </div> - <div - v-show="ioReadWritePresent" - class="table-cell text-left hidden-xs hidden-sm" + <div v-show="ioReadWritePresent" class="table-cell width-75 text-left hidden-xs hidden-sm" :class="['sortable', sorter.column === 'io_counters' && 'sort']" - @click="$emit('update:sorter', 'io_counters')" - > + @click="$emit('update:sorter', 'io_counters')"> IOW/s </div> - <div - class="table-cell text-left" - :class="['sortable', sorter.column === 'name' && 'sort']" - @click="$emit('update:sorter', 'name')" - > + <div class="table-cell text-left" :class="['sortable', sorter.column === 'name' && 'sort']" + @click="$emit('update:sorter', 'name')"> Command </div> </div> - <div - class="table-row" - v-for="(process, processId) in processes" - :key="processId" - > - <div class="table-cell" :class="getCpuPercentAlert(process)"> + <div class="table-row" v-for="(process, processId) in processes" :key="processId"> + <div class="table-cell width-50" :class="getCpuPercentAlert(process)"> {{ process.cpu_percent == -1 ? '?' : $filters.number(process.cpu_percent, 1) }} </div> - <div class="table-cell" :class="getMemoryPercentAlert(process)"> + <div class="table-cell width-50" :class="getMemoryPercentAlert(process)"> {{ process.memory_percent == -1 ? '?' : $filters.number(process.memory_percent, 1) }} </div> - <div class="table-cell hidden-xs hidden-sm"> + <div class="table-cell width-75"> {{ $filters.bytes(process.memvirt) }} </div> - <div class="table-cell hidden-xs hidden-sm"> + <div class="table-cell width-75"> {{ $filters.bytes(process.memres) }} </div> - <div class="table-cell"> + <div class="table-cell width-75"> {{ process.pid }} </div> - <div class="table-cell text-left"> + <div class="table-cell width-100 text-left"> {{ process.username }} </div> - <div class="table-cell hidden-xs hidden-sm" v-if="process.timeplus != '?'"> + <div class="table-cell width-100 hidden-xs hidden-sm" v-if="process.timeplus != '?'"> <span v-show="process.timeplus.hours > 0" class="highlight">{{ process.timeplus.hours }}h</span> - {{ $filters.leftPad(process.timeplus.minutes, 2, '0') }}:{{ $filters.leftPad(process.timeplus.seconds, 2, '0') }} - <span v-show="process.timeplus.hours <= 0">.{{ $filters.leftPad(process.timeplus.milliseconds, 2, '0') }}</span> + {{ $filters.leftPad(process.timeplus.minutes, 2, '0') }}:{{ $filters.leftPad(process.timeplus.seconds, + 2, '0') }} + <span v-show="process.timeplus.hours <= 0">.{{ $filters.leftPad(process.timeplus.milliseconds, 2, '0') + }}</span> </div> - <div class="table-cell hidden-xs hidden-sm" v-if="process.timeplus == '?'">?</div> - <div class="table-cell text-left hidden-xs hidden-sm"> + <div class="table-cell width-75 hidden-xs hidden-sm" v-if="process.timeplus == '?'">?</div> + <div class="table-cell width-75 text-left hidden-xs hidden-sm"> {{ process.num_threads == -1 ? '?' : process.num_threads }} </div> - <div class="table-cell" :class="{ nice: process.isNice }"> + <div class="table-cell width-50" :class="{ nice: process.isNice }"> {{ $filters.exclamation(process.nice) }} </div> - <div class="table-cell" :class="{ status: process.status == 'R' }"> + <div class="table-cell width-50" :class="{ status: process.status == 'R' }"> {{ process.status }} </div> - <div class="table-cell hidden-xs hidden-sm" v-show="ioReadWritePresent"> + <div class="table-cell width-75 hidden-xs hidden-sm" v-show="ioReadWritePresent"> {{ $filters.bytes(process.io_read) }} </div> - <div class="table-cell text-left hidden-xs hidden-sm" v-show="ioReadWritePresent"> + <div class="table-cell width-75 text-left hidden-xs hidden-sm" v-show="ioReadWritePresent"> {{ $filters.bytes(process.io_write) }} </div> <div class="table-cell text-left" v-show="args.process_short_name"> @@ -159,8 +135,8 @@ export default { process.memvirt = '?'; process.memres = '?'; if (process.memory_info) { - process.memvirt = process.memory_info[1]; - process.memres = process.memory_info[0]; + process.memvirt = process.memory_info.vms; + process.memres = process.memory_info.rss; } process.timeplus = '?'; diff --git a/glances/outputs/static/js/filters.js b/glances/outputs/static/js/filters.js index 7f126240..da8002d9 100644 --- a/glances/outputs/static/js/filters.js +++ b/glances/outputs/static/js/filters.js @@ -74,10 +74,14 @@ export function limitTo(value, limit) { return value.slice(0, limit); } -export function minSize(input, max) { +export function minSize(input, max, begin = true) { max = max || 8; if (input.length > max) { - return '_' + input.substring(input.length - max + 1); + if (begin) { + return input.substring(0, max - 1) + '_'; + } else { + return '_' + input.substring(input.length - max + 1); + } } return input; } diff --git a/glances/outputs/static/js/services.js b/glances/outputs/static/js/services.js index ac6c782f..a79ccd30 100644 --- a/glances/outputs/static/js/services.js +++ b/glances/outputs/static/js/services.js @@ -2,15 +2,15 @@ import { store } from './store.js'; import Favico from 'favico.js'; // prettier-ignore -const fetchAll = () => fetch('api/3/all', { method: 'GET' }).then((response) => response.json()); +const fetchAll = () => fetch('api/4/all', { method: 'GET' }).then((response) => response.json()); // prettier-ignore -const fetchAllViews = () => fetch('api/3/all/views', { method: 'GET' }).then((response) => response.json()); +const fetchAllViews = () => fetch('api/4/all/views', { method: 'GET' }).then((response) => response.json()); // prettier-ignore -const fetchAllLimits = () => fetch('api/3/all/limits', { method: 'GET' }).then((response) => response.json()); +const fetchAllLimits = () => fetch('api/4/all/limits', { method: 'GET' }).then((response) => response.json()); // prettier-ignore -const fetchArgs = () => fetch('api/3/args', { method: 'GET' }).then((response) => response.json()); +const fetchArgs = () => fetch('api/4/args', { method: 'GET' }).then((response) => response.json()); // prettier-ignore -const fetchConfig = () => fetch('api/3/config', { method: 'GET' }).then((response) => response.json()); +const fetchConfig = () => fetch('api/4/config', { method: 'GET' }).then((response) => response.json()); class GlancesHelperService { limits = {}; diff --git a/glances/outputs/static/public/glances.js b/glances/outputs/static/public/glances.js index 5ba2cac7..9f908eaf 100644 --- a/glances/outputs/static/public/glances.js +++ b/glances/outputs/static/public/glances.js @@ -1,4 +1,4 @@ -(()=>{var e={895:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(8081),i=n.n(r),s=n(3645),o=n.n(s)()(i());o.push([e.id,'/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! 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* {\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: #333333;\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: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\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 #eeeeee;\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}\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.col-xs-13,\n.col-sm-13,\n.col-md-13,\n.col-lg-13,\n.col-xs-14,\n.col-sm-14,\n.col-md-14,\n.col-lg-14,\n.col-xs-15,\n.col-sm-15,\n.col-md-15,\n.col-lg-15,\n.col-xs-16,\n.col-sm-16,\n.col-md-16,\n.col-lg-16,\n.col-xs-17,\n.col-sm-17,\n.col-md-17,\n.col-lg-17,\n.col-xs-18,\n.col-sm-18,\n.col-md-18,\n.col-lg-18,\n.col-xs-19,\n.col-sm-19,\n.col-md-19,\n.col-lg-19,\n.col-xs-20,\n.col-sm-20,\n.col-md-20,\n.col-lg-20,\n.col-xs-21,\n.col-sm-21,\n.col-md-21,\n.col-lg-21,\n.col-xs-22,\n.col-sm-22,\n.col-md-22,\n.col-lg-22,\n.col-xs-23,\n.col-sm-23,\n.col-md-23,\n.col-lg-23,\n.col-xs-24,\n.col-sm-24,\n.col-md-24,\n.col-lg-24 {\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.col-xs-13,\n.col-xs-14,\n.col-xs-15,\n.col-xs-16,\n.col-xs-17,\n.col-xs-18,\n.col-xs-19,\n.col-xs-20,\n.col-xs-21,\n.col-xs-22,\n.col-xs-23,\n.col-xs-24 {\n float: left;\n}\n.col-xs-24 {\n width: 100%;\n}\n.col-xs-23 {\n width: 95.83333333%;\n}\n.col-xs-22 {\n width: 91.66666667%;\n}\n.col-xs-21 {\n width: 87.5%;\n}\n.col-xs-20 {\n width: 83.33333333%;\n}\n.col-xs-19 {\n width: 79.16666667%;\n}\n.col-xs-18 {\n width: 75%;\n}\n.col-xs-17 {\n width: 70.83333333%;\n}\n.col-xs-16 {\n width: 66.66666667%;\n}\n.col-xs-15 {\n width: 62.5%;\n}\n.col-xs-14 {\n width: 58.33333333%;\n}\n.col-xs-13 {\n width: 54.16666667%;\n}\n.col-xs-12 {\n width: 50%;\n}\n.col-xs-11 {\n width: 45.83333333%;\n}\n.col-xs-10 {\n width: 41.66666667%;\n}\n.col-xs-9 {\n width: 37.5%;\n}\n.col-xs-8 {\n width: 33.33333333%;\n}\n.col-xs-7 {\n width: 29.16666667%;\n}\n.col-xs-6 {\n width: 25%;\n}\n.col-xs-5 {\n width: 20.83333333%;\n}\n.col-xs-4 {\n width: 16.66666667%;\n}\n.col-xs-3 {\n width: 12.5%;\n}\n.col-xs-2 {\n width: 8.33333333%;\n}\n.col-xs-1 {\n width: 4.16666667%;\n}\n.col-xs-pull-24 {\n right: 100%;\n}\n.col-xs-pull-23 {\n right: 95.83333333%;\n}\n.col-xs-pull-22 {\n right: 91.66666667%;\n}\n.col-xs-pull-21 {\n right: 87.5%;\n}\n.col-xs-pull-20 {\n right: 83.33333333%;\n}\n.col-xs-pull-19 {\n right: 79.16666667%;\n}\n.col-xs-pull-18 {\n right: 75%;\n}\n.col-xs-pull-17 {\n right: 70.83333333%;\n}\n.col-xs-pull-16 {\n right: 66.66666667%;\n}\n.col-xs-pull-15 {\n right: 62.5%;\n}\n.col-xs-pull-14 {\n right: 58.33333333%;\n}\n.col-xs-pull-13 {\n right: 54.16666667%;\n}\n.col-xs-pull-12 {\n right: 50%;\n}\n.col-xs-pull-11 {\n right: 45.83333333%;\n}\n.col-xs-pull-10 {\n right: 41.66666667%;\n}\n.col-xs-pull-9 {\n right: 37.5%;\n}\n.col-xs-pull-8 {\n right: 33.33333333%;\n}\n.col-xs-pull-7 {\n right: 29.16666667%;\n}\n.col-xs-pull-6 {\n right: 25%;\n}\n.col-xs-pull-5 {\n right: 20.83333333%;\n}\n.col-xs-pull-4 {\n right: 16.66666667%;\n}\n.col-xs-pull-3 {\n right: 12.5%;\n}\n.col-xs-pull-2 {\n right: 8.33333333%;\n}\n.col-xs-pull-1 {\n right: 4.16666667%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-24 {\n left: 100%;\n}\n.col-xs-push-23 {\n left: 95.83333333%;\n}\n.col-xs-push-22 {\n left: 91.66666667%;\n}\n.col-xs-push-21 {\n left: 87.5%;\n}\n.col-xs-push-20 {\n left: 83.33333333%;\n}\n.col-xs-push-19 {\n left: 79.16666667%;\n}\n.col-xs-push-18 {\n left: 75%;\n}\n.col-xs-push-17 {\n left: 70.83333333%;\n}\n.col-xs-push-16 {\n left: 66.66666667%;\n}\n.col-xs-push-15 {\n left: 62.5%;\n}\n.col-xs-push-14 {\n left: 58.33333333%;\n}\n.col-xs-push-13 {\n left: 54.16666667%;\n}\n.col-xs-push-12 {\n left: 50%;\n}\n.col-xs-push-11 {\n left: 45.83333333%;\n}\n.col-xs-push-10 {\n left: 41.66666667%;\n}\n.col-xs-push-9 {\n left: 37.5%;\n}\n.col-xs-push-8 {\n left: 33.33333333%;\n}\n.col-xs-push-7 {\n left: 29.16666667%;\n}\n.col-xs-push-6 {\n left: 25%;\n}\n.col-xs-push-5 {\n left: 20.83333333%;\n}\n.col-xs-push-4 {\n left: 16.66666667%;\n}\n.col-xs-push-3 {\n left: 12.5%;\n}\n.col-xs-push-2 {\n left: 8.33333333%;\n}\n.col-xs-push-1 {\n left: 4.16666667%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-24 {\n margin-left: 100%;\n}\n.col-xs-offset-23 {\n margin-left: 95.83333333%;\n}\n.col-xs-offset-22 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-21 {\n margin-left: 87.5%;\n}\n.col-xs-offset-20 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-19 {\n margin-left: 79.16666667%;\n}\n.col-xs-offset-18 {\n margin-left: 75%;\n}\n.col-xs-offset-17 {\n margin-left: 70.83333333%;\n}\n.col-xs-offset-16 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-15 {\n margin-left: 62.5%;\n}\n.col-xs-offset-14 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-13 {\n margin-left: 54.16666667%;\n}\n.col-xs-offset-12 {\n margin-left: 50%;\n}\n.col-xs-offset-11 {\n margin-left: 45.83333333%;\n}\n.col-xs-offset-10 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-9 {\n margin-left: 37.5%;\n}\n.col-xs-offset-8 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-7 {\n margin-left: 29.16666667%;\n}\n.col-xs-offset-6 {\n margin-left: 25%;\n}\n.col-xs-offset-5 {\n margin-left: 20.83333333%;\n}\n.col-xs-offset-4 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-3 {\n margin-left: 12.5%;\n}\n.col-xs-offset-2 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-1 {\n margin-left: 4.16666667%;\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 .col-sm-13,\n .col-sm-14,\n .col-sm-15,\n .col-sm-16,\n .col-sm-17,\n .col-sm-18,\n .col-sm-19,\n .col-sm-20,\n .col-sm-21,\n .col-sm-22,\n .col-sm-23,\n .col-sm-24 {\n float: left;\n }\n .col-sm-24 {\n width: 100%;\n }\n .col-sm-23 {\n width: 95.83333333%;\n }\n .col-sm-22 {\n width: 91.66666667%;\n }\n .col-sm-21 {\n width: 87.5%;\n }\n .col-sm-20 {\n width: 83.33333333%;\n }\n .col-sm-19 {\n width: 79.16666667%;\n }\n .col-sm-18 {\n width: 75%;\n }\n .col-sm-17 {\n width: 70.83333333%;\n }\n .col-sm-16 {\n width: 66.66666667%;\n }\n .col-sm-15 {\n width: 62.5%;\n }\n .col-sm-14 {\n width: 58.33333333%;\n }\n .col-sm-13 {\n width: 54.16666667%;\n }\n .col-sm-12 {\n width: 50%;\n }\n .col-sm-11 {\n width: 45.83333333%;\n }\n .col-sm-10 {\n width: 41.66666667%;\n }\n .col-sm-9 {\n width: 37.5%;\n }\n .col-sm-8 {\n width: 33.33333333%;\n }\n .col-sm-7 {\n width: 29.16666667%;\n }\n .col-sm-6 {\n width: 25%;\n }\n .col-sm-5 {\n width: 20.83333333%;\n }\n .col-sm-4 {\n width: 16.66666667%;\n }\n .col-sm-3 {\n width: 12.5%;\n }\n .col-sm-2 {\n width: 8.33333333%;\n }\n .col-sm-1 {\n width: 4.16666667%;\n }\n .col-sm-pull-24 {\n right: 100%;\n }\n .col-sm-pull-23 {\n right: 95.83333333%;\n }\n .col-sm-pull-22 {\n right: 91.66666667%;\n }\n .col-sm-pull-21 {\n right: 87.5%;\n }\n .col-sm-pull-20 {\n right: 83.33333333%;\n }\n .col-sm-pull-19 {\n right: 79.16666667%;\n }\n .col-sm-pull-18 {\n right: 75%;\n }\n .col-sm-pull-17 {\n right: 70.83333333%;\n }\n .col-sm-pull-16 {\n right: 66.66666667%;\n }\n .col-sm-pull-15 {\n right: 62.5%;\n }\n .col-sm-pull-14 {\n right: 58.33333333%;\n }\n .col-sm-pull-13 {\n right: 54.16666667%;\n }\n .col-sm-pull-12 {\n right: 50%;\n }\n .col-sm-pull-11 {\n right: 45.83333333%;\n }\n .col-sm-pull-10 {\n right: 41.66666667%;\n }\n .col-sm-pull-9 {\n right: 37.5%;\n }\n .col-sm-pull-8 {\n right: 33.33333333%;\n }\n .col-sm-pull-7 {\n right: 29.16666667%;\n }\n .col-sm-pull-6 {\n right: 25%;\n }\n .col-sm-pull-5 {\n right: 20.83333333%;\n }\n .col-sm-pull-4 {\n right: 16.66666667%;\n }\n .col-sm-pull-3 {\n right: 12.5%;\n }\n .col-sm-pull-2 {\n right: 8.33333333%;\n }\n .col-sm-pull-1 {\n right: 4.16666667%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-24 {\n left: 100%;\n }\n .col-sm-push-23 {\n left: 95.83333333%;\n }\n .col-sm-push-22 {\n left: 91.66666667%;\n }\n .col-sm-push-21 {\n left: 87.5%;\n }\n .col-sm-push-20 {\n left: 83.33333333%;\n }\n .col-sm-push-19 {\n left: 79.16666667%;\n }\n .col-sm-push-18 {\n left: 75%;\n }\n .col-sm-push-17 {\n left: 70.83333333%;\n }\n .col-sm-push-16 {\n left: 66.66666667%;\n }\n .col-sm-push-15 {\n left: 62.5%;\n }\n .col-sm-push-14 {\n left: 58.33333333%;\n }\n .col-sm-push-13 {\n left: 54.16666667%;\n }\n .col-sm-push-12 {\n left: 50%;\n }\n .col-sm-push-11 {\n left: 45.83333333%;\n }\n .col-sm-push-10 {\n left: 41.66666667%;\n }\n .col-sm-push-9 {\n left: 37.5%;\n }\n .col-sm-push-8 {\n left: 33.33333333%;\n }\n .col-sm-push-7 {\n left: 29.16666667%;\n }\n .col-sm-push-6 {\n left: 25%;\n }\n .col-sm-push-5 {\n left: 20.83333333%;\n }\n .col-sm-push-4 {\n left: 16.66666667%;\n }\n .col-sm-push-3 {\n left: 12.5%;\n }\n .col-sm-push-2 {\n left: 8.33333333%;\n }\n .col-sm-push-1 {\n left: 4.16666667%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-24 {\n margin-left: 100%;\n }\n .col-sm-offset-23 {\n margin-left: 95.83333333%;\n }\n .col-sm-offset-22 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-21 {\n margin-left: 87.5%;\n }\n .col-sm-offset-20 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-19 {\n margin-left: 79.16666667%;\n }\n .col-sm-offset-18 {\n margin-left: 75%;\n }\n .col-sm-offset-17 {\n margin-left: 70.83333333%;\n }\n .col-sm-offset-16 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-15 {\n margin-left: 62.5%;\n }\n .col-sm-offset-14 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-13 {\n margin-left: 54.16666667%;\n }\n .col-sm-offset-12 {\n margin-left: 50%;\n }\n .col-sm-offset-11 {\n margin-left: 45.83333333%;\n }\n .col-sm-offset-10 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-9 {\n margin-left: 37.5%;\n }\n .col-sm-offset-8 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-7 {\n margin-left: 29.16666667%;\n }\n .col-sm-offset-6 {\n margin-left: 25%;\n }\n .col-sm-offset-5 {\n margin-left: 20.83333333%;\n }\n .col-sm-offset-4 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-3 {\n margin-left: 12.5%;\n }\n .col-sm-offset-2 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-1 {\n margin-left: 4.16666667%;\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 .col-md-13,\n .col-md-14,\n .col-md-15,\n .col-md-16,\n .col-md-17,\n .col-md-18,\n .col-md-19,\n .col-md-20,\n .col-md-21,\n .col-md-22,\n .col-md-23,\n .col-md-24 {\n float: left;\n }\n .col-md-24 {\n width: 100%;\n }\n .col-md-23 {\n width: 95.83333333%;\n }\n .col-md-22 {\n width: 91.66666667%;\n }\n .col-md-21 {\n width: 87.5%;\n }\n .col-md-20 {\n width: 83.33333333%;\n }\n .col-md-19 {\n width: 79.16666667%;\n }\n .col-md-18 {\n width: 75%;\n }\n .col-md-17 {\n width: 70.83333333%;\n }\n .col-md-16 {\n width: 66.66666667%;\n }\n .col-md-15 {\n width: 62.5%;\n }\n .col-md-14 {\n width: 58.33333333%;\n }\n .col-md-13 {\n width: 54.16666667%;\n }\n .col-md-12 {\n width: 50%;\n }\n .col-md-11 {\n width: 45.83333333%;\n }\n .col-md-10 {\n width: 41.66666667%;\n }\n .col-md-9 {\n width: 37.5%;\n }\n .col-md-8 {\n width: 33.33333333%;\n }\n .col-md-7 {\n width: 29.16666667%;\n }\n .col-md-6 {\n width: 25%;\n }\n .col-md-5 {\n width: 20.83333333%;\n }\n .col-md-4 {\n width: 16.66666667%;\n }\n .col-md-3 {\n width: 12.5%;\n }\n .col-md-2 {\n width: 8.33333333%;\n }\n .col-md-1 {\n width: 4.16666667%;\n }\n .col-md-pull-24 {\n right: 100%;\n }\n .col-md-pull-23 {\n right: 95.83333333%;\n }\n .col-md-pull-22 {\n right: 91.66666667%;\n }\n .col-md-pull-21 {\n right: 87.5%;\n }\n .col-md-pull-20 {\n right: 83.33333333%;\n }\n .col-md-pull-19 {\n right: 79.16666667%;\n }\n .col-md-pull-18 {\n right: 75%;\n }\n .col-md-pull-17 {\n right: 70.83333333%;\n }\n .col-md-pull-16 {\n right: 66.66666667%;\n }\n .col-md-pull-15 {\n right: 62.5%;\n }\n .col-md-pull-14 {\n right: 58.33333333%;\n }\n .col-md-pull-13 {\n right: 54.16666667%;\n }\n .col-md-pull-12 {\n right: 50%;\n }\n .col-md-pull-11 {\n right: 45.83333333%;\n }\n .col-md-pull-10 {\n right: 41.66666667%;\n }\n .col-md-pull-9 {\n right: 37.5%;\n }\n .col-md-pull-8 {\n right: 33.33333333%;\n }\n .col-md-pull-7 {\n right: 29.16666667%;\n }\n .col-md-pull-6 {\n right: 25%;\n }\n .col-md-pull-5 {\n right: 20.83333333%;\n }\n .col-md-pull-4 {\n right: 16.66666667%;\n }\n .col-md-pull-3 {\n right: 12.5%;\n }\n .col-md-pull-2 {\n right: 8.33333333%;\n }\n .col-md-pull-1 {\n right: 4.16666667%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-24 {\n left: 100%;\n }\n .col-md-push-23 {\n left: 95.83333333%;\n }\n .col-md-push-22 {\n left: 91.66666667%;\n }\n .col-md-push-21 {\n left: 87.5%;\n }\n .col-md-push-20 {\n left: 83.33333333%;\n }\n .col-md-push-19 {\n left: 79.16666667%;\n }\n .col-md-push-18 {\n left: 75%;\n }\n .col-md-push-17 {\n left: 70.83333333%;\n }\n .col-md-push-16 {\n left: 66.66666667%;\n }\n .col-md-push-15 {\n left: 62.5%;\n }\n .col-md-push-14 {\n left: 58.33333333%;\n }\n .col-md-push-13 {\n left: 54.16666667%;\n }\n .col-md-push-12 {\n left: 50%;\n }\n .col-md-push-11 {\n left: 45.83333333%;\n }\n .col-md-push-10 {\n left: 41.66666667%;\n }\n .col-md-push-9 {\n left: 37.5%;\n }\n .col-md-push-8 {\n left: 33.33333333%;\n }\n .col-md-push-7 {\n left: 29.16666667%;\n }\n .col-md-push-6 {\n left: 25%;\n }\n .col-md-push-5 {\n left: 20.83333333%;\n }\n .col-md-push-4 {\n left: 16.66666667%;\n }\n .col-md-push-3 {\n left: 12.5%;\n }\n .col-md-push-2 {\n left: 8.33333333%;\n }\n .col-md-push-1 {\n left: 4.16666667%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-24 {\n margin-left: 100%;\n }\n .col-md-offset-23 {\n margin-left: 95.83333333%;\n }\n .col-md-offset-22 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-21 {\n margin-left: 87.5%;\n }\n .col-md-offset-20 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-19 {\n margin-left: 79.16666667%;\n }\n .col-md-offset-18 {\n margin-left: 75%;\n }\n .col-md-offset-17 {\n margin-left: 70.83333333%;\n }\n .col-md-offset-16 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-15 {\n margin-left: 62.5%;\n }\n .col-md-offset-14 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-13 {\n margin-left: 54.16666667%;\n }\n .col-md-offset-12 {\n margin-left: 50%;\n }\n .col-md-offset-11 {\n margin-left: 45.83333333%;\n }\n .col-md-offset-10 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-9 {\n margin-left: 37.5%;\n }\n .col-md-offset-8 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-7 {\n margin-left: 29.16666667%;\n }\n .col-md-offset-6 {\n margin-left: 25%;\n }\n .col-md-offset-5 {\n margin-left: 20.83333333%;\n }\n .col-md-offset-4 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-3 {\n margin-left: 12.5%;\n }\n .col-md-offset-2 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-1 {\n margin-left: 4.16666667%;\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 .col-lg-13,\n .col-lg-14,\n .col-lg-15,\n .col-lg-16,\n .col-lg-17,\n .col-lg-18,\n .col-lg-19,\n .col-lg-20,\n .col-lg-21,\n .col-lg-22,\n .col-lg-23,\n .col-lg-24 {\n float: left;\n }\n .col-lg-24 {\n width: 100%;\n }\n .col-lg-23 {\n width: 95.83333333%;\n }\n .col-lg-22 {\n width: 91.66666667%;\n }\n .col-lg-21 {\n width: 87.5%;\n }\n .col-lg-20 {\n width: 83.33333333%;\n }\n .col-lg-19 {\n width: 79.16666667%;\n }\n .col-lg-18 {\n width: 75%;\n }\n .col-lg-17 {\n width: 70.83333333%;\n }\n .col-lg-16 {\n width: 66.66666667%;\n }\n .col-lg-15 {\n width: 62.5%;\n }\n .col-lg-14 {\n width: 58.33333333%;\n }\n .col-lg-13 {\n width: 54.16666667%;\n }\n .col-lg-12 {\n width: 50%;\n }\n .col-lg-11 {\n width: 45.83333333%;\n }\n .col-lg-10 {\n width: 41.66666667%;\n }\n .col-lg-9 {\n width: 37.5%;\n }\n .col-lg-8 {\n width: 33.33333333%;\n }\n .col-lg-7 {\n width: 29.16666667%;\n }\n .col-lg-6 {\n width: 25%;\n }\n .col-lg-5 {\n width: 20.83333333%;\n }\n .col-lg-4 {\n width: 16.66666667%;\n }\n .col-lg-3 {\n width: 12.5%;\n }\n .col-lg-2 {\n width: 8.33333333%;\n }\n .col-lg-1 {\n width: 4.16666667%;\n }\n .col-lg-pull-24 {\n right: 100%;\n }\n .col-lg-pull-23 {\n right: 95.83333333%;\n }\n .col-lg-pull-22 {\n right: 91.66666667%;\n }\n .col-lg-pull-21 {\n right: 87.5%;\n }\n .col-lg-pull-20 {\n right: 83.33333333%;\n }\n .col-lg-pull-19 {\n right: 79.16666667%;\n }\n .col-lg-pull-18 {\n right: 75%;\n }\n .col-lg-pull-17 {\n right: 70.83333333%;\n }\n .col-lg-pull-16 {\n right: 66.66666667%;\n }\n .col-lg-pull-15 {\n right: 62.5%;\n }\n .col-lg-pull-14 {\n right: 58.33333333%;\n }\n .col-lg-pull-13 {\n |