diff --git a/README.md b/README.md index 6f8a88d..fb7b11f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ InfoContains C and Python Libraries for interacting with Measurement Computing DAQ HAT boards. AuthorMeasurement Computing - Library Version1.5.0.0 + Library Version1.5.0.1 ## About diff --git a/docs/_images/mcc134-diag-web.jpg b/docs/_images/mcc134-diag-web.jpg index c56da80..6f9bbbb 100644 Binary files a/docs/_images/mcc134-diag-web.jpg and b/docs/_images/mcc134-diag-web.jpg differ diff --git a/docs/_static/base-stemmer.js b/docs/_static/base-stemmer.js new file mode 100644 index 0000000..e6fa0c4 --- /dev/null +++ b/docs/_static/base-stemmer.js @@ -0,0 +1,476 @@ +// @ts-check + +/**@constructor*/ +BaseStemmer = function() { + /** @protected */ + this.current = ''; + this.cursor = 0; + this.limit = 0; + this.limit_backward = 0; + this.bra = 0; + this.ket = 0; + + /** + * @param {string} value + */ + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + /** + * @return {string} + */ + this.getCurrent = function() { + return this.current; + }; + + /** + * @param {BaseStemmer} other + */ + this.copy_from = function(other) { + /** @protected */ + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.in_grouping = function(s, min, max) { + /** @protected */ + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_in_grouping = function(s, min, max) { + /** @protected */ + while (this.cursor < this.limit) { + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) + return true; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) + return true; + this.cursor++; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.in_grouping_b = function(s, min, max) { + /** @protected */ + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_in_grouping_b = function(s, min, max) { + /** @protected */ + while (this.cursor > this.limit_backward) { + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return true; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true; + this.cursor--; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.out_grouping = function(s, min, max) { + /** @protected */ + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_out_grouping = function(s, min, max) { + /** @protected */ + while (this.cursor < this.limit) { + var ch = this.current.charCodeAt(this.cursor); + if (ch <= max && ch >= min) { + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) { + return true; + } + } + this.cursor++; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.out_grouping_b = function(s, min, max) { + /** @protected */ + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + /** + * @param {number[]} s + * @param {number} min + * @param {number} max + * @return {boolean} + */ + this.go_out_grouping_b = function(s, min, max) { + /** @protected */ + while (this.cursor > this.limit_backward) { + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch <= max && ch >= min) { + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) { + return true; + } + } + this.cursor--; + } + return false; + }; + + /** + * @param {string} s + * @return {boolean} + */ + this.eq_s = function(s) + { + /** @protected */ + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + /** + * @param {string} s + * @return {boolean} + */ + this.eq_s_b = function(s) + { + /** @protected */ + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** + * @param {Among[]} v + * @return {number} + */ + this.find_among = function(v) + { + /** @protected */ + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + /** + * @param {Among[]} v + * @return {number} + */ + this.find_among_b = function(v) + { + /** @protected */ + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + /** + * @param {number} c_bra + * @param {number} c_ket + * @param {string} s + * @return {number} + */ + this.replace_s = function(c_bra, c_ket, s) + { + /** @protected */ + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + /** + * @return {boolean} + */ + this.slice_check = function() + { + /** @protected */ + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + /** + * @param {number} c_bra + * @return {boolean} + */ + this.slice_from = function(s) + { + /** @protected */ + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + /** + * @return {boolean} + */ + this.slice_del = function() + { + /** @protected */ + return this.slice_from(""); + }; + + /** + * @param {number} c_bra + * @param {number} c_ket + * @param {string} s + */ + this.insert = function(c_bra, c_ket, s) + { + /** @protected */ + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + /** + * @return {string} + */ + this.slice_to = function() + { + /** @protected */ + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + /** + * @return {string} + */ + this.assign_to = function() + { + /** @protected */ + return this.current.slice(0, this.limit); + }; +}; diff --git a/docs/_static/basic.css b/docs/_static/basic.css index 30fee9d..4738b2e 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -1,12 +1,5 @@ /* - * basic.css - * ~~~~~~~~~ - * * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ /* -- main layout ----------------------------------------------------------- */ @@ -115,15 +108,11 @@ img { /* -- search page ----------------------------------------------------------- */ ul.search { - margin: 10px 0 0 20px; - padding: 0; + margin-top: 10px; } ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; + padding: 5px 0; } ul.search li a { @@ -752,14 +741,6 @@ abbr, acronym { cursor: help; } -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - /* -- code displays --------------------------------------------------------- */ pre { diff --git a/docs/_static/css/badge_only.css b/docs/_static/css/badge_only.css index c718cee..88ba55b 100644 --- a/docs/_static/css/badge_only.css +++ b/docs/_static/css/badge_only.css @@ -1 +1 @@ -.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css index 19a446a..a88467c 100644 --- a/docs/_static/css/theme.css +++ b/docs/_static/css/theme.css @@ -1,4 +1,4 @@ html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%;float:none;margin-left:0}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/docs/_static/daqhatLibrary.pdf b/docs/_static/daqhatLibrary.pdf index b797d5b..f4ab5b0 100644 Binary files a/docs/_static/daqhatLibrary.pdf and b/docs/_static/daqhatLibrary.pdf differ diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index d06a71d..807cdb1 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -1,12 +1,5 @@ /* - * doctools.js - * ~~~~~~~~~~~ - * * Base JavaScript utilities for all Sphinx HTML documentation. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ "use strict"; @@ -66,7 +59,7 @@ const Documentation = { Object.assign(Documentation.TRANSLATIONS, catalog.messages); Documentation.PLURAL_EXPR = new Function( "n", - `return (${catalog.plural_expr})` + `return (${catalog.plural_expr})`, ); Documentation.LOCALE = catalog.locale; }, @@ -96,7 +89,7 @@ const Documentation = { const togglerElements = document.querySelectorAll("img.toggler"); togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) + el.addEventListener("click", (event) => toggler(event.currentTarget)), ); togglerElements.forEach((el) => (el.style.display = "")); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); @@ -105,14 +98,15 @@ const Documentation = { initOnKeyListeners: () => { // only install a listener if it is really needed if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS + && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS ) return; document.addEventListener("keydown", (event) => { // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) + return; // bail with special keys if (event.altKey || event.ctrlKey || event.metaKey) return; diff --git a/docs/_static/english-stemmer.js b/docs/_static/english-stemmer.js new file mode 100644 index 0000000..056760e --- /dev/null +++ b/docs/_static/english-stemmer.js @@ -0,0 +1,1066 @@ +// Generated from english.sbl by Snowball 3.0.1 - https://snowballstem.org/ + +/**@constructor*/ +var EnglishStemmer = function() { + var base = new BaseStemmer(); + + /** @const */ var a_0 = [ + ["arsen", -1, -1], + ["commun", -1, -1], + ["emerg", -1, -1], + ["gener", -1, -1], + ["later", -1, -1], + ["organ", -1, -1], + ["past", -1, -1], + ["univers", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["'", -1, 1], + ["'s'", 0, 1], + ["'s", -1, 1] + ]; + + /** @const */ var a_2 = [ + ["ied", -1, 2], + ["s", -1, 3], + ["ies", 1, 2], + ["sses", 1, 1], + ["ss", 1, -1], + ["us", 1, -1] + ]; + + /** @const */ var a_3 = [ + ["succ", -1, 1], + ["proc", -1, 1], + ["exc", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["even", -1, 2], + ["cann", -1, 2], + ["inn", -1, 2], + ["earr", -1, 2], + ["herr", -1, 2], + ["out", -1, 2], + ["y", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["", -1, -1], + ["ed", 0, 2], + ["eed", 1, 1], + ["ing", 0, 3], + ["edly", 0, 2], + ["eedly", 4, 1], + ["ingly", 0, 2] + ]; + + /** @const */ var a_6 = [ + ["", -1, 3], + ["bb", 0, 2], + ["dd", 0, 2], + ["ff", 0, 2], + ["gg", 0, 2], + ["bl", 0, 1], + ["mm", 0, 2], + ["nn", 0, 2], + ["pp", 0, 2], + ["rr", 0, 2], + ["at", 0, 1], + ["tt", 0, 2], + ["iz", 0, 1] + ]; + + /** @const */ var a_7 = [ + ["anci", -1, 3], + ["enci", -1, 2], + ["ogi", -1, 14], + ["li", -1, 16], + ["bli", 3, 12], + ["abli", 4, 4], + ["alli", 3, 8], + ["fulli", 3, 9], + ["lessli", 3, 15], + ["ousli", 3, 10], + ["entli", 3, 5], + ["aliti", -1, 8], + ["biliti", -1, 12], + ["iviti", -1, 11], + ["tional", -1, 1], + ["ational", 14, 7], + ["alism", -1, 8], + ["ation", -1, 7], + ["ization", 17, 6], + ["izer", -1, 6], + ["ator", -1, 7], + ["iveness", -1, 11], + ["fulness", -1, 9], + ["ousness", -1, 10], + ["ogist", -1, 13] + ]; + + /** @const */ var a_8 = [ + ["icate", -1, 4], + ["ative", -1, 6], + ["alize", -1, 3], + ["iciti", -1, 4], + ["ical", -1, 4], + ["tional", -1, 1], + ["ational", 5, 2], + ["ful", -1, 5], + ["ness", -1, 5] + ]; + + /** @const */ var a_9 = [ + ["ic", -1, 1], + ["ance", -1, 1], + ["ence", -1, 1], + ["able", -1, 1], + ["ible", -1, 1], + ["ate", -1, 1], + ["ive", -1, 1], + ["ize", -1, 1], + ["iti", -1, 1], + ["al", -1, 1], + ["ism", -1, 1], + ["ion", -1, 2], + ["er", -1, 1], + ["ous", -1, 1], + ["ant", -1, 1], + ["ent", -1, 1], + ["ment", 15, 1], + ["ement", 16, 1] + ]; + + /** @const */ var a_10 = [ + ["e", -1, 1], + ["l", -1, 2] + ]; + + /** @const */ var a_11 = [ + ["andes", -1, -1], + ["atlas", -1, -1], + ["bias", -1, -1], + ["cosmos", -1, -1], + ["early", -1, 5], + ["gently", -1, 3], + ["howe", -1, -1], + ["idly", -1, 2], + ["news", -1, -1], + ["only", -1, 6], + ["singly", -1, 7], + ["skies", -1, 1], + ["sky", -1, -1], + ["ugly", -1, 4] + ]; + + /** @const */ var /** Array */ g_aeo = [17, 64]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1]; + + /** @const */ var /** Array */ g_v_WXY = [1, 17, 65, 208, 1]; + + /** @const */ var /** Array */ g_valid_LI = [55, 141, 2]; + + var /** boolean */ B_Y_found = false; + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + + + /** @return {boolean} */ + function r_prelude() { + B_Y_found = false; + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + if (!(base.eq_s("'"))) + { + break lab0; + } + base.ket = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.cursor = v_1; + /** @const */ var /** number */ v_2 = base.cursor; + lab1: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab1; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + } + base.cursor = v_2; + /** @const */ var /** number */ v_3 = base.cursor; + lab2: { + while(true) + { + /** @const */ var /** number */ v_4 = base.cursor; + lab3: { + golab4: while(true) + { + /** @const */ var /** number */ v_5 = base.cursor; + lab5: { + if (!(base.in_grouping(g_v, 97, 121))) + { + break lab5; + } + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab5; + } + base.ket = base.cursor; + base.cursor = v_5; + break golab4; + } + base.cursor = v_5; + if (base.cursor >= base.limit) + { + break lab3; + } + base.cursor++; + } + if (!base.slice_from("Y")) + { + return false; + } + B_Y_found = true; + continue; + } + base.cursor = v_4; + break; + } + } + base.cursor = v_3; + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_p1 = base.limit; + I_p2 = base.limit; + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + /** @const */ var /** number */ v_2 = base.cursor; + lab2: { + if (base.find_among(a_0) == 0) + { + break lab2; + } + break lab1; + } + base.cursor = v_2; + if (!base.go_out_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + if (!base.go_in_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + } + I_p1 = base.cursor; + if (!base.go_out_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + if (!base.go_in_grouping(g_v, 97, 121)) + { + break lab0; + } + base.cursor++; + I_p2 = base.cursor; + } + base.cursor = v_1; + return true; + }; + + /** @return {boolean} */ + function r_shortv() { + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.out_grouping_b(g_v_WXY, 89, 121))) + { + break lab1; + } + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab1; + } + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + lab2: { + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab2; + } + if (!(base.in_grouping_b(g_v, 97, 121))) + { + break lab2; + } + if (base.cursor > base.limit_backward) + { + break lab2; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("past"))) + { + return false; + } + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + return I_p1 <= base.cursor; + }; + + /** @return {boolean} */ + function r_R2() { + return I_p2 <= base.cursor; + }; + + /** @return {boolean} */ + function r_Step_1a() { + var /** number */ among_var; + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("ss")) + { + return false; + } + break; + case 2: + lab1: { + /** @const */ var /** number */ v_2 = base.limit - base.cursor; + lab2: { + { + /** @const */ var /** number */ c1 = base.cursor - 2; + if (c1 < base.limit_backward) + { + break lab2; + } + base.cursor = c1; + } + if (!base.slice_from("i")) + { + return false; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!base.slice_from("ie")) + { + return false; + } + } + break; + case 3: + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + if (!base.go_out_grouping_b(g_v, 97, 121)) + { + return false; + } + base.cursor--; + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1b() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_5); + base.bra = base.cursor; + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + switch (among_var) { + case 1: + /** @const */ var /** number */ v_2 = base.limit - base.cursor; + lab2: { + lab3: { + /** @const */ var /** number */ v_3 = base.limit - base.cursor; + lab4: { + if (base.find_among_b(a_3) == 0) + { + break lab4; + } + if (base.cursor > base.limit_backward) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_3; + if (!r_R1()) + { + break lab2; + } + if (!base.slice_from("ee")) + { + return false; + } + } + } + base.cursor = base.limit - v_2; + break; + case 2: + break lab1; + case 3: + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + break lab1; + } + switch (among_var) { + case 1: + /** @const */ var /** number */ v_4 = base.limit - base.cursor; + if (!(base.out_grouping_b(g_v, 97, 121))) + { + break lab1; + } + if (base.cursor > base.limit_backward) + { + break lab1; + } + base.cursor = base.limit - v_4; + base.bra = base.cursor; + if (!base.slice_from("ie")) + { + return false; + } + break; + case 2: + if (base.cursor > base.limit_backward) + { + break lab1; + } + break; + } + break; + } + break lab0; + } + base.cursor = base.limit - v_1; + /** @const */ var /** number */ v_5 = base.limit - base.cursor; + if (!base.go_out_grouping_b(g_v, 97, 121)) + { + return false; + } + base.cursor--; + base.cursor = base.limit - v_5; + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + base.bra = base.cursor; + /** @const */ var /** number */ v_6 = base.limit - base.cursor; + among_var = base.find_among_b(a_6); + switch (among_var) { + case 1: + if (!base.slice_from("e")) + { + return false; + } + return false; + case 2: + { + /** @const */ var /** number */ v_7 = base.limit - base.cursor; + lab5: { + if (!(base.in_grouping_b(g_aeo, 97, 111))) + { + break lab5; + } + if (base.cursor > base.limit_backward) + { + break lab5; + } + return false; + } + base.cursor = base.limit - v_7; + } + break; + case 3: + if (base.cursor != I_p1) + { + return false; + } + /** @const */ var /** number */ v_8 = base.limit - base.cursor; + if (!r_shortv()) + { + return false; + } + base.cursor = base.limit - v_8; + if (!base.slice_from("e")) + { + return false; + } + return false; + } + base.cursor = base.limit - v_6; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + return true; + }; + + /** @return {boolean} */ + function r_Step_1c() { + base.ket = base.cursor; + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("y"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("Y"))) + { + return false; + } + } + base.bra = base.cursor; + if (!(base.out_grouping_b(g_v, 97, 121))) + { + return false; + } + lab2: { + if (base.cursor > base.limit_backward) + { + break lab2; + } + return false; + } + if (!base.slice_from("i")) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_2() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("tion")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ence")) + { + return false; + } + break; + case 3: + if (!base.slice_from("ance")) + { + return false; + } + break; + case 4: + if (!base.slice_from("able")) + { + return false; + } + break; + case 5: + if (!base.slice_from("ent")) + { + return false; + } + break; + case 6: + if (!base.slice_from("ize")) + { + return false; + } + break; + case 7: + if (!base.slice_from("ate")) + { + return false; + } + break; + case 8: + if (!base.slice_from("al")) + { + return false; + } + break; + case 9: + if (!base.slice_from("ful")) + { + return false; + } + break; + case 10: + if (!base.slice_from("ous")) + { + return false; + } + break; + case 11: + if (!base.slice_from("ive")) + { + return false; + } + break; + case 12: + if (!base.slice_from("ble")) + { + return false; + } + break; + case 13: + if (!base.slice_from("og")) + { + return false; + } + break; + case 14: + if (!(base.eq_s_b("l"))) + { + return false; + } + if (!base.slice_from("og")) + { + return false; + } + break; + case 15: + if (!base.slice_from("less")) + { + return false; + } + break; + case 16: + if (!(base.in_grouping_b(g_valid_LI, 99, 116))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_3() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R1()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("tion")) + { + return false; + } + break; + case 2: + if (!base.slice_from("ate")) + { + return false; + } + break; + case 3: + if (!base.slice_from("al")) + { + return false; + } + break; + case 4: + if (!base.slice_from("ic")) + { + return false; + } + break; + case 5: + if (!base.slice_del()) + { + return false; + } + break; + case 6: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_4() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + if (!r_R2()) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab0: { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab1: { + if (!(base.eq_s_b("s"))) + { + break lab1; + } + break lab0; + } + base.cursor = base.limit - v_1; + if (!(base.eq_s_b("t"))) + { + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_Step_5() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_10); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab0: { + lab1: { + if (!r_R2()) + { + break lab1; + } + break lab0; + } + if (!r_R1()) + { + return false; + } + { + /** @const */ var /** number */ v_1 = base.limit - base.cursor; + lab2: { + if (!r_shortv()) + { + break lab2; + } + return false; + } + base.cursor = base.limit - v_1; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!(base.eq_s_b("l"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_exception1() { + var /** number */ among_var; + base.bra = base.cursor; + among_var = base.find_among(a_11); + if (among_var == 0) + { + return false; + } + base.ket = base.cursor; + if (base.cursor < base.limit) + { + return false; + } + switch (among_var) { + case 1: + if (!base.slice_from("sky")) + { + return false; + } + break; + case 2: + if (!base.slice_from("idl")) + { + return false; + } + break; + case 3: + if (!base.slice_from("gentl")) + { + return false; + } + break; + case 4: + if (!base.slice_from("ugli")) + { + return false; + } + break; + case 5: + if (!base.slice_from("earli")) + { + return false; + } + break; + case 6: + if (!base.slice_from("onli")) + { + return false; + } + break; + case 7: + if (!base.slice_from("singl")) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + if (!B_Y_found) + { + return false; + } + while(true) + { + /** @const */ var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + /** @const */ var /** number */ v_2 = base.cursor; + lab2: { + base.bra = base.cursor; + if (!(base.eq_s("Y"))) + { + break lab2; + } + base.ket = base.cursor; + base.cursor = v_2; + break golab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + if (!base.slice_from("y")) + { + return false; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + lab0: { + /** @const */ var /** number */ v_1 = base.cursor; + lab1: { + if (!r_exception1()) + { + break lab1; + } + break lab0; + } + base.cursor = v_1; + lab2: { + { + /** @const */ var /** number */ v_2 = base.cursor; + lab3: { + { + /** @const */ var /** number */ c1 = base.cursor + 3; + if (c1 > base.limit) + { + break lab3; + } + base.cursor = c1; + } + break lab2; + } + base.cursor = v_2; + } + break lab0; + } + base.cursor = v_1; + r_prelude(); + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + /** @const */ var /** number */ v_3 = base.limit - base.cursor; + r_Step_1a(); + base.cursor = base.limit - v_3; + /** @const */ var /** number */ v_4 = base.limit - base.cursor; + r_Step_1b(); + base.cursor = base.limit - v_4; + /** @const */ var /** number */ v_5 = base.limit - base.cursor; + r_Step_1c(); + base.cursor = base.limit - v_5; + /** @const */ var /** number */ v_6 = base.limit - base.cursor; + r_Step_2(); + base.cursor = base.limit - v_6; + /** @const */ var /** number */ v_7 = base.limit - base.cursor; + r_Step_3(); + base.cursor = base.limit - v_7; + /** @const */ var /** number */ v_8 = base.limit - base.cursor; + r_Step_4(); + base.cursor = base.limit - v_8; + /** @const */ var /** number */ v_9 = base.limit - base.cursor; + r_Step_5(); + base.cursor = base.limit - v_9; + base.cursor = base.limit_backward; + /** @const */ var /** number */ v_10 = base.cursor; + r_postlude(); + base.cursor = v_10; + } + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/docs/_static/esmcc134.pdf b/docs/_static/esmcc134.pdf index 69932b2..f27ed58 100644 Binary files a/docs/_static/esmcc134.pdf and b/docs/_static/esmcc134.pdf differ diff --git a/docs/_static/fonts/Lato/lato-bold.eot b/docs/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 0000000..3361183 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.eot differ diff --git a/docs/_static/fonts/Lato/lato-bold.ttf b/docs/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 0000000..29f691d Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.ttf differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff b/docs/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.woff differ diff --git a/docs/_static/fonts/Lato/lato-bold.woff2 b/docs/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.eot b/docs/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 0000000..3d41549 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.ttf b/docs/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 0000000..f402040 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff b/docs/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/docs/_static/fonts/Lato/lato-bolditalic.woff2 b/docs/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/docs/_static/fonts/Lato/lato-italic.eot b/docs/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 0000000..3f82642 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.eot differ diff --git a/docs/_static/fonts/Lato/lato-italic.ttf b/docs/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 0000000..b4bfc9b Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.ttf differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff b/docs/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.woff differ diff --git a/docs/_static/fonts/Lato/lato-italic.woff2 b/docs/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/docs/_static/fonts/Lato/lato-regular.eot b/docs/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 0000000..11e3f2a Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.eot differ diff --git a/docs/_static/fonts/Lato/lato-regular.ttf b/docs/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 0000000..74decd9 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.ttf differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff b/docs/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.woff differ diff --git a/docs/_static/fonts/Lato/lato-regular.woff2 b/docs/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/docs/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 0000000..79dc8ef Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 0000000..df5d1df Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 0000000..2f7ca78 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 0000000..eb52a79 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/docs/_static/js/html5shiv-printshiv.min.js b/docs/_static/js/html5shiv-printshiv.min.js deleted file mode 100644 index 2b43bd0..0000000 --- a/docs/_static/js/html5shiv-printshiv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** -* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/_static/js/html5shiv.min.js b/docs/_static/js/html5shiv.min.js deleted file mode 100644 index cd1c674..0000000 --- a/docs/_static/js/html5shiv.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/** -* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/docs/_static/js/versions.js b/docs/_static/js/versions.js new file mode 100644 index 0000000..4958195 --- /dev/null +++ b/docs/_static/js/versions.js @@ -0,0 +1,228 @@ +const themeFlyoutDisplay = "hidden"; +const themeVersionSelector = true; +const themeLanguageSelector = true; + +if (themeFlyoutDisplay === "attached") { + function renderLanguages(config) { + if (!config.projects.translations.length) { + return ""; + } + + // Insert the current language to the options on the selector + let languages = config.projects.translations.concat(config.projects.current); + languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name)); + + const languagesHTML = ` +
+
Languages
+ ${languages + .map( + (translation) => ` +
+ ${translation.language.code} +
+ `, + ) + .join("\n")} +
+ `; + return languagesHTML; + } + + function renderVersions(config) { + if (!config.versions.active.length) { + return ""; + } + const versionsHTML = ` +
+
Versions
+ ${config.versions.active + .map( + (version) => ` +
+ ${version.slug} +
+ `, + ) + .join("\n")} +
+ `; + return versionsHTML; + } + + function renderDownloads(config) { + if (!Object.keys(config.versions.current.downloads).length) { + return ""; + } + const downloadsNameDisplay = { + pdf: "PDF", + epub: "Epub", + htmlzip: "HTML", + }; + + const downloadsHTML = ` +
+
Downloads
+ ${Object.entries(config.versions.current.downloads) + .map( + ([name, url]) => ` +
+ ${downloadsNameDisplay[name]} +
+ `, + ) + .join("\n")} +
+ `; + return downloadsHTML; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const flyout = ` +
+ + Read the Docs + v: ${config.versions.current.slug} + + +
+
+ ${renderLanguages(config)} + ${renderVersions(config)} + ${renderDownloads(config)} +
+
On Read the Docs
+
+ Project Home +
+
+ Builds +
+
+ Downloads +
+
+
+
Search
+
+
+ +
+
+
+
+ + Hosted by Read the Docs + +
+
+ `; + + // Inject the generated flyout into the body HTML element. + document.body.insertAdjacentHTML("beforeend", flyout); + + // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout. + document + .querySelector("#flyout-search-form") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); + }) +} + +if (themeLanguageSelector || themeVersionSelector) { + function onSelectorSwitch(event) { + const option = event.target.selectedIndex; + const item = event.target.options[option]; + window.location.href = item.dataset.url; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const versionSwitch = document.querySelector( + "div.switch-menus > div.version-switch", + ); + if (themeVersionSelector) { + let versions = config.versions.active; + if (config.versions.current.hidden || config.versions.current.type === "external") { + versions.unshift(config.versions.current); + } + const versionSelect = ` + + `; + + versionSwitch.innerHTML = versionSelect; + versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + + const languageSwitch = document.querySelector( + "div.switch-menus > div.language-switch", + ); + + if (themeLanguageSelector) { + if (config.projects.translations.length) { + // Add the current language to the options on the selector + let languages = config.projects.translations.concat( + config.projects.current, + ); + languages = languages.sort((a, b) => + a.language.name.localeCompare(b.language.name), + ); + + const languageSelect = ` + + `; + + languageSwitch.innerHTML = languageSelect; + languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + else { + languageSwitch.remove(); + } + } + }); +} + +document.addEventListener("readthedocs-addons-data-ready", function (event) { + // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav. + document + .querySelector("[role='search'] input") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); +}); \ No newline at end of file diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index 250f566..5776786 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -1,199 +1,13 @@ /* - * language_data.js - * ~~~~~~~~~~~~~~~~ - * * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * + * namely the set of stopwords, stemmer, scorer and splitter. */ -var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; +const stopwords = new Set(["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here", "here's", "hers", "herself", "him", "himself", "his", "how", "how's", "i", "i'd", "i'll", "i'm", "i've", "if", "in", "into", "is", "isn't", "it", "it's", "its", "itself", "let's", "me", "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of", "off", "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves", "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's", "should", "shouldn't", "so", "some", "such", "than", "that", "that's", "the", "their", "theirs", "them", "themselves", "then", "there", "there's", "these", "they", "they'd", "they'll", "they're", "they've", "this", "those", "through", "to", "too", "under", "until", "up", "very", "was", "wasn't", "we", "we'd", "we'll", "we're", "we've", "were", "weren't", "what", "what's", "when", "when's", "where", "where's", "which", "while", "who", "who's", "whom", "why", "why's", "with", "won't", "would", "wouldn't", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves"]); +window.stopwords = stopwords; // Export to global scope -/* Non-minified version is copied as a separate JS file, is available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - +/* Non-minified versions are copied as separate JavaScript files, if available */ +BaseStemmer=function(){this.current="",this.cursor=0,this.limit=0,this.limit_backward=0,this.bra=0,this.ket=0,this.setCurrent=function(t){this.current=t,this.cursor=0,this.limit=this.current.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},this.getCurrent=function(){return this.current},this.copy_from=function(t){this.current=t.current,this.cursor=t.cursor,this.limit=t.limit,this.limit_backward=t.limit_backward,this.bra=t.bra,this.ket=t.ket},this.in_grouping=function(t,r,i){return!(this.cursor>=this.limit||i<(i=this.current.charCodeAt(this.cursor))||i>>3]&1<<(7&i))||(this.cursor++,0))},this.go_in_grouping=function(t,r,i){for(;this.cursor>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.in_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward||i<(i=this.current.charCodeAt(this.cursor-1))||i>>3]&1<<(7&i))||(this.cursor--,0))},this.go_in_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(i>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.out_grouping=function(t,r,i){return!(this.cursor>=this.limit)&&(i<(i=this.current.charCodeAt(this.cursor))||i>>3]&1<<(7&i)))&&(this.cursor++,!0)},this.go_out_grouping=function(t,r,i){for(;this.cursor>>3]&1<<(7&s)))return!0;this.cursor++}return!1},this.out_grouping_b=function(t,r,i){return!(this.cursor<=this.limit_backward)&&(i<(i=this.current.charCodeAt(this.cursor-1))||i>>3]&1<<(7&i)))&&(this.cursor--,!0)},this.go_out_grouping_b=function(t,r,i){for(;this.cursor>this.limit_backward;){var s=this.current.charCodeAt(this.cursor-1);if(s<=i&&r<=s&&0!=(t[(s-=r)>>>3]&1<<(7&s)))return!0;this.cursor--}return!1},this.eq_s=function(t){return!(this.limit-this.cursor>>1),o=0,a=e=(l=t[r])[0].length){if(this.cursor=s+l[0].length,l.length<4)return l[2];var g=l[3](this);if(this.cursor=s+l[0].length,g)return l[2]}}while(0<=(r=l[1]));return 0},this.find_among_b=function(t){for(var r=0,i=t.length,s=this.cursor,h=this.limit_backward,e=0,n=0,c=!1;;){for(var u,o=r+(i-r>>1),a=0,l=e=(u=t[r])[0].length){if(this.cursor=s-u[0].length,u.length<4)return u[2];var g=u[3](this);if(this.cursor=s-u[0].length,g)return u[2]}}while(0<=(r=u[1]));return 0},this.replace_s=function(t,r,i){var s=i.length-(r-t);return this.current=this.current.slice(0,t)+i+this.current.slice(r),this.limit+=s,this.cursor>=r?this.cursor+=s:this.cursor>t&&(this.cursor=t),s},this.slice_check=function(){return!(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length)},this.slice_from=function(t){var r=!1;return this.slice_check()&&(this.replace_s(this.bra,this.ket,t),r=!0),r},this.slice_del=function(){return this.slice_from("")},this.insert=function(t,r,i){r=this.replace_s(t,r,i);t<=this.bra&&(this.bra+=r),t<=this.ket&&(this.ket+=r)},this.slice_to=function(){var t="";return t=this.slice_check()?this.current.slice(this.bra,this.ket):t},this.assign_to=function(){return this.current.slice(0,this.limit)}}; +var EnglishStemmer=function(){var a=new BaseStemmer,c=[["arsen",-1,-1],["commun",-1,-1],["emerg",-1,-1],["gener",-1,-1],["later",-1,-1],["organ",-1,-1],["past",-1,-1],["univers",-1,-1]],o=[["'",-1,1],["'s'",0,1],["'s",-1,1]],u=[["ied",-1,2],["s",-1,3],["ies",1,2],["sses",1,1],["ss",1,-1],["us",1,-1]],t=[["succ",-1,1],["proc",-1,1],["exc",-1,1]],l=[["even",-1,2],["cann",-1,2],["inn",-1,2],["earr",-1,2],["herr",-1,2],["out",-1,2],["y",-1,1]],n=[["",-1,-1],["ed",0,2],["eed",1,1],["ing",0,3],["edly",0,2],["eedly",4,1],["ingly",0,2]],f=[["",-1,3],["bb",0,2],["dd",0,2],["ff",0,2],["gg",0,2],["bl",0,1],["mm",0,2],["nn",0,2],["pp",0,2],["rr",0,2],["at",0,1],["tt",0,2],["iz",0,1]],_=[["anci",-1,3],["enci",-1,2],["ogi",-1,14],["li",-1,16],["bli",3,12],["abli",4,4],["alli",3,8],["fulli",3,9],["lessli",3,15],["ousli",3,10],["entli",3,5],["aliti",-1,8],["biliti",-1,12],["iviti",-1,11],["tional",-1,1],["ational",14,7],["alism",-1,8],["ation",-1,7],["ization",17,6],["izer",-1,6],["ator",-1,7],["iveness",-1,11],["fulness",-1,9],["ousness",-1,10],["ogist",-1,13]],m=[["icate",-1,4],["ative",-1,6],["alize",-1,3],["iciti",-1,4],["ical",-1,4],["tional",-1,1],["ational",5,2],["ful",-1,5],["ness",-1,5]],b=[["ic",-1,1],["ance",-1,1],["ence",-1,1],["able",-1,1],["ible",-1,1],["ate",-1,1],["ive",-1,1],["ize",-1,1],["iti",-1,1],["al",-1,1],["ism",-1,1],["ion",-1,2],["er",-1,1],["ous",-1,1],["ant",-1,1],["ent",-1,1],["ment",15,1],["ement",16,1]],k=[["e",-1,1],["l",-1,2]],g=[["andes",-1,-1],["atlas",-1,-1],["bias",-1,-1],["cosmos",-1,-1],["early",-1,5],["gently",-1,3],["howe",-1,-1],["idly",-1,2],["news",-1,-1],["only",-1,6],["singly",-1,7],["skies",-1,1],["sky",-1,-1],["ugly",-1,4]],d=[17,64],v=[17,65,16,1],i=[1,17,65,208,1],w=[55,141,2],p=!1,y=0,h=0;function q(){var r=a.limit-a.cursor;return!!(a.out_grouping_b(i,89,121)&&a.in_grouping_b(v,97,121)&&a.out_grouping_b(v,97,121)||(a.cursor=a.limit-r,a.out_grouping_b(v,97,121)&&a.in_grouping_b(v,97,121)&&!(a.cursor>a.limit_backward))||(a.cursor=a.limit-r,a.eq_s_b("past")))}function z(){return h<=a.cursor}function Y(){return y<=a.cursor}this.stem=function(){var r=a.cursor;if(!(()=>{var r;if(a.bra=a.cursor,0!=(r=a.find_among(g))&&(a.ket=a.cursor,!(a.cursora.limit)a.cursor=i;else{a.cursor=e,a.cursor=r,(()=>{p=!1;var r=a.cursor;if(a.bra=a.cursor,!a.eq_s("'")||(a.ket=a.cursor,a.slice_del())){a.cursor=r;r=a.cursor;if(a.bra=a.cursor,a.eq_s("y")){if(a.ket=a.cursor,!a.slice_from("Y"))return;p=!0}a.cursor=r;for(r=a.cursor;;){var i=a.cursor;r:{for(;;){var e=a.cursor;if(a.in_grouping(v,97,121)&&(a.bra=a.cursor,a.eq_s("y"))){a.ket=a.cursor,a.cursor=e;break}if(a.cursor=e,a.cursor>=a.limit)break r;a.cursor++}if(!a.slice_from("Y"))return;p=!0;continue}a.cursor=i;break}a.cursor=r}})(),h=a.limit,y=a.limit;i=a.cursor;r:{var s=a.cursor;if(0==a.find_among(c)){if(a.cursor=s,!a.go_out_grouping(v,97,121))break r;if(a.cursor++,!a.go_in_grouping(v,97,121))break r;a.cursor++}h=a.cursor,a.go_out_grouping(v,97,121)&&(a.cursor++,a.go_in_grouping(v,97,121))&&(a.cursor++,y=a.cursor)}a.cursor=i,a.limit_backward=a.cursor,a.cursor=a.limit;var e=a.limit-a.cursor,r=((()=>{var r=a.limit-a.cursor;if(a.ket=a.cursor,0==a.find_among_b(o))a.cursor=a.limit-r;else if(a.bra=a.cursor,!a.slice_del())return;if(a.ket=a.cursor,0!=(r=a.find_among_b(u)))switch(a.bra=a.cursor,r){case 1:if(a.slice_from("ss"))break;return;case 2:r:{var i=a.limit-a.cursor,e=a.cursor-2;if(!(e{a.ket=a.cursor,o=a.find_among_b(n),a.bra=a.cursor;r:{var r=a.limit-a.cursor;i:{switch(o){case 1:var i=a.limit-a.cursor;e:{var e=a.limit-a.cursor;if(0==a.find_among_b(t)||a.cursor>a.limit_backward){if(a.cursor=a.limit-e,!z())break e;if(!a.slice_from("ee"))return}}a.cursor=a.limit-i;break;case 2:break i;case 3:if(0==(o=a.find_among_b(l)))break i;switch(o){case 1:var s=a.limit-a.cursor;if(!a.out_grouping_b(v,97,121))break i;if(a.cursor>a.limit_backward)break i;if(a.cursor=a.limit-s,a.bra=a.cursor,a.slice_from("ie"))break;return;case 2:if(a.cursor>a.limit_backward)break i}}break r}a.cursor=a.limit-r;var c=a.limit-a.cursor;if(!a.go_out_grouping_b(v,97,121))return;if(a.cursor--,a.cursor=a.limit-c,!a.slice_del())return;a.ket=a.cursor,a.bra=a.cursor;var o,c=a.limit-a.cursor;switch(o=a.find_among_b(f)){case 1:return a.slice_from("e");case 2:var u=a.limit-a.cursor;if(a.in_grouping_b(d,97,111)&&!(a.cursor>a.limit_backward))return;a.cursor=a.limit-u;break;case 3:return a.cursor!=h||(u=a.limit-a.cursor,q()&&(a.cursor=a.limit-u,a.slice_from("e")))}if(a.cursor=a.limit-c,a.ket=a.cursor,a.cursor<=a.limit_backward)return;if(a.cursor--,a.bra=a.cursor,!a.slice_del())return}})(),a.cursor=a.limit-r,a.limit-a.cursor),r=(a.ket=a.cursor,e=a.limit-a.cursor,(a.eq_s_b("y")||(a.cursor=a.limit-e,a.eq_s_b("Y")))&&(a.bra=a.cursor,a.out_grouping_b(v,97,121))&&a.cursor>a.limit_backward&&a.slice_from("i"),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(_))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ence"))break;return;case 3:if(a.slice_from("ance"))break;return;case 4:if(a.slice_from("able"))break;return;case 5:if(a.slice_from("ent"))break;return;case 6:if(a.slice_from("ize"))break;return;case 7:if(a.slice_from("ate"))break;return;case 8:if(a.slice_from("al"))break;return;case 9:if(a.slice_from("ful"))break;return;case 10:if(a.slice_from("ous"))break;return;case 11:if(a.slice_from("ive"))break;return;case 12:if(a.slice_from("ble"))break;return;case 13:if(a.slice_from("og"))break;return;case 14:if(!a.eq_s_b("l"))return;if(a.slice_from("og"))break;return;case 15:if(a.slice_from("less"))break;return;case 16:if(!a.in_grouping_b(w,99,116))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.limit-a.cursor),i=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(m))&&(a.bra=a.cursor,z()))switch(r){case 1:if(a.slice_from("tion"))break;return;case 2:if(a.slice_from("ate"))break;return;case 3:if(a.slice_from("al"))break;return;case 4:if(a.slice_from("ic"))break;return;case 5:if(a.slice_del())break;return;case 6:if(!Y())return;if(a.slice_del())break}})(),a.cursor=a.limit-e,a.limit-a.cursor),r=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(b))&&(a.bra=a.cursor,Y()))switch(r){case 1:if(a.slice_del())break;return;case 2:var i=a.limit-a.cursor;if(!a.eq_s_b("s")&&(a.cursor=a.limit-i,!a.eq_s_b("t")))return;if(a.slice_del())break}})(),a.cursor=a.limit-i,a.limit-a.cursor),e=((()=>{var r;if(a.ket=a.cursor,0!=(r=a.find_among_b(k)))switch(a.bra=a.cursor,r){case 1:if(!Y()){if(!z())return;var i=a.limit-a.cursor;if(q())return;a.cursor=a.limit-i}if(a.slice_del())break;return;case 2:if(!Y())return;if(!a.eq_s_b("l"))return;if(a.slice_del())break}})(),a.cursor=a.limit-r,a.cursor=a.limit_backward,a.cursor);(()=>{if(p)for(;;){var r=a.cursor;r:{for(;;){var i=a.cursor;if(a.bra=a.cursor,a.eq_s("Y")){a.ket=a.cursor,a.cursor=i;break}if(a.cursor=i,a.cursor>=a.limit)break r;a.cursor++}if(a.slice_from("y"))continue;return}a.cursor=r;break}})(),a.cursor=e}}return!0},this.stemWord=function(r){return a.setCurrent(r),this.stem(),a.getCurrent()}}; +window.Stemmer = EnglishStemmer; diff --git a/docs/_static/pygments.css b/docs/_static/pygments.css index 691aeb8..0d49244 100644 --- a/docs/_static/pygments.css +++ b/docs/_static/pygments.css @@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 7918c3f..e29b1c7 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -1,12 +1,5 @@ /* - * searchtools.js - * ~~~~~~~~~~~~~~~~ - * * Sphinx JavaScript utilities for the full-text search. - * - * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * */ "use strict"; @@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") { // and returns the new score. /* score: result => { - const [docname, title, anchor, descr, score, filename] = result + const [docname, title, anchor, descr, score, filename, kind] = result return score }, */ @@ -47,6 +40,15 @@ if (typeof Scorer === "undefined") { }; } +// Global search result kind enum, used by themes to style search results. +// prettier-ignore +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + const _removeChildren = (element) => { while (element && element.lastChild) element.removeChild(element.lastChild); }; @@ -57,6 +59,15 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string +const _escapeHTML = (text) => { + return text + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); +}; + const _displayItem = (item, searchTerms, highlightTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; @@ -64,9 +75,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => { const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; const contentRoot = document.documentElement.dataset.content_root; - const [docName, title, anchor, descr, score, _filename] = item; + const [docName, title, anchor, descr, score, _filename, kind] = item; let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); let requestUrl; let linkUrl; if (docBuilder === "dirhtml") { @@ -85,25 +100,30 @@ const _displayItem = (item, searchTerms, highlightTerms) => { let linkEl = listItem.appendChild(document.createElement("a")); linkEl.href = linkUrl + anchor; linkEl.dataset.score = score; - linkEl.innerHTML = title; + linkEl.innerHTML = _escapeHTML(title); if (descr) { listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; + ` (${_escapeHTML(descr)})`; // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) + if (SPHINX_HIGHLIGHT_ENABLED) + // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js + highlightTerms.forEach((term) => + _highlightText(listItem, term, "highlighted"), + ); + } else if (showSearchSummary) fetch(requestUrl) .then((responseData) => responseData.text()) .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms) + Search.makeSearchSummary(data, searchTerms, anchor), ); // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + if (SPHINX_HIGHLIGHT_ENABLED) + // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js + highlightTerms.forEach((term) => + _highlightText(listItem, term, "highlighted"), + ); }); Search.output.appendChild(listItem); }; @@ -112,12 +132,14 @@ const _finishSearch = (resultCount) => { Search.title.innerText = _("Search Results"); if (!resultCount) Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.", ); else - Search.status.innerText = _( - `Search finished, found ${resultCount} page(s) matching the search query.` - ); + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace("${resultCount}", resultCount); }; const _displayNextItem = ( results, @@ -131,12 +153,28 @@ const _displayNextItem = ( _displayItem(results.pop(), searchTerms, highlightTerms); setTimeout( () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 + 5, ); } // search finished, update title and status message else _finishSearch(resultCount); }; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; /** * Default splitQuery function. Can be overridden in ``sphinx.search`` with a @@ -147,9 +185,10 @@ const _displayNextItem = ( * This is the same as ``\W+`` in Python, preserving the surrogate pair area. */ if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query + var splitQuery = (query) => + query .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings + .filter((term) => term); // remove remaining empty strings } /** @@ -160,13 +199,33 @@ const Search = { _queued_query: null, _pulse_status: -1, - htmlToText: (htmlString) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString( + htmlString, + "text/html", + ); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { + el.remove(); + }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector( + `[role="main"] ${anchor}`, + ); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`, + ); + } + + // if anchor not specified or not found, fall back to main content const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent !== undefined) return docContent.textContent; + if (docContent) return docContent.textContent; + console.warn( - "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.", ); return ""; }, @@ -219,6 +278,7 @@ const Search = { searchSummary.classList.add("search-summary"); searchSummary.innerText = ""; const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); searchList.classList.add("search"); const out = document.getElementById("search-results"); @@ -239,16 +299,7 @@ const Search = { else Search.deferQuery(query); }, - /** - * execute search (requires search index to be loaded) - */ - query: (query) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - + _parseQuery: (query) => { // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -259,12 +310,8 @@ const Search = { const queryTermLower = queryTerm.toLowerCase(); // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; + // stopwords set is from language_data.js + if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return; // stem the word let word = stemmer.stemWord(queryTermLower); @@ -276,30 +323,63 @@ const Search = { } }); - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + if (SPHINX_HIGHLIGHT_ENABLED) { + // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js + localStorage.setItem( + "sphinx_highlight_terms", + [...highlightTerms].join(" "), + ); } // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); - // array of [docname, title, anchor, descr, score, filename] - let results = []; + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: ( + query, + searchTerms, + excludedTerms, + highlightTerms, + objectTerms, + ) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + _removeChildren(document.getElementById("search-progress")); - const queryLower = query.toLowerCase(); + const queryLower = query.toLowerCase().trim(); for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + if ( + title.toLowerCase().trim().includes(queryLower) + && queryLower.length >= title.length / 2 + ) { for (const [file, id] of foundTitles) { - let score = Math.round(100 * queryLower.length / title.length) - results.push([ + const score = Math.round( + (Scorer.title * queryLower.length) / title.length, + ); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ docNames[file], titles[file] !== title ? `${titles[file]} > ${title}` : title, id !== null ? "#" + id : "", null, - score, + score + boost, filenames[file], + SearchResultKind.title, ]); } } @@ -307,53 +387,61 @@ const Search = { // search for explicit entries in index directives for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id] of foundEntries) { - let score = Math.round(100 * queryLower.length / entry.length) - results.push([ + if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round((100 * queryLower.length) / entry.length); + const result = [ docNames[file], titles[file], id ? "#" + id : "", null, score, filenames[file], - ]); + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } } } } // lookup as object objectTerms.forEach((term) => - results.push(...Search.performObjectSearch(term, objectTerms)) + normalResults.push(...Search.performObjectSearch(term, objectTerms)), ); // lookup as search terms in fulltext - results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + normalResults.push( + ...Search.performTermsSearch(searchTerms, excludedTerms), + ); // let the scorer override scores with a custom scoring function - if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); - - // now sort the results by score (in opposite order of appearance, since the - // display function below uses pop() to retrieve items) and then - // alphabetically - results.sort((a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; - }); + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; // remove duplicate search results // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept let seen = new Set(); results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + let resultStr = result + .slice(0, 4) + .concat([result[5]]) + .map((v) => String(v)) + .join(","); if (!seen.has(resultStr)) { acc.push(result); seen.add(resultStr); @@ -361,7 +449,24 @@ const Search = { return acc; }, []); - results = results.reverse(); + return results.reverse(); + }, + + query: (query) => { + const [ + searchQuery, + searchTerms, + excludedTerms, + highlightTerms, + objectTerms, + ] = Search._parseQuery(query); + const results = Search._performSearch( + searchQuery, + searchTerms, + excludedTerms, + highlightTerms, + objectTerms, + ); // for debugging //Search.lastresults = results.slice(); // a copy @@ -384,7 +489,7 @@ const Search = { const results = []; const objectSearchCallback = (prefix, match) => { - const name = match[4] + const name = match[4]; const fullname = (prefix ? prefix + "." : "") + name; const fullnameLower = fullname.toLowerCase(); if (fullnameLower.indexOf(object) < 0) return; @@ -432,12 +537,11 @@ const Search = { descr, score, filenames[match[0]], + SearchResultKind.object, ]); }; Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) + objects[prefix].forEach((array) => objectSearchCallback(prefix, array)), ); return results; }, @@ -459,21 +563,33 @@ const Search = { // perform the search on the required terms searchTerms.forEach((word) => { const files = []; + // find documents, if any, containing the query word in their text/title term indices + // use Object.hasOwnProperty to avoid mismatching against prototype properties const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, + { + files: terms.hasOwnProperty(word) ? terms[word] : undefined, + score: Scorer.term, + }, + { + files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, + score: Scorer.title, + }, ]; // add support for partial matches if (word.length > 2) { const escapedWord = _escapeRegExp(word); - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord) && !terms[word]) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord) && !titleTerms[word]) - arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); - }); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } } // no match but word was a required one @@ -489,16 +605,17 @@ const Search = { // set score for the word in each file recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; + if (!scoreMap.has(file)) scoreMap.set(file, new Map()); + const fileScores = scoreMap.get(file); + fileScores.set(word, record.score); }); }); // create the mapping files.forEach((file) => { - if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); - else fileMap.set(file, [word]); }); }); @@ -509,11 +626,11 @@ const Search = { // as search terms with length < 3 are discarded const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 + (term) => term.length > 2, ).length; if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount + wordList.length !== searchTerms.size + && wordList.length !== filteredTermCount ) continue; @@ -521,16 +638,16 @@ const Search = { if ( [...excludedTerms].some( (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) + terms[term] === file + || titleTerms[term] === file + || (terms[term] || []).includes(file) + || (titleTerms[term] || []).includes(file), ) ) break; // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); // add result to the result list results.push([ docNames[file], @@ -539,6 +656,7 @@ const Search = { null, score, filenames[file], + SearchResultKind.text, ]); } return results; @@ -549,8 +667,8 @@ const Search = { * search summary for a given text. keywords is a list * of stemmed words. */ - makeSearchSummary: (htmlText, keywords) => { - const text = Search.htmlToText(htmlText); + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); if (text === "") return null; const textLower = text.toLowerCase(); @@ -565,7 +683,8 @@ const Search = { let summary = document.createElement("p"); summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + summary.textContent = + top + text.substr(startWithContext, 240).trim() + tail; return summary; }, diff --git a/docs/_static/sphinx_highlight.js b/docs/_static/sphinx_highlight.js index 8a96c69..a74e103 100644 --- a/docs/_static/sphinx_highlight.js +++ b/docs/_static/sphinx_highlight.js @@ -1,7 +1,7 @@ /* Highlighting utilities for Sphinx HTML documentation. */ "use strict"; -const SPHINX_HIGHLIGHT_ENABLED = true +const SPHINX_HIGHLIGHT_ENABLED = true; /** * highlight a given string on a node by wrapping it in @@ -13,9 +13,9 @@ const _highlight = (node, addItems, text, className) => { const parent = node.parentNode; const pos = val.toLowerCase().indexOf(text); if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") + pos >= 0 + && !parent.classList.contains(className) + && !parent.classList.contains("nohighlight") ) { let span; @@ -30,13 +30,7 @@ const _highlight = (node, addItems, text, className) => { span.appendChild(document.createTextNode(val.substr(pos, text.length))); const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); + parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling)); node.nodeValue = val.substr(0, pos); /* There may be more occurrences of search term in this node. So call this * function recursively on the remaining fragment. @@ -46,7 +40,7 @@ const _highlight = (node, addItems, text, className) => { if (isInSVG) { const rect = document.createElementNS( "http://www.w3.org/2000/svg", - "rect" + "rect", ); const bbox = parent.getBBox(); rect.x.baseVal.value = bbox.x; @@ -65,7 +59,7 @@ const _highlightText = (thisNode, text, className) => { let addItems = []; _highlight(thisNode, addItems, text, className); addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) + obj.parent.insertAdjacentElement("beforebegin", obj.target), ); }; @@ -73,25 +67,31 @@ const _highlightText = (thisNode, text, className) => { * Small JavaScript module for the documentation. */ const SphinxHighlight = { - /** * highlight the search words provided in localstorage in the text */ highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight // get and clear terms from localstorage const url = new URL(window.location); const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms"); + // Update history only if '?highlight' is present; otherwise it + // clears text fragments (not set in window.location by the browser) + if (url.searchParams.has("highlight")) { + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + } // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + const terms = highlight + .toLowerCase() + .split(/\s+/) + .filter((x) => x); if (terms.length === 0) return; // nothing to do // There should never be more than one element matching "div.body" @@ -107,11 +107,11 @@ const SphinxHighlight = { document .createRange() .createContextualFragment( - '" - ) + '", + ), ); }, @@ -125,7 +125,7 @@ const SphinxHighlight = { document .querySelectorAll("span.highlighted") .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") + localStorage.removeItem("sphinx_highlight_terms"); }, initEscapeListener: () => { @@ -134,10 +134,15 @@ const SphinxHighlight = { document.addEventListener("keydown", (event) => { // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) + return; // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) + return; + if ( + DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + && event.key === "Escape" + ) { SphinxHighlight.hideSearchWords(); event.preventDefault(); } diff --git a/docs/c.html b/docs/c.html index 58485bc..8939e3f 100644 --- a/docs/c.html +++ b/docs/c.html @@ -1,24 +1,22 @@ + + - + C Library Reference — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -37,9 +35,6 @@ MCC DAQ HAT Library -
- 1.5.0 -
@@ -54,8 +49,17 @@
  • Installing and Using the Library
  • C Library Reference
    • Global functions and data
        -
      • Functions
      • +
      • Functions +
      • Data types and definitions
      • MCC 118 functions and data
      • MCC 128 functions and data
          -
        • Functions
        • +
        • Functions +
        • Data definitions
        • MCC 134 functions and data
        • MCC 152 functions and data
            -
          • Functions
          • +
          • Functions +
          • Data types and definitions
          • MCC 172 functions and data

            diff --git a/docs/c_test.html b/docs/c_test.html index 62a62b3..9566878 100644 --- a/docs/c_test.html +++ b/docs/c_test.html @@ -1,24 +1,22 @@ + + - + C Test Function Reference — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -35,9 +33,6 @@ MCC DAQ HAT Library -
            - 1.5.0 -
            diff --git a/docs/genindex.html b/docs/genindex.html index 0e15806..6f041ea 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -1,23 +1,21 @@ + + Index — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -34,9 +32,6 @@ MCC DAQ HAT Library -
            - 1.5.0 -
            diff --git a/docs/hardware.html b/docs/hardware.html index 90485b6..d34a012 100644 --- a/docs/hardware.html +++ b/docs/hardware.html @@ -1,24 +1,22 @@ + + - + Installing the DAQ HAT board — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -37,9 +35,6 @@ MCC DAQ HAT Library -
            - 1.5.0 -
            @@ -127,56 +122,64 @@

            Installing a single board_images/a0.png +_images/a0.png +

            1

            Y

            -_images/a1.png +_images/a1.png +

            2

            Y

            -_images/a2.png +_images/a2.png +

            3

            Y

            Y

            -_images/a3.png +_images/a3.png +

            4

            Y

            -_images/a4.png +_images/a4.png +

            5

            Y

            Y

            -_images/a5.png +_images/a5.png +

            6

            Y

            Y

            -_images/a6.png +_images/a6.png +

            7

            Y

            Y

            Y

            -_images/a7.png +_images/a7.png + diff --git a/docs/index.html b/docs/index.html index 87447bc..31b9936 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,24 +1,22 @@ + + - + MCC DAQ HAT Library documentation — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -36,9 +34,6 @@ MCC DAQ HAT Library -
            - 1.5.0 -
            @@ -198,8 +193,17 @@

            MCC DAQ HAT Library documentationC Library Reference
            • Global functions and data
                -
              • Functions
              • +
              • Functions +
              • Data types and definitions
                  +
                • MAX_NUMBER_HATS
                • HAT IDs
                • Result Codes
                • HatInfo structure
                • @@ -211,7 +215,29 @@

                  MCC DAQ HAT Library documentationMCC 118 functions and data
                    -
                  • Functions
                  • +
                  • Functions +
                  • Data definitions @@ -219,7 +245,33 @@

                    MCC DAQ HAT Library documentationMCC 128 functions and data
                      -
                    • Functions
                    • +
                    • Functions +
                    • Data definitions
                      • Device Info
                      • Analog Input Modes
                      • @@ -229,8 +281,28 @@

                        MCC DAQ HAT Library documentationMCC 134 functions and data
                          -
                        • Functions
                        • +
                        • Functions +
                        • Data definitions @@ -238,7 +310,29 @@

                          MCC DAQ HAT Library documentationMCC 152 functions and data
                            -
                          • Functions
                          • +
                          • Functions +
                          • Data types and definitions -

                            The scan options that may be used are:

                            +

                            The scan options that may be used are below. Multiple options can be +combined with OR (|).

                            • OptionFlags.DEFAULT: Return scaled and calibrated data, internal scan clock, no trigger, and finite operation. Any other flags @@ -1149,7 +1145,7 @@

                              MCC 128 class

                              -class daqhats.mcc128(address=0)
                              +class daqhats.mcc128(address=0)

                              The class for an MCC 128 board.

                              Parameters:
                              @@ -1235,7 +1231,7 @@

                              Methods
                              -static info()
                              +static info()

                              Return constant information about this type of device.

                              Returns:
                              @@ -1592,7 +1588,8 @@

                              Methodsa_in_read() will return an error because the device is busy.

                            -

                            The scan options that may be used are:

                            +

                            The scan options that may be used are below. Multiple options can be +combined with OR (|).

                            • OptionFlags.DEFAULT: Return scaled and calibrated data, internal scan clock, no trigger, and finite operation. Any other flags @@ -1901,17 +1898,17 @@

                              DataAnalog input modes

                              -class daqhats.AnalogInputMode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
                              +class daqhats.AnalogInputMode(*values)

                              Analog input modes.

                              -SE = 0
                              +SE = 0

                              Single-ended mode.

                              -DIFF = 1
                              +DIFF = 1

                              Differential mode.

                              @@ -1922,29 +1919,29 @@

                              Analog input modes

                              -class daqhats.AnalogInputRange(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
                              +class daqhats.AnalogInputRange(*values)

                              Analog input ranges.

                              -BIP_10V = 0
                              +BIP_10V = 0

                              +/- 10V input range.

                              -BIP_5V = 1
                              +BIP_5V = 1

                              +/- 5V input range.

                              -BIP_2V = 2
                              +BIP_2V = 2

                              +/- 2V input range.

                              -BIP_1V = 3
                              +BIP_1V = 3

                              +/- 1V input range

                              @@ -1959,7 +1956,7 @@

                              MCC 134 class

                              -class daqhats.mcc134(address=0)
                              +class daqhats.mcc134(address=0)

                              The class for an MCC 134 board.

                              Parameters:
                              @@ -2018,25 +2015,25 @@

                              Methods
                              -OPEN_TC_VALUE = -9999.0
                              +OPEN_TC_VALUE = -9999.0

                              Return value for an open thermocouple.

                              -OVERRANGE_TC_VALUE = -8888.0
                              +OVERRANGE_TC_VALUE = -8888.0

                              Return value for thermocouple voltage outside the valid range.

                              -COMMON_MODE_TC_VALUE = -7777.0
                              +COMMON_MODE_TC_VALUE = -7777.0

                              Return value for thermocouple input outside the common-mode range.

                              -static info()
                              +static info()

                              Return constant information about this type of device.

                              Returns:
                              @@ -2376,59 +2373,59 @@

                              DataThermocouple types

                              -class daqhats.TcTypes(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
                              +class daqhats.TcTypes(*values)

                              Thermocouple types.

                              -TYPE_J = 0
                              +TYPE_J = 0

                              Type J

                              -TYPE_K = 1
                              +TYPE_K = 1

                              Type K

                              -TYPE_T = 2
                              +TYPE_T = 2

                              Type T

                              -TYPE_E = 3
                              +TYPE_E = 3

                              Type E

                              -TYPE_R = 4
                              +TYPE_R = 4

                              Type R

                              -TYPE_S = 5
                              +TYPE_S = 5

                              Type S

                              -TYPE_B = 6
                              +TYPE_B = 6

                              Type B

                              -TYPE_N = 7
                              +TYPE_N = 7

                              Type N

                              -DISABLED = 255
                              +DISABLED = 255

                              Disabled

                              @@ -2443,7 +2440,7 @@

                              MCC 152 class

                              -class daqhats.mcc152(address=0)
                              +class daqhats.mcc152(address=0)

                              The class for an MCC 152 board.

                              Parameters:
                              @@ -2535,7 +2532,7 @@

                              Methods
                              -static info()
                              +static info()

                              Return constant information about this type of device.

                              Returns:
                              @@ -3434,47 +3431,47 @@

                              DataDIO Config Items

                              -class daqhats.DIOConfigItem(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
                              +class daqhats.DIOConfigItem(*values)

                              Digital I/O Configuration Items.

                              -DIRECTION = 0
                              +DIRECTION = 0

                              Configure channel direction

                              -PULL_CONFIG = 1
                              +PULL_CONFIG = 1

                              Configure pull-up/down resistor

                              -PULL_ENABLE = 2
                              +PULL_ENABLE = 2

                              Enable pull-up/down resistor

                              -INPUT_INVERT = 3
                              +INPUT_INVERT = 3

                              Configure input inversion

                              -INPUT_LATCH = 4
                              +INPUT_LATCH = 4

                              Configure input latching

                              -OUTPUT_TYPE = 5
                              +OUTPUT_TYPE = 5

                              Configure output type

                              -INT_MASK = 6
                              +INT_MASK = 6

                              Configure interrupt mask

                              @@ -3489,7 +3486,7 @@

                              MCC 172 class

                              -class daqhats.mcc172(address=0)
                              +class daqhats.mcc172(address=0)

                              The class for an MCC 172 board.

                              Parameters:
                              @@ -3578,7 +3575,7 @@

                              Methods
                              -static info()
                              +static info()

                              Return constant information about this type of device.

                              Returns:
                              @@ -3996,7 +3993,7 @@

                              Methods
                              -static a_in_scan_actual_rate(sample_rate_per_channel)
                              +static a_in_scan_actual_rate(sample_rate_per_channel)

                              Calculate the actual sample rate per channel for a requested sample rate.

                              The scan clock is generated from a 51.2 KHz clock source divided by an @@ -4046,7 +4043,8 @@

                              Methodsa_in_clock_config_write() will return an error because the device is busy.

                            -

                            The scan options that may be used are:

                            +

                            The scan options that may be used are below. Multiple options can be +combined with OR (|).

                            • OptionFlags.DEFAULT: Return scaled and calibrated data, do not use a trigger, and finite operation. Any other flags will @@ -4345,23 +4343,23 @@

                              DataSource types

                              -class daqhats.SourceType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)
                              +class daqhats.SourceType(*values)

                              Clock / trigger source options.

                              -LOCAL = 0
                              +LOCAL = 0

                              Use a local-only source.

                              -MASTER = 1
                              +MASTER = 1

                              Use a local source and set it as master.

                              -SLAVE = 2
                              +SLAVE = 2

                              Use a master source from another MCC 172.

                              diff --git a/docs/python_test.html b/docs/python_test.html index 0ba5637..2dd55d6 100644 --- a/docs/python_test.html +++ b/docs/python_test.html @@ -1,24 +1,22 @@ + + - + Python Test Function Reference — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -35,9 +33,6 @@ MCC DAQ HAT Library -
                              - 1.5.0 -
                              @@ -85,7 +80,7 @@

                              Python Test Function Reference

                              -class daqhats.mcc118(address=0)
                              +class daqhats.mcc118(address=0)

                              The class for an MCC 118 board.

                              Parameters:
                              @@ -154,7 +149,7 @@

                              MCC 118 test methodsMCC 128 test methods

                              -class daqhats.mcc128(address=0)
                              +class daqhats.mcc128(address=0)

                              The class for an MCC 128 board.

                              Parameters:
                              @@ -223,7 +218,7 @@

                              MCC 128 test methodsMCC 172 test methods

                              -class daqhats.mcc172(address=0)
                              +class daqhats.mcc172(address=0)

                              The class for an MCC 172 board.

                              Parameters:
                              diff --git a/docs/search.html b/docs/search.html index 8404b3f..5ddcd52 100644 --- a/docs/search.html +++ b/docs/search.html @@ -1,24 +1,22 @@ + + Search — MCC DAQ HAT Library 1.5.0 documentation - - + + - - - - - - - + + + + + @@ -37,9 +35,6 @@ MCC DAQ HAT Library -
                              - 1.5.0 -
                              diff --git a/docs/searchindex.js b/docs/searchindex.js index fc280e2..4943ef4 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["c", "c_test", "hardware", "index", "install", "overview", "python", "python_test"], "filenames": ["c.rst", "c_test.rst", "hardware.rst", "index.rst", "install.rst", "overview.rst", "python.rst", "python_test.rst"], "titles": ["C Library Reference", "C Test Function Reference", "Installing the DAQ HAT board", "MCC DAQ HAT Library documentation", "Installing and Using the Library", "Hardware Overview", "Python Library Reference", "Python Test Function Reference"], "terms": {"The": [0, 1, 2, 4, 5, 6, 7], "i": [0, 1, 2, 4, 5, 6, 7], "organ": [0, 6], "list": [0, 4, 6], "daq": [0, 4, 5, 6], "board": [0, 1, 3, 4, 6, 7], "attach": [0, 2, 4, 5, 6], "your": [0, 4, 5, 6], "system": [0, 4, 6], "specif": [0, 3, 6], "provid": [0, 2, 5, 6], "full": [0, 4, 6], "each": [0, 2, 4, 5, 6], "mai": [0, 4, 5, 6], "us": [0, 1, 3, 5, 6, 7], "descript": [0, 1, 6], "hat_list": [0, 3, 6], "return": [0, 1, 6, 7], "detect": [0, 4, 5, 6], "hat_error_messag": 0, "text": 0, "hat_wait_for_interrupt": 0, "wait": [0, 6], "an": [0, 5, 6, 7], "interrupt": [0, 5, 6], "occur": [0, 5, 6, 7], "hat_interrupt_st": 0, "read": [0, 1, 3, 5, 7], "current": [0, 1, 5, 6, 7], "hat_interrupt_callback_en": 0, "enabl": [0, 6], "callback": [0, 6], "hat_interrupt_callback_dis": 0, "disabl": [0, 6], "int": [0, 1, 6, 7], "uint16_t": 0, "filter_id": 0, "struct": 0, "It": [0, 4, 6], "creat": [0, 3, 5], "from": [0, 2, 5, 6], "eeprom": [0, 4, 6], "file": [0, 4], "ar": [0, 1, 2, 4, 5, 6, 7], "In": [0, 5, 6], "case": [0, 5, 6], "singl": [0, 3, 6], "address": [0, 1, 2, 3, 4, 6, 7], "0": [0, 1, 2, 4, 5, 6, 7], "thi": [0, 1, 2, 3, 4, 5, 6, 7], "inform": [0, 4, 5, 6], "automat": [0, 6], "o": [0, 4, 5, 6], "howev": [0, 5], "when": [0, 1, 4, 5, 6, 7], "you": [0, 4, 5, 6], "have": [0, 2, 4, 5, 6], "stack": [0, 4, 5], "multipl": [0, 3, 5, 6], "must": [0, 1, 2, 4, 5, 6, 7], "extract": 0, "imag": [0, 4], "daqhats_read_eeprom": [0, 4, 6], "tool": [0, 4, 5, 6], "exampl": [0, 4, 5, 6], "usag": 0, "count": [0, 6], "hat_id_ani": 0, "null": 0, "malloc": 0, "sizeof": 0, "perform": [0, 4, 6, 7], "action": [0, 6], "free": [0, 6], "paramet": [0, 1, 6, 7], "filter": [0, 5, 6], "onli": [0, 5, 6], "all": [0, 2, 5, 6], "A": [0, 2, 5, 6, 7], "pointer": 0, "user": [0, 1, 4, 5, 6, 7], "alloc": [0, 6], "arrai": [0, 6], "fill": 0, "about": [0, 5, 6], "maximum": [0, 5, 6], "number": [0, 6], "max_number_hat": 0, "call": [0, 1, 6], "while": [0, 1, 7], "pass": [0, 6], "which": [0, 6], "found": [0, 6], "correct": [0, 4, 6], "amount": [0, 6], "memori": [0, 6], "again": [0, 6], "valid": [0, 6], "const": 0, "char": 0, "error": [0, 4, 5, 6], "messag": 0, "timeout": [0, 6], "signal": [0, 1, 5, 6, 7], "becom": [0, 6], "activ": [0, 5, 6], "appli": [0, 5, 6, 7], "can": [0, 1, 4, 5, 6, 7], "gener": [0, 5, 6], "millisecond": 0, "1": [0, 1, 2, 5, 6, 7], "forev": [0, 6], "immedi": [0, 6], "result_timeout": 0, "result_success": [0, 1], "result_undefin": 0, "void": 0, "share": [0, 1, 4, 5, 6, 7], "so": [0, 2, 4, 5, 6, 7], "": [0, 4, 5, 6], "clear": [0, 6], "befor": [0, 6], "inact": [0, 6], "user_data": [0, 6], "set": [0, 1, 2, 5, 6, 7], "argument": [0, 6], "cannot": [0, 6], "until": [0, 2, 5, 6], "manual": [0, 6], "digit": [0, 3, 6], "If": [0, 4, 5, 6], "latch": [0, 6], "also": [0, 5, 6], "valu": [0, 1, 6, 7], "origin": [0, 5, 6], "wa": [0, 6, 7], "anyth": 0, "need": [0, 4, 6], "There": [0, 2, 6], "one": [0, 4, 5, 6], "time": [0, 4, 5, 6], "alreadi": [0, 1, 6], "replac": [0, 4, 6], "new": [0, 2, 6], "old": [0, 6], "longer": [0, 6], "remov": [0, 2, 5], "ani": [0, 2, 4, 5, 6], "handler": 0, "8": [0, 5, 6], "connect": [0, 2, 5, 6], "enum": 0, "hatid": [0, 6], "known": [0, 6], "enumer": 0, "match": [0, 6], "hat_id_mcc_118": 0, "hat_id_mcc_118_bootload": 0, "firmwar": [0, 3, 6], "updat": [0, 3, 6], "hat_id_mcc_128": 0, "hat_id_mcc_134": 0, "hat_id_mcc_152": 0, "hat_id_mcc_172": 0, "resultcod": 0, "success": [0, 1], "result_bad_paramet": 0, "incorrect": [0, 6, 7], "result_busi": [0, 1], "busi": [0, 6], "access": [0, 2], "resourc": [0, 6], "result_lock_timeout": 0, "obtain": 0, "lock": 0, "result_invalid_devic": 0, "specifi": [0, 1, 6, 7], "result_resource_unavail": 0, "avail": [0, 4, 5, 6], "result_comms_failur": 0, "could": [0, 5, 6], "commun": [0, 5], "some": [0, 6], "other": [0, 5, 6], "contain": [0, 6, 7], "public": 0, "member": 0, "uint8_t": [0, 1], "product": [0, 6], "version": [0, 3, 4, 5, 6], "hardwar": [0, 3, 6], "product_nam": [0, 6], "256": [0, 6], "name": [0, 4, 6, 7], "see": [0, 4, 6], "individu": [0, 6], "document": [0, 4, 5], "detail": [0, 3, 6], "opts_default": 0, "0x0000": 0, "default": [0, 5, 6], "behavior": [0, 6], "opts_noscaledata": 0, "0x0001": 0, "write": [0, 1, 6, 7], "unscal": [0, 6], "opts_nocalibratedata": 0, "0x0002": 0, "uncalibr": [0, 6], "opts_extclock": 0, "0x0004": 0, "extern": [0, 5, 6, 7], "clock": [0, 1, 3, 6, 7], "opts_exttrigg": 0, "0x0008": 0, "opts_continu": 0, "0x0010": 0, "run": [0, 1, 4, 5, 6], "explicitli": [0, 6], "stop": [0, 6], "status_hw_overrun": 0, "overrun": [0, 6], "status_buffer_overrun": 0, "buffer": [0, 5, 6], "status_trigg": 0, "event": [0, 5, 6], "status_run": 0, "acquir": [0, 5, 6], "triggermod": [0, 6], "trig_rising_edg": 0, "start": [0, 4, 5, 6], "rise": [0, 5, 6], "edg": [0, 5, 6], "trig": [0, 1, 5, 6, 7], "trig_falling_edg": 0, "fall": [0, 5, 6], "trig_active_high": 0, "high": [0, 1, 5, 6, 7], "trig_active_low": 0, "low": [0, 1, 5, 6, 7], "mcc118_open": 0, "open": [0, 1, 4, 5, 6], "mcc118_is_open": 0, "check": 0, "mcc118_close": 0, "close": 0, "mcc118_info": 0, "mcc118_blink_l": 0, "blink": [0, 5, 6], "led": [0, 3, 6], "mcc118_firmware_vers": 0, "get": [0, 6], "mcc118_serial": 0, "serial": [0, 6], "mcc118_calibration_d": 0, "calibr": [0, 5, 6], "date": [0, 6], "mcc118_calibration_coefficient_read": 0, "coeffici": [0, 6], "channel": [0, 5, 6], "mcc118_calibration_coefficient_writ": 0, "mcc118_a_in_read": 0, "mcc118_trigger_mod": 0, "mcc118_a_in_scan_actual_r": 0, "actual": [0, 6], "sampl": [0, 5, 6, 7], "rate": [0, 5, 6], "mcc118_a_in_scan_start": 0, "pace": [0, 6], "mcc118_a_in_scan_buffer_s": 0, "size": [0, 6], "intern": [0, 5, 6], "mcc118_a_in_scan_statu": 0, "mcc118_a_in_scan_read": 0, "mcc118_a_in_scan_channel_count": 0, "mcc118_a_in_scan_stop": 0, "mcc118_a_in_scan_cleanup": 0, "7": [0, 1, 2, 4, 5, 6, 7], "mcc118deviceinfo": 0, "constant": [0, 6], "continu": [0, 6], "reset": [0, 6], "non": [0, 6], "zero": [0, 6], "255": [0, 6], "boot_vers": 0, "bootload": [0, 6], "receiv": [0, 1, 6], "bcd": 0, "hexadecim": 0, "byte": 0, "major": 0, "minor": 0, "e": [0, 2, 5, 6], "0x0103": 0, "03": [0, 2, 6], "abov": [0, 2, 5], "string": [0, 6], "least": [0, 6], "9": 0, "charact": 0, "length": 0, "format": [0, 6], "yyyi": [0, 6], "mm": [0, 6], "dd": [0, 6], "11": 0, "doubl": 0, "slope": [0, 6], "offset": [0, 6], "calibrated_adc_cod": [0, 6], "raw_adc_cod": [0, 6], "temporarili": [0, 6], "own": [0, 4, 5, 6], "factori": [0, 5, 6], "whenev": [0, 6], "fail": [0, 6], "uint32_t": 0, "adc": [0, 1, 3, 6, 7], "between": [0, 5, 6], "4095": [0, 6], "rather": [0, 6], "than": [0, 4, 5, 6], "voltag": [0, 5, 6], "without": [0, 6], "factor": [0, 6], "oper": [0, 1, 4, 5, 6], "scale": [0, 6], "ORing": 0, "For": [0, 5, 6], "instanc": 0, "convert": [0, 5, 6], "bitmask": 0, "One": 0, "channel_count": [0, 6], "sample_rate_per_channel": [0, 6], "actual_sample_rate_per_channel": 0, "per": [0, 5, 6], "request": [0, 6], "16": [0, 5, 6], "mhz": [0, 6], "discret": [0, 6], "frequenc": [0, 5, 6], "step": [0, 2, 4, 6], "achiev": [0, 5, 6], "doe": [0, 6, 7], "simpli": [0, 6], "calcul": [0, 6], "desir": [0, 2, 4, 5, 6], "second": [0, 6], "max": [0, 6], "100": [0, 5, 6], "000": [0, 6], "would": [0, 6], "channel_mask": [0, 6], "samples_per_channel": [0, 6], "separ": [0, 6], "thread": [0, 2, 6], "finit": [0, 6], "complet": [0, 6, 7], "after": [0, 1, 6, 7], "ha": [0, 6], "finish": [0, 6], "been": [0, 6], "allow": [0, 4, 5, 6], "addit": [0, 2, 5, 6], "state": [0, 1, 5, 6, 7], "defin": [0, 6], "terminologi": [0, 6], "acquisit": [0, 6], "clean": [0, 6], "up": [0, 2, 5, 6], "anoth": [0, 6], "still": [0, 5, 6], "certain": [0, 5, 6], "like": [0, 2, 6], "becaus": [0, 6], "3": [0, 1, 2, 3, 6, 7], "3v": [0, 3, 6], "5v": [0, 3, 6], "logic": [0, 1, 5, 6], "clk": [0, 1, 5, 6, 7], "synchron": [0, 5, 6, 7], "pin": [0, 1, 2, 5, 6, 7], "togeth": [0, 6], "thei": [0, 5, 6], "its": [0, 6], "hold": [0, 5, 6], "off": [0, 2, 4, 5, 6], "condit": [0, 5, 6], "met": [0, 5, 6], "circular": [0, 6], "being": [0, 2, 6], "overwritten": [0, 6], "avoid": [0, 5, 6], "follow": [0, 2, 5, 6, 7], "total": [0, 6], "either": [0, 2, 6], "tabl": [0, 6], "whichev": [0, 6], "greater": [0, 6], "Not": [0, 6], "10": [0, 3, 6], "k": [0, 5, 6], "10k": [0, 6], "100k": [0, 6], "veri": [0, 6], "larg": [0, 6], "too": [0, 6], "much": [0, 6], "raspberri": [0, 2, 4, 5, 6, 7], "pi": [0, 1, 2, 4, 5, 6, 7], "succe": [0, 6], "lack": [0, 6], "caus": [0, 5, 6], "problem": [0, 5, 6], "better": [0, 6], "bit": [0, 5, 6], "mask": [0, 6], "associ": [0, 6], "0x01": [0, 6], "0xff": [0, 6], "larger": [0, 5, 6], "expect": [0, 6], "buffer_size_sampl": 0, "invalid": [0, 6, 7], "background": [0, 6], "ORed": [0, 6], "combin": [0, 6], "fast": [0, 6], "enough": [0, 6], "lost": [0, 6], "under": [0, 4], "int32_t": 0, "samples_read_per_channel": 0, "ignor": [0, 6], "space": [0, 5], "mani": 0, "fit": 0, "neg": [0, 6], "indefinit": [0, 6], "whatev": 0, "num_ai_channel": [0, 6], "ai_min_cod": [0, 6], "minimum": [0, 6], "ai_max_cod": [0, 6], "ai_min_voltag": [0, 6], "correspond": [0, 6], "0v": 0, "ai_max_voltag": [0, 6], "lsb": [0, 6], "ai_min_rang": [0, 6], "ai_max_rang": [0, 6], "mcc128_open": 0, "mcc128_is_open": 0, "mcc128_close": 0, "mcc128_info": 0, "mcc128_blink_l": 0, "mcc128_firmware_vers": 0, "mcc128_serial": 0, "mcc128_calibration_d": 0, "mcc128_calibration_coefficient_read": 0, "mcc128_calibration_coefficient_writ": 0, "mcc128_trigger_mod": 0, "mcc128_a_in_mode_read": 0, "mcc128_a_in_mode_writ": 0, "mcc128_a_in_range_read": 0, "mcc128_a_in_range_writ": 0, "mcc128_a_in_read": 0, "mcc128_a_in_scan_actual_r": 0, "mcc128_a_in_scan_start": 0, "mcc128_a_in_scan_buffer_s": 0, "mcc128_a_in_scan_statu": 0, "mcc128_a_in_scan_read": 0, "mcc128_a_in_scan_channel_count": 0, "mcc128_a_in_scan_stop": 0, "mcc128_a_in_scan_cleanup": 0, "mcc128deviceinfo": 0, "a_in_mode_s": 0, "end": [0, 1, 3, 6, 7], "rel": [0, 6], "ground": [0, 5, 6], "a_in_mode_diff": 0, "differenti": [0, 3, 6], "4": [0, 2, 4, 5, 6], "posit": [0, 5, 6], "a_in_range_bip_10v": 0, "10v": [0, 6], "a_in_range_bip_5v": 0, "a_in_range_bip_2v": 0, "2v": [0, 5, 6], "a_in_range_bip_1v": 0, "1v": [0, 5, 6], "65535": [0, 6], "num_ai_mod": [0, 6], "2": [0, 1, 2, 5, 6, 7], "num_ai_rang": [0, 6], "5": [0, 2, 4, 5, 6], "analoginputmod": [0, 6], "analoginputrang": [0, 6], "v": [0, 5, 6], "mcc134_open": 0, "mcc134_is_open": 0, "mcc134_close": 0, "mcc134_info": 0, "mcc134_serial": 0, "mcc134_calibration_d": 0, "mcc134_calibration_coefficient_read": 0, "mcc134_calibration_coefficient_writ": 0, "mcc134_tc_type_writ": 0, "mcc134_tc_type_read": 0, "mcc134_update_interval_writ": 0, "temperatur": [0, 5, 6], "interv": [0, 6], "mcc134_update_interval_read": 0, "mcc134_t_in_read": 0, "mcc134_a_in_read": 0, "mcc134_cjc_read": 0, "cjc": [0, 6], "mcc134deviceinfo": 0, "tell": [0, 6], "what": [0, 6], "requir": [0, 6, 7], "tctype": [0, 6], "tc_disabl": 0, "first": [0, 2, 5, 6], "how": [0, 4, 5, 6], "often": [0, 6], "everi": [0, 6], "increas": [0, 5, 6], "do": [0, 5, 6], "plan": [0, 6], "reduc": [0, 5, 6], "load": [0, 5, 6], "degre": [0, 6], "celsiu": [0, 6], "most": [0, 5, 6], "recent": [0, 4, 6], "onc": [0, 2, 6], "delai": [0, 5, 6], "cold": [0, 5, 6], "junction": [0, 5, 6], "compens": [0, 5, 6], "sensor": [0, 5, 6], "special": [0, 6], "indic": [0, 6], "abnorm": [0, 6], "open_tc_valu": [0, 6], "overrange_tc_valu": [0, 6], "overrang": 0, "common_mode_tc_valu": [0, 6], "common": [0, 5, 6], "differ": [0, 6], "388": [0, 6], "608": [0, 6], "607": [0, 6], "termin": [0, 2, 3, 4, 6], "want": [0, 6], "degress": [0, 6], "9999": [0, 6], "8888": [0, 6], "outsid": [0, 6], "7777": [0, 6], "078125v": 0, "tc_type_j": 0, "j": [0, 5, 6], "tc_type_k": 0, "tc_type_t": 0, "t": [0, 2, 5, 6], "tc_type_": 0, "tc_type_r": 0, "r": [0, 5, 6], "tc_type_b": 0, "b": [0, 5, 6], "tc_type_n": 0, "n": [0, 5, 6], "mcc152_open": 0, "mcc152_is_open": 0, "mcc152_close": 0, "mcc152_info": 0, "mcc152_serial": 0, "mcc152_a_out_writ": 0, "output": [0, 1, 5, 6, 7], "mcc152_a_out_write_al": 0, "simultan": [0, 5, 6], "mcc152_dio_reset": 0, "configur": [0, 3, 6], "mcc152_dio_input_read_bit": 0, "mcc152_dio_input_read_port": 0, "mcc152_dio_output_write_bit": 0, "mcc152_dio_output_write_port": 0, "mcc152_dio_output_read_bit": 0, "mcc152_dio_output_read_port": 0, "mcc152_dio_int_status_read_bit": 0, "mcc152_dio_int_status_read_port": 0, "mcc152_dio_config_write_bit": 0, "mcc152_dio_config_write_port": 0, "mcc152_dio_config_read_bit": 0, "mcc152_dio_config_read_port": 0, "mcc152deviceinfo": 0, "volt": 0, "dac": [0, 6], "same": [0, 5, 6], "two": [0, 5, 6], "regist": [0, 6], "invers": [0, 6], "No": [0, 6], "pull": [0, 5, 6], "resistor": [0, 5, 6], "push": [0, 5, 6], "present": [0, 6, 7], "entir": [0, 6], "care": [0, 2, 6], "taken": [0, 6], "chang": [0, 4, 5, 6], "back": [0, 4, 6], "next": [0, 2, 6], "report": [0, 6], "show": [0, 6], "miss": [0, 6], "best": [0, 3, 6], "repres": [0, 6], "order": [0, 4, 6], "etc": [0, 6], "effect": [0, 6], "mcc152_dio_output_writ": 0, "0xf0": 0, "store": [0, 6], "drain": [0, 5, 6], "sever": [0, 6], "written": [0, 6], "select": [0, 5, 6], "dioconfigitem": [0, 6], "dio_direct": 0, "direct": [0, 5, 6], "dio_pull_config": 0, "down": [0, 2, 5, 6], "dio_pull_en": 0, "dio_input_invert": 0, "invert": [0, 6], "normal": [0, 1, 6, 7], "dio_input_latch": 0, "goe": [0, 6], "initi": [0, 6, 7], "port": [0, 5, 6], "keep": [0, 6], "reflect": [0, 6], "level": [0, 1, 5, 6, 7], "dio_output_typ": 0, "affect": [0, 5, 6], "should": [0, 5, 6], "dio_int_mask": 0, "cpu": [0, 6], "determin": [0, 6], "act": [0, 6], "program": [0, 3, 5, 6], "interrrupt": 0, "more": [0, 4, 5, 6], "constantli": [0, 6], "where": [0, 2, 6], "num_dio_channel": [0, 6], "num_ao_channel": [0, 6], "ao_min_cod": [0, 6], "ao_max_cod": [0, 6], "ao_min_voltag": [0, 6], "ao_max_voltag": [0, 6], "ao_min_rang": [0, 6], "ao_max_rang": [0, 6], "mcc172_open": 0, "mcc172_is_open": 0, "mcc172_close": 0, "mcc172_info": 0, "mcc172_blink_l": 0, "mcc172_firmware_vers": 0, "mcc172_serial": 0, "mcc172_calibration_d": 0, "mcc172_calibration_coefficient_read": 0, "mcc172_calibration_coefficient_writ": 0, "mcc172_iepe_config_read": 0, "iep": [0, 5, 6], "mcc172_iepe_config_writ": 0, "mcc172_a_in_sensitivity_read": 0, "sensit": [0, 5, 6], "mcc172_a_in_sensitivity_writ": 0, "mcc172_a_in_clock_config_read": 0, "mcc172_a_in_clock_config_writ": [0, 1], "mcc172_trigger_config": [0, 1], "mcc172_a_in_scan_start": 0, "mcc172_a_in_scan_buffer_s": 0, "mcc172_a_in_scan_statu": 0, "mcc172_a_in_scan_read": 0, "mcc172_a_in_scan_channel_count": 0, "mcc172_a_in_scan_stop": 0, "mcc172_a_in_scan_cleanup": 0, "mcc172deviceinfo": 0, "power": [0, 2, 3, 4, 6], "mv": [0, 5, 6], "mechan": [0, 6], "unit": [0, 6], "1000": [0, 6], "meaning": [0, 6], "sinc": [0, 5, 6], "seismic": [0, 6], "g": [0, 6], "vibrat": [0, 6], "clock_sourc": [0, 6], "sync": [0, 1, 6, 7], "local": [0, 4, 6], "master": [0, 6], "adjust": [0, 6], "slave": [0, 1, 6, 7], "measur": [0, 3, 6], "period": [0, 6], "source_loc": 0, "source_mast": 0, "source_slav": 0, "equal": [0, 6], "loss": [0, 6], "monitor": [0, 6], "syncron": 0, "progress": [0, 6], "51": [0, 5, 6], "khz": [0, 1, 5, 6, 7], "cycl": [0, 5, 6], "consider": [0, 6], "otherwis": [0, 6], "damag": [0, 5, 6], "last": [0, 6], "alwai": [0, 2, 6], "modifi": [0, 6], "never": [0, 6], "stream": [0, 6], "divid": [0, 6], "integ": [0, 6], "data_rate_per_channel": 0, "nearest": [0, 6], "incom": [0, 6], "save": [0, 4, 6], "command": [0, 4, 5, 6], "due": [0, 5, 6], "natur": [0, 5, 6], "d": [0, 2, 5, 6], "39": [0, 5, 6], "come": [0, 2, 5, 6], "notic": [0, 5, 6], "approxim": [0, 5, 6], "prior": [0, 5, 6], "captur": [0, 5, 6], "through": [0, 2, 6], "independ": [0, 6], "possibl": [0, 6], "support": [0, 5, 6], "200": [0, 5, 6], "1024": [0, 6], "1280": [0, 6], "24": [0, 5, 6], "12": [0, 5, 6], "25": [0, 5], "6": [0, 2, 6], "0x03": [0, 6], "sourcetyp": [0, 6], "These": [1, 7], "includ": [1, 2, 4, 7], "manufactur": [1, 7], "target": [1, 7], "mcc118_test_clock": 1, "mcc118_test_trigg": 1, "mode": [1, 3, 5, 7], "scan": [1, 3], "input": [1, 3, 7], "squar": [1, 7], "wave": [1, 7], "result": [1, 3, 5, 6], "code": [1, 3, 4, 6], "mcc172_test_signals_read": 1, "trigger": [1, 3, 7], "mcc172_test_signals_writ": 1, "conjunct": [1, 7], "put": [1, 7], "gpio": [1, 2, 5, 7], "them": [1, 2, 6, 7], "confirm": [1, 7], "locat": [2, 4, 6], "standoff": 2, "typic": [2, 5], "shown": 2, "here": 2, "insert": 2, "male": 2, "portion": 2, "corner": 2, "hole": 2, "top": [2, 5], "secur": 2, "nut": 2, "bottom": 2, "2x20": 2, "receptacl": 2, "extend": [2, 5], "lead": [2, 5], "mcc": 2, "samtec": 2, "ssq": 2, "120": 2, "equival": [2, 5], "onto": 2, "header": [2, 3, 4, 6], "press": 2, "femal": 2, "bend": 2, "look": 2, "jumper": [2, 3], "a0": [2, 5], "a2": [2, 5], "go": [2, 4], "out": 2, "connector": [2, 3], "mount": 2, "line": [2, 4], "slide": 2, "rest": 2, "screw": [2, 3], "lightli": 2, "tighten": 2, "procedur": 2, "field": [2, 6, 7], "wire": 2, "below": [2, 4, 5, 6], "previou": 2, "appropri": 2, "recommend": [2, 5], "method": [2, 3, 5], "increment": [2, 6], "forth": 2, "manner": 2, "y": 2, "appear": 2, "a1": 2, "repeat": [2, 4, 5, 6], "ad": 2, "pdf": 3, "overview": 3, "compat": 3, "118": 3, "compon": 3, "statu": [3, 6], "function": [3, 6], "block": 3, "diagram": 3, "oem": 3, "128": 3, "134": 3, "practic": 3, "accur": 3, "thermocoupl": 3, "152": 3, "dio": 3, "w3": 3, "mix": 3, "172": 3, "32": [3, 6], "coaxial": 3, "alia": 3, "reject": 3, "instal": [3, 5], "c": [3, 5, 6], "python": [3, 5], "refer": [3, 5], "global": 3, "data": [3, 5], "type": [3, 5, 7], "definit": 3, "id": 3, "hatinfo": 3, "structur": 3, "analog": [3, 5], "option": [3, 4], "flag": 3, "devic": [3, 5, 6, 7], "info": [3, 6], "rang": [3, 5], "config": [3, 5], "item": 3, "sourc": [3, 4, 5], "interrupt_st": [3, 6], "wait_for_interrupt": [3, 6], "interrupt_callback_en": [3, 6], "interrupt_callback_dis": [3, 6], "haterror": [3, 7], "class": [3, 7], "mcc118": [3, 6, 7], "mcc128": [3, 6, 7], "mcc134": [3, 6], "mcc152": [3, 6], "mcc172": [3, 6, 7], "project": 4, "host": 4, "http": 4, "github": 4, "com": 4, "mccdaq": 4, "daqhat": [4, 5, 6, 7], "hat": [4, 5], "log": 4, "window": 4, "graphic": 4, "interfac": [4, 5], "packag": [4, 6], "sudo": 4, "apt": 4, "reboot": 4, "upgrad": 4, "git": 4, "download": 4, "folder": 4, "cd": 4, "clone": 4, "build": 4, "content": [4, 6], "sh": 4, "To": [4, 5, 6], "wide": 4, "pip": 4, "discourag": 4, "append": 4, "break": 4, "virtual": 4, "environ": [4, 5], "venv": 4, "path_to_venv": 4, "m": 4, "bin": 4, "note": 4, "encount": 4, "dure": 4, "uininstal": 4, "ioctl": 4, "seen": 4, "kernel": 4, "rpi": 4, "now": 4, "desktop": 4, "manag": 4, "util": 4, "accessori": 4, "menu": 4, "launch": 4, "control": [4, 6], "applic": [4, 5], "simpl": 4, "directori": 4, "displai": [4, 5], "daqhats_list_board": 4, "stackup": 4, "daqhats_vers": 4, "uninstal": 4, "demonstr": [4, 5], "mcc118_firmware_upd": [4, 5], "mcc_118": [4, 5, 6], "hex": [4, 5], "usr": 4, "add": [4, 5], "compil": 4, "find": 4, "h": 4, "libdaqhat": 4, "lib": 4, "linker": 4, "ldaqhat": 4, "studi": 4, "makefil": 4, "import": 4, "adher": 5, "librari": 5, "develop": 5, "model": 5, "40": 5, "26": 5, "brand": 5, "spi": 5, "particular": 5, "lcd": 5, "hdmi": 5, "usual": 5, "prevent": 5, "work": 5, "even": [5, 6], "driver": 5, "probabl": 5, "boot": 5, "txt": 5, "issu": 5, "consult": 5, "electr": 5, "featur": 5, "20": 5, "accuraci": 5, "bidirect": 5, "onboard": 5, "ch": 5, "chx": 5, "softwar": 5, "agnd": 5, "gnd": 5, "dgnd": 5, "identifi": [5, 6], "topic": 5, "turn": [5, 6], "flash": 5, "ttl": 5, "cmo": 5, "lvcmo": 5, "convers": [5, 7], "begin": 5, "design": 5, "unpopul": 5, "instead": 5, "accept": 5, "1x6": 5, "1x10": 5, "standard": 5, "ch0h": 5, "ch0l": 5, "ch3h": 5, "ch3l": 5, "mcc128_firmware_upd": 5, "mcc_128": [5, 6], "fw": 5, "linear": 5, "isol": 5, "harsh": 5, "x": 5, "within": 5, "environment": 5, "excess": 5, "transient": 5, "airflow": 5, "processor": 5, "fulli": 5, "core": 5, "rais": [5, 6, 7], "70": 5, "cooler": 5, "minim": 5, "variat": 5, "place": 5, "awai": 5, "heat": 5, "cool": 5, "sudden": 5, "steadi": 5, "fan": 5, "dissip": 5, "farthest": 5, "signific": 5, "tech": 5, "tip": 5, "ma": 5, "drive": 5, "capabl": 5, "suppli": [5, 6], "programm": 5, "disconnect": 5, "sink": 5, "ao0": 5, "ao1": 5, "aox": 5, "dio0": 5, "dio7": 5, "diox": 5, "vio": 5, "toler": 5, "flow": 5, "limit": [5, 6], "rail": 5, "possibli": 5, "seri": 5, "700": 5, "ohm": 5, "ac": 5, "coupl": 5, "ch0": 5, "ch1": 5, "across": 5, "variou": 5, "At": 5, "cutoff": 5, "fix": 5, "anti": 5, "alias": 5, "transduc": 5, "bandwidth": 5, "lower": 5, "higher": [5, 6], "ensur": 5, "suppress": 5, "mcc172_firmware_upd": 5, "mcc_172": [5, 6], "filter_by_id": 6, "verifi": 6, "namedtupl": [6, 7], "proc": 6, "tree": 6, "element": 6, "str": 6, "true": 6, "fals": 6, "bool": 6, "elaps": 6, "form": 6, "def": 6, "my_funct": 6, "my": 6, "print": 6, "interrupt_enable_callback": 6, "insid": 6, "object": 6, "made": 6, "immut": 6, "except": 6, "none": 6, "modul": 6, "qualnam": 6, "boundari": 6, "322": 6, "326": 6, "mcc_134": 6, "323": 6, "mcc_152": 6, "324": 6, "325": 6, "rising_edg": 6, "falling_edg": 6, "active_high": 6, "active_low": 6, "optionflag": 6, "noscaledata": 6, "nocalibratedata": 6, "extclock": 6, "exttrigg": 6, "did": [6, 7], "respond": [6, 7], "firmware_vers": 6, "blink_l": 6, "calibration_d": 6, "calibration_coefficient_read": 6, "calibration_coefficient_writ": 6, "trigger_mod": 6, "a_in_read": 6, "a_in_scan_actual_r": 6, "a_in_scan_start": 6, "a_in_scan_buffer_s": 6, "a_in_scan_read": 6, "a_in_scan_read_numpi": 6, "numpi": 6, "a_in_scan_channel_count": 6, "a_in_scan_stop": 6, "a_in_scan_cleanup": 6, "static": 6, "float": 6, "bootloader_vers": 6, "01": 6, "incorrectli": [6, 7], "transit": 6, "overrid": 6, "unspecifi": 6, "valueerror": [6, 7], "a_in_scan_statu": 6, "hardware_overrun": 6, "unload": 6, "buffer_overrun": 6, "samples_avail": 6, "expir": 6, "were": 6, "similar": 6, "kei": 6, "float64": 6, "directli": 6, "make": 6, "a_in_mode_read": 6, "a_in_mode_writ": 6, "a_in_range_read": 6, "a_in_range_writ": 6, "a_in_rang": 6, "a_in_mod": 6, "se": 6, "diff": 6, "bip_10v": 6, "bip_5v": 6, "bip_2v": 6, "bip_1v": 6, "tc_type_writ": 6, "tc_type_read": 6, "update_interval_writ": 6, "update_interval_read": 6, "t_in_read": 6, "cjc_read": 6, "078125": 6, "tc_type": 6, "type_j": 6, "type_k": 6, "type_t": 6, "type_": 6, "type_r": 6, "type_b": 6, "type_n": 6, "a_out_writ": 6, "a_out_write_al": 6, "dio_reset": 6, "dio_input_read_bit": 6, "dio_input_read_port": 6, "dio_input_read_tupl": 6, "tupl": 6, "dio_output_write_bit": 6, "dio_output_write_port": 6, "dio_output_write_dict": 6, "dictionari": 6, "dio_output_read_bit": 6, "dio_output_read_port": 6, "dio_output_read_tupl": 6, "dio_int_status_read_bit": 6, "dio_int_status_read_port": 6, "dio_int_status_read_tupl": 6, "dio_config_write_bit": 6, "dio_config_write_port": 6, "dio_config_write_dict": 6, "dio_config_read_bit": 6, "dio_config_read_port": 6, "dio_config_read_tupl": 6, "though": 6, "examin": 6, "els": 6, "compar": 6, "0x05": 6, "value_dict": 6, "pair": 6, "pull_config": 6, "pull_en": 6, "input_invert": 6, "input_latch": 6, "output_typ": 6, "int_mask": 6, "iepe_config_read": 6, "iepe_config_writ": 6, "a_in_sensitivity_read": 6, "a_in_sensitivity_writ": 6, "a_in_clock_config_read": 6, "a_in_clock_config_writ": [6, 7], "trigger_config": [6, 7], "8388608": 6, "8388607": 6, "over": 6, "trigger_sourc": 6, "test_clock": 7, "exercis": 7, "test_trigg": 7, "test_signals_read": 7, "those": 7, "test_signals_writ": 7, "exit": 7}, "objects": {"": [[0, 0, 1, "c.AnalogInputMode.A_IN_MODE_DIFF", "A_IN_MODE_DIFF"], [0, 0, 1, "c.AnalogInputMode.A_IN_MODE_SE", "A_IN_MODE_SE"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_10V", "A_IN_RANGE_BIP_10V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_1V", "A_IN_RANGE_BIP_1V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_2V", "A_IN_RANGE_BIP_2V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_5V", "A_IN_RANGE_BIP_5V"], [0, 1, 1, "c.AnalogInputMode", "AnalogInputMode"], [0, 1, 1, "c.AnalogInputRange", "AnalogInputRange"], [0, 2, 1, "c.COMMON_MODE_TC_VALUE", "COMMON_MODE_TC_VALUE"], [0, 1, 1, "c.DIOConfigItem", "DIOConfigItem"], [0, 0, 1, "c.DIOConfigItem.DIO_DIRECTION", "DIO_DIRECTION"], [0, 0, 1, "c.DIOConfigItem.DIO_INPUT_INVERT", "DIO_INPUT_INVERT"], [0, 0, 1, "c.DIOConfigItem.DIO_INPUT_LATCH", "DIO_INPUT_LATCH"], [0, 0, 1, "c.DIOConfigItem.DIO_INT_MASK", "DIO_INT_MASK"], [0, 0, 1, "c.DIOConfigItem.DIO_OUTPUT_TYPE", "DIO_OUTPUT_TYPE"], [0, 0, 1, "c.DIOConfigItem.DIO_PULL_CONFIG", "DIO_PULL_CONFIG"], [0, 0, 1, "c.DIOConfigItem.DIO_PULL_ENABLE", "DIO_PULL_ENABLE"], [0, 0, 1, "c.HatIDs.HAT_ID_ANY", "HAT_ID_ANY"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_118", "HAT_ID_MCC_118"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_118_BOOTLOADER", "HAT_ID_MCC_118_BOOTLOADER"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_128", "HAT_ID_MCC_128"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_134", "HAT_ID_MCC_134"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_152", "HAT_ID_MCC_152"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_172", "HAT_ID_MCC_172"], [0, 1, 1, "c.HatIDs", "HatIDs"], [0, 3, 1, "c.HatInfo", "HatInfo"], [0, 2, 1, "c.MAX_NUMBER_HATS", "MAX_NUMBER_HATS"], [0, 3, 1, "c.MCC118DeviceInfo", "MCC118DeviceInfo"], [0, 3, 1, "c.MCC128DeviceInfo", "MCC128DeviceInfo"], [0, 3, 1, "c.MCC134DeviceInfo", "MCC134DeviceInfo"], [0, 3, 1, "c.MCC152DeviceInfo", "MCC152DeviceInfo"], [0, 3, 1, "c.MCC172DeviceInfo", "MCC172DeviceInfo"], [0, 2, 1, "c.OPEN_TC_VALUE", "OPEN_TC_VALUE"], [0, 2, 1, "c.OPTS_CONTINUOUS", "OPTS_CONTINUOUS"], [0, 2, 1, "c.OPTS_DEFAULT", "OPTS_DEFAULT"], [0, 2, 1, "c.OPTS_EXTCLOCK", "OPTS_EXTCLOCK"], [0, 2, 1, "c.OPTS_EXTTRIGGER", "OPTS_EXTTRIGGER"], [0, 2, 1, "c.OPTS_NOCALIBRATEDATA", "OPTS_NOCALIBRATEDATA"], [0, 2, 1, "c.OPTS_NOSCALEDATA", "OPTS_NOSCALEDATA"], [0, 2, 1, "c.OVERRANGE_TC_VALUE", "OVERRANGE_TC_VALUE"], [0, 0, 1, "c.ResultCode.RESULT_BAD_PARAMETER", "RESULT_BAD_PARAMETER"], [0, 0, 1, "c.ResultCode.RESULT_BUSY", "RESULT_BUSY"], [0, 0, 1, "c.ResultCode.RESULT_COMMS_FAILURE", "RESULT_COMMS_FAILURE"], [0, 0, 1, "c.ResultCode.RESULT_INVALID_DEVICE", "RESULT_INVALID_DEVICE"], [0, 0, 1, "c.ResultCode.RESULT_LOCK_TIMEOUT", "RESULT_LOCK_TIMEOUT"], [0, 0, 1, "c.ResultCode.RESULT_RESOURCE_UNAVAIL", "RESULT_RESOURCE_UNAVAIL"], [0, 0, 1, "c.ResultCode.RESULT_SUCCESS", "RESULT_SUCCESS"], [0, 0, 1, "c.ResultCode.RESULT_TIMEOUT", "RESULT_TIMEOUT"], [0, 0, 1, "c.ResultCode.RESULT_UNDEFINED", "RESULT_UNDEFINED"], [0, 1, 1, "c.ResultCode", "ResultCode"], [0, 0, 1, "c.SourceType.SOURCE_LOCAL", "SOURCE_LOCAL"], [0, 0, 1, "c.SourceType.SOURCE_MASTER", "SOURCE_MASTER"], [0, 0, 1, "c.SourceType.SOURCE_SLAVE", "SOURCE_SLAVE"], [0, 2, 1, "c.STATUS_BUFFER_OVERRUN", "STATUS_BUFFER_OVERRUN"], [0, 2, 1, "c.STATUS_HW_OVERRUN", "STATUS_HW_OVERRUN"], [0, 2, 1, "c.STATUS_RUNNING", "STATUS_RUNNING"], [0, 2, 1, "c.STATUS_TRIGGERED", "STATUS_TRIGGERED"], [0, 1, 1, "c.SourceType", "SourceType"], [0, 0, 1, "c.TcTypes.TC_DISABLED", "TC_DISABLED"], [0, 0, 1, "c.TcTypes.TC_TYPE_B", "TC_TYPE_B"], [0, 0, 1, "c.TcTypes.TC_TYPE_E", "TC_TYPE_E"], [0, 0, 1, "c.TcTypes.TC_TYPE_J", "TC_TYPE_J"], [0, 0, 1, "c.TcTypes.TC_TYPE_K", "TC_TYPE_K"], [0, 0, 1, "c.TcTypes.TC_TYPE_N", "TC_TYPE_N"], [0, 0, 1, "c.TcTypes.TC_TYPE_R", "TC_TYPE_R"], [0, 0, 1, "c.TcTypes.TC_TYPE_S", "TC_TYPE_S"], [0, 0, 1, "c.TcTypes.TC_TYPE_T", "TC_TYPE_T"], [0, 0, 1, "c.TriggerMode.TRIG_ACTIVE_HIGH", "TRIG_ACTIVE_HIGH"], [0, 0, 1, "c.TriggerMode.TRIG_ACTIVE_LOW", "TRIG_ACTIVE_LOW"], [0, 0, 1, "c.TriggerMode.TRIG_FALLING_EDGE", "TRIG_FALLING_EDGE"], [0, 0, 1, "c.TriggerMode.TRIG_RISING_EDGE", "TRIG_RISING_EDGE"], [0, 1, 1, "c.TcTypes", "TcTypes"], [0, 1, 1, "c.TriggerMode", "TriggerMode"], [0, 5, 1, "c.hat_error_message", "hat_error_message"], [0, 5, 1, "c.hat_interrupt_callback_disable", "hat_interrupt_callback_disable"], [0, 5, 1, "c.hat_interrupt_callback_enable", "hat_interrupt_callback_enable"], [0, 5, 1, "c.hat_interrupt_state", "hat_interrupt_state"], [0, 5, 1, "c.hat_list", "hat_list"], [0, 5, 1, "c.hat_wait_for_interrupt", "hat_wait_for_interrupt"], [0, 5, 1, "c.mcc118_a_in_read", "mcc118_a_in_read"], [0, 5, 1, "c.mcc118_a_in_scan_actual_rate", "mcc118_a_in_scan_actual_rate"], [0, 5, 1, "c.mcc118_a_in_scan_buffer_size", "mcc118_a_in_scan_buffer_size"], [0, 5, 1, "c.mcc118_a_in_scan_channel_count", "mcc118_a_in_scan_channel_count"], [0, 5, 1, "c.mcc118_a_in_scan_cleanup", "mcc118_a_in_scan_cleanup"], [0, 5, 1, "c.mcc118_a_in_scan_read", "mcc118_a_in_scan_read"], [0, 5, 1, "c.mcc118_a_in_scan_start", "mcc118_a_in_scan_start"], [0, 5, 1, "c.mcc118_a_in_scan_status", "mcc118_a_in_scan_status"], [0, 5, 1, "c.mcc118_a_in_scan_stop", "mcc118_a_in_scan_stop"], [0, 5, 1, "c.mcc118_blink_led", "mcc118_blink_led"], [0, 5, 1, "c.mcc118_calibration_coefficient_read", "mcc118_calibration_coefficient_read"], [0, 5, 1, "c.mcc118_calibration_coefficient_write", "mcc118_calibration_coefficient_write"], [0, 5, 1, "c.mcc118_calibration_date", "mcc118_calibration_date"], [0, 5, 1, "c.mcc118_close", "mcc118_close"], [0, 5, 1, "c.mcc118_firmware_version", "mcc118_firmware_version"], [0, 5, 1, "c.mcc118_info", "mcc118_info"], [0, 5, 1, "c.mcc118_is_open", "mcc118_is_open"], [0, 5, 1, "c.mcc118_open", "mcc118_open"], [0, 5, 1, "c.mcc118_serial", "mcc118_serial"], [1, 5, 1, "c.mcc118_test_clock", "mcc118_test_clock"], [1, 5, 1, "c.mcc118_test_trigger", "mcc118_test_trigger"], [0, 5, 1, "c.mcc118_trigger_mode", "mcc118_trigger_mode"], [0, 5, 1, "c.mcc128_a_in_mode_read", "mcc128_a_in_mode_read"], [0, 5, 1, "c.mcc128_a_in_mode_write", "mcc128_a_in_mode_write"], [0, 5, 1, "c.mcc128_a_in_range_read", "mcc128_a_in_range_read"], [0, 5, 1, "c.mcc128_a_in_range_write", "mcc128_a_in_range_write"], [0, 5, 1, "c.mcc128_a_in_read", "mcc128_a_in_read"], [0, 5, 1, "c.mcc128_a_in_scan_actual_rate", "mcc128_a_in_scan_actual_rate"], [0, 5, 1, "c.mcc128_a_in_scan_buffer_size", "mcc128_a_in_scan_buffer_size"], [0, 5, 1, "c.mcc128_a_in_scan_channel_count", "mcc128_a_in_scan_channel_count"], [0, 5, 1, "c.mcc128_a_in_scan_cleanup", "mcc128_a_in_scan_cleanup"], [0, 5, 1, "c.mcc128_a_in_scan_read", "mcc128_a_in_scan_read"], [0, 5, 1, "c.mcc128_a_in_scan_start", "mcc128_a_in_scan_start"], [0, 5, 1, "c.mcc128_a_in_scan_status", "mcc128_a_in_scan_status"], [0, 5, 1, "c.mcc128_a_in_scan_stop", "mcc128_a_in_scan_stop"], [0, 5, 1, "c.mcc128_blink_led", "mcc128_blink_led"], [0, 5, 1, "c.mcc128_calibration_coefficient_read", "mcc128_calibration_coefficient_read"], [0, 5, 1, "c.mcc128_calibration_coefficient_write", "mcc128_calibration_coefficient_write"], [0, 5, 1, "c.mcc128_calibration_date", "mcc128_calibration_date"], [0, 5, 1, "c.mcc128_close", "mcc128_close"], [0, 5, 1, "c.mcc128_firmware_version", "mcc128_firmware_version"], [0, 5, 1, "c.mcc128_info", "mcc128_info"], [0, 5, 1, "c.mcc128_is_open", "mcc128_is_open"], [0, 5, 1, "c.mcc128_open", "mcc128_open"], [0, 5, 1, "c.mcc128_serial", "mcc128_serial"], [0, 5, 1, "c.mcc128_trigger_mode", "mcc128_trigger_mode"], [0, 5, 1, "c.mcc134_a_in_read", "mcc134_a_in_read"], [0, 5, 1, "c.mcc134_calibration_coefficient_read", "mcc134_calibration_coefficient_read"], [0, 5, 1, "c.mcc134_calibration_coefficient_write", "mcc134_calibration_coefficient_write"], [0, 5, 1, "c.mcc134_calibration_date", "mcc134_calibration_date"], [0, 5, 1, "c.mcc134_cjc_read", "mcc134_cjc_read"], [0, 5, 1, "c.mcc134_close", "mcc134_close"], [0, 5, 1, "c.mcc134_info", "mcc134_info"], [0, 5, 1, "c.mcc134_is_open", "mcc134_is_open"], [0, 5, 1, "c.mcc134_open", "mcc134_open"], [0, 5, 1, "c.mcc134_serial", "mcc134_serial"], [0, 5, 1, "c.mcc134_t_in_read", "mcc134_t_in_read"], [0, 5, 1, "c.mcc134_tc_type_read", "mcc134_tc_type_read"], [0, 5, 1, "c.mcc134_tc_type_write", "mcc134_tc_type_write"], [0, 5, 1, "c.mcc134_update_interval_read", "mcc134_update_interval_read"], [0, 5, 1, "c.mcc134_update_interval_write", "mcc134_update_interval_write"], [0, 5, 1, "c.mcc152_a_out_write", "mcc152_a_out_write"], [0, 5, 1, "c.mcc152_a_out_write_all", "mcc152_a_out_write_all"], [0, 5, 1, "c.mcc152_close", "mcc152_close"], [0, 5, 1, "c.mcc152_dio_config_read_bit", "mcc152_dio_config_read_bit"], [0, 5, 1, "c.mcc152_dio_config_read_port", "mcc152_dio_config_read_port"], [0, 5, 1, "c.mcc152_dio_config_write_bit", "mcc152_dio_config_write_bit"], [0, 5, 1, "c.mcc152_dio_config_write_port", "mcc152_dio_config_write_port"], [0, 5, 1, "c.mcc152_dio_input_read_bit", "mcc152_dio_input_read_bit"], [0, 5, 1, "c.mcc152_dio_input_read_port", "mcc152_dio_input_read_port"], [0, 5, 1, "c.mcc152_dio_int_status_read_bit", "mcc152_dio_int_status_read_bit"], [0, 5, 1, "c.mcc152_dio_int_status_read_port", "mcc152_dio_int_status_read_port"], [0, 5, 1, "c.mcc152_dio_output_read_bit", "mcc152_dio_output_read_bit"], [0, 5, 1, "c.mcc152_dio_output_read_port", "mcc152_dio_output_read_port"], [0, 5, 1, "c.mcc152_dio_output_write_bit", "mcc152_dio_output_write_bit"], [0, 5, 1, "c.mcc152_dio_output_write_port", "mcc152_dio_output_write_port"], [0, 5, 1, "c.mcc152_dio_reset", "mcc152_dio_reset"], [0, 5, 1, "c.mcc152_info", "mcc152_info"], [0, 5, 1, "c.mcc152_is_open", "mcc152_is_open"], [0, 5, 1, "c.mcc152_open", "mcc152_open"], [0, 5, 1, "c.mcc152_serial", "mcc152_serial"], [0, 5, 1, "c.mcc172_a_in_clock_config_read", "mcc172_a_in_clock_config_read"], [0, 5, 1, "c.mcc172_a_in_clock_config_write", "mcc172_a_in_clock_config_write"], [0, 5, 1, "c.mcc172_a_in_scan_buffer_size", "mcc172_a_in_scan_buffer_size"], [0, 5, 1, "c.mcc172_a_in_scan_channel_count", "mcc172_a_in_scan_channel_count"], [0, 5, 1, "c.mcc172_a_in_scan_cleanup", "mcc172_a_in_scan_cleanup"], [0, 5, 1, "c.mcc172_a_in_scan_read", "mcc172_a_in_scan_read"], [0, 5, 1, "c.mcc172_a_in_scan_start", "mcc172_a_in_scan_start"], [0, 5, 1, "c.mcc172_a_in_scan_status", "mcc172_a_in_scan_status"], [0, 5, 1, "c.mcc172_a_in_scan_stop", "mcc172_a_in_scan_stop"], [0, 5, 1, "c.mcc172_a_in_sensitivity_read", "mcc172_a_in_sensitivity_read"], [0, 5, 1, "c.mcc172_a_in_sensitivity_write", "mcc172_a_in_sensitivity_write"], [0, 5, 1, "c.mcc172_blink_led", "mcc172_blink_led"], [0, 5, 1, "c.mcc172_calibration_coefficient_read", "mcc172_calibration_coefficient_read"], [0, 5, 1, "c.mcc172_calibration_coefficient_write", "mcc172_calibration_coefficient_write"], [0, 5, 1, "c.mcc172_calibration_date", "mcc172_calibration_date"], [0, 5, 1, "c.mcc172_close", "mcc172_close"], [0, 5, 1, "c.mcc172_firmware_version", "mcc172_firmware_version"], [0, 5, 1, "c.mcc172_iepe_config_read", "mcc172_iepe_config_read"], [0, 5, 1, "c.mcc172_iepe_config_write", "mcc172_iepe_config_write"], [0, 5, 1, "c.mcc172_info", "mcc172_info"], [0, 5, 1, "c.mcc172_is_open", "mcc172_is_open"], [0, 5, 1, "c.mcc172_open", "mcc172_open"], [0, 5, 1, "c.mcc172_serial", "mcc172_serial"], [1, 5, 1, "c.mcc172_test_signals_read", "mcc172_test_signals_read"], [1, 5, 1, "c.mcc172_test_signals_write", "mcc172_test_signals_write"], [0, 5, 1, "c.mcc172_trigger_config", "mcc172_trigger_config"]], "AnalogInputMode": [[0, 0, 1, "c.AnalogInputMode.A_IN_MODE_DIFF", "A_IN_MODE_DIFF"], [0, 0, 1, "c.AnalogInputMode.A_IN_MODE_SE", "A_IN_MODE_SE"]], "AnalogInputRange": [[0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_10V", "A_IN_RANGE_BIP_10V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_1V", "A_IN_RANGE_BIP_1V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_2V", "A_IN_RANGE_BIP_2V"], [0, 0, 1, "c.AnalogInputRange.A_IN_RANGE_BIP_5V", "A_IN_RANGE_BIP_5V"]], "DIOConfigItem": [[0, 0, 1, "c.DIOConfigItem.DIO_DIRECTION", "DIO_DIRECTION"], [0, 0, 1, "c.DIOConfigItem.DIO_INPUT_INVERT", "DIO_INPUT_INVERT"], [0, 0, 1, "c.DIOConfigItem.DIO_INPUT_LATCH", "DIO_INPUT_LATCH"], [0, 0, 1, "c.DIOConfigItem.DIO_INT_MASK", "DIO_INT_MASK"], [0, 0, 1, "c.DIOConfigItem.DIO_OUTPUT_TYPE", "DIO_OUTPUT_TYPE"], [0, 0, 1, "c.DIOConfigItem.DIO_PULL_CONFIG", "DIO_PULL_CONFIG"], [0, 0, 1, "c.DIOConfigItem.DIO_PULL_ENABLE", "DIO_PULL_ENABLE"]], "HatIDs": [[0, 0, 1, "c.HatIDs.HAT_ID_ANY", "HAT_ID_ANY"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_118", "HAT_ID_MCC_118"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_118_BOOTLOADER", "HAT_ID_MCC_118_BOOTLOADER"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_128", "HAT_ID_MCC_128"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_134", "HAT_ID_MCC_134"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_152", "HAT_ID_MCC_152"], [0, 0, 1, "c.HatIDs.HAT_ID_MCC_172", "HAT_ID_MCC_172"]], "HatInfo": [[0, 4, 1, "c.HatInfo.address", "address"], [0, 4, 1, "c.HatInfo.id", "id"], [0, 4, 1, "c.HatInfo.product_name", "product_name"], [0, 4, 1, "c.HatInfo.version", "version"]], "MCC118DeviceInfo": [[0, 4, 1, "c.MCC118DeviceInfo.AI_MAX_CODE", "AI_MAX_CODE"], [0, 4, 1, "c.MCC118DeviceInfo.AI_MAX_RANGE", "AI_MAX_RANGE"], [0, 4, 1, "c.MCC118DeviceInfo.AI_MAX_VOLTAGE", "AI_MAX_VOLTAGE"], [0, 4, 1, "c.MCC118DeviceInfo.AI_MIN_CODE", "AI_MIN_CODE"], [0, 4, 1, "c.MCC118DeviceInfo.AI_MIN_RANGE", "AI_MIN_RANGE"], [0, 4, 1, "c.MCC118DeviceInfo.AI_MIN_VOLTAGE", "AI_MIN_VOLTAGE"], [0, 4, 1, "c.MCC118DeviceInfo.NUM_AI_CHANNELS", "NUM_AI_CHANNELS"]], "MCC128DeviceInfo": [[0, 4, 1, "c.MCC128DeviceInfo.AI_MAX_CODE", "AI_MAX_CODE"], [0, 4, 1, "c.MCC128DeviceInfo.AI_MAX_RANGE", "AI_MAX_RANGE"], [0, 4, 1, "c.MCC128DeviceInfo.AI_MAX_VOLTAGE", "AI_MAX_VOLTAGE"], [0, 4, 1, "c.MCC128DeviceInfo.AI_MIN_CODE", "AI_MIN_CODE"], [0, 4, 1, "c.MCC128DeviceInfo.AI_MIN_RANGE", "AI_MIN_RANGE"], [0, 4, 1, "c.MCC128DeviceInfo.AI_MIN_VOLTAGE", "AI_MIN_VOLTAGE"], [0, 4, 1, "c.MCC128DeviceInfo.NUM_AI_CHANNELS", "NUM_AI_CHANNELS"], [0, 4, 1, "c.MCC128DeviceInfo.NUM_AI_MODES", "NUM_AI_MODES"], [0, 4, 1, "c.MCC128DeviceInfo.NUM_AI_RANGES", "NUM_AI_RANGES"]], "MCC134DeviceInfo": [[0, 4, 1, "c.MCC134DeviceInfo.AI_MAX_CODE", "AI_MAX_CODE"], [0, 4, 1, "c.MCC134DeviceInfo.AI_MAX_RANGE", "AI_MAX_RANGE"], [0, 4, 1, "c.MCC134DeviceInfo.AI_MAX_VOLTAGE", "AI_MAX_VOLTAGE"], [0, 4, 1, "c.MCC134DeviceInfo.AI_MIN_CODE", "AI_MIN_CODE"], [0, 4, 1, "c.MCC134DeviceInfo.AI_MIN_RANGE", "AI_MIN_RANGE"], [0, 4, 1, "c.MCC134DeviceInfo.AI_MIN_VOLTAGE", "AI_MIN_VOLTAGE"], [0, 4, 1, "c.MCC134DeviceInfo.NUM_AI_CHANNELS", "NUM_AI_CHANNELS"]], "MCC152DeviceInfo": [[0, 4, 1, "c.MCC152DeviceInfo.AO_MAX_CODE", "AO_MAX_CODE"], [0, 4, 1, "c.MCC152DeviceInfo.AO_MAX_RANGE", "AO_MAX_RANGE"], [0, 4, 1, "c.MCC152DeviceInfo.AO_MAX_VOLTAGE", "AO_MAX_VOLTAGE"], [0, 4, 1, "c.MCC152DeviceInfo.AO_MIN_CODE", "AO_MIN_CODE"], [0, 4, 1, "c.MCC152DeviceInfo.AO_MIN_RANGE", "AO_MIN_RANGE"], [0, 4, 1, "c.MCC152DeviceInfo.AO_MIN_VOLTAGE", "AO_MIN_VOLTAGE"], [0, 4, 1, "c.MCC152DeviceInfo.NUM_AO_CHANNELS", "NUM_AO_CHANNELS"], [0, 4, 1, "c.MCC152DeviceInfo.NUM_DIO_CHANNELS", "NUM_DIO_CHANNELS"]], "MCC172DeviceInfo": [[0, 4, 1, "c.MCC172DeviceInfo.AI_MAX_CODE", "AI_MAX_CODE"], [0, 4, 1, "c.MCC172DeviceInfo.AI_MAX_RANGE", "AI_MAX_RANGE"], [0, 4, 1, "c.MCC172DeviceInfo.AI_MAX_VOLTAGE", "AI_MAX_VOLTAGE"], [0, 4, 1, "c.MCC172DeviceInfo.AI_MIN_CODE", "AI_MIN_CODE"], [0, 4, 1, "c.MCC172DeviceInfo.AI_MIN_RANGE", "AI_MIN_RANGE"], [0, 4, 1, "c.MCC172DeviceInfo.AI_MIN_VOLTAGE", "AI_MIN_VOLTAGE"], [0, 4, 1, "c.MCC172DeviceInfo.NUM_AI_CHANNELS", "NUM_AI_CHANNELS"]], "ResultCode": [[0, 0, 1, "c.ResultCode.RESULT_BAD_PARAMETER", "RESULT_BAD_PARAMETER"], [0, 0, 1, "c.ResultCode.RESULT_BUSY", "RESULT_BUSY"], [0, 0, 1, "c.ResultCode.RESULT_COMMS_FAILURE", "RESULT_COMMS_FAILURE"], [0, 0, 1, "c.ResultCode.RESULT_INVALID_DEVICE", "RESULT_INVALID_DEVICE"], [0, 0, 1, "c.ResultCode.RESULT_LOCK_TIMEOUT", "RESULT_LOCK_TIMEOUT"], [0, 0, 1, "c.ResultCode.RESULT_RESOURCE_UNAVAIL", "RESULT_RESOURCE_UNAVAIL"], [0, 0, 1, "c.ResultCode.RESULT_SUCCESS", "RESULT_SUCCESS"], [0, 0, 1, "c.ResultCode.RESULT_TIMEOUT", "RESULT_TIMEOUT"], [0, 0, 1, "c.ResultCode.RESULT_UNDEFINED", "RESULT_UNDEFINED"]], "SourceType": [[0, 0, 1, "c.SourceType.SOURCE_LOCAL", "SOURCE_LOCAL"], [0, 0, 1, "c.SourceType.SOURCE_MASTER", "SOURCE_MASTER"], [0, 0, 1, "c.SourceType.SOURCE_SLAVE", "SOURCE_SLAVE"]], "TcTypes": [[0, 0, 1, "c.TcTypes.TC_DISABLED", "TC_DISABLED"], [0, 0, 1, "c.TcTypes.TC_TYPE_B", "TC_TYPE_B"], [0, 0, 1, "c.TcTypes.TC_TYPE_E", "TC_TYPE_E"], [0, 0, 1, "c.TcTypes.TC_TYPE_J", "TC_TYPE_J"], [0, 0, 1, "c.TcTypes.TC_TYPE_K", "TC_TYPE_K"], [0, 0, 1, "c.TcTypes.TC_TYPE_N", "TC_TYPE_N"], [0, 0, 1, "c.TcTypes.TC_TYPE_R", "TC_TYPE_R"], [0, 0, 1, "c.TcTypes.TC_TYPE_S", "TC_TYPE_S"], [0, 0, 1, "c.TcTypes.TC_TYPE_T", "TC_TYPE_T"]], "TriggerMode": [[0, 0, 1, "c.TriggerMode.TRIG_ACTIVE_HIGH", "TRIG_ACTIVE_HIGH"], [0, 0, 1, "c.TriggerMode.TRIG_ACTIVE_LOW", "TRIG_ACTIVE_LOW"], [0, 0, 1, "c.TriggerMode.TRIG_FALLING_EDGE", "TRIG_FALLING_EDGE"], [0, 0, 1, "c.TriggerMode.TRIG_RISING_EDGE", "TRIG_RISING_EDGE"]], "hat_error_message": [[0, 6, 1, "c.hat_error_message", "result"]], "hat_interrupt_callback_enable": [[0, 6, 1, "c.hat_interrupt_callback_enable", "function"], [0, 6, 1, "c.hat_interrupt_callback_enable", "user_data"]], "hat_list": [[0, 6, 1, "c.hat_list", "filter_id"], [0, 6, 1, "c.hat_list", "list"]], "hat_wait_for_interrupt": [[0, 6, 1, "c.hat_wait_for_interrupt", "timeout"]], "mcc118_a_in_read": [[0, 6, 1, "c.mcc118_a_in_read", "address"], [0, 6, 1, "c.mcc118_a_in_read", "channel"], [0, 6, 1, "c.mcc118_a_in_read", "options"], [0, 6, 1, "c.mcc118_a_in_read", "value"]], "mcc118_a_in_scan_actual_rate": [[0, 6, 1, "c.mcc118_a_in_scan_actual_rate", "actual_sample_rate_per_channel"], [0, 6, 1, "c.mcc118_a_in_scan_actual_rate", "channel_count"], [0, 6, 1, "c.mcc118_a_in_scan_actual_rate", "sample_rate_per_channel"]], "mcc118_a_in_scan_buffer_size": [[0, 6, 1, "c.mcc118_a_in_scan_buffer_size", "address"], [0, 6, 1, "c.mcc118_a_in_scan_buffer_size", "buffer_size_samples"]], "mcc118_a_in_scan_channel_count": [[0, 6, 1, "c.mcc118_a_in_scan_channel_count", "address"]], "mcc118_a_in_scan_cleanup": [[0, 6, 1, "c.mcc118_a_in_scan_cleanup", "address"]], "mcc118_a_in_scan_read": [[0, 6, 1, "c.mcc118_a_in_scan_read", "address"], [0, 6, 1, "c.mcc118_a_in_scan_read", "buffer"], [0, 6, 1, "c.mcc118_a_in_scan_read", "buffer_size_samples"], [0, 6, 1, "c.mcc118_a_in_scan_read", "samples_per_channel"], [0, 6, 1, "c.mcc118_a_in_scan_read", "samples_read_per_channel"], [0, 6, 1, "c.mcc118_a_in_scan_read", "status"], [0, 6, 1, "c.mcc118_a_in_scan_read", "timeout"]], "mcc118_a_in_scan_start": [[0, 6, 1, "c.mcc118_a_in_scan_start", "address"], [0, 6, 1, "c.mcc118_a_in_scan_start", "channel_mask"], [0, 6, 1, "c.mcc118_a_in_scan_start", "options"], [0, 6, 1, "c.mcc118_a_in_scan_start", "sample_rate_per_channel"], [0, 6, 1, "c.mcc118_a_in_scan_start", "samples_per_channel"]], "mcc118_a_in_scan_status": [[0, 6, 1, "c.mcc118_a_in_scan_status", "address"], [0, 6, 1, "c.mcc118_a_in_scan_status", "samples_per_channel"], [0, 6, 1, "c.mcc118_a_in_scan_status", "status"]], "mcc118_a_in_scan_stop": [[0, 6, 1, "c.mcc118_a_in_scan_stop", "address"]], "mcc118_blink_led": [[0, 6, 1, "c.mcc118_blink_led", "address"], [0, 6, 1, "c.mcc118_blink_led", "count"]], "mcc118_calibration_coefficient_read": [[0, 6, 1, "c.mcc118_calibration_coefficient_read", "address"], [0, 6, 1, "c.mcc118_calibration_coefficient_read", "channel"], [0, 6, 1, "c.mcc118_calibration_coefficient_read", "offset"], [0, 6, 1, "c.mcc118_calibration_coefficient_read", "slope"]], "mcc118_calibration_coefficient_write": [[0, 6, 1, "c.mcc118_calibration_coefficient_write", "address"], [0, 6, 1, "c.mcc118_calibration_coefficient_write", "channel"], [0, 6, 1, "c.mcc118_calibration_coefficient_write", "offset"], [0, 6, 1, "c.mcc118_calibration_coefficient_write", "slope"]], "mcc118_calibration_date": [[0, 6, 1, "c.mcc118_calibration_date", "address"], [0, 6, 1, "c.mcc118_calibration_date", "buffer"]], "mcc118_close": [[0, 6, 1, "c.mcc118_close", "address"]], "mcc118_firmware_version": [[0, 6, 1, "c.mcc118_firmware_version", "address"], [0, 6, 1, "c.mcc118_firmware_version", "boot_version"], [0, 6, 1, "c.mcc118_firmware_version", "version"]], "mcc118_is_open": [[0, 6, 1, "c.mcc118_is_open", "address"]], "mcc118_open": [[0, 6, 1, "c.mcc118_open", "address"]], "mcc118_serial": [[0, 6, 1, "c.mcc118_serial", "address"], [0, 6, 1, "c.mcc118_serial", "buffer"]], "mcc118_test_clock": [[1, 6, 1, "c.mcc118_test_clock", "address"], [1, 6, 1, "c.mcc118_test_clock", "mode"], [1, 6, 1, "c.mcc118_test_clock", "value"]], "mcc118_test_trigger": [[1, 6, 1, "c.mcc118_test_trigger", "address"], [1, 6, 1, "c.mcc118_test_trigger", "state"]], "mcc118_trigger_mode": [[0, 6, 1, "c.mcc118_trigger_mode", "address"], [0, 6, 1, "c.mcc118_trigger_mode", "mode"]], "mcc128_a_in_mode_read": [[0, 6, 1, "c.mcc128_a_in_mode_read", "address"], [0, 6, 1, "c.mcc128_a_in_mode_read", "mode"]], "mcc128_a_in_mode_write": [[0, 6, 1, "c.mcc128_a_in_mode_write", "address"], [0, 6, 1, "c.mcc128_a_in_mode_write", "mode"]], "mcc128_a_in_range_read": [[0, 6, 1, "c.mcc128_a_in_range_read", "address"], [0, 6, 1, "c.mcc128_a_in_range_read", "range"]], "mcc128_a_in_range_write": [[0, 6, 1, "c.mcc128_a_in_range_write", "address"], [0, 6, 1, "c.mcc128_a_in_range_write", "range"]], "mcc128_a_in_read": [[0, 6, 1, "c.mcc128_a_in_read", "address"], [0, 6, 1, "c.mcc128_a_in_read", "channel"], [0, 6, 1, "c.mcc128_a_in_read", "options"], [0, 6, 1, "c.mcc128_a_in_read", "value"]], "mcc128_a_in_scan_actual_rate": [[0, 6, 1, "c.mcc128_a_in_scan_actual_rate", "actual_sample_rate_per_channel"], [0, 6, 1, "c.mcc128_a_in_scan_actual_rate", "channel_count"], [0, 6, 1, "c.mcc128_a_in_scan_actual_rate", "sample_rate_per_channel"]], "mcc128_a_in_scan_buffer_size": [[0, 6, 1, "c.mcc128_a_in_scan_buffer_size", "address"], [0, 6, 1, "c.mcc128_a_in_scan_buffer_size", "buffer_size_samples"]], "mcc128_a_in_scan_channel_count": [[0, 6, 1, "c.mcc128_a_in_scan_channel_count", "address"]], "mcc128_a_in_scan_cleanup": [[0, 6, 1, "c.mcc128_a_in_scan_cleanup", "address"]], "mcc128_a_in_scan_read": [[0, 6, 1, "c.mcc128_a_in_scan_read", "address"], [0, 6, 1, "c.mcc128_a_in_scan_read", "buffer"], [0, 6, 1, "c.mcc128_a_in_scan_read", "buffer_size_samples"], [0, 6, 1, "c.mcc128_a_in_scan_read", "samples_per_channel"], [0, 6, 1, "c.mcc128_a_in_scan_read", "samples_read_per_channel"], [0, 6, 1, "c.mcc128_a_in_scan_read", "status"], [0, 6, 1, "c.mcc128_a_in_scan_read", "timeout"]], "mcc128_a_in_scan_start": [[0, 6, 1, "c.mcc128_a_in_scan_start", "address"], [0, 6, 1, "c.mcc128_a_in_scan_start", "channel_mask"], [0, 6, 1, "c.mcc128_a_in_scan_start", "options"], [0, 6, 1, "c.mcc128_a_in_scan_start", "sample_rate_per_channel"], [0, 6, 1, "c.mcc128_a_in_scan_start", "samples_per_channel"]], "mcc128_a_in_scan_status": [[0, 6, 1, "c.mcc128_a_in_scan_status", "address"], [0, 6, 1, "c.mcc128_a_in_scan_status", "samples_per_channel"], [0, 6, 1, "c.mcc128_a_in_scan_status", "status"]], "mcc128_a_in_scan_stop": [[0, 6, 1, "c.mcc128_a_in_scan_stop", "address"]], "mcc128_blink_led": [[0, 6, 1, "c.mcc128_blink_led", "address"], [0, 6, 1, "c.mcc128_blink_led", "count"]], "mcc128_calibration_coefficient_read": [[0, 6, 1, "c.mcc128_calibration_coefficient_read", "address"], [0, 6, 1, "c.mcc128_calibration_coefficient_read", "offset"], [0, 6, 1, "c.mcc128_calibration_coefficient_read", "range"], [0, 6, 1, "c.mcc128_calibration_coefficient_read", "slope"]], "mcc128_calibration_coefficient_write": [[0, 6, 1, "c.mcc128_calibration_coefficient_write", "address"], [0, 6, 1, "c.mcc128_calibration_coefficient_write", "offset"], [0, 6, 1, "c.mcc128_calibration_coefficient_write", "range"], [0, 6, 1, "c.mcc128_calibration_coefficient_write", "slope"]], "mcc128_calibration_date": [[0, 6, 1, "c.mcc128_calibration_date", "address"], [0, 6, 1, "c.mcc128_calibration_date", "buffer"]], "mcc128_close": [[0, 6, 1, "c.mcc128_close", "address"]], "mcc128_firmware_version": [[0, 6, 1, "c.mcc128_firmware_version", "address"], [0, 6, 1, "c.mcc128_firmware_version", "version"]], "mcc128_is_open": [[0, 6, 1, "c.mcc128_is_open", "address"]], "mcc128_open": [[0, 6, 1, "c.mcc128_open", "address"]], "mcc128_serial": [[0, 6, 1, "c.mcc128_serial", "address"], [0, 6, 1, "c.mcc128_serial", "buffer"]], "mcc128_trigger_mode": [[0, 6, 1, "c.mcc128_trigger_mode", "address"], [0, 6, 1, "c.mcc128_trigger_mode", "mode"]], "mcc134_a_in_read": [[0, 6, 1, "c.mcc134_a_in_read", "address"], [0, 6, 1, "c.mcc134_a_in_read", "channel"], [0, 6, 1, "c.mcc134_a_in_read", "options"], [0, 6, 1, "c.mcc134_a_in_read", "value"]], "mcc134_calibration_coefficient_read": [[0, 6, 1, "c.mcc134_calibration_coefficient_read", "address"], [0, 6, 1, "c.mcc134_calibration_coefficient_read", "channel"], [0, 6, 1, "c.mcc134_calibration_coefficient_read", "offset"], [0, 6, 1, "c.mcc134_calibration_coefficient_read", "slope"]], "mcc134_calibration_coefficient_write": [[0, 6, 1, "c.mcc134_calibration_coefficient_write", "address"], [0, 6, 1, "c.mcc134_calibration_coefficient_write", "channel"], [0, 6, 1, "c.mcc134_calibration_coefficient_write", "offset"], [0, 6, 1, "c.mcc134_calibration_coefficient_write", "slope"]], "mcc134_calibration_date": [[0, 6, 1, "c.mcc134_calibration_date", "address"], [0, 6, 1, "c.mcc134_calibration_date", "buffer"]], "mcc134_cjc_read": [[0, 6, 1, "c.mcc134_cjc_read", "address"], [0, 6, 1, "c.mcc134_cjc_read", "channel"], [0, 6, 1, "c.mcc134_cjc_read", "value"]], "mcc134_close": [[0, 6, 1, "c.mcc134_close", "address"]], "mcc134_is_open": [[0, 6, 1, "c.mcc134_is_open", "address"]], "mcc134_open": [[0, 6, 1, "c.mcc134_open", "address"]], "mcc134_serial": [[0, 6, 1, "c.mcc134_serial", "address"], [0, 6, 1, "c.mcc134_serial", "buffer"]], "mcc134_t_in_read": [[0, 6, 1, "c.mcc134_t_in_read", "address"], [0, 6, 1, "c.mcc134_t_in_read", "channel"], [0, 6, 1, "c.mcc134_t_in_read", "value"]], "mcc134_tc_type_read": [[0, 6, 1, "c.mcc134_tc_type_read", "address"], [0, 6, 1, "c.mcc134_tc_type_read", "channel"], [0, 6, 1, "c.mcc134_tc_type_read", "type"]], "mcc134_tc_type_write": [[0, 6, 1, "c.mcc134_tc_type_write", "address"], [0, 6, 1, "c.mcc134_tc_type_write", "channel"], [0, 6, 1, "c.mcc134_tc_type_write", "type"]], "mcc134_update_interval_read": [[0, 6, 1, "c.mcc134_update_interval_read", "address"], [0, 6, 1, "c.mcc134_update_interval_read", "interval"]], "mcc134_update_interval_write": [[0, 6, 1, "c.mcc134_update_interval_write", "address"], [0, 6, 1, "c.mcc134_update_interval_write", "interval"]], "mcc152_a_out_write": [[0, 6, 1, "c.mcc152_a_out_write", "address"], [0, 6, 1, "c.mcc152_a_out_write", "channel"], [0, 6, 1, "c.mcc152_a_out_write", "options"], [0, 6, 1, "c.mcc152_a_out_write", "value"]], "mcc152_a_out_write_all": [[0, 6, 1, "c.mcc152_a_out_write_all", "address"], [0, 6, 1, "c.mcc152_a_out_write_all", "options"], [0, 6, 1, "c.mcc152_a_out_write_all", "values"]], "mcc152_close": [[0, 6, 1, "c.mcc152_close", "address"]], "mcc152_dio_config_read_bit": [[0, 6, 1, "c.mcc152_dio_config_read_bit", "address"], [0, 6, 1, "c.mcc152_dio_config_read_bit", "channel"], [0, 6, 1, "c.mcc152_dio_config_read_bit", "item"], [0, 6, 1, "c.mcc152_dio_config_read_bit", "value"]], "mcc152_dio_config_read_port": [[0, 6, 1, "c.mcc152_dio_config_read_port", "address"], [0, 6, 1, "c.mcc152_dio_config_read_port", "item"], [0, 6, 1, "c.mcc152_dio_config_read_port", "value"]], "mcc152_dio_config_write_bit": [[0, 6, 1, "c.mcc152_dio_config_write_bit", "address"], [0, 6, 1, "c.mcc152_dio_config_write_bit", "channel"], [0, 6, 1, "c.mcc152_dio_config_write_bit", "item"], [0, 6, 1, "c.mcc152_dio_config_write_bit", "value"]], "mcc152_dio_config_write_port": [[0, 6, 1, "c.mcc152_dio_config_write_port", "address"], [0, 6, 1, "c.mcc152_dio_config_write_port", "item"], [0, 6, 1, "c.mcc152_dio_config_write_port", "value"]], "mcc152_dio_input_read_bit": [[0, 6, 1, "c.mcc152_dio_input_read_bit", "address"], [0, 6, 1, "c.mcc152_dio_input_read_bit", "channel"], [0, 6, 1, "c.mcc152_dio_input_read_bit", "value"]], "mcc152_dio_input_read_port": [[0, 6, 1, "c.mcc152_dio_input_read_port", "address"], [0, 6, 1, "c.mcc152_dio_input_read_port", "value"]], "mcc152_dio_int_status_read_bit": [[0, 6, 1, "c.mcc152_dio_int_status_read_bit", "address"], [0, 6, 1, "c.mcc152_dio_int_status_read_bit", "channel"], [0, 6, 1, "c.mcc152_dio_int_status_read_bit", "value"]], "mcc152_dio_int_status_read_port": [[0, 6, 1, "c.mcc152_dio_int_status_read_port", "address"], [0, 6, 1, "c.mcc152_dio_int_status_read_port", "value"]], "mcc152_dio_output_read_bit": [[0, 6, 1, "c.mcc152_dio_output_read_bit", "address"], [0, 6, 1, "c.mcc152_dio_output_read_bit", "channel"], [0, 6, 1, "c.mcc152_dio_output_read_bit", "value"]], "mcc152_dio_output_read_port": [[0, 6, 1, "c.mcc152_dio_output_read_port", "address"], [0, 6, 1, "c.mcc152_dio_output_read_port", "value"]], "mcc152_dio_output_write_bit": [[0, 6, 1, "c.mcc152_dio_output_write_bit", "address"], [0, 6, 1, "c.mcc152_dio_output_write_bit", "channel"], [0, 6, 1, "c.mcc152_dio_output_write_bit", "value"]], "mcc152_dio_output_write_port": [[0, 6, 1, "c.mcc152_dio_output_write_port", "address"], [0, 6, 1, "c.mcc152_dio_output_write_port", "value"]], "mcc152_dio_reset": [[0, 6, 1, "c.mcc152_dio_reset", "address"]], "mcc152_is_open": [[0, 6, 1, "c.mcc152_is_open", "address"]], "mcc152_open": [[0, 6, 1, "c.mcc152_open", "address"]], "mcc152_serial": [[0, 6, 1, "c.mcc152_serial", "address"], [0, 6, 1, "c.mcc152_serial", "buffer"]], "mcc172_a_in_clock_config_read": [[0, 6, 1, "c.mcc172_a_in_clock_config_read", "address"], [0, 6, 1, "c.mcc172_a_in_clock_config_read", "clock_source"], [0, 6, 1, "c.mcc172_a_in_clock_config_read", "sample_rate_per_channel"], [0, 6, 1, "c.mcc172_a_in_clock_config_read", "synced"]], "mcc172_a_in_clock_config_write": [[0, 6, 1, "c.mcc172_a_in_clock_config_write", "address"], [0, 6, 1, "c.mcc172_a_in_clock_config_write", "clock_source"], [0, 6, 1, "c.mcc172_a_in_clock_config_write", "sample_rate_per_channel"]], "mcc172_a_in_scan_buffer_size": [[0, 6, 1, "c.mcc172_a_in_scan_buffer_size", "address"], [0, 6, 1, "c.mcc172_a_in_scan_buffer_size", "buffer_size_samples"]], "mcc172_a_in_scan_channel_count": [[0, 6, 1, "c.mcc172_a_in_scan_channel_count", "address"]], "mcc172_a_in_scan_cleanup": [[0, 6, 1, "c.mcc172_a_in_scan_cleanup", "address"]], "mcc172_a_in_scan_read": [[0, 6, 1, "c.mcc172_a_in_scan_read", "address"], [0, 6, 1, "c.mcc172_a_in_scan_read", "buffer"], [0, 6, 1, "c.mcc172_a_in_scan_read", "buffer_size_samples"], [0, 6, 1, "c.mcc172_a_in_scan_read", "samples_per_channel"], [0, 6, 1, "c.mcc172_a_in_scan_read", "samples_read_per_channel"], [0, 6, 1, "c.mcc172_a_in_scan_read", "status"], [0, 6, 1, "c.mcc172_a_in_scan_read", "timeout"]], "mcc172_a_in_scan_start": [[0, 6, 1, "c.mcc172_a_in_scan_start", "address"], [0, 6, 1, "c.mcc172_a_in_scan_start", "channel_mask"], [0, 6, 1, "c.mcc172_a_in_scan_start", "options"], [0, 6, 1, "c.mcc172_a_in_scan_start", "samples_per_channel"]], "mcc172_a_in_scan_status": [[0, 6, 1, "c.mcc172_a_in_scan_status", "address"], [0, 6, 1, "c.mcc172_a_in_scan_status", "samples_per_channel"], [0, 6, 1, "c.mcc172_a_in_scan_status", "status"]], "mcc172_a_in_scan_stop": [[0, 6, 1, "c.mcc172_a_in_scan_stop", "address"]], "mcc172_a_in_sensitivity_read": [[0, 6, 1, "c.mcc172_a_in_sensitivity_read", "address"], [0, 6, 1, "c.mcc172_a_in_sensitivity_read", "channel"], [0, 6, 1, "c.mcc172_a_in_sensitivity_read", "value"]], "mcc172_a_in_sensitivity_write": [[0, 6, 1, "c.mcc172_a_in_sensitivity_write", "address"], [0, 6, 1, "c.mcc172_a_in_sensitivity_write", "channel"], [0, 6, 1, "c.mcc172_a_in_sensitivity_write", "value"]], "mcc172_blink_led": [[0, 6, 1, "c.mcc172_blink_led", "address"], [0, 6, 1, "c.mcc172_blink_led", "count"]], "mcc172_calibration_coefficient_read": [[0, 6, 1, "c.mcc172_calibration_coefficient_read", "address"], [0, 6, 1, "c.mcc172_calibration_coefficient_read", "channel"], [0, 6, 1, "c.mcc172_calibration_coefficient_read", "offset"], [0, 6, 1, "c.mcc172_calibration_coefficient_read", "slope"]], "mcc172_calibration_coefficient_write": [[0, 6, 1, "c.mcc172_calibration_coefficient_write", "address"], [0, 6, 1, "c.mcc172_calibration_coefficient_write", "channel"], [0, 6, 1, "c.mcc172_calibration_coefficient_write", "offset"], [0, 6, 1, "c.mcc172_calibration_coefficient_write", "slope"]], "mcc172_calibration_date": [[0, 6, 1, "c.mcc172_calibration_date", "address"], [0, 6, 1, "c.mcc172_calibration_date", "buffer"]], "mcc172_close": [[0, 6, 1, "c.mcc172_close", "address"]], "mcc172_firmware_version": [[0, 6, 1, "c.mcc172_firmware_version", "address"], [0, 6, 1, "c.mcc172_firmware_version", "version"]], "mcc172_iepe_config_read": [[0, 6, 1, "c.mcc172_iepe_config_read", "address"], [0, 6, 1, "c.mcc172_iepe_config_read", "channel"], [0, 6, 1, "c.mcc172_iepe_config_read", "config"]], "mcc172_iepe_config_write": [[0, 6, 1, "c.mcc172_iepe_config_write", "address"], [0, 6, 1, "c.mcc172_iepe_config_write", "channel"], [0, 6, 1, "c.mcc172_iepe_config_write", "config"]], "mcc172_is_open": [[0, 6, 1, "c.mcc172_is_open", "address"]], "mcc172_open": [[0, 6, 1, "c.mcc172_open", "address"]], "mcc172_serial": [[0, 6, 1, "c.mcc172_serial", "address"], [0, 6, 1, "c.mcc172_serial", "buffer"]], "mcc172_test_signals_read": [[1, 6, 1, "c.mcc172_test_signals_read", "address"], [1, 6, 1, "c.mcc172_test_signals_read", "clock"], [1, 6, 1, "c.mcc172_test_signals_read", "sync"], [1, 6, 1, "c.mcc172_test_signals_read", "trigger"]], "mcc172_test_signals_write": [[1, 6, 1, "c.mcc172_test_signals_write", "address"], [1, 6, 1, "c.mcc172_test_signals_write", "clock"], [1, 6, 1, "c.mcc172_test_signals_write", "mode"], [1, 6, 1, "c.mcc172_test_signals_write", "sync"]], "mcc172_trigger_config": [[0, 6, 1, "c.mcc172_trigger_config", "address"], [0, 6, 1, "c.mcc172_trigger_config", "mode"], [0, 6, 1, "c.mcc172_trigger_config", "source"]], "daqhats": [[6, 7, 1, "", "AnalogInputMode"], [6, 7, 1, "", "AnalogInputRange"], [6, 7, 1, "", "DIOConfigItem"], [6, 9, 1, "", "HatError"], [6, 7, 1, "", "HatIDs"], [6, 7, 1, "", "OptionFlags"], [6, 7, 1, "", "SourceType"], [6, 7, 1, "", "TcTypes"], [6, 7, 1, "", "TriggerModes"], [6, 10, 1, "", "hat_list"], [6, 10, 1, "", "interrupt_callback_disable"], [6, 10, 1, "", "interrupt_callback_enable"], [6, 10, 1, "", "interrupt_state"], [6, 7, 1, "", "mcc118"], [6, 7, 1, "", "mcc128"], [6, 7, 1, "", "mcc134"], [6, 7, 1, "", "mcc152"], [6, 7, 1, "", "mcc172"], [6, 10, 1, "", "wait_for_interrupt"]], "daqhats.AnalogInputMode": [[6, 8, 1, "", "DIFF"], [6, 8, 1, "", "SE"]], "daqhats.AnalogInputRange": [[6, 8, 1, "", "BIP_10V"], [6, 8, 1, "", "BIP_1V"], [6, 8, 1, "", "BIP_2V"], [6, 8, 1, "", "BIP_5V"]], "daqhats.DIOConfigItem": [[6, 8, 1, "", "DIRECTION"], [6, 8, 1, "", "INPUT_INVERT"], [6, 8, 1, "", "INPUT_LATCH"], [6, 8, 1, "", "INT_MASK"], [6, 8, 1, "", "OUTPUT_TYPE"], [6, 8, 1, "", "PULL_CONFIG"], [6, 8, 1, "", "PULL_ENABLE"]], "daqhats.HatIDs": [[6, 8, 1, "", "ANY"], [6, 8, 1, "", "MCC_118"], [6, 8, 1, "", "MCC_128"], [6, 8, 1, "", "MCC_134"], [6, 8, 1, "", "MCC_152"], [6, 8, 1, "", "MCC_172"]], "daqhats.OptionFlags": [[6, 8, 1, "", "CONTINUOUS"], [6, 8, 1, "", "DEFAULT"], [6, 8, 1, "", "EXTCLOCK"], [6, 8, 1, "", "EXTTRIGGER"], [6, 8, 1, "", "NOCALIBRATEDATA"], [6, 8, 1, "", "NOSCALEDATA"], [6, 8, 1, "", "TEMPERATURE"]], "daqhats.SourceType": [[6, 8, 1, "", "LOCAL"], [6, 8, 1, "", "MASTER"], [6, 8, 1, "", "SLAVE"]], "daqhats.TcTypes": [[6, 8, 1, "", "DISABLED"], [6, 8, 1, "", "TYPE_B"], [6, 8, 1, "", "TYPE_E"], [6, 8, 1, "", "TYPE_J"], [6, 8, 1, "", "TYPE_K"], [6, 8, 1, "", "TYPE_N"], [6, 8, 1, "", "TYPE_R"], [6, 8, 1, "", "TYPE_S"], [6, 8, 1, "", "TYPE_T"]], "daqhats.TriggerModes": [[6, 8, 1, "", "ACTIVE_HIGH"], [6, 8, 1, "", "ACTIVE_LOW"], [6, 8, 1, "", "FALLING_EDGE"], [6, 8, 1, "", "RISING_EDGE"]], "daqhats.mcc118": [[6, 11, 1, "", "a_in_read"], [6, 11, 1, "", "a_in_scan_actual_rate"], [6, 11, 1, "", "a_in_scan_buffer_size"], [6, 11, 1, "", "a_in_scan_channel_count"], [6, 11, 1, "", "a_in_scan_cleanup"], [6, 11, 1, "", "a_in_scan_read"], [6, 11, 1, "", "a_in_scan_read_numpy"], [6, 11, 1, "", "a_in_scan_start"], [6, 11, 1, "", "a_in_scan_status"], [6, 11, 1, "", "a_in_scan_stop"], [6, 11, 1, "", "address"], [6, 11, 1, "", "blink_led"], [6, 11, 1, "", "calibration_coefficient_read"], [6, 11, 1, "", "calibration_coefficient_write"], [6, 11, 1, "", "calibration_date"], [6, 11, 1, "", "firmware_version"], [6, 11, 1, "", "info"], [6, 11, 1, "", "serial"], [6, 11, 1, "", "trigger_mode"]], "daqhats.mcc128": [[6, 11, 1, "", "a_in_mode_read"], [6, 11, 1, "", "a_in_mode_write"], [6, 11, 1, "", "a_in_range_read"], [6, 11, 1, "", "a_in_range_write"], [6, 11, 1, "", "a_in_read"], [6, 11, 1, "", "a_in_scan_actual_rate"], [6, 11, 1, "", "a_in_scan_buffer_size"], [6, 11, 1, "", "a_in_scan_channel_count"], [6, 11, 1, "", "a_in_scan_cleanup"], [6, 11, 1, "", "a_in_scan_read"], [6, 11, 1, "", "a_in_scan_read_numpy"], [6, 11, 1, "", "a_in_scan_start"], [6, 11, 1, "", "a_in_scan_status"], [6, 11, 1, "", "a_in_scan_stop"], [6, 11, 1, "", "address"], [6, 11, 1, "", "blink_led"], [6, 11, 1, "", "calibration_coefficient_read"], [6, 11, 1, "", "calibration_coefficient_write"], [6, 11, 1, "", "calibration_date"], [6, 11, 1, "", "firmware_version"], [6, 11, 1, "", "info"], [6, 11, 1, "", "serial"], [6, 11, 1, "", "trigger_mode"]], "daqhats.mcc134": [[6, 8, 1, "", "COMMON_MODE_TC_VALUE"], [6, 8, 1, "", "OPEN_TC_VALUE"], [6, 8, 1, "", "OVERRANGE_TC_VALUE"], [6, 11, 1, "", "a_in_read"], [6, 11, 1, "", "address"], [6, 11, 1, "", "calibration_coefficient_read"], [6, 11, 1, "", "calibration_coefficient_write"], [6, 11, 1, "", "calibration_date"], [6, 11, 1, "", "cjc_read"], [6, 11, 1, "", "info"], [6, 11, 1, "", "serial"], [6, 11, 1, "", "t_in_read"], [6, 11, 1, "", "tc_type_read"], [6, 11, 1, "", "tc_type_write"], [6, 11, 1, "", "update_interval_read"], [6, 11, 1, "", "update_interval_write"]], "daqhats.mcc152": [[6, 11, 1, "", "a_out_write"], [6, 11, 1, "", "a_out_write_all"], [6, 11, 1, "", "address"], [6, 11, 1, "", "dio_config_read_bit"], [6, 11, 1, "", "dio_config_read_port"], [6, 11, 1, "", "dio_config_read_tuple"], [6, 11, 1, "", "dio_config_write_bit"], [6, 11, 1, "", "dio_config_write_dict"], [6, 11, 1, "", "dio_config_write_port"], [6, 11, 1, "", "dio_input_read_bit"], [6, 11, 1, "", "dio_input_read_port"], [6, 11, 1, "", "dio_input_read_tuple"], [6, 11, 1, "", "dio_int_status_read_bit"], [6, 11, 1, "", "dio_int_status_read_port"], [6, 11, 1, "", "dio_int_status_read_tuple"], [6, 11, 1, "", "dio_output_read_bit"], [6, 11, 1, "", "dio_output_read_port"], [6, 11, 1, "", "dio_output_read_tuple"], [6, 11, 1, "", "dio_output_write_bit"], [6, 11, 1, "", "dio_output_write_dict"], [6, 11, 1, "", "dio_output_write_port"], [6, 11, 1, "", "dio_reset"], [6, 11, 1, "", "info"], [6, 11, 1, "", "serial"]], "daqhats.mcc172": [[6, 11, 1, "", "a_in_clock_config_read"], [6, 11, 1, "", "a_in_clock_config_write"], [6, 11, 1, "", "a_in_scan_actual_rate"], [6, 11, 1, "", "a_in_scan_buffer_size"], [6, 11, 1, "", "a_in_scan_channel_count"], [6, 11, 1, "", "a_in_scan_cleanup"], [6, 11, 1, "", "a_in_scan_read"], [6, 11, 1, "", "a_in_scan_read_numpy"], [6, 11, 1, "", "a_in_scan_start"], [6, 11, 1, "", "a_in_scan_status"], [6, 11, 1, "", "a_in_scan_stop"], [6, 11, 1, "", "a_in_sensitivity_read"], [6, 11, 1, "", "a_in_sensitivity_write"], [6, 11, 1, "", "address"], [6, 11, 1, "", "blink_led"], [6, 11, 1, "", "calibration_coefficient_read"], [6, 11, 1, "", "calibration_coefficient_write"], [6, 11, 1, "", "calibration_date"], [6, 11, 1, "", "firmware_version"], [6, 11, 1, "", "iepe_config_read"], [6, 11, 1, "", "iepe_config_write"], [6, 11, 1, "", "info"], [6, 11, 1, "", "serial"], [6, 11, 1, "", "trigger_config"]]}, "objtypes": {"0": "c:enumerator", "1": "c:enum", "2": "c:macro", "3": "c:struct", "4": "c:member", "5": "c:function", "6": "c:functionParam", "7": "py:class", "8": "py:attribute", "9": "py:exception", "10": "py:function", "11": "py:method"}, "objnames": {"0": ["c", "enumerator", "C enumerator"], "1": ["c", "enum", "C enum"], "2": ["c", "macro", "C macro"], "3": ["c", "struct", "C struct"], "4": ["c", "member", "C member"], "5": ["c", "function", "C function"], "6": ["c", "functionParam", "C function parameter"], "7": ["py", "class", "Python class"], "8": ["py", "attribute", "Python attribute"], "9": ["py", "exception", "Python exception"], "10": ["py", "function", "Python function"], "11": ["py", "method", "Python method"]}, "titleterms": {"c": [0, 1, 4], "librari": [0, 3, 4, 6], "refer": [0, 1, 6, 7], "global": [0, 6], "function": [0, 1, 5, 7], "data": [0, 6], "type": [0, 6], "definit": 0, "hat": [0, 2, 3, 6], "id": [0, 6], "result": 0, "code": 0, "hatinfo": 0, "structur": 0, "analog": [0, 6], "input": [0, 5, 6], "scan": [0, 5, 6], "option": [0, 6], "flag": [0, 6], "statu": [0, 5], "trigger": [0, 5, 6], "mode": [0, 6], "mcc": [0, 1, 3, 4, 5, 6, 7], "118": [0, 1, 4, 5, 6, 7], "devic": 0, "info": 0, "128": [0, 5, 6, 7], "rang": [0, 6], "134": [0, 5, 6], "thermocoupl": [0, 5, 6], "152": [0, 5, 6], "dio": [0, 5, 6], "config": [0, 6], "item": [0, 6], "172": [0, 1, 5, 6, 7], "sourc": [0, 6], "test": [1, 7], "instal": [2, 4], "daq": [2, 3], "board": [2, 5], "singl": [2, 5], "multipl": 2, "document": 3, "us": 4, "firmwar": [4, 5], "updat": [4, 5], "creat": 4, "program": 4, "python": [4, 6, 7], "hardwar": 5, "overview": 5, "compat": 5, "compon": 5, "screw": 5, "termin": 5, "address": 5, "jumper": 5, "led": 5, "header": 5, "connector": 5, "block": 5, "diagram": 5, "detail": 5, "clock": 5, "oem": 5, "specif": 5, "end": 5, "configur": 5, "differenti": 5, "best": 5, "practic": 5, "accur": 5, "measur": 5, "power": 5, "w3": 5, "mix": 5, "3": 5, "3v": 5, "5v": 5, "digit": 5, "10": 5, "32": 5, "coaxial": 5, "adc": 5, "alia": 5, "reject": 5, "method": [6, 7], "read": 6, "haterror": 6, "class": 6}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"C Library Reference": [[0, "c-library-reference"]], "Global functions and data": [[0, "global-functions-and-data"]], "Functions": [[0, "functions"], [0, "id1"], [0, "id2"], [0, "id5"], [0, "id8"], [0, "id11"]], "Data types and definitions": [[0, "data-types-and-definitions"], [0, "id9"]], "HAT IDs": [[0, "hat-ids"]], "Result Codes": [[0, "result-codes"]], "HatInfo structure": [[0, "hatinfo-structure"]], "Analog Input / Scan Option Flags": [[0, "analog-input-scan-option-flags"]], "Scan Status Flags": [[0, "scan-status-flags"]], "Trigger Modes": [[0, "trigger-modes"]], "MCC 118 functions and data": [[0, "mcc-118-functions-and-data"]], "Data definitions": [[0, "data-definitions"], [0, "id3"], [0, "id6"], [0, "id12"]], "Device Info": [[0, "device-info"], [0, "id4"], [0, "id7"], [0, "id10"], [0, "id13"]], "MCC 128 functions and data": [[0, "mcc-128-functions-and-data"]], "Analog Input Modes": [[0, "analog-input-modes"]], "Analog Input Ranges": [[0, "analog-input-ranges"]], "MCC 134 functions and data": [[0, "mcc-134-functions-and-data"]], "Thermocouple Types": [[0, "thermocouple-types"]], "MCC 152 functions and data": [[0, "mcc-152-functions-and-data"]], "DIO Config Items": [[0, "dio-config-items"], [6, "dio-config-items"]], "MCC 172 functions and data": [[0, "mcc-172-functions-and-data"]], "Source Types": [[0, "source-types"]], "C Test Function Reference": [[1, "c-test-function-reference"]], "MCC 118 test functions": [[1, "mcc-118-test-functions"]], "MCC 172 test functions": [[1, "mcc-172-test-functions"]], "Installing the DAQ HAT board": [[2, "installing-the-daq-hat-board"]], "Installing a single board": [[2, "installing-a-single-board"]], "Installing multiple boards": [[2, "installing-multiple-boards"]], "MCC DAQ HAT Library documentation": [[3, "mcc-daq-hat-library-documentation"]], "Installing and Using the Library": [[4, "installing-and-using-the-library"]], "Installation": [[4, "installation"]], "Firmware Updates": [[4, "firmware-updates"]], "MCC 118": [[4, "mcc-118"], [5, "mcc-118"]], "Creating a C program": [[4, "creating-a-c-program"]], "Creating a Python program": [[4, "creating-a-python-program"]], "Hardware Overview": [[5, "hardware-overview"]], "Hardware Compatibility": [[5, "hardware-compatibility"]], "Board components": [[5, "board-components"], [5, "id1"], [5, "id12"], [5, "id20"], [5, "id28"]], "Screw terminals": [[5, "screw-terminals"], [5, "id2"], [5, "id13"], [5, "id21"], [5, "id29"]], "Address jumpers": [[5, "address-jumpers"], [5, "id3"], [5, "id14"], [5, "id22"], [5, "id30"]], "Status LED": [[5, "status-led"], [5, "id4"], [5, "id15"], [5, "id23"], [5, "id31"]], "Header connector": [[5, "header-connector"], [5, "id5"], [5, "id16"], [5, "id24"], [5, "id32"]], "Functional block diagram": [[5, "functional-block-diagram"], [5, "id6"], [5, "id17"], [5, "id25"], [5, "id33"]], "Functional details": [[5, "functional-details"], [5, "id7"], [5, "id18"], [5, "id26"], [5, "id34"]], "Scan clock": [[5, "scan-clock"], [5, "id8"]], "Trigger": [[5, "trigger"], [5, "id9"], [5, "id35"]], "Firmware updates": [[5, "firmware-updates"], [5, "id10"], [5, "id36"]], "MCC 118-OEM": [[5, "mcc-118-oem"]], "Specifications": [[5, "specifications"], [5, "id11"], [5, "id19"], [5, "id27"], [5, "id37"]], "MCC 128": [[5, "mcc-128"]], "Single Ended Input configuration": [[5, "single-ended-input-configuration"]], "Differential Input Configuration": [[5, "differential-input-configuration"]], "MCC 128-OEM": [[5, "mcc-128-oem"]], "MCC 134": [[5, "mcc-134"]], "Best practices for accurate thermocouple measurements": [[5, "best-practices-for-accurate-thermocouple-measurements"]], "MCC 152": [[5, "mcc-152"]], "DIO Power jumper (W3)": [[5, "dio-power-jumper-w3"]], "Mixing 3.3V and 5V digital inputs": [[5, "mixing-3-3v-and-5v-digital-inputs"]], "MCC 172": [[5, "mcc-172"]], "10-32 coaxial connectors": [[5, "coaxial-connectors"]], "ADC clock": [[5, "adc-clock"]], "Alias Rejection": [[5, "alias-rejection"]], "Python Library Reference": [[6, "python-library-reference"]], "Global methods and data": [[6, "global-methods-and-data"]], "Methods": [[6, "methods"], [6, "id1"], [6, "id2"], [6, "id4"], [6, "id6"], [6, "id8"]], "Data": [[6, "data"], [6, "id3"], [6, "id5"], [6, "id7"], [6, "id9"]], "Hat IDs": [[6, "hat-ids"]], "Trigger modes": [[6, "trigger-modes"]], "Scan / read option flags": [[6, "scan-read-option-flags"]], "HatError class": [[6, "haterror-class"]], "MCC 118 class": [[6, "mcc-118-class"]], "MCC 128 class": [[6, "mcc-128-class"]], "Analog input modes": [[6, "analog-input-modes"]], "Analog input ranges": [[6, "analog-input-ranges"]], "MCC 134 class": [[6, "mcc-134-class"]], "Thermocouple types": [[6, "thermocouple-types"]], "MCC 152 class": [[6, "mcc-152-class"]], "MCC 172 class": [[6, "mcc-172-class"]], "Source types": [[6, "source-types"]], "Python Test Function Reference": [[7, "python-test-function-reference"]], "MCC 118 test methods": [[7, "mcc-118-test-methods"]], "MCC 128 test methods": [[7, "mcc-128-test-methods"]], "MCC 172 test methods": [[7, "mcc-172-test-methods"]]}, "indexentries": {"analoginputmode (c enum)": [[0, "c.AnalogInputMode"]], "analoginputmode.a_in_mode_diff (c enumerator)": [[0, "c.AnalogInputMode.A_IN_MODE_DIFF"]], "analoginputmode.a_in_mode_se (c enumerator)": [[0, "c.AnalogInputMode.A_IN_MODE_SE"]], "analoginputrange (c enum)": [[0, "c.AnalogInputRange"]], "analoginputrange.a_in_range_bip_10v (c enumerator)": [[0, "c.AnalogInputRange.A_IN_RANGE_BIP_10V"]], "analoginputrange.a_in_range_bip_1v (c enumerator)": [[0, "c.AnalogInputRange.A_IN_RANGE_BIP_1V"]], "analoginputrange.a_in_range_bip_2v (c enumerator)": [[0, "c.AnalogInputRange.A_IN_RANGE_BIP_2V"]], "analoginputrange.a_in_range_bip_5v (c enumerator)": [[0, "c.AnalogInputRange.A_IN_RANGE_BIP_5V"]], "common_mode_tc_value (c macro)": [[0, "c.COMMON_MODE_TC_VALUE"]], "dioconfigitem (c enum)": [[0, "c.DIOConfigItem"]], "dioconfigitem.dio_direction (c enumerator)": [[0, "c.DIOConfigItem.DIO_DIRECTION"]], "dioconfigitem.dio_input_invert (c enumerator)": [[0, "c.DIOConfigItem.DIO_INPUT_INVERT"]], "dioconfigitem.dio_input_latch (c enumerator)": [[0, "c.DIOConfigItem.DIO_INPUT_LATCH"]], "dioconfigitem.dio_int_mask (c enumerator)": [[0, "c.DIOConfigItem.DIO_INT_MASK"]], "dioconfigitem.dio_output_type (c enumerator)": [[0, "c.DIOConfigItem.DIO_OUTPUT_TYPE"]], "dioconfigitem.dio_pull_config (c enumerator)": [[0, "c.DIOConfigItem.DIO_PULL_CONFIG"]], "dioconfigitem.dio_pull_enable (c enumerator)": [[0, "c.DIOConfigItem.DIO_PULL_ENABLE"]], "hatids (c enum)": [[0, "c.HatIDs"]], "hatids.hat_id_any (c enumerator)": [[0, "c.HatIDs.HAT_ID_ANY"]], "hatids.hat_id_mcc_118 (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_118"]], "hatids.hat_id_mcc_118_bootloader (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_118_BOOTLOADER"]], "hatids.hat_id_mcc_128 (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_128"]], "hatids.hat_id_mcc_134 (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_134"]], "hatids.hat_id_mcc_152 (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_152"]], "hatids.hat_id_mcc_172 (c enumerator)": [[0, "c.HatIDs.HAT_ID_MCC_172"]], "hatinfo (c struct)": [[0, "c.HatInfo"]], "hatinfo.address (c var)": [[0, "c.HatInfo.address"]], "hatinfo.id (c var)": [[0, "c.HatInfo.id"]], "hatinfo.product_name (c var)": [[0, "c.HatInfo.product_name"]], "hatinfo.version (c var)": [[0, "c.HatInfo.version"]], "max_number_hats (c macro)": [[0, "c.MAX_NUMBER_HATS"]], "mcc118deviceinfo (c struct)": [[0, "c.MCC118DeviceInfo"]], "mcc118deviceinfo.ai_max_code (c var)": [[0, "c.MCC118DeviceInfo.AI_MAX_CODE"]], "mcc118deviceinfo.ai_max_range (c var)": [[0, "c.MCC118DeviceInfo.AI_MAX_RANGE"]], "mcc118deviceinfo.ai_max_voltage (c var)": [[0, "c.MCC118DeviceInfo.AI_MAX_VOLTAGE"]], "mcc118deviceinfo.ai_min_code (c var)": [[0, "c.MCC118DeviceInfo.AI_MIN_CODE"]], "mcc118deviceinfo.ai_min_range (c var)": [[0, "c.MCC118DeviceInfo.AI_MIN_RANGE"]], "mcc118deviceinfo.ai_min_voltage (c var)": [[0, "c.MCC118DeviceInfo.AI_MIN_VOLTAGE"]], "mcc118deviceinfo.num_ai_channels (c var)": [[0, "c.MCC118DeviceInfo.NUM_AI_CHANNELS"]], "mcc128deviceinfo (c struct)": [[0, "c.MCC128DeviceInfo"]], "mcc128deviceinfo.ai_max_code (c var)": [[0, "c.MCC128DeviceInfo.AI_MAX_CODE"]], "mcc128deviceinfo.ai_max_range (c var)": [[0, "c.MCC128DeviceInfo.AI_MAX_RANGE"]], "mcc128deviceinfo.ai_max_voltage (c var)": [[0, "c.MCC128DeviceInfo.AI_MAX_VOLTAGE"]], "mcc128deviceinfo.ai_min_code (c var)": [[0, "c.MCC128DeviceInfo.AI_MIN_CODE"]], "mcc128deviceinfo.ai_min_range (c var)": [[0, "c.MCC128DeviceInfo.AI_MIN_RANGE"]], "mcc128deviceinfo.ai_min_voltage (c var)": [[0, "c.MCC128DeviceInfo.AI_MIN_VOLTAGE"]], "mcc128deviceinfo.num_ai_channels (c var)": [[0, "c.MCC128DeviceInfo.NUM_AI_CHANNELS"]], "mcc128deviceinfo.num_ai_modes (c var)": [[0, "c.MCC128DeviceInfo.NUM_AI_MODES"]], "mcc128deviceinfo.num_ai_ranges (c var)": [[0, "c.MCC128DeviceInfo.NUM_AI_RANGES"]], "mcc134deviceinfo (c struct)": [[0, "c.MCC134DeviceInfo"]], "mcc134deviceinfo.ai_max_code (c var)": [[0, "c.MCC134DeviceInfo.AI_MAX_CODE"]], "mcc134deviceinfo.ai_max_range (c var)": [[0, "c.MCC134DeviceInfo.AI_MAX_RANGE"]], "mcc134deviceinfo.ai_max_voltage (c var)": [[0, "c.MCC134DeviceInfo.AI_MAX_VOLTAGE"]], "mcc134deviceinfo.ai_min_code (c var)": [[0, "c.MCC134DeviceInfo.AI_MIN_CODE"]], "mcc134deviceinfo.ai_min_range (c var)": [[0, "c.MCC134DeviceInfo.AI_MIN_RANGE"]], "mcc134deviceinfo.ai_min_voltage (c var)": [[0, "c.MCC134DeviceInfo.AI_MIN_VOLTAGE"]], "mcc134deviceinfo.num_ai_channels (c var)": [[0, "c.MCC134DeviceInfo.NUM_AI_CHANNELS"]], "mcc152deviceinfo (c struct)": [[0, "c.MCC152DeviceInfo"]], "mcc152deviceinfo.ao_max_code (c var)": [[0, "c.MCC152DeviceInfo.AO_MAX_CODE"]], "mcc152deviceinfo.ao_max_range (c var)": [[0, "c.MCC152DeviceInfo.AO_MAX_RANGE"]], "mcc152deviceinfo.ao_max_voltage (c var)": [[0, "c.MCC152DeviceInfo.AO_MAX_VOLTAGE"]], "mcc152deviceinfo.ao_min_code (c var)": [[0, "c.MCC152DeviceInfo.AO_MIN_CODE"]], "mcc152deviceinfo.ao_min_range (c var)": [[0, "c.MCC152DeviceInfo.AO_MIN_RANGE"]], "mcc152deviceinfo.ao_min_voltage (c var)": [[0, "c.MCC152DeviceInfo.AO_MIN_VOLTAGE"]], "mcc152deviceinfo.num_ao_channels (c var)": [[0, "c.MCC152DeviceInfo.NUM_AO_CHANNELS"]], "mcc152deviceinfo.num_dio_channels (c var)": [[0, "c.MCC152DeviceInfo.NUM_DIO_CHANNELS"]], "mcc172deviceinfo (c struct)": [[0, "c.MCC172DeviceInfo"]], "mcc172deviceinfo.ai_max_code (c var)": [[0, "c.MCC172DeviceInfo.AI_MAX_CODE"]], "mcc172deviceinfo.ai_max_range (c var)": [[0, "c.MCC172DeviceInfo.AI_MAX_RANGE"]], "mcc172deviceinfo.ai_max_voltage (c var)": [[0, "c.MCC172DeviceInfo.AI_MAX_VOLTAGE"]], "mcc172deviceinfo.ai_min_code (c var)": [[0, "c.MCC172DeviceInfo.AI_MIN_CODE"]], "mcc172deviceinfo.ai_min_range (c var)": [[0, "c.MCC172DeviceInfo.AI_MIN_RANGE"]], "mcc172deviceinfo.ai_min_voltage (c var)": [[0, "c.MCC172DeviceInfo.AI_MIN_VOLTAGE"]], "mcc172deviceinfo.num_ai_channels (c var)": [[0, "c.MCC172DeviceInfo.NUM_AI_CHANNELS"]], "open_tc_value (c macro)": [[0, "c.OPEN_TC_VALUE"]], "opts_continuous (c macro)": [[0, "c.OPTS_CONTINUOUS"]], "opts_default (c macro)": [[0, "c.OPTS_DEFAULT"]], "opts_extclock (c macro)": [[0, "c.OPTS_EXTCLOCK"]], "opts_exttrigger (c macro)": [[0, "c.OPTS_EXTTRIGGER"]], "opts_nocalibratedata (c macro)": [[0, "c.OPTS_NOCALIBRATEDATA"]], "opts_noscaledata (c macro)": [[0, "c.OPTS_NOSCALEDATA"]], "overrange_tc_value (c macro)": [[0, "c.OVERRANGE_TC_VALUE"]], "resultcode (c enum)": [[0, "c.ResultCode"]], "resultcode.result_bad_parameter (c enumerator)": [[0, "c.ResultCode.RESULT_BAD_PARAMETER"]], "resultcode.result_busy (c enumerator)": [[0, "c.ResultCode.RESULT_BUSY"]], "resultcode.result_comms_failure (c enumerator)": [[0, "c.ResultCode.RESULT_COMMS_FAILURE"]], "resultcode.result_invalid_device (c enumerator)": [[0, "c.ResultCode.RESULT_INVALID_DEVICE"]], "resultcode.result_lock_timeout (c enumerator)": [[0, "c.ResultCode.RESULT_LOCK_TIMEOUT"]], "resultcode.result_resource_unavail (c enumerator)": [[0, "c.ResultCode.RESULT_RESOURCE_UNAVAIL"]], "resultcode.result_success (c enumerator)": [[0, "c.ResultCode.RESULT_SUCCESS"]], "resultcode.result_timeout (c enumerator)": [[0, "c.ResultCode.RESULT_TIMEOUT"]], "resultcode.result_undefined (c enumerator)": [[0, "c.ResultCode.RESULT_UNDEFINED"]], "status_buffer_overrun (c macro)": [[0, "c.STATUS_BUFFER_OVERRUN"]], "status_hw_overrun (c macro)": [[0, "c.STATUS_HW_OVERRUN"]], "status_running (c macro)": [[0, "c.STATUS_RUNNING"]], "status_triggered (c macro)": [[0, "c.STATUS_TRIGGERED"]], "sourcetype (c enum)": [[0, "c.SourceType"]], "sourcetype.source_local (c enumerator)": [[0, "c.SourceType.SOURCE_LOCAL"]], "sourcetype.source_master (c enumerator)": [[0, "c.SourceType.SOURCE_MASTER"]], "sourcetype.source_slave (c enumerator)": [[0, "c.SourceType.SOURCE_SLAVE"]], "tctypes (c enum)": [[0, "c.TcTypes"]], "tctypes.tc_disabled (c enumerator)": [[0, "c.TcTypes.TC_DISABLED"]], "tctypes.tc_type_b (c enumerator)": [[0, "c.TcTypes.TC_TYPE_B"]], "tctypes.tc_type_e (c enumerator)": [[0, "c.TcTypes.TC_TYPE_E"]], "tctypes.tc_type_j (c enumerator)": [[0, "c.TcTypes.TC_TYPE_J"]], "tctypes.tc_type_k (c enumerator)": [[0, "c.TcTypes.TC_TYPE_K"]], "tctypes.tc_type_n (c enumerator)": [[0, "c.TcTypes.TC_TYPE_N"]], "tctypes.tc_type_r (c enumerator)": [[0, "c.TcTypes.TC_TYPE_R"]], "tctypes.tc_type_s (c enumerator)": [[0, "c.TcTypes.TC_TYPE_S"]], "tctypes.tc_type_t (c enumerator)": [[0, "c.TcTypes.TC_TYPE_T"]], "triggermode (c enum)": [[0, "c.TriggerMode"]], "triggermode.trig_active_high (c enumerator)": [[0, "c.TriggerMode.TRIG_ACTIVE_HIGH"]], "triggermode.trig_active_low (c enumerator)": [[0, "c.TriggerMode.TRIG_ACTIVE_LOW"]], "triggermode.trig_falling_edge (c enumerator)": [[0, "c.TriggerMode.TRIG_FALLING_EDGE"]], "triggermode.trig_rising_edge (c enumerator)": [[0, "c.TriggerMode.TRIG_RISING_EDGE"]], "hat_error_message (c function)": [[0, "c.hat_error_message"]], "hat_interrupt_callback_disable (c function)": [[0, "c.hat_interrupt_callback_disable"]], "hat_interrupt_callback_enable (c function)": [[0, "c.hat_interrupt_callback_enable"]], "hat_interrupt_state (c function)": [[0, "c.hat_interrupt_state"]], "hat_list (c function)": [[0, "c.hat_list"]], "hat_wait_for_interrupt (c function)": [[0, "c.hat_wait_for_interrupt"]], "mcc118_a_in_read (c function)": [[0, "c.mcc118_a_in_read"]], "mcc118_a_in_scan_actual_rate (c function)": [[0, "c.mcc118_a_in_scan_actual_rate"]], "mcc118_a_in_scan_buffer_size (c function)": [[0, "c.mcc118_a_in_scan_buffer_size"]], "mcc118_a_in_scan_channel_count (c function)": [[0, "c.mcc118_a_in_scan_channel_count"]], "mcc118_a_in_scan_cleanup (c function)": [[0, "c.mcc118_a_in_scan_cleanup"]], "mcc118_a_in_scan_read (c function)": [[0, "c.mcc118_a_in_scan_read"]], "mcc118_a_in_scan_start (c function)": [[0, "c.mcc118_a_in_scan_start"]], "mcc118_a_in_scan_status (c function)": [[0, "c.mcc118_a_in_scan_status"]], "mcc118_a_in_scan_stop (c function)": [[0, "c.mcc118_a_in_scan_stop"]], "mcc118_blink_led (c function)": [[0, "c.mcc118_blink_led"]], "mcc118_calibration_coefficient_read (c function)": [[0, "c.mcc118_calibration_coefficient_read"]], "mcc118_calibration_coefficient_write (c function)": [[0, "c.mcc118_calibration_coefficient_write"]], "mcc118_calibration_date (c function)": [[0, "c.mcc118_calibration_date"]], "mcc118_close (c function)": [[0, "c.mcc118_close"]], "mcc118_firmware_version (c function)": [[0, "c.mcc118_firmware_version"]], "mcc118_info (c function)": [[0, "c.mcc118_info"]], "mcc118_is_open (c function)": [[0, "c.mcc118_is_open"]], "mcc118_open (c function)": [[0, "c.mcc118_open"]], "mcc118_serial (c function)": [[0, "c.mcc118_serial"]], "mcc118_trigger_mode (c function)": [[0, "c.mcc118_trigger_mode"]], "mcc128_a_in_mode_read (c function)": [[0, "c.mcc128_a_in_mode_read"]], "mcc128_a_in_mode_write (c function)": [[0, "c.mcc128_a_in_mode_write"]], "mcc128_a_in_range_read (c function)": [[0, "c.mcc128_a_in_range_read"]], "mcc128_a_in_range_write (c function)": [[0, "c.mcc128_a_in_range_write"]], "mcc128_a_in_read (c function)": [[0, "c.mcc128_a_in_read"]], "mcc128_a_in_scan_actual_rate (c function)": [[0, "c.mcc128_a_in_scan_actual_rate"]], "mcc128_a_in_scan_buffer_size (c function)": [[0, "c.mcc128_a_in_scan_buffer_size"]], "mcc128_a_in_scan_channel_count (c function)": [[0, "c.mcc128_a_in_scan_channel_count"]], "mcc128_a_in_scan_cleanup (c function)": [[0, "c.mcc128_a_in_scan_cleanup"]], "mcc128_a_in_scan_read (c function)": [[0, "c.mcc128_a_in_scan_read"]], "mcc128_a_in_scan_start (c function)": [[0, "c.mcc128_a_in_scan_start"]], "mcc128_a_in_scan_status (c function)": [[0, "c.mcc128_a_in_scan_status"]], "mcc128_a_in_scan_stop (c function)": [[0, "c.mcc128_a_in_scan_stop"]], "mcc128_blink_led (c function)": [[0, "c.mcc128_blink_led"]], "mcc128_calibration_coefficient_read (c function)": [[0, "c.mcc128_calibration_coefficient_read"]], "mcc128_calibration_coefficient_write (c function)": [[0, "c.mcc128_calibration_coefficient_write"]], "mcc128_calibration_date (c function)": [[0, "c.mcc128_calibration_date"]], "mcc128_close (c function)": [[0, "c.mcc128_close"]], "mcc128_firmware_version (c function)": [[0, "c.mcc128_firmware_version"]], "mcc128_info (c function)": [[0, "c.mcc128_info"]], "mcc128_is_open (c function)": [[0, "c.mcc128_is_open"]], "mcc128_open (c function)": [[0, "c.mcc128_open"]], "mcc128_serial (c function)": [[0, "c.mcc128_serial"]], "mcc128_trigger_mode (c function)": [[0, "c.mcc128_trigger_mode"]], "mcc134_a_in_read (c function)": [[0, "c.mcc134_a_in_read"]], "mcc134_calibration_coefficient_read (c function)": [[0, "c.mcc134_calibration_coefficient_read"]], "mcc134_calibration_coefficient_write (c function)": [[0, "c.mcc134_calibration_coefficient_write"]], "mcc134_calibration_date (c function)": [[0, "c.mcc134_calibration_date"]], "mcc134_cjc_read (c function)": [[0, "c.mcc134_cjc_read"]], "mcc134_close (c function)": [[0, "c.mcc134_close"]], "mcc134_info (c function)": [[0, "c.mcc134_info"]], "mcc134_is_open (c function)": [[0, "c.mcc134_is_open"]], "mcc134_open (c function)": [[0, "c.mcc134_open"]], "mcc134_serial (c function)": [[0, "c.mcc134_serial"]], "mcc134_t_in_read (c function)": [[0, "c.mcc134_t_in_read"]], "mcc134_tc_type_read (c function)": [[0, "c.mcc134_tc_type_read"]], "mcc134_tc_type_write (c function)": [[0, "c.mcc134_tc_type_write"]], "mcc134_update_interval_read (c function)": [[0, "c.mcc134_update_interval_read"]], "mcc134_update_interval_write (c function)": [[0, "c.mcc134_update_interval_write"]], "mcc152_a_out_write (c function)": [[0, "c.mcc152_a_out_write"]], "mcc152_a_out_write_all (c function)": [[0, "c.mcc152_a_out_write_all"]], "mcc152_close (c function)": [[0, "c.mcc152_close"]], "mcc152_dio_config_read_bit (c function)": [[0, "c.mcc152_dio_config_read_bit"]], "mcc152_dio_config_read_port (c function)": [[0, "c.mcc152_dio_config_read_port"]], "mcc152_dio_config_write_bit (c function)": [[0, "c.mcc152_dio_config_write_bit"]], "mcc152_dio_config_write_port (c function)": [[0, "c.mcc152_dio_config_write_port"]], "mcc152_dio_input_read_bit (c function)": [[0, "c.mcc152_dio_input_read_bit"]], "mcc152_dio_input_read_port (c function)": [[0, "c.mcc152_dio_input_read_port"]], "mcc152_dio_int_status_read_bit (c function)": [[0, "c.mcc152_dio_int_status_read_bit"]], "mcc152_dio_int_status_read_port (c function)": [[0, "c.mcc152_dio_int_status_read_port"]], "mcc152_dio_output_read_bit (c function)": [[0, "c.mcc152_dio_output_read_bit"]], "mcc152_dio_output_read_port (c function)": [[0, "c.mcc152_dio_output_read_port"]], "mcc152_dio_output_write_bit (c function)": [[0, "c.mcc152_dio_output_write_bit"]], "mcc152_dio_output_write_port (c function)": [[0, "c.mcc152_dio_output_write_port"]], "mcc152_dio_reset (c function)": [[0, "c.mcc152_dio_reset"]], "mcc152_info (c function)": [[0, "c.mcc152_info"]], "mcc152_is_open (c function)": [[0, "c.mcc152_is_open"]], "mcc152_open (c function)": [[0, "c.mcc152_open"]], "mcc152_serial (c function)": [[0, "c.mcc152_serial"]], "mcc172_a_in_clock_config_read (c function)": [[0, "c.mcc172_a_in_clock_config_read"]], "mcc172_a_in_clock_config_write (c function)": [[0, "c.mcc172_a_in_clock_config_write"]], "mcc172_a_in_scan_buffer_size (c function)": [[0, "c.mcc172_a_in_scan_buffer_size"]], "mcc172_a_in_scan_channel_count (c function)": [[0, "c.mcc172_a_in_scan_channel_count"]], "mcc172_a_in_scan_cleanup (c function)": [[0, "c.mcc172_a_in_scan_cleanup"]], "mcc172_a_in_scan_read (c function)": [[0, "c.mcc172_a_in_scan_read"]], "mcc172_a_in_scan_start (c function)": [[0, "c.mcc172_a_in_scan_start"]], "mcc172_a_in_scan_status (c function)": [[0, "c.mcc172_a_in_scan_status"]], "mcc172_a_in_scan_stop (c function)": [[0, "c.mcc172_a_in_scan_stop"]], "mcc172_a_in_sensitivity_read (c function)": [[0, "c.mcc172_a_in_sensitivity_read"]], "mcc172_a_in_sensitivity_write (c function)": [[0, "c.mcc172_a_in_sensitivity_write"]], "mcc172_blink_led (c function)": [[0, "c.mcc172_blink_led"]], "mcc172_calibration_coefficient_read (c function)": [[0, "c.mcc172_calibration_coefficient_read"]], "mcc172_calibration_coefficient_write (c function)": [[0, "c.mcc172_calibration_coefficient_write"]], "mcc172_calibration_date (c function)": [[0, "c.mcc172_calibration_date"]], "mcc172_close (c function)": [[0, "c.mcc172_close"]], "mcc172_firmware_version (c function)": [[0, "c.mcc172_firmware_version"]], "mcc172_iepe_config_read (c function)": [[0, "c.mcc172_iepe_config_read"]], "mcc172_iepe_config_write (c function)": [[0, "c.mcc172_iepe_config_write"]], "mcc172_info (c function)": [[0, "c.mcc172_info"]], "mcc172_is_open (c function)": [[0, "c.mcc172_is_open"]], "mcc172_open (c function)": [[0, "c.mcc172_open"]], "mcc172_serial (c function)": [[0, "c.mcc172_serial"]], "mcc172_trigger_config (c function)": [[0, "c.mcc172_trigger_config"]], "mcc118_test_clock (c function)": [[1, "c.mcc118_test_clock"]], "mcc118_test_trigger (c function)": [[1, "c.mcc118_test_trigger"]], "mcc172_test_signals_read (c function)": [[1, "c.mcc172_test_signals_read"]], "mcc172_test_signals_write (c function)": [[1, "c.mcc172_test_signals_write"]], "active_high (daqhats.triggermodes attribute)": [[6, "daqhats.TriggerModes.ACTIVE_HIGH"]], "active_low (daqhats.triggermodes attribute)": [[6, "daqhats.TriggerModes.ACTIVE_LOW"]], "any (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.ANY"]], "analoginputmode (class in daqhats)": [[6, "daqhats.AnalogInputMode"]], "analoginputrange (class in daqhats)": [[6, "daqhats.AnalogInputRange"]], "bip_10v (daqhats.analoginputrange attribute)": [[6, "daqhats.AnalogInputRange.BIP_10V"]], "bip_1v (daqhats.analoginputrange attribute)": [[6, "daqhats.AnalogInputRange.BIP_1V"]], "bip_2v (daqhats.analoginputrange attribute)": [[6, "daqhats.AnalogInputRange.BIP_2V"]], "bip_5v (daqhats.analoginputrange attribute)": [[6, "daqhats.AnalogInputRange.BIP_5V"]], "common_mode_tc_value (daqhats.mcc134 attribute)": [[6, "daqhats.mcc134.COMMON_MODE_TC_VALUE"]], "continuous (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.CONTINUOUS"]], "default (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.DEFAULT"]], "diff (daqhats.analoginputmode attribute)": [[6, "daqhats.AnalogInputMode.DIFF"]], "dioconfigitem (class in daqhats)": [[6, "daqhats.DIOConfigItem"]], "direction (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.DIRECTION"]], "disabled (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.DISABLED"]], "extclock (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.EXTCLOCK"]], "exttrigger (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.EXTTRIGGER"]], "falling_edge (daqhats.triggermodes attribute)": [[6, "daqhats.TriggerModes.FALLING_EDGE"]], "haterror": [[6, "daqhats.HatError"]], "hatids (class in daqhats)": [[6, "daqhats.HatIDs"]], "input_invert (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.INPUT_INVERT"]], "input_latch (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.INPUT_LATCH"]], "int_mask (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.INT_MASK"]], "local (daqhats.sourcetype attribute)": [[6, "daqhats.SourceType.LOCAL"]], "master (daqhats.sourcetype attribute)": [[6, "daqhats.SourceType.MASTER"]], "mcc_118 (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.MCC_118"]], "mcc_128 (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.MCC_128"]], "mcc_134 (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.MCC_134"]], "mcc_152 (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.MCC_152"]], "mcc_172 (daqhats.hatids attribute)": [[6, "daqhats.HatIDs.MCC_172"]], "nocalibratedata (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.NOCALIBRATEDATA"]], "noscaledata (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.NOSCALEDATA"]], "open_tc_value (daqhats.mcc134 attribute)": [[6, "daqhats.mcc134.OPEN_TC_VALUE"]], "output_type (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.OUTPUT_TYPE"]], "overrange_tc_value (daqhats.mcc134 attribute)": [[6, "daqhats.mcc134.OVERRANGE_TC_VALUE"]], "optionflags (class in daqhats)": [[6, "daqhats.OptionFlags"]], "pull_config (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.PULL_CONFIG"]], "pull_enable (daqhats.dioconfigitem attribute)": [[6, "daqhats.DIOConfigItem.PULL_ENABLE"]], "rising_edge (daqhats.triggermodes attribute)": [[6, "daqhats.TriggerModes.RISING_EDGE"]], "se (daqhats.analoginputmode attribute)": [[6, "daqhats.AnalogInputMode.SE"]], "slave (daqhats.sourcetype attribute)": [[6, "daqhats.SourceType.SLAVE"]], "sourcetype (class in daqhats)": [[6, "daqhats.SourceType"]], "temperature (daqhats.optionflags attribute)": [[6, "daqhats.OptionFlags.TEMPERATURE"]], "type_b (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_B"]], "type_e (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_E"]], "type_j (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_J"]], "type_k (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_K"]], "type_n (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_N"]], "type_r (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_R"]], "type_s (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_S"]], "type_t (daqhats.tctypes attribute)": [[6, "daqhats.TcTypes.TYPE_T"]], "tctypes (class in daqhats)": [[6, "daqhats.TcTypes"]], "triggermodes (class in daqhats)": [[6, "daqhats.TriggerModes"]], "a_in_clock_config_read() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_clock_config_read"]], "a_in_clock_config_write() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_clock_config_write"]], "a_in_mode_read() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_mode_read"]], "a_in_mode_write() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_mode_write"]], "a_in_range_read() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_range_read"]], "a_in_range_write() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_range_write"]], "a_in_read() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_read"]], "a_in_read() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_read"]], "a_in_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.a_in_read"]], "a_in_scan_actual_rate() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_actual_rate"]], "a_in_scan_actual_rate() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_actual_rate"]], "a_in_scan_actual_rate() (daqhats.mcc172 static method)": [[6, "daqhats.mcc172.a_in_scan_actual_rate"]], "a_in_scan_buffer_size() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_buffer_size"]], "a_in_scan_buffer_size() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_buffer_size"]], "a_in_scan_buffer_size() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_buffer_size"]], "a_in_scan_channel_count() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_channel_count"]], "a_in_scan_channel_count() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_channel_count"]], "a_in_scan_channel_count() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_channel_count"]], "a_in_scan_cleanup() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_cleanup"]], "a_in_scan_cleanup() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_cleanup"]], "a_in_scan_cleanup() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_cleanup"]], "a_in_scan_read() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_read"]], "a_in_scan_read() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_read"]], "a_in_scan_read() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_read"]], "a_in_scan_read_numpy() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_read_numpy"]], "a_in_scan_read_numpy() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_read_numpy"]], "a_in_scan_read_numpy() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_read_numpy"]], "a_in_scan_start() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_start"]], "a_in_scan_start() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_start"]], "a_in_scan_start() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_start"]], "a_in_scan_status() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_status"]], "a_in_scan_status() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_status"]], "a_in_scan_status() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_status"]], "a_in_scan_stop() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.a_in_scan_stop"]], "a_in_scan_stop() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.a_in_scan_stop"]], "a_in_scan_stop() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_scan_stop"]], "a_in_sensitivity_read() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_sensitivity_read"]], "a_in_sensitivity_write() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.a_in_sensitivity_write"]], "a_out_write() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.a_out_write"]], "a_out_write_all() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.a_out_write_all"]], "address() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.address"]], "address() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.address"]], "address() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.address"]], "address() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.address"]], "address() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.address"]], "blink_led() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.blink_led"]], "blink_led() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.blink_led"]], "blink_led() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.blink_led"]], "calibration_coefficient_read() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.calibration_coefficient_read"]], "calibration_coefficient_read() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.calibration_coefficient_read"]], "calibration_coefficient_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.calibration_coefficient_read"]], "calibration_coefficient_read() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.calibration_coefficient_read"]], "calibration_coefficient_write() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.calibration_coefficient_write"]], "calibration_coefficient_write() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.calibration_coefficient_write"]], "calibration_coefficient_write() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.calibration_coefficient_write"]], "calibration_coefficient_write() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.calibration_coefficient_write"]], "calibration_date() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.calibration_date"]], "calibration_date() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.calibration_date"]], "calibration_date() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.calibration_date"]], "calibration_date() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.calibration_date"]], "cjc_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.cjc_read"]], "dio_config_read_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_read_bit"]], "dio_config_read_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_read_port"]], "dio_config_read_tuple() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_read_tuple"]], "dio_config_write_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_write_bit"]], "dio_config_write_dict() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_write_dict"]], "dio_config_write_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_config_write_port"]], "dio_input_read_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_input_read_bit"]], "dio_input_read_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_input_read_port"]], "dio_input_read_tuple() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_input_read_tuple"]], "dio_int_status_read_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_int_status_read_bit"]], "dio_int_status_read_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_int_status_read_port"]], "dio_int_status_read_tuple() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_int_status_read_tuple"]], "dio_output_read_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_read_bit"]], "dio_output_read_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_read_port"]], "dio_output_read_tuple() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_read_tuple"]], "dio_output_write_bit() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_write_bit"]], "dio_output_write_dict() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_write_dict"]], "dio_output_write_port() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_output_write_port"]], "dio_reset() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.dio_reset"]], "firmware_version() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.firmware_version"]], "firmware_version() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.firmware_version"]], "firmware_version() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.firmware_version"]], "hat_list() (in module daqhats)": [[6, "daqhats.hat_list"]], "iepe_config_read() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.iepe_config_read"]], "iepe_config_write() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.iepe_config_write"]], "info() (daqhats.mcc118 static method)": [[6, "daqhats.mcc118.info"]], "info() (daqhats.mcc128 static method)": [[6, "daqhats.mcc128.info"]], "info() (daqhats.mcc134 static method)": [[6, "daqhats.mcc134.info"]], "info() (daqhats.mcc152 static method)": [[6, "daqhats.mcc152.info"]], "info() (daqhats.mcc172 static method)": [[6, "daqhats.mcc172.info"]], "interrupt_callback_disable() (in module daqhats)": [[6, "daqhats.interrupt_callback_disable"]], "interrupt_callback_enable() (in module daqhats)": [[6, "daqhats.interrupt_callback_enable"]], "interrupt_state() (in module daqhats)": [[6, "daqhats.interrupt_state"]], "mcc118 (class in daqhats)": [[6, "daqhats.mcc118"]], "mcc128 (class in daqhats)": [[6, "daqhats.mcc128"]], "mcc134 (class in daqhats)": [[6, "daqhats.mcc134"]], "mcc152 (class in daqhats)": [[6, "daqhats.mcc152"]], "mcc172 (class in daqhats)": [[6, "daqhats.mcc172"]], "serial() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.serial"]], "serial() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.serial"]], "serial() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.serial"]], "serial() (daqhats.mcc152 method)": [[6, "daqhats.mcc152.serial"]], "serial() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.serial"]], "t_in_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.t_in_read"]], "tc_type_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.tc_type_read"]], "tc_type_write() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.tc_type_write"]], "trigger_config() (daqhats.mcc172 method)": [[6, "daqhats.mcc172.trigger_config"]], "trigger_mode() (daqhats.mcc118 method)": [[6, "daqhats.mcc118.trigger_mode"]], "trigger_mode() (daqhats.mcc128 method)": [[6, "daqhats.mcc128.trigger_mode"]], "update_interval_read() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.update_interval_read"]], "update_interval_write() (daqhats.mcc134 method)": [[6, "daqhats.mcc134.update_interval_write"]], "wait_for_interrupt() (in module daqhats)": [[6, "daqhats.wait_for_interrupt"]]}}) \ No newline at end of file +Search.setIndex({"alltitles":{"10-32 coaxial connectors":[[5,"coaxial-connectors"]],"ADC clock":[[5,"adc-clock"]],"Address jumpers":[[5,"address-jumpers"],[5,"id3"],[5,"id14"],[5,"id22"],[5,"id30"]],"Alias Rejection":[[5,"alias-rejection"]],"Analog Input / Scan Option Flags":[[0,"analog-input-scan-option-flags"]],"Analog Input Modes":[[0,"analog-input-modes"]],"Analog Input Ranges":[[0,"analog-input-ranges"]],"Analog input modes":[[6,"analog-input-modes"]],"Analog input ranges":[[6,"analog-input-ranges"]],"Best practices for accurate thermocouple measurements":[[5,"best-practices-for-accurate-thermocouple-measurements"]],"Board components":[[5,"board-components"],[5,"id1"],[5,"id12"],[5,"id20"],[5,"id28"]],"C Library Reference":[[0,null]],"C Test Function Reference":[[1,null]],"Creating a C program":[[4,"creating-a-c-program"]],"Creating a Python program":[[4,"creating-a-python-program"]],"DIO Config Items":[[0,"dio-config-items"],[6,"dio-config-items"]],"DIO Power jumper (W3)":[[5,"dio-power-jumper-w3"]],"Data":[[6,"data"],[6,"id3"],[6,"id5"],[6,"id7"],[6,"id9"]],"Data definitions":[[0,"data-definitions"],[0,"id3"],[0,"id6"],[0,"id12"]],"Data types and definitions":[[0,"data-types-and-definitions"],[0,"id9"]],"Device Info":[[0,"device-info"],[0,"id4"],[0,"id7"],[0,"id10"],[0,"id13"]],"Differential Input Configuration":[[5,"differential-input-configuration"]],"Firmware Updates":[[4,"firmware-updates"]],"Firmware updates":[[5,"firmware-updates"],[5,"id10"],[5,"id36"]],"Functional block diagram":[[5,"functional-block-diagram"],[5,"id6"],[5,"id17"],[5,"id25"],[5,"id33"]],"Functional details":[[5,"functional-details"],[5,"id7"],[5,"id18"],[5,"id26"],[5,"id34"]],"Functions":[[0,"functions"],[0,"id1"],[0,"id2"],[0,"id5"],[0,"id8"],[0,"id11"]],"Global functions and data":[[0,"global-functions-and-data"]],"Global methods and data":[[6,"global-methods-and-data"]],"HAT IDs":[[0,"hat-ids"]],"Hardware Compatibility":[[5,"hardware-compatibility"]],"Hardware Overview":[[5,null]],"Hat IDs":[[6,"hat-ids"]],"HatError class":[[6,"haterror-class"]],"HatInfo structure":[[0,"hatinfo-structure"]],"Header connector":[[5,"header-connector"],[5,"id5"],[5,"id16"],[5,"id24"],[5,"id32"]],"Installation":[[4,"installation"]],"Installing a single board":[[2,"installing-a-single-board"]],"Installing and Using the Library":[[4,null]],"Installing multiple boards":[[2,"installing-multiple-boards"]],"Installing the DAQ HAT board":[[2,null]],"MCC 118":[[4,"mcc-118"],[5,"mcc-118"]],"MCC 118 class":[[6,"mcc-118-class"]],"MCC 118 functions and data":[[0,"mcc-118-functions-and-data"]],"MCC 118 test functions":[[1,"mcc-118-test-functions"]],"MCC 118 test methods":[[7,"mcc-118-test-methods"]],"MCC 118-OEM":[[5,"mcc-118-oem"]],"MCC 128":[[5,"mcc-128"]],"MCC 128 class":[[6,"mcc-128-class"]],"MCC 128 functions and data":[[0,"mcc-128-functions-and-data"]],"MCC 128 test methods":[[7,"mcc-128-test-methods"]],"MCC 128-OEM":[[5,"mcc-128-oem"]],"MCC 134":[[5,"mcc-134"]],"MCC 134 class":[[6,"mcc-134-class"]],"MCC 134 functions and data":[[0,"mcc-134-functions-and-data"]],"MCC 152":[[5,"mcc-152"]],"MCC 152 class":[[6,"mcc-152-class"]],"MCC 152 functions and data":[[0,"mcc-152-functions-and-data"]],"MCC 172":[[5,"mcc-172"]],"MCC 172 class":[[6,"mcc-172-class"]],"MCC 172 functions and data":[[0,"mcc-172-functions-and-data"]],"MCC 172 test functions":[[1,"mcc-172-test-functions"]],"MCC 172 test methods":[[7,"mcc-172-test-methods"]],"MCC DAQ HAT Library documentation":[[3,null]],"Methods":[[6,"methods"],[6,"id1"],[6,"id2"],[6,"id4"],[6,"id6"],[6,"id8"]],"Mixing 3.3V and 5V digital inputs":[[5,"mixing-3-3v-and-5v-digital-inputs"]],"Python Library Reference":[[6,null]],"Python Test Function Reference":[[7,null]],"Result Codes":[[0,"result-codes"]],"Scan / read option flags":[[6,"scan-read-option-flags"]],"Scan Status Flags":[[0,"scan-status-flags"]],"Scan clock":[[5,"scan-clock"],[5,"id8"]],"Screw terminals":[[5,"screw-terminals"],[5,"id2"],[5,"id13"],[5,"id21"],[5,"id29"]],"Single Ended Input configuration":[[5,"single-ended-input-configuration"]],"Source Types":[[0,"source-types"]],"Source types":[[6,"source-types"]],"Specifications":[[5,"specifications"],[5,"id11"],[5,"id19"],[5,"id27"],[5,"id37"]],"Status LED":[[5,"status-led"],[5,"id4"],[5,"id15"],[5,"id23"],[5,"id31"]],"Thermocouple Types":[[0,"thermocouple-types"]],"Thermocouple types":[[6,"thermocouple-types"]],"Trigger":[[5,"trigger"],[5,"id9"],[5,"id35"]],"Trigger Modes":[[0,"trigger-modes"]],"Trigger modes":[[6,"trigger-modes"]]},"docnames":["c","c_test","hardware","index","install","overview","python","python_test"],"envversion":{"sphinx":66,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["c.rst","c_test.rst","hardware.rst","index.rst","install.rst","overview.rst","python.rst","python_test.rst"],"indexentries":{"a_in_clock_config_read() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_clock_config_read",false]],"a_in_clock_config_write() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_clock_config_write",false]],"a_in_mode_read() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_mode_read",false]],"a_in_mode_write() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_mode_write",false]],"a_in_range_read() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_range_read",false]],"a_in_range_write() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_range_write",false]],"a_in_read() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_read",false]],"a_in_read() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_read",false]],"a_in_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.a_in_read",false]],"a_in_scan_actual_rate() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_actual_rate",false]],"a_in_scan_actual_rate() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_actual_rate",false]],"a_in_scan_actual_rate() (daqhats.mcc172 static method)":[[6,"daqhats.mcc172.a_in_scan_actual_rate",false]],"a_in_scan_buffer_size() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_buffer_size",false]],"a_in_scan_buffer_size() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_buffer_size",false]],"a_in_scan_buffer_size() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_buffer_size",false]],"a_in_scan_channel_count() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_channel_count",false]],"a_in_scan_channel_count() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_channel_count",false]],"a_in_scan_channel_count() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_channel_count",false]],"a_in_scan_cleanup() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_cleanup",false]],"a_in_scan_cleanup() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_cleanup",false]],"a_in_scan_cleanup() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_cleanup",false]],"a_in_scan_read() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_read",false]],"a_in_scan_read() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_read",false]],"a_in_scan_read() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_read",false]],"a_in_scan_read_numpy() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_read_numpy",false]],"a_in_scan_read_numpy() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_read_numpy",false]],"a_in_scan_read_numpy() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_read_numpy",false]],"a_in_scan_start() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_start",false]],"a_in_scan_start() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_start",false]],"a_in_scan_start() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_start",false]],"a_in_scan_status() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_status",false]],"a_in_scan_status() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_status",false]],"a_in_scan_status() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_status",false]],"a_in_scan_stop() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.a_in_scan_stop",false]],"a_in_scan_stop() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.a_in_scan_stop",false]],"a_in_scan_stop() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_scan_stop",false]],"a_in_sensitivity_read() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_sensitivity_read",false]],"a_in_sensitivity_write() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.a_in_sensitivity_write",false]],"a_out_write() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.a_out_write",false]],"a_out_write_all() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.a_out_write_all",false]],"active_high (daqhats.triggermodes attribute)":[[6,"daqhats.TriggerModes.ACTIVE_HIGH",false]],"active_low (daqhats.triggermodes attribute)":[[6,"daqhats.TriggerModes.ACTIVE_LOW",false]],"address() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.address",false]],"address() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.address",false]],"address() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.address",false]],"address() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.address",false]],"address() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.address",false]],"analoginputmode (c enum)":[[0,"c.AnalogInputMode",false]],"analoginputmode (class in daqhats)":[[6,"daqhats.AnalogInputMode",false]],"analoginputmode.a_in_mode_diff (c enumerator)":[[0,"c.AnalogInputMode.A_IN_MODE_DIFF",false]],"analoginputmode.a_in_mode_se (c enumerator)":[[0,"c.AnalogInputMode.A_IN_MODE_SE",false]],"analoginputrange (c enum)":[[0,"c.AnalogInputRange",false]],"analoginputrange (class in daqhats)":[[6,"daqhats.AnalogInputRange",false]],"analoginputrange.a_in_range_bip_10v (c enumerator)":[[0,"c.AnalogInputRange.A_IN_RANGE_BIP_10V",false]],"analoginputrange.a_in_range_bip_1v (c enumerator)":[[0,"c.AnalogInputRange.A_IN_RANGE_BIP_1V",false]],"analoginputrange.a_in_range_bip_2v (c enumerator)":[[0,"c.AnalogInputRange.A_IN_RANGE_BIP_2V",false]],"analoginputrange.a_in_range_bip_5v (c enumerator)":[[0,"c.AnalogInputRange.A_IN_RANGE_BIP_5V",false]],"any (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.ANY",false]],"bip_10v (daqhats.analoginputrange attribute)":[[6,"daqhats.AnalogInputRange.BIP_10V",false]],"bip_1v (daqhats.analoginputrange attribute)":[[6,"daqhats.AnalogInputRange.BIP_1V",false]],"bip_2v (daqhats.analoginputrange attribute)":[[6,"daqhats.AnalogInputRange.BIP_2V",false]],"bip_5v (daqhats.analoginputrange attribute)":[[6,"daqhats.AnalogInputRange.BIP_5V",false]],"blink_led() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.blink_led",false]],"blink_led() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.blink_led",false]],"blink_led() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.blink_led",false]],"calibration_coefficient_read() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.calibration_coefficient_read",false]],"calibration_coefficient_read() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.calibration_coefficient_read",false]],"calibration_coefficient_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.calibration_coefficient_read",false]],"calibration_coefficient_read() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.calibration_coefficient_read",false]],"calibration_coefficient_write() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.calibration_coefficient_write",false]],"calibration_coefficient_write() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.calibration_coefficient_write",false]],"calibration_coefficient_write() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.calibration_coefficient_write",false]],"calibration_coefficient_write() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.calibration_coefficient_write",false]],"calibration_date() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.calibration_date",false]],"calibration_date() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.calibration_date",false]],"calibration_date() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.calibration_date",false]],"calibration_date() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.calibration_date",false]],"cjc_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.cjc_read",false]],"common_mode_tc_value (c macro)":[[0,"c.COMMON_MODE_TC_VALUE",false]],"common_mode_tc_value (daqhats.mcc134 attribute)":[[6,"daqhats.mcc134.COMMON_MODE_TC_VALUE",false]],"continuous (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.CONTINUOUS",false]],"default (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.DEFAULT",false]],"diff (daqhats.analoginputmode attribute)":[[6,"daqhats.AnalogInputMode.DIFF",false]],"dio_config_read_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_read_bit",false]],"dio_config_read_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_read_port",false]],"dio_config_read_tuple() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_read_tuple",false]],"dio_config_write_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_write_bit",false]],"dio_config_write_dict() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_write_dict",false]],"dio_config_write_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_config_write_port",false]],"dio_input_read_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_input_read_bit",false]],"dio_input_read_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_input_read_port",false]],"dio_input_read_tuple() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_input_read_tuple",false]],"dio_int_status_read_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_int_status_read_bit",false]],"dio_int_status_read_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_int_status_read_port",false]],"dio_int_status_read_tuple() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_int_status_read_tuple",false]],"dio_output_read_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_read_bit",false]],"dio_output_read_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_read_port",false]],"dio_output_read_tuple() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_read_tuple",false]],"dio_output_write_bit() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_write_bit",false]],"dio_output_write_dict() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_write_dict",false]],"dio_output_write_port() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_output_write_port",false]],"dio_reset() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.dio_reset",false]],"dioconfigitem (c enum)":[[0,"c.DIOConfigItem",false]],"dioconfigitem (class in daqhats)":[[6,"daqhats.DIOConfigItem",false]],"dioconfigitem.dio_direction (c enumerator)":[[0,"c.DIOConfigItem.DIO_DIRECTION",false]],"dioconfigitem.dio_input_invert (c enumerator)":[[0,"c.DIOConfigItem.DIO_INPUT_INVERT",false]],"dioconfigitem.dio_input_latch (c enumerator)":[[0,"c.DIOConfigItem.DIO_INPUT_LATCH",false]],"dioconfigitem.dio_int_mask (c enumerator)":[[0,"c.DIOConfigItem.DIO_INT_MASK",false]],"dioconfigitem.dio_output_type (c enumerator)":[[0,"c.DIOConfigItem.DIO_OUTPUT_TYPE",false]],"dioconfigitem.dio_pull_config (c enumerator)":[[0,"c.DIOConfigItem.DIO_PULL_CONFIG",false]],"dioconfigitem.dio_pull_enable (c enumerator)":[[0,"c.DIOConfigItem.DIO_PULL_ENABLE",false]],"direction (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.DIRECTION",false]],"disabled (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.DISABLED",false]],"extclock (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.EXTCLOCK",false]],"exttrigger (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.EXTTRIGGER",false]],"falling_edge (daqhats.triggermodes attribute)":[[6,"daqhats.TriggerModes.FALLING_EDGE",false]],"firmware_version() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.firmware_version",false]],"firmware_version() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.firmware_version",false]],"firmware_version() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.firmware_version",false]],"hat_error_message (c function)":[[0,"c.hat_error_message",false]],"hat_interrupt_callback_disable (c function)":[[0,"c.hat_interrupt_callback_disable",false]],"hat_interrupt_callback_enable (c function)":[[0,"c.hat_interrupt_callback_enable",false]],"hat_interrupt_state (c function)":[[0,"c.hat_interrupt_state",false]],"hat_list (c function)":[[0,"c.hat_list",false]],"hat_list() (in module daqhats)":[[6,"daqhats.hat_list",false]],"hat_wait_for_interrupt (c function)":[[0,"c.hat_wait_for_interrupt",false]],"haterror":[[6,"daqhats.HatError",false]],"hatids (c enum)":[[0,"c.HatIDs",false]],"hatids (class in daqhats)":[[6,"daqhats.HatIDs",false]],"hatids.hat_id_any (c enumerator)":[[0,"c.HatIDs.HAT_ID_ANY",false]],"hatids.hat_id_mcc_118 (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_118",false]],"hatids.hat_id_mcc_118_bootloader (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_118_BOOTLOADER",false]],"hatids.hat_id_mcc_128 (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_128",false]],"hatids.hat_id_mcc_134 (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_134",false]],"hatids.hat_id_mcc_152 (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_152",false]],"hatids.hat_id_mcc_172 (c enumerator)":[[0,"c.HatIDs.HAT_ID_MCC_172",false]],"hatinfo (c struct)":[[0,"c.HatInfo",false]],"hatinfo.address (c var)":[[0,"c.HatInfo.address",false]],"hatinfo.id (c var)":[[0,"c.HatInfo.id",false]],"hatinfo.product_name (c var)":[[0,"c.HatInfo.product_name",false]],"hatinfo.version (c var)":[[0,"c.HatInfo.version",false]],"iepe_config_read() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.iepe_config_read",false]],"iepe_config_write() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.iepe_config_write",false]],"info() (daqhats.mcc118 static method)":[[6,"daqhats.mcc118.info",false]],"info() (daqhats.mcc128 static method)":[[6,"daqhats.mcc128.info",false]],"info() (daqhats.mcc134 static method)":[[6,"daqhats.mcc134.info",false]],"info() (daqhats.mcc152 static method)":[[6,"daqhats.mcc152.info",false]],"info() (daqhats.mcc172 static method)":[[6,"daqhats.mcc172.info",false]],"input_invert (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.INPUT_INVERT",false]],"input_latch (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.INPUT_LATCH",false]],"int_mask (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.INT_MASK",false]],"interrupt_callback_disable() (in module daqhats)":[[6,"daqhats.interrupt_callback_disable",false]],"interrupt_callback_enable() (in module daqhats)":[[6,"daqhats.interrupt_callback_enable",false]],"interrupt_state() (in module daqhats)":[[6,"daqhats.interrupt_state",false]],"local (daqhats.sourcetype attribute)":[[6,"daqhats.SourceType.LOCAL",false]],"master (daqhats.sourcetype attribute)":[[6,"daqhats.SourceType.MASTER",false]],"max_number_hats (c macro)":[[0,"c.MAX_NUMBER_HATS",false]],"mcc118 (class in daqhats)":[[6,"daqhats.mcc118",false]],"mcc118_a_in_read (c function)":[[0,"c.mcc118_a_in_read",false]],"mcc118_a_in_scan_actual_rate (c function)":[[0,"c.mcc118_a_in_scan_actual_rate",false]],"mcc118_a_in_scan_buffer_size (c function)":[[0,"c.mcc118_a_in_scan_buffer_size",false]],"mcc118_a_in_scan_channel_count (c function)":[[0,"c.mcc118_a_in_scan_channel_count",false]],"mcc118_a_in_scan_cleanup (c function)":[[0,"c.mcc118_a_in_scan_cleanup",false]],"mcc118_a_in_scan_read (c function)":[[0,"c.mcc118_a_in_scan_read",false]],"mcc118_a_in_scan_start (c function)":[[0,"c.mcc118_a_in_scan_start",false]],"mcc118_a_in_scan_status (c function)":[[0,"c.mcc118_a_in_scan_status",false]],"mcc118_a_in_scan_stop (c function)":[[0,"c.mcc118_a_in_scan_stop",false]],"mcc118_blink_led (c function)":[[0,"c.mcc118_blink_led",false]],"mcc118_calibration_coefficient_read (c function)":[[0,"c.mcc118_calibration_coefficient_read",false]],"mcc118_calibration_coefficient_write (c function)":[[0,"c.mcc118_calibration_coefficient_write",false]],"mcc118_calibration_date (c function)":[[0,"c.mcc118_calibration_date",false]],"mcc118_close (c function)":[[0,"c.mcc118_close",false]],"mcc118_firmware_version (c function)":[[0,"c.mcc118_firmware_version",false]],"mcc118_info (c function)":[[0,"c.mcc118_info",false]],"mcc118_is_open (c function)":[[0,"c.mcc118_is_open",false]],"mcc118_open (c function)":[[0,"c.mcc118_open",false]],"mcc118_serial (c function)":[[0,"c.mcc118_serial",false]],"mcc118_test_clock (c function)":[[1,"c.mcc118_test_clock",false]],"mcc118_test_trigger (c function)":[[1,"c.mcc118_test_trigger",false]],"mcc118_trigger_mode (c function)":[[0,"c.mcc118_trigger_mode",false]],"mcc118deviceinfo (c struct)":[[0,"c.MCC118DeviceInfo",false]],"mcc118deviceinfo.ai_max_code (c var)":[[0,"c.MCC118DeviceInfo.AI_MAX_CODE",false]],"mcc118deviceinfo.ai_max_range (c var)":[[0,"c.MCC118DeviceInfo.AI_MAX_RANGE",false]],"mcc118deviceinfo.ai_max_voltage (c var)":[[0,"c.MCC118DeviceInfo.AI_MAX_VOLTAGE",false]],"mcc118deviceinfo.ai_min_code (c var)":[[0,"c.MCC118DeviceInfo.AI_MIN_CODE",false]],"mcc118deviceinfo.ai_min_range (c var)":[[0,"c.MCC118DeviceInfo.AI_MIN_RANGE",false]],"mcc118deviceinfo.ai_min_voltage (c var)":[[0,"c.MCC118DeviceInfo.AI_MIN_VOLTAGE",false]],"mcc118deviceinfo.num_ai_channels (c var)":[[0,"c.MCC118DeviceInfo.NUM_AI_CHANNELS",false]],"mcc128 (class in daqhats)":[[6,"daqhats.mcc128",false]],"mcc128_a_in_mode_read (c function)":[[0,"c.mcc128_a_in_mode_read",false]],"mcc128_a_in_mode_write (c function)":[[0,"c.mcc128_a_in_mode_write",false]],"mcc128_a_in_range_read (c function)":[[0,"c.mcc128_a_in_range_read",false]],"mcc128_a_in_range_write (c function)":[[0,"c.mcc128_a_in_range_write",false]],"mcc128_a_in_read (c function)":[[0,"c.mcc128_a_in_read",false]],"mcc128_a_in_scan_actual_rate (c function)":[[0,"c.mcc128_a_in_scan_actual_rate",false]],"mcc128_a_in_scan_buffer_size (c function)":[[0,"c.mcc128_a_in_scan_buffer_size",false]],"mcc128_a_in_scan_channel_count (c function)":[[0,"c.mcc128_a_in_scan_channel_count",false]],"mcc128_a_in_scan_cleanup (c function)":[[0,"c.mcc128_a_in_scan_cleanup",false]],"mcc128_a_in_scan_read (c function)":[[0,"c.mcc128_a_in_scan_read",false]],"mcc128_a_in_scan_start (c function)":[[0,"c.mcc128_a_in_scan_start",false]],"mcc128_a_in_scan_status (c function)":[[0,"c.mcc128_a_in_scan_status",false]],"mcc128_a_in_scan_stop (c function)":[[0,"c.mcc128_a_in_scan_stop",false]],"mcc128_blink_led (c function)":[[0,"c.mcc128_blink_led",false]],"mcc128_calibration_coefficient_read (c function)":[[0,"c.mcc128_calibration_coefficient_read",false]],"mcc128_calibration_coefficient_write (c function)":[[0,"c.mcc128_calibration_coefficient_write",false]],"mcc128_calibration_date (c function)":[[0,"c.mcc128_calibration_date",false]],"mcc128_close (c function)":[[0,"c.mcc128_close",false]],"mcc128_firmware_version (c function)":[[0,"c.mcc128_firmware_version",false]],"mcc128_info (c function)":[[0,"c.mcc128_info",false]],"mcc128_is_open (c function)":[[0,"c.mcc128_is_open",false]],"mcc128_open (c function)":[[0,"c.mcc128_open",false]],"mcc128_serial (c function)":[[0,"c.mcc128_serial",false]],"mcc128_trigger_mode (c function)":[[0,"c.mcc128_trigger_mode",false]],"mcc128deviceinfo (c struct)":[[0,"c.MCC128DeviceInfo",false]],"mcc128deviceinfo.ai_max_code (c var)":[[0,"c.MCC128DeviceInfo.AI_MAX_CODE",false]],"mcc128deviceinfo.ai_max_range (c var)":[[0,"c.MCC128DeviceInfo.AI_MAX_RANGE",false]],"mcc128deviceinfo.ai_max_voltage (c var)":[[0,"c.MCC128DeviceInfo.AI_MAX_VOLTAGE",false]],"mcc128deviceinfo.ai_min_code (c var)":[[0,"c.MCC128DeviceInfo.AI_MIN_CODE",false]],"mcc128deviceinfo.ai_min_range (c var)":[[0,"c.MCC128DeviceInfo.AI_MIN_RANGE",false]],"mcc128deviceinfo.ai_min_voltage (c var)":[[0,"c.MCC128DeviceInfo.AI_MIN_VOLTAGE",false]],"mcc128deviceinfo.num_ai_channels (c var)":[[0,"c.MCC128DeviceInfo.NUM_AI_CHANNELS",false]],"mcc128deviceinfo.num_ai_modes (c var)":[[0,"c.MCC128DeviceInfo.NUM_AI_MODES",false]],"mcc128deviceinfo.num_ai_ranges (c var)":[[0,"c.MCC128DeviceInfo.NUM_AI_RANGES",false]],"mcc134 (class in daqhats)":[[6,"daqhats.mcc134",false]],"mcc134_a_in_read (c function)":[[0,"c.mcc134_a_in_read",false]],"mcc134_calibration_coefficient_read (c function)":[[0,"c.mcc134_calibration_coefficient_read",false]],"mcc134_calibration_coefficient_write (c function)":[[0,"c.mcc134_calibration_coefficient_write",false]],"mcc134_calibration_date (c function)":[[0,"c.mcc134_calibration_date",false]],"mcc134_cjc_read (c function)":[[0,"c.mcc134_cjc_read",false]],"mcc134_close (c function)":[[0,"c.mcc134_close",false]],"mcc134_info (c function)":[[0,"c.mcc134_info",false]],"mcc134_is_open (c function)":[[0,"c.mcc134_is_open",false]],"mcc134_open (c function)":[[0,"c.mcc134_open",false]],"mcc134_serial (c function)":[[0,"c.mcc134_serial",false]],"mcc134_t_in_read (c function)":[[0,"c.mcc134_t_in_read",false]],"mcc134_tc_type_read (c function)":[[0,"c.mcc134_tc_type_read",false]],"mcc134_tc_type_write (c function)":[[0,"c.mcc134_tc_type_write",false]],"mcc134_update_interval_read (c function)":[[0,"c.mcc134_update_interval_read",false]],"mcc134_update_interval_write (c function)":[[0,"c.mcc134_update_interval_write",false]],"mcc134deviceinfo (c struct)":[[0,"c.MCC134DeviceInfo",false]],"mcc134deviceinfo.ai_max_code (c var)":[[0,"c.MCC134DeviceInfo.AI_MAX_CODE",false]],"mcc134deviceinfo.ai_max_range (c var)":[[0,"c.MCC134DeviceInfo.AI_MAX_RANGE",false]],"mcc134deviceinfo.ai_max_voltage (c var)":[[0,"c.MCC134DeviceInfo.AI_MAX_VOLTAGE",false]],"mcc134deviceinfo.ai_min_code (c var)":[[0,"c.MCC134DeviceInfo.AI_MIN_CODE",false]],"mcc134deviceinfo.ai_min_range (c var)":[[0,"c.MCC134DeviceInfo.AI_MIN_RANGE",false]],"mcc134deviceinfo.ai_min_voltage (c var)":[[0,"c.MCC134DeviceInfo.AI_MIN_VOLTAGE",false]],"mcc134deviceinfo.num_ai_channels (c var)":[[0,"c.MCC134DeviceInfo.NUM_AI_CHANNELS",false]],"mcc152 (class in daqhats)":[[6,"daqhats.mcc152",false]],"mcc152_a_out_write (c function)":[[0,"c.mcc152_a_out_write",false]],"mcc152_a_out_write_all (c function)":[[0,"c.mcc152_a_out_write_all",false]],"mcc152_close (c function)":[[0,"c.mcc152_close",false]],"mcc152_dio_config_read_bit (c function)":[[0,"c.mcc152_dio_config_read_bit",false]],"mcc152_dio_config_read_port (c function)":[[0,"c.mcc152_dio_config_read_port",false]],"mcc152_dio_config_write_bit (c function)":[[0,"c.mcc152_dio_config_write_bit",false]],"mcc152_dio_config_write_port (c function)":[[0,"c.mcc152_dio_config_write_port",false]],"mcc152_dio_input_read_bit (c function)":[[0,"c.mcc152_dio_input_read_bit",false]],"mcc152_dio_input_read_port (c function)":[[0,"c.mcc152_dio_input_read_port",false]],"mcc152_dio_int_status_read_bit (c function)":[[0,"c.mcc152_dio_int_status_read_bit",false]],"mcc152_dio_int_status_read_port (c function)":[[0,"c.mcc152_dio_int_status_read_port",false]],"mcc152_dio_output_read_bit (c function)":[[0,"c.mcc152_dio_output_read_bit",false]],"mcc152_dio_output_read_port (c function)":[[0,"c.mcc152_dio_output_read_port",false]],"mcc152_dio_output_write_bit (c function)":[[0,"c.mcc152_dio_output_write_bit",false]],"mcc152_dio_output_write_port (c function)":[[0,"c.mcc152_dio_output_write_port",false]],"mcc152_dio_reset (c function)":[[0,"c.mcc152_dio_reset",false]],"mcc152_info (c function)":[[0,"c.mcc152_info",false]],"mcc152_is_open (c function)":[[0,"c.mcc152_is_open",false]],"mcc152_open (c function)":[[0,"c.mcc152_open",false]],"mcc152_serial (c function)":[[0,"c.mcc152_serial",false]],"mcc152deviceinfo (c struct)":[[0,"c.MCC152DeviceInfo",false]],"mcc152deviceinfo.ao_max_code (c var)":[[0,"c.MCC152DeviceInfo.AO_MAX_CODE",false]],"mcc152deviceinfo.ao_max_range (c var)":[[0,"c.MCC152DeviceInfo.AO_MAX_RANGE",false]],"mcc152deviceinfo.ao_max_voltage (c var)":[[0,"c.MCC152DeviceInfo.AO_MAX_VOLTAGE",false]],"mcc152deviceinfo.ao_min_code (c var)":[[0,"c.MCC152DeviceInfo.AO_MIN_CODE",false]],"mcc152deviceinfo.ao_min_range (c var)":[[0,"c.MCC152DeviceInfo.AO_MIN_RANGE",false]],"mcc152deviceinfo.ao_min_voltage (c var)":[[0,"c.MCC152DeviceInfo.AO_MIN_VOLTAGE",false]],"mcc152deviceinfo.num_ao_channels (c var)":[[0,"c.MCC152DeviceInfo.NUM_AO_CHANNELS",false]],"mcc152deviceinfo.num_dio_channels (c var)":[[0,"c.MCC152DeviceInfo.NUM_DIO_CHANNELS",false]],"mcc172 (class in daqhats)":[[6,"daqhats.mcc172",false]],"mcc172_a_in_clock_config_read (c function)":[[0,"c.mcc172_a_in_clock_config_read",false]],"mcc172_a_in_clock_config_write (c function)":[[0,"c.mcc172_a_in_clock_config_write",false]],"mcc172_a_in_scan_buffer_size (c function)":[[0,"c.mcc172_a_in_scan_buffer_size",false]],"mcc172_a_in_scan_channel_count (c function)":[[0,"c.mcc172_a_in_scan_channel_count",false]],"mcc172_a_in_scan_cleanup (c function)":[[0,"c.mcc172_a_in_scan_cleanup",false]],"mcc172_a_in_scan_read (c function)":[[0,"c.mcc172_a_in_scan_read",false]],"mcc172_a_in_scan_start (c function)":[[0,"c.mcc172_a_in_scan_start",false]],"mcc172_a_in_scan_status (c function)":[[0,"c.mcc172_a_in_scan_status",false]],"mcc172_a_in_scan_stop (c function)":[[0,"c.mcc172_a_in_scan_stop",false]],"mcc172_a_in_sensitivity_read (c function)":[[0,"c.mcc172_a_in_sensitivity_read",false]],"mcc172_a_in_sensitivity_write (c function)":[[0,"c.mcc172_a_in_sensitivity_write",false]],"mcc172_blink_led (c function)":[[0,"c.mcc172_blink_led",false]],"mcc172_calibration_coefficient_read (c function)":[[0,"c.mcc172_calibration_coefficient_read",false]],"mcc172_calibration_coefficient_write (c function)":[[0,"c.mcc172_calibration_coefficient_write",false]],"mcc172_calibration_date (c function)":[[0,"c.mcc172_calibration_date",false]],"mcc172_close (c function)":[[0,"c.mcc172_close",false]],"mcc172_firmware_version (c function)":[[0,"c.mcc172_firmware_version",false]],"mcc172_iepe_config_read (c function)":[[0,"c.mcc172_iepe_config_read",false]],"mcc172_iepe_config_write (c function)":[[0,"c.mcc172_iepe_config_write",false]],"mcc172_info (c function)":[[0,"c.mcc172_info",false]],"mcc172_is_open (c function)":[[0,"c.mcc172_is_open",false]],"mcc172_open (c function)":[[0,"c.mcc172_open",false]],"mcc172_serial (c function)":[[0,"c.mcc172_serial",false]],"mcc172_test_signals_read (c function)":[[1,"c.mcc172_test_signals_read",false]],"mcc172_test_signals_write (c function)":[[1,"c.mcc172_test_signals_write",false]],"mcc172_trigger_config (c function)":[[0,"c.mcc172_trigger_config",false]],"mcc172deviceinfo (c struct)":[[0,"c.MCC172DeviceInfo",false]],"mcc172deviceinfo.ai_max_code (c var)":[[0,"c.MCC172DeviceInfo.AI_MAX_CODE",false]],"mcc172deviceinfo.ai_max_range (c var)":[[0,"c.MCC172DeviceInfo.AI_MAX_RANGE",false]],"mcc172deviceinfo.ai_max_voltage (c var)":[[0,"c.MCC172DeviceInfo.AI_MAX_VOLTAGE",false]],"mcc172deviceinfo.ai_min_code (c var)":[[0,"c.MCC172DeviceInfo.AI_MIN_CODE",false]],"mcc172deviceinfo.ai_min_range (c var)":[[0,"c.MCC172DeviceInfo.AI_MIN_RANGE",false]],"mcc172deviceinfo.ai_min_voltage (c var)":[[0,"c.MCC172DeviceInfo.AI_MIN_VOLTAGE",false]],"mcc172deviceinfo.num_ai_channels (c var)":[[0,"c.MCC172DeviceInfo.NUM_AI_CHANNELS",false]],"mcc_118 (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.MCC_118",false]],"mcc_128 (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.MCC_128",false]],"mcc_134 (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.MCC_134",false]],"mcc_152 (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.MCC_152",false]],"mcc_172 (daqhats.hatids attribute)":[[6,"daqhats.HatIDs.MCC_172",false]],"nocalibratedata (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.NOCALIBRATEDATA",false]],"noscaledata (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.NOSCALEDATA",false]],"open_tc_value (c macro)":[[0,"c.OPEN_TC_VALUE",false]],"open_tc_value (daqhats.mcc134 attribute)":[[6,"daqhats.mcc134.OPEN_TC_VALUE",false]],"optionflags (class in daqhats)":[[6,"daqhats.OptionFlags",false]],"opts_continuous (c macro)":[[0,"c.OPTS_CONTINUOUS",false]],"opts_default (c macro)":[[0,"c.OPTS_DEFAULT",false]],"opts_extclock (c macro)":[[0,"c.OPTS_EXTCLOCK",false]],"opts_exttrigger (c macro)":[[0,"c.OPTS_EXTTRIGGER",false]],"opts_nocalibratedata (c macro)":[[0,"c.OPTS_NOCALIBRATEDATA",false]],"opts_noscaledata (c macro)":[[0,"c.OPTS_NOSCALEDATA",false]],"output_type (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.OUTPUT_TYPE",false]],"overrange_tc_value (c macro)":[[0,"c.OVERRANGE_TC_VALUE",false]],"overrange_tc_value (daqhats.mcc134 attribute)":[[6,"daqhats.mcc134.OVERRANGE_TC_VALUE",false]],"pull_config (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.PULL_CONFIG",false]],"pull_enable (daqhats.dioconfigitem attribute)":[[6,"daqhats.DIOConfigItem.PULL_ENABLE",false]],"resultcode (c enum)":[[0,"c.ResultCode",false]],"resultcode.result_bad_parameter (c enumerator)":[[0,"c.ResultCode.RESULT_BAD_PARAMETER",false]],"resultcode.result_busy (c enumerator)":[[0,"c.ResultCode.RESULT_BUSY",false]],"resultcode.result_comms_failure (c enumerator)":[[0,"c.ResultCode.RESULT_COMMS_FAILURE",false]],"resultcode.result_invalid_device (c enumerator)":[[0,"c.ResultCode.RESULT_INVALID_DEVICE",false]],"resultcode.result_lock_timeout (c enumerator)":[[0,"c.ResultCode.RESULT_LOCK_TIMEOUT",false]],"resultcode.result_resource_unavail (c enumerator)":[[0,"c.ResultCode.RESULT_RESOURCE_UNAVAIL",false]],"resultcode.result_success (c enumerator)":[[0,"c.ResultCode.RESULT_SUCCESS",false]],"resultcode.result_timeout (c enumerator)":[[0,"c.ResultCode.RESULT_TIMEOUT",false]],"resultcode.result_undefined (c enumerator)":[[0,"c.ResultCode.RESULT_UNDEFINED",false]],"rising_edge (daqhats.triggermodes attribute)":[[6,"daqhats.TriggerModes.RISING_EDGE",false]],"se (daqhats.analoginputmode attribute)":[[6,"daqhats.AnalogInputMode.SE",false]],"serial() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.serial",false]],"serial() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.serial",false]],"serial() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.serial",false]],"serial() (daqhats.mcc152 method)":[[6,"daqhats.mcc152.serial",false]],"serial() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.serial",false]],"slave (daqhats.sourcetype attribute)":[[6,"daqhats.SourceType.SLAVE",false]],"sourcetype (c enum)":[[0,"c.SourceType",false]],"sourcetype (class in daqhats)":[[6,"daqhats.SourceType",false]],"sourcetype.source_local (c enumerator)":[[0,"c.SourceType.SOURCE_LOCAL",false]],"sourcetype.source_master (c enumerator)":[[0,"c.SourceType.SOURCE_MASTER",false]],"sourcetype.source_slave (c enumerator)":[[0,"c.SourceType.SOURCE_SLAVE",false]],"status_buffer_overrun (c macro)":[[0,"c.STATUS_BUFFER_OVERRUN",false]],"status_hw_overrun (c macro)":[[0,"c.STATUS_HW_OVERRUN",false]],"status_running (c macro)":[[0,"c.STATUS_RUNNING",false]],"status_triggered (c macro)":[[0,"c.STATUS_TRIGGERED",false]],"t_in_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.t_in_read",false]],"tc_type_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.tc_type_read",false]],"tc_type_write() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.tc_type_write",false]],"tctypes (c enum)":[[0,"c.TcTypes",false]],"tctypes (class in daqhats)":[[6,"daqhats.TcTypes",false]],"tctypes.tc_disabled (c enumerator)":[[0,"c.TcTypes.TC_DISABLED",false]],"tctypes.tc_type_b (c enumerator)":[[0,"c.TcTypes.TC_TYPE_B",false]],"tctypes.tc_type_e (c enumerator)":[[0,"c.TcTypes.TC_TYPE_E",false]],"tctypes.tc_type_j (c enumerator)":[[0,"c.TcTypes.TC_TYPE_J",false]],"tctypes.tc_type_k (c enumerator)":[[0,"c.TcTypes.TC_TYPE_K",false]],"tctypes.tc_type_n (c enumerator)":[[0,"c.TcTypes.TC_TYPE_N",false]],"tctypes.tc_type_r (c enumerator)":[[0,"c.TcTypes.TC_TYPE_R",false]],"tctypes.tc_type_s (c enumerator)":[[0,"c.TcTypes.TC_TYPE_S",false]],"tctypes.tc_type_t (c enumerator)":[[0,"c.TcTypes.TC_TYPE_T",false]],"temperature (daqhats.optionflags attribute)":[[6,"daqhats.OptionFlags.TEMPERATURE",false]],"trigger_config() (daqhats.mcc172 method)":[[6,"daqhats.mcc172.trigger_config",false]],"trigger_mode() (daqhats.mcc118 method)":[[6,"daqhats.mcc118.trigger_mode",false]],"trigger_mode() (daqhats.mcc128 method)":[[6,"daqhats.mcc128.trigger_mode",false]],"triggermode (c enum)":[[0,"c.TriggerMode",false]],"triggermode.trig_active_high (c enumerator)":[[0,"c.TriggerMode.TRIG_ACTIVE_HIGH",false]],"triggermode.trig_active_low (c enumerator)":[[0,"c.TriggerMode.TRIG_ACTIVE_LOW",false]],"triggermode.trig_falling_edge (c enumerator)":[[0,"c.TriggerMode.TRIG_FALLING_EDGE",false]],"triggermode.trig_rising_edge (c enumerator)":[[0,"c.TriggerMode.TRIG_RISING_EDGE",false]],"triggermodes (class in daqhats)":[[6,"daqhats.TriggerModes",false]],"type_b (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_B",false]],"type_e (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_E",false]],"type_j (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_J",false]],"type_k (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_K",false]],"type_n (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_N",false]],"type_r (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_R",false]],"type_s (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_S",false]],"type_t (daqhats.tctypes attribute)":[[6,"daqhats.TcTypes.TYPE_T",false]],"update_interval_read() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.update_interval_read",false]],"update_interval_write() (daqhats.mcc134 method)":[[6,"daqhats.mcc134.update_interval_write",false]],"wait_for_interrupt() (in module daqhats)":[[6,"daqhats.wait_for_interrupt",false]]},"objects":{"":[[0,0,1,"c.AnalogInputMode.A_IN_MODE_DIFF","A_IN_MODE_DIFF"],[0,0,1,"c.AnalogInputMode.A_IN_MODE_SE","A_IN_MODE_SE"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_10V","A_IN_RANGE_BIP_10V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_1V","A_IN_RANGE_BIP_1V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_2V","A_IN_RANGE_BIP_2V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_5V","A_IN_RANGE_BIP_5V"],[0,1,1,"c.AnalogInputMode","AnalogInputMode"],[0,1,1,"c.AnalogInputRange","AnalogInputRange"],[0,2,1,"c.COMMON_MODE_TC_VALUE","COMMON_MODE_TC_VALUE"],[0,1,1,"c.DIOConfigItem","DIOConfigItem"],[0,0,1,"c.DIOConfigItem.DIO_DIRECTION","DIO_DIRECTION"],[0,0,1,"c.DIOConfigItem.DIO_INPUT_INVERT","DIO_INPUT_INVERT"],[0,0,1,"c.DIOConfigItem.DIO_INPUT_LATCH","DIO_INPUT_LATCH"],[0,0,1,"c.DIOConfigItem.DIO_INT_MASK","DIO_INT_MASK"],[0,0,1,"c.DIOConfigItem.DIO_OUTPUT_TYPE","DIO_OUTPUT_TYPE"],[0,0,1,"c.DIOConfigItem.DIO_PULL_CONFIG","DIO_PULL_CONFIG"],[0,0,1,"c.DIOConfigItem.DIO_PULL_ENABLE","DIO_PULL_ENABLE"],[0,0,1,"c.HatIDs.HAT_ID_ANY","HAT_ID_ANY"],[0,0,1,"c.HatIDs.HAT_ID_MCC_118","HAT_ID_MCC_118"],[0,0,1,"c.HatIDs.HAT_ID_MCC_118_BOOTLOADER","HAT_ID_MCC_118_BOOTLOADER"],[0,0,1,"c.HatIDs.HAT_ID_MCC_128","HAT_ID_MCC_128"],[0,0,1,"c.HatIDs.HAT_ID_MCC_134","HAT_ID_MCC_134"],[0,0,1,"c.HatIDs.HAT_ID_MCC_152","HAT_ID_MCC_152"],[0,0,1,"c.HatIDs.HAT_ID_MCC_172","HAT_ID_MCC_172"],[0,1,1,"c.HatIDs","HatIDs"],[0,3,1,"c.HatInfo","HatInfo"],[0,2,1,"c.MAX_NUMBER_HATS","MAX_NUMBER_HATS"],[0,3,1,"c.MCC118DeviceInfo","MCC118DeviceInfo"],[0,3,1,"c.MCC128DeviceInfo","MCC128DeviceInfo"],[0,3,1,"c.MCC134DeviceInfo","MCC134DeviceInfo"],[0,3,1,"c.MCC152DeviceInfo","MCC152DeviceInfo"],[0,3,1,"c.MCC172DeviceInfo","MCC172DeviceInfo"],[0,2,1,"c.OPEN_TC_VALUE","OPEN_TC_VALUE"],[0,2,1,"c.OPTS_CONTINUOUS","OPTS_CONTINUOUS"],[0,2,1,"c.OPTS_DEFAULT","OPTS_DEFAULT"],[0,2,1,"c.OPTS_EXTCLOCK","OPTS_EXTCLOCK"],[0,2,1,"c.OPTS_EXTTRIGGER","OPTS_EXTTRIGGER"],[0,2,1,"c.OPTS_NOCALIBRATEDATA","OPTS_NOCALIBRATEDATA"],[0,2,1,"c.OPTS_NOSCALEDATA","OPTS_NOSCALEDATA"],[0,2,1,"c.OVERRANGE_TC_VALUE","OVERRANGE_TC_VALUE"],[0,0,1,"c.ResultCode.RESULT_BAD_PARAMETER","RESULT_BAD_PARAMETER"],[0,0,1,"c.ResultCode.RESULT_BUSY","RESULT_BUSY"],[0,0,1,"c.ResultCode.RESULT_COMMS_FAILURE","RESULT_COMMS_FAILURE"],[0,0,1,"c.ResultCode.RESULT_INVALID_DEVICE","RESULT_INVALID_DEVICE"],[0,0,1,"c.ResultCode.RESULT_LOCK_TIMEOUT","RESULT_LOCK_TIMEOUT"],[0,0,1,"c.ResultCode.RESULT_RESOURCE_UNAVAIL","RESULT_RESOURCE_UNAVAIL"],[0,0,1,"c.ResultCode.RESULT_SUCCESS","RESULT_SUCCESS"],[0,0,1,"c.ResultCode.RESULT_TIMEOUT","RESULT_TIMEOUT"],[0,0,1,"c.ResultCode.RESULT_UNDEFINED","RESULT_UNDEFINED"],[0,1,1,"c.ResultCode","ResultCode"],[0,0,1,"c.SourceType.SOURCE_LOCAL","SOURCE_LOCAL"],[0,0,1,"c.SourceType.SOURCE_MASTER","SOURCE_MASTER"],[0,0,1,"c.SourceType.SOURCE_SLAVE","SOURCE_SLAVE"],[0,2,1,"c.STATUS_BUFFER_OVERRUN","STATUS_BUFFER_OVERRUN"],[0,2,1,"c.STATUS_HW_OVERRUN","STATUS_HW_OVERRUN"],[0,2,1,"c.STATUS_RUNNING","STATUS_RUNNING"],[0,2,1,"c.STATUS_TRIGGERED","STATUS_TRIGGERED"],[0,1,1,"c.SourceType","SourceType"],[0,0,1,"c.TcTypes.TC_DISABLED","TC_DISABLED"],[0,0,1,"c.TcTypes.TC_TYPE_B","TC_TYPE_B"],[0,0,1,"c.TcTypes.TC_TYPE_E","TC_TYPE_E"],[0,0,1,"c.TcTypes.TC_TYPE_J","TC_TYPE_J"],[0,0,1,"c.TcTypes.TC_TYPE_K","TC_TYPE_K"],[0,0,1,"c.TcTypes.TC_TYPE_N","TC_TYPE_N"],[0,0,1,"c.TcTypes.TC_TYPE_R","TC_TYPE_R"],[0,0,1,"c.TcTypes.TC_TYPE_S","TC_TYPE_S"],[0,0,1,"c.TcTypes.TC_TYPE_T","TC_TYPE_T"],[0,0,1,"c.TriggerMode.TRIG_ACTIVE_HIGH","TRIG_ACTIVE_HIGH"],[0,0,1,"c.TriggerMode.TRIG_ACTIVE_LOW","TRIG_ACTIVE_LOW"],[0,0,1,"c.TriggerMode.TRIG_FALLING_EDGE","TRIG_FALLING_EDGE"],[0,0,1,"c.TriggerMode.TRIG_RISING_EDGE","TRIG_RISING_EDGE"],[0,1,1,"c.TcTypes","TcTypes"],[0,1,1,"c.TriggerMode","TriggerMode"],[0,5,1,"c.hat_error_message","hat_error_message"],[0,5,1,"c.hat_interrupt_callback_disable","hat_interrupt_callback_disable"],[0,5,1,"c.hat_interrupt_callback_enable","hat_interrupt_callback_enable"],[0,5,1,"c.hat_interrupt_state","hat_interrupt_state"],[0,5,1,"c.hat_list","hat_list"],[0,5,1,"c.hat_wait_for_interrupt","hat_wait_for_interrupt"],[0,5,1,"c.mcc118_a_in_read","mcc118_a_in_read"],[0,5,1,"c.mcc118_a_in_scan_actual_rate","mcc118_a_in_scan_actual_rate"],[0,5,1,"c.mcc118_a_in_scan_buffer_size","mcc118_a_in_scan_buffer_size"],[0,5,1,"c.mcc118_a_in_scan_channel_count","mcc118_a_in_scan_channel_count"],[0,5,1,"c.mcc118_a_in_scan_cleanup","mcc118_a_in_scan_cleanup"],[0,5,1,"c.mcc118_a_in_scan_read","mcc118_a_in_scan_read"],[0,5,1,"c.mcc118_a_in_scan_start","mcc118_a_in_scan_start"],[0,5,1,"c.mcc118_a_in_scan_status","mcc118_a_in_scan_status"],[0,5,1,"c.mcc118_a_in_scan_stop","mcc118_a_in_scan_stop"],[0,5,1,"c.mcc118_blink_led","mcc118_blink_led"],[0,5,1,"c.mcc118_calibration_coefficient_read","mcc118_calibration_coefficient_read"],[0,5,1,"c.mcc118_calibration_coefficient_write","mcc118_calibration_coefficient_write"],[0,5,1,"c.mcc118_calibration_date","mcc118_calibration_date"],[0,5,1,"c.mcc118_close","mcc118_close"],[0,5,1,"c.mcc118_firmware_version","mcc118_firmware_version"],[0,5,1,"c.mcc118_info","mcc118_info"],[0,5,1,"c.mcc118_is_open","mcc118_is_open"],[0,5,1,"c.mcc118_open","mcc118_open"],[0,5,1,"c.mcc118_serial","mcc118_serial"],[1,5,1,"c.mcc118_test_clock","mcc118_test_clock"],[1,5,1,"c.mcc118_test_trigger","mcc118_test_trigger"],[0,5,1,"c.mcc118_trigger_mode","mcc118_trigger_mode"],[0,5,1,"c.mcc128_a_in_mode_read","mcc128_a_in_mode_read"],[0,5,1,"c.mcc128_a_in_mode_write","mcc128_a_in_mode_write"],[0,5,1,"c.mcc128_a_in_range_read","mcc128_a_in_range_read"],[0,5,1,"c.mcc128_a_in_range_write","mcc128_a_in_range_write"],[0,5,1,"c.mcc128_a_in_read","mcc128_a_in_read"],[0,5,1,"c.mcc128_a_in_scan_actual_rate","mcc128_a_in_scan_actual_rate"],[0,5,1,"c.mcc128_a_in_scan_buffer_size","mcc128_a_in_scan_buffer_size"],[0,5,1,"c.mcc128_a_in_scan_channel_count","mcc128_a_in_scan_channel_count"],[0,5,1,"c.mcc128_a_in_scan_cleanup","mcc128_a_in_scan_cleanup"],[0,5,1,"c.mcc128_a_in_scan_read","mcc128_a_in_scan_read"],[0,5,1,"c.mcc128_a_in_scan_start","mcc128_a_in_scan_start"],[0,5,1,"c.mcc128_a_in_scan_status","mcc128_a_in_scan_status"],[0,5,1,"c.mcc128_a_in_scan_stop","mcc128_a_in_scan_stop"],[0,5,1,"c.mcc128_blink_led","mcc128_blink_led"],[0,5,1,"c.mcc128_calibration_coefficient_read","mcc128_calibration_coefficient_read"],[0,5,1,"c.mcc128_calibration_coefficient_write","mcc128_calibration_coefficient_write"],[0,5,1,"c.mcc128_calibration_date","mcc128_calibration_date"],[0,5,1,"c.mcc128_close","mcc128_close"],[0,5,1,"c.mcc128_firmware_version","mcc128_firmware_version"],[0,5,1,"c.mcc128_info","mcc128_info"],[0,5,1,"c.mcc128_is_open","mcc128_is_open"],[0,5,1,"c.mcc128_open","mcc128_open"],[0,5,1,"c.mcc128_serial","mcc128_serial"],[0,5,1,"c.mcc128_trigger_mode","mcc128_trigger_mode"],[0,5,1,"c.mcc134_a_in_read","mcc134_a_in_read"],[0,5,1,"c.mcc134_calibration_coefficient_read","mcc134_calibration_coefficient_read"],[0,5,1,"c.mcc134_calibration_coefficient_write","mcc134_calibration_coefficient_write"],[0,5,1,"c.mcc134_calibration_date","mcc134_calibration_date"],[0,5,1,"c.mcc134_cjc_read","mcc134_cjc_read"],[0,5,1,"c.mcc134_close","mcc134_close"],[0,5,1,"c.mcc134_info","mcc134_info"],[0,5,1,"c.mcc134_is_open","mcc134_is_open"],[0,5,1,"c.mcc134_open","mcc134_open"],[0,5,1,"c.mcc134_serial","mcc134_serial"],[0,5,1,"c.mcc134_t_in_read","mcc134_t_in_read"],[0,5,1,"c.mcc134_tc_type_read","mcc134_tc_type_read"],[0,5,1,"c.mcc134_tc_type_write","mcc134_tc_type_write"],[0,5,1,"c.mcc134_update_interval_read","mcc134_update_interval_read"],[0,5,1,"c.mcc134_update_interval_write","mcc134_update_interval_write"],[0,5,1,"c.mcc152_a_out_write","mcc152_a_out_write"],[0,5,1,"c.mcc152_a_out_write_all","mcc152_a_out_write_all"],[0,5,1,"c.mcc152_close","mcc152_close"],[0,5,1,"c.mcc152_dio_config_read_bit","mcc152_dio_config_read_bit"],[0,5,1,"c.mcc152_dio_config_read_port","mcc152_dio_config_read_port"],[0,5,1,"c.mcc152_dio_config_write_bit","mcc152_dio_config_write_bit"],[0,5,1,"c.mcc152_dio_config_write_port","mcc152_dio_config_write_port"],[0,5,1,"c.mcc152_dio_input_read_bit","mcc152_dio_input_read_bit"],[0,5,1,"c.mcc152_dio_input_read_port","mcc152_dio_input_read_port"],[0,5,1,"c.mcc152_dio_int_status_read_bit","mcc152_dio_int_status_read_bit"],[0,5,1,"c.mcc152_dio_int_status_read_port","mcc152_dio_int_status_read_port"],[0,5,1,"c.mcc152_dio_output_read_bit","mcc152_dio_output_read_bit"],[0,5,1,"c.mcc152_dio_output_read_port","mcc152_dio_output_read_port"],[0,5,1,"c.mcc152_dio_output_write_bit","mcc152_dio_output_write_bit"],[0,5,1,"c.mcc152_dio_output_write_port","mcc152_dio_output_write_port"],[0,5,1,"c.mcc152_dio_reset","mcc152_dio_reset"],[0,5,1,"c.mcc152_info","mcc152_info"],[0,5,1,"c.mcc152_is_open","mcc152_is_open"],[0,5,1,"c.mcc152_open","mcc152_open"],[0,5,1,"c.mcc152_serial","mcc152_serial"],[0,5,1,"c.mcc172_a_in_clock_config_read","mcc172_a_in_clock_config_read"],[0,5,1,"c.mcc172_a_in_clock_config_write","mcc172_a_in_clock_config_write"],[0,5,1,"c.mcc172_a_in_scan_buffer_size","mcc172_a_in_scan_buffer_size"],[0,5,1,"c.mcc172_a_in_scan_channel_count","mcc172_a_in_scan_channel_count"],[0,5,1,"c.mcc172_a_in_scan_cleanup","mcc172_a_in_scan_cleanup"],[0,5,1,"c.mcc172_a_in_scan_read","mcc172_a_in_scan_read"],[0,5,1,"c.mcc172_a_in_scan_start","mcc172_a_in_scan_start"],[0,5,1,"c.mcc172_a_in_scan_status","mcc172_a_in_scan_status"],[0,5,1,"c.mcc172_a_in_scan_stop","mcc172_a_in_scan_stop"],[0,5,1,"c.mcc172_a_in_sensitivity_read","mcc172_a_in_sensitivity_read"],[0,5,1,"c.mcc172_a_in_sensitivity_write","mcc172_a_in_sensitivity_write"],[0,5,1,"c.mcc172_blink_led","mcc172_blink_led"],[0,5,1,"c.mcc172_calibration_coefficient_read","mcc172_calibration_coefficient_read"],[0,5,1,"c.mcc172_calibration_coefficient_write","mcc172_calibration_coefficient_write"],[0,5,1,"c.mcc172_calibration_date","mcc172_calibration_date"],[0,5,1,"c.mcc172_close","mcc172_close"],[0,5,1,"c.mcc172_firmware_version","mcc172_firmware_version"],[0,5,1,"c.mcc172_iepe_config_read","mcc172_iepe_config_read"],[0,5,1,"c.mcc172_iepe_config_write","mcc172_iepe_config_write"],[0,5,1,"c.mcc172_info","mcc172_info"],[0,5,1,"c.mcc172_is_open","mcc172_is_open"],[0,5,1,"c.mcc172_open","mcc172_open"],[0,5,1,"c.mcc172_serial","mcc172_serial"],[1,5,1,"c.mcc172_test_signals_read","mcc172_test_signals_read"],[1,5,1,"c.mcc172_test_signals_write","mcc172_test_signals_write"],[0,5,1,"c.mcc172_trigger_config","mcc172_trigger_config"]],"AnalogInputMode":[[0,0,1,"c.AnalogInputMode.A_IN_MODE_DIFF","A_IN_MODE_DIFF"],[0,0,1,"c.AnalogInputMode.A_IN_MODE_SE","A_IN_MODE_SE"]],"AnalogInputRange":[[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_10V","A_IN_RANGE_BIP_10V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_1V","A_IN_RANGE_BIP_1V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_2V","A_IN_RANGE_BIP_2V"],[0,0,1,"c.AnalogInputRange.A_IN_RANGE_BIP_5V","A_IN_RANGE_BIP_5V"]],"DIOConfigItem":[[0,0,1,"c.DIOConfigItem.DIO_DIRECTION","DIO_DIRECTION"],[0,0,1,"c.DIOConfigItem.DIO_INPUT_INVERT","DIO_INPUT_INVERT"],[0,0,1,"c.DIOConfigItem.DIO_INPUT_LATCH","DIO_INPUT_LATCH"],[0,0,1,"c.DIOConfigItem.DIO_INT_MASK","DIO_INT_MASK"],[0,0,1,"c.DIOConfigItem.DIO_OUTPUT_TYPE","DIO_OUTPUT_TYPE"],[0,0,1,"c.DIOConfigItem.DIO_PULL_CONFIG","DIO_PULL_CONFIG"],[0,0,1,"c.DIOConfigItem.DIO_PULL_ENABLE","DIO_PULL_ENABLE"]],"HatIDs":[[0,0,1,"c.HatIDs.HAT_ID_ANY","HAT_ID_ANY"],[0,0,1,"c.HatIDs.HAT_ID_MCC_118","HAT_ID_MCC_118"],[0,0,1,"c.HatIDs.HAT_ID_MCC_118_BOOTLOADER","HAT_ID_MCC_118_BOOTLOADER"],[0,0,1,"c.HatIDs.HAT_ID_MCC_128","HAT_ID_MCC_128"],[0,0,1,"c.HatIDs.HAT_ID_MCC_134","HAT_ID_MCC_134"],[0,0,1,"c.HatIDs.HAT_ID_MCC_152","HAT_ID_MCC_152"],[0,0,1,"c.HatIDs.HAT_ID_MCC_172","HAT_ID_MCC_172"]],"HatInfo":[[0,4,1,"c.HatInfo.address","address"],[0,4,1,"c.HatInfo.id","id"],[0,4,1,"c.HatInfo.product_name","product_name"],[0,4,1,"c.HatInfo.version","version"]],"MCC118DeviceInfo":[[0,4,1,"c.MCC118DeviceInfo.AI_MAX_CODE","AI_MAX_CODE"],[0,4,1,"c.MCC118DeviceInfo.AI_MAX_RANGE","AI_MAX_RANGE"],[0,4,1,"c.MCC118DeviceInfo.AI_MAX_VOLTAGE","AI_MAX_VOLTAGE"],[0,4,1,"c.MCC118DeviceInfo.AI_MIN_CODE","AI_MIN_CODE"],[0,4,1,"c.MCC118DeviceInfo.AI_MIN_RANGE","AI_MIN_RANGE"],[0,4,1,"c.MCC118DeviceInfo.AI_MIN_VOLTAGE","AI_MIN_VOLTAGE"],[0,4,1,"c.MCC118DeviceInfo.NUM_AI_CHANNELS","NUM_AI_CHANNELS"]],"MCC128DeviceInfo":[[0,4,1,"c.MCC128DeviceInfo.AI_MAX_CODE","AI_MAX_CODE"],[0,4,1,"c.MCC128DeviceInfo.AI_MAX_RANGE","AI_MAX_RANGE"],[0,4,1,"c.MCC128DeviceInfo.AI_MAX_VOLTAGE","AI_MAX_VOLTAGE"],[0,4,1,"c.MCC128DeviceInfo.AI_MIN_CODE","AI_MIN_CODE"],[0,4,1,"c.MCC128DeviceInfo.AI_MIN_RANGE","AI_MIN_RANGE"],[0,4,1,"c.MCC128DeviceInfo.AI_MIN_VOLTAGE","AI_MIN_VOLTAGE"],[0,4,1,"c.MCC128DeviceInfo.NUM_AI_CHANNELS","NUM_AI_CHANNELS"],[0,4,1,"c.MCC128DeviceInfo.NUM_AI_MODES","NUM_AI_MODES"],[0,4,1,"c.MCC128DeviceInfo.NUM_AI_RANGES","NUM_AI_RANGES"]],"MCC134DeviceInfo":[[0,4,1,"c.MCC134DeviceInfo.AI_MAX_CODE","AI_MAX_CODE"],[0,4,1,"c.MCC134DeviceInfo.AI_MAX_RANGE","AI_MAX_RANGE"],[0,4,1,"c.MCC134DeviceInfo.AI_MAX_VOLTAGE","AI_MAX_VOLTAGE"],[0,4,1,"c.MCC134DeviceInfo.AI_MIN_CODE","AI_MIN_CODE"],[0,4,1,"c.MCC134DeviceInfo.AI_MIN_RANGE","AI_MIN_RANGE"],[0,4,1,"c.MCC134DeviceInfo.AI_MIN_VOLTAGE","AI_MIN_VOLTAGE"],[0,4,1,"c.MCC134DeviceInfo.NUM_AI_CHANNELS","NUM_AI_CHANNELS"]],"MCC152DeviceInfo":[[0,4,1,"c.MCC152DeviceInfo.AO_MAX_CODE","AO_MAX_CODE"],[0,4,1,"c.MCC152DeviceInfo.AO_MAX_RANGE","AO_MAX_RANGE"],[0,4,1,"c.MCC152DeviceInfo.AO_MAX_VOLTAGE","AO_MAX_VOLTAGE"],[0,4,1,"c.MCC152DeviceInfo.AO_MIN_CODE","AO_MIN_CODE"],[0,4,1,"c.MCC152DeviceInfo.AO_MIN_RANGE","AO_MIN_RANGE"],[0,4,1,"c.MCC152DeviceInfo.AO_MIN_VOLTAGE","AO_MIN_VOLTAGE"],[0,4,1,"c.MCC152DeviceInfo.NUM_AO_CHANNELS","NUM_AO_CHANNELS"],[0,4,1,"c.MCC152DeviceInfo.NUM_DIO_CHANNELS","NUM_DIO_CHANNELS"]],"MCC172DeviceInfo":[[0,4,1,"c.MCC172DeviceInfo.AI_MAX_CODE","AI_MAX_CODE"],[0,4,1,"c.MCC172DeviceInfo.AI_MAX_RANGE","AI_MAX_RANGE"],[0,4,1,"c.MCC172DeviceInfo.AI_MAX_VOLTAGE","AI_MAX_VOLTAGE"],[0,4,1,"c.MCC172DeviceInfo.AI_MIN_CODE","AI_MIN_CODE"],[0,4,1,"c.MCC172DeviceInfo.AI_MIN_RANGE","AI_MIN_RANGE"],[0,4,1,"c.MCC172DeviceInfo.AI_MIN_VOLTAGE","AI_MIN_VOLTAGE"],[0,4,1,"c.MCC172DeviceInfo.NUM_AI_CHANNELS","NUM_AI_CHANNELS"]],"ResultCode":[[0,0,1,"c.ResultCode.RESULT_BAD_PARAMETER","RESULT_BAD_PARAMETER"],[0,0,1,"c.ResultCode.RESULT_BUSY","RESULT_BUSY"],[0,0,1,"c.ResultCode.RESULT_COMMS_FAILURE","RESULT_COMMS_FAILURE"],[0,0,1,"c.ResultCode.RESULT_INVALID_DEVICE","RESULT_INVALID_DEVICE"],[0,0,1,"c.ResultCode.RESULT_LOCK_TIMEOUT","RESULT_LOCK_TIMEOUT"],[0,0,1,"c.ResultCode.RESULT_RESOURCE_UNAVAIL","RESULT_RESOURCE_UNAVAIL"],[0,0,1,"c.ResultCode.RESULT_SUCCESS","RESULT_SUCCESS"],[0,0,1,"c.ResultCode.RESULT_TIMEOUT","RESULT_TIMEOUT"],[0,0,1,"c.ResultCode.RESULT_UNDEFINED","RESULT_UNDEFINED"]],"SourceType":[[0,0,1,"c.SourceType.SOURCE_LOCAL","SOURCE_LOCAL"],[0,0,1,"c.SourceType.SOURCE_MASTER","SOURCE_MASTER"],[0,0,1,"c.SourceType.SOURCE_SLAVE","SOURCE_SLAVE"]],"TcTypes":[[0,0,1,"c.TcTypes.TC_DISABLED","TC_DISABLED"],[0,0,1,"c.TcTypes.TC_TYPE_B","TC_TYPE_B"],[0,0,1,"c.TcTypes.TC_TYPE_E","TC_TYPE_E"],[0,0,1,"c.TcTypes.TC_TYPE_J","TC_TYPE_J"],[0,0,1,"c.TcTypes.TC_TYPE_K","TC_TYPE_K"],[0,0,1,"c.TcTypes.TC_TYPE_N","TC_TYPE_N"],[0,0,1,"c.TcTypes.TC_TYPE_R","TC_TYPE_R"],[0,0,1,"c.TcTypes.TC_TYPE_S","TC_TYPE_S"],[0,0,1,"c.TcTypes.TC_TYPE_T","TC_TYPE_T"]],"TriggerMode":[[0,0,1,"c.TriggerMode.TRIG_ACTIVE_HIGH","TRIG_ACTIVE_HIGH"],[0,0,1,"c.TriggerMode.TRIG_ACTIVE_LOW","TRIG_ACTIVE_LOW"],[0,0,1,"c.TriggerMode.TRIG_FALLING_EDGE","TRIG_FALLING_EDGE"],[0,0,1,"c.TriggerMode.TRIG_RISING_EDGE","TRIG_RISING_EDGE"]],"daqhats":[[6,7,1,"","AnalogInputMode"],[6,7,1,"","AnalogInputRange"],[6,7,1,"","DIOConfigItem"],[6,9,1,"","HatError"],[6,7,1,"","HatIDs"],[6,7,1,"","OptionFlags"],[6,7,1,"","SourceType"],[6,7,1,"","TcTypes"],[6,7,1,"","TriggerModes"],[6,10,1,"","hat_list"],[6,10,1,"","interrupt_callback_disable"],[6,10,1,"","interrupt_callback_enable"],[6,10,1,"","interrupt_state"],[6,7,1,"","mcc118"],[6,7,1,"","mcc128"],[6,7,1,"","mcc134"],[6,7,1,"","mcc152"],[6,7,1,"","mcc172"],[6,10,1,"","wait_for_interrupt"]],"daqhats.AnalogInputMode":[[6,8,1,"","DIFF"],[6,8,1,"","SE"]],"daqhats.AnalogInputRange":[[6,8,1,"","BIP_10V"],[6,8,1,"","BIP_1V"],[6,8,1,"","BIP_2V"],[6,8,1,"","BIP_5V"]],"daqhats.DIOConfigItem":[[6,8,1,"","DIRECTION"],[6,8,1,"","INPUT_INVERT"],[6,8,1,"","INPUT_LATCH"],[6,8,1,"","INT_MASK"],[6,8,1,"","OUTPUT_TYPE"],[6,8,1,"","PULL_CONFIG"],[6,8,1,"","PULL_ENABLE"]],"daqhats.HatIDs":[[6,8,1,"","ANY"],[6,8,1,"","MCC_118"],[6,8,1,"","MCC_128"],[6,8,1,"","MCC_134"],[6,8,1,"","MCC_152"],[6,8,1,"","MCC_172"]],"daqhats.OptionFlags":[[6,8,1,"","CONTINUOUS"],[6,8,1,"","DEFAULT"],[6,8,1,"","EXTCLOCK"],[6,8,1,"","EXTTRIGGER"],[6,8,1,"","NOCALIBRATEDATA"],[6,8,1,"","NOSCALEDATA"],[6,8,1,"","TEMPERATURE"]],"daqhats.SourceType":[[6,8,1,"","LOCAL"],[6,8,1,"","MASTER"],[6,8,1,"","SLAVE"]],"daqhats.TcTypes":[[6,8,1,"","DISABLED"],[6,8,1,"","TYPE_B"],[6,8,1,"","TYPE_E"],[6,8,1,"","TYPE_J"],[6,8,1,"","TYPE_K"],[6,8,1,"","TYPE_N"],[6,8,1,"","TYPE_R"],[6,8,1,"","TYPE_S"],[6,8,1,"","TYPE_T"]],"daqhats.TriggerModes":[[6,8,1,"","ACTIVE_HIGH"],[6,8,1,"","ACTIVE_LOW"],[6,8,1,"","FALLING_EDGE"],[6,8,1,"","RISING_EDGE"]],"daqhats.mcc118":[[6,11,1,"","a_in_read"],[6,11,1,"","a_in_scan_actual_rate"],[6,11,1,"","a_in_scan_buffer_size"],[6,11,1,"","a_in_scan_channel_count"],[6,11,1,"","a_in_scan_cleanup"],[6,11,1,"","a_in_scan_read"],[6,11,1,"","a_in_scan_read_numpy"],[6,11,1,"","a_in_scan_start"],[6,11,1,"","a_in_scan_status"],[6,11,1,"","a_in_scan_stop"],[6,11,1,"","address"],[6,11,1,"","blink_led"],[6,11,1,"","calibration_coefficient_read"],[6,11,1,"","calibration_coefficient_write"],[6,11,1,"","calibration_date"],[6,11,1,"","firmware_version"],[6,11,1,"","info"],[6,11,1,"","serial"],[6,11,1,"","trigger_mode"]],"daqhats.mcc128":[[6,11,1,"","a_in_mode_read"],[6,11,1,"","a_in_mode_write"],[6,11,1,"","a_in_range_read"],[6,11,1,"","a_in_range_write"],[6,11,1,"","a_in_read"],[6,11,1,"","a_in_scan_actual_rate"],[6,11,1,"","a_in_scan_buffer_size"],[6,11,1,"","a_in_scan_channel_count"],[6,11,1,"","a_in_scan_cleanup"],[6,11,1,"","a_in_scan_read"],[6,11,1,"","a_in_scan_read_numpy"],[6,11,1,"","a_in_scan_start"],[6,11,1,"","a_in_scan_status"],[6,11,1,"","a_in_scan_stop"],[6,11,1,"","address"],[6,11,1,"","blink_led"],[6,11,1,"","calibration_coefficient_read"],[6,11,1,"","calibration_coefficient_write"],[6,11,1,"","calibration_date"],[6,11,1,"","firmware_version"],[6,11,1,"","info"],[6,11,1,"","serial"],[6,11,1,"","trigger_mode"]],"daqhats.mcc134":[[6,8,1,"","COMMON_MODE_TC_VALUE"],[6,8,1,"","OPEN_TC_VALUE"],[6,8,1,"","OVERRANGE_TC_VALUE"],[6,11,1,"","a_in_read"],[6,11,1,"","address"],[6,11,1,"","calibration_coefficient_read"],[6,11,1,"","calibration_coefficient_write"],[6,11,1,"","calibration_date"],[6,11,1,"","cjc_read"],[6,11,1,"","info"],[6,11,1,"","serial"],[6,11,1,"","t_in_read"],[6,11,1,"","tc_type_read"],[6,11,1,"","tc_type_write"],[6,11,1,"","update_interval_read"],[6,11,1,"","update_interval_write"]],"daqhats.mcc152":[[6,11,1,"","a_out_write"],[6,11,1,"","a_out_write_all"],[6,11,1,"","address"],[6,11,1,"","dio_config_read_bit"],[6,11,1,"","dio_config_read_port"],[6,11,1,"","dio_config_read_tuple"],[6,11,1,"","dio_config_write_bit"],[6,11,1,"","dio_config_write_dict"],[6,11,1,"","dio_config_write_port"],[6,11,1,"","dio_input_read_bit"],[6,11,1,"","dio_input_read_port"],[6,11,1,"","dio_input_read_tuple"],[6,11,1,"","dio_int_status_read_bit"],[6,11,1,"","dio_int_status_read_port"],[6,11,1,"","dio_int_status_read_tuple"],[6,11,1,"","dio_output_read_bit"],[6,11,1,"","dio_output_read_port"],[6,11,1,"","dio_output_read_tuple"],[6,11,1,"","dio_output_write_bit"],[6,11,1,"","dio_output_write_dict"],[6,11,1,"","dio_output_write_port"],[6,11,1,"","dio_reset"],[6,11,1,"","info"],[6,11,1,"","serial"]],"daqhats.mcc172":[[6,11,1,"","a_in_clock_config_read"],[6,11,1,"","a_in_clock_config_write"],[6,11,1,"","a_in_scan_actual_rate"],[6,11,1,"","a_in_scan_buffer_size"],[6,11,1,"","a_in_scan_channel_count"],[6,11,1,"","a_in_scan_cleanup"],[6,11,1,"","a_in_scan_read"],[6,11,1,"","a_in_scan_read_numpy"],[6,11,1,"","a_in_scan_start"],[6,11,1,"","a_in_scan_status"],[6,11,1,"","a_in_scan_stop"],[6,11,1,"","a_in_sensitivity_read"],[6,11,1,"","a_in_sensitivity_write"],[6,11,1,"","address"],[6,11,1,"","blink_led"],[6,11,1,"","calibration_coefficient_read"],[6,11,1,"","calibration_coefficient_write"],[6,11,1,"","calibration_date"],[6,11,1,"","firmware_version"],[6,11,1,"","iepe_config_read"],[6,11,1,"","iepe_config_write"],[6,11,1,"","info"],[6,11,1,"","serial"],[6,11,1,"","trigger_config"]],"hat_error_message":[[0,6,1,"c.hat_error_message","result"]],"hat_interrupt_callback_enable":[[0,6,1,"c.hat_interrupt_callback_enable","function"],[0,6,1,"c.hat_interrupt_callback_enable","user_data"]],"hat_list":[[0,6,1,"c.hat_list","filter_id"],[0,6,1,"c.hat_list","list"]],"hat_wait_for_interrupt":[[0,6,1,"c.hat_wait_for_interrupt","timeout"]],"mcc118_a_in_read":[[0,6,1,"c.mcc118_a_in_read","address"],[0,6,1,"c.mcc118_a_in_read","channel"],[0,6,1,"c.mcc118_a_in_read","options"],[0,6,1,"c.mcc118_a_in_read","value"]],"mcc118_a_in_scan_actual_rate":[[0,6,1,"c.mcc118_a_in_scan_actual_rate","actual_sample_rate_per_channel"],[0,6,1,"c.mcc118_a_in_scan_actual_rate","channel_count"],[0,6,1,"c.mcc118_a_in_scan_actual_rate","sample_rate_per_channel"]],"mcc118_a_in_scan_buffer_size":[[0,6,1,"c.mcc118_a_in_scan_buffer_size","address"],[0,6,1,"c.mcc118_a_in_scan_buffer_size","buffer_size_samples"]],"mcc118_a_in_scan_channel_count":[[0,6,1,"c.mcc118_a_in_scan_channel_count","address"]],"mcc118_a_in_scan_cleanup":[[0,6,1,"c.mcc118_a_in_scan_cleanup","address"]],"mcc118_a_in_scan_read":[[0,6,1,"c.mcc118_a_in_scan_read","address"],[0,6,1,"c.mcc118_a_in_scan_read","buffer"],[0,6,1,"c.mcc118_a_in_scan_read","buffer_size_samples"],[0,6,1,"c.mcc118_a_in_scan_read","samples_per_channel"],[0,6,1,"c.mcc118_a_in_scan_read","samples_read_per_channel"],[0,6,1,"c.mcc118_a_in_scan_read","status"],[0,6,1,"c.mcc118_a_in_scan_read","timeout"]],"mcc118_a_in_scan_start":[[0,6,1,"c.mcc118_a_in_scan_start","address"],[0,6,1,"c.mcc118_a_in_scan_start","channel_mask"],[0,6,1,"c.mcc118_a_in_scan_start","options"],[0,6,1,"c.mcc118_a_in_scan_start","sample_rate_per_channel"],[0,6,1,"c.mcc118_a_in_scan_start","samples_per_channel"]],"mcc118_a_in_scan_status":[[0,6,1,"c.mcc118_a_in_scan_status","address"],[0,6,1,"c.mcc118_a_in_scan_status","samples_per_channel"],[0,6,1,"c.mcc118_a_in_scan_status","status"]],"mcc118_a_in_scan_stop":[[0,6,1,"c.mcc118_a_in_scan_stop","address"]],"mcc118_blink_led":[[0,6,1,"c.mcc118_blink_led","address"],[0,6,1,"c.mcc118_blink_led","count"]],"mcc118_calibration_coefficient_read":[[0,6,1,"c.mcc118_calibration_coefficient_read","address"],[0,6,1,"c.mcc118_calibration_coefficient_read","channel"],[0,6,1,"c.mcc118_calibration_coefficient_read","offset"],[0,6,1,"c.mcc118_calibration_coefficient_read","slope"]],"mcc118_calibration_coefficient_write":[[0,6,1,"c.mcc118_calibration_coefficient_write","address"],[0,6,1,"c.mcc118_calibration_coefficient_write","channel"],[0,6,1,"c.mcc118_calibration_coefficient_write","offset"],[0,6,1,"c.mcc118_calibration_coefficient_write","slope"]],"mcc118_calibration_date":[[0,6,1,"c.mcc118_calibration_date","address"],[0,6,1,"c.mcc118_calibration_date","buffer"]],"mcc118_close":[[0,6,1,"c.mcc118_close","address"]],"mcc118_firmware_version":[[0,6,1,"c.mcc118_firmware_version","address"],[0,6,1,"c.mcc118_firmware_version","boot_version"],[0,6,1,"c.mcc118_firmware_version","version"]],"mcc118_is_open":[[0,6,1,"c.mcc118_is_open","address"]],"mcc118_open":[[0,6,1,"c.mcc118_open","address"]],"mcc118_serial":[[0,6,1,"c.mcc118_serial","address"],[0,6,1,"c.mcc118_serial","buffer"]],"mcc118_test_clock":[[1,6,1,"c.mcc118_test_clock","address"],[1,6,1,"c.mcc118_test_clock","mode"],[1,6,1,"c.mcc118_test_clock","value"]],"mcc118_test_trigger":[[1,6,1,"c.mcc118_test_trigger","address"],[1,6,1,"c.mcc118_test_trigger","state"]],"mcc118_trigger_mode":[[0,6,1,"c.mcc118_trigger_mode","address"],[0,6,1,"c.mcc118_trigger_mode","mode"]],"mcc128_a_in_mode_read":[[0,6,1,"c.mcc128_a_in_mode_read","address"],[0,6,1,"c.mcc128_a_in_mode_read","mode"]],"mcc128_a_in_mode_write":[[0,6,1,"c.mcc128_a_in_mode_write","address"],[0,6,1,"c.mcc128_a_in_mode_write","mode"]],"mcc128_a_in_range_read":[[0,6,1,"c.mcc128_a_in_range_read","address"],[0,6,1,"c.mcc128_a_in_range_read","range"]],"mcc128_a_in_range_write":[[0,6,1,"c.mcc128_a_in_range_write","address"],[0,6,1,"c.mcc128_a_in_range_write","range"]],"mcc128_a_in_read":[[0,6,1,"c.mcc128_a_in_read","address"],[0,6,1,"c.mcc128_a_in_read","channel"],[0,6,1,"c.mcc128_a_in_read","options"],[0,6,1,"c.mcc128_a_in_read","value"]],"mcc128_a_in_scan_actual_rate":[[0,6,1,"c.mcc128_a_in_scan_actual_rate","actual_sample_rate_per_channel"],[0,6,1,"c.mcc128_a_in_scan_actual_rate","channel_count"],[0,6,1,"c.mcc128_a_in_scan_actual_rate","sample_rate_per_channel"]],"mcc128_a_in_scan_buffer_size":[[0,6,1,"c.mcc128_a_in_scan_buffer_size","address"],[0,6,1,"c.mcc128_a_in_scan_buffer_size","buffer_size_samples"]],"mcc128_a_in_scan_channel_count":[[0,6,1,"c.mcc128_a_in_scan_channel_count","address"]],"mcc128_a_in_scan_cleanup":[[0,6,1,"c.mcc128_a_in_scan_cleanup","address"]],"mcc128_a_in_scan_read":[[0,6,1,"c.mcc128_a_in_scan_read","address"],[0,6,1,"c.mcc128_a_in_scan_read","buffer"],[0,6,1,"c.mcc128_a_in_scan_read","buffer_size_samples"],[0,6,1,"c.mcc128_a_in_scan_read","samples_per_channel"],[0,6,1,"c.mcc128_a_in_scan_read","samples_read_per_channel"],[0,6,1,"c.mcc128_a_in_scan_read","status"],[0,6,1,"c.mcc128_a_in_scan_read","timeout"]],"mcc128_a_in_scan_start":[[0,6,1,"c.mcc128_a_in_scan_start","address"],[0,6,1,"c.mcc128_a_in_scan_start","channel_mask"],[0,6,1,"c.mcc128_a_in_scan_start","options"],[0,6,1,"c.mcc128_a_in_scan_start","sample_rate_per_channel"],[0,6,1,"c.mcc128_a_in_scan_start","samples_per_channel"]],"mcc128_a_in_scan_status":[[0,6,1,"c.mcc128_a_in_scan_status","address"],[0,6,1,"c.mcc128_a_in_scan_status","samples_per_channel"],[0,6,1,"c.mcc128_a_in_scan_status","status"]],"mcc128_a_in_scan_stop":[[0,6,1,"c.mcc128_a_in_scan_stop","address"]],"mcc128_blink_led":[[0,6,1,"c.mcc128_blink_led","address"],[0,6,1,"c.mcc128_blink_led","count"]],"mcc128_calibration_coefficient_read":[[0,6,1,"c.mcc128_calibration_coefficient_read","address"],[0,6,1,"c.mcc128_calibration_coefficient_read","offset"],[0,6,1,"c.mcc128_calibration_coefficient_read","range"],[0,6,1,"c.mcc128_calibration_coefficient_read","slope"]],"mcc128_calibration_coefficient_write":[[0,6,1,"c.mcc128_calibration_coefficient_write","address"],[0,6,1,"c.mcc128_calibration_coefficient_write","offset"],[0,6,1,"c.mcc128_calibration_coefficient_write","range"],[0,6,1,"c.mcc128_calibration_coefficient_write","slope"]],"mcc128_calibration_date":[[0,6,1,"c.mcc128_calibration_date","address"],[0,6,1,"c.mcc128_calibration_date","buffer"]],"mcc128_close":[[0,6,1,"c.mcc128_close","address"]],"mcc128_firmware_version":[[0,6,1,"c.mcc128_firmware_version","address"],[0,6,1,"c.mcc128_firmware_version","version"]],"mcc128_is_open":[[0,6,1,"c.mcc128_is_open","address"]],"mcc128_open":[[0,6,1,"c.mcc128_open","address"]],"mcc128_serial":[[0,6,1,"c.mcc128_serial","address"],[0,6,1,"c.mcc128_serial","buffer"]],"mcc128_trigger_mode":[[0,6,1,"c.mcc128_trigger_mode","address"],[0,6,1,"c.mcc128_trigger_mode","mode"]],"mcc134_a_in_read":[[0,6,1,"c.mcc134_a_in_read","address"],[0,6,1,"c.mcc134_a_in_read","channel"],[0,6,1,"c.mcc134_a_in_read","options"],[0,6,1,"c.mcc134_a_in_read","value"]],"mcc134_calibration_coefficient_read":[[0,6,1,"c.mcc134_calibration_coefficient_read","address"],[0,6,1,"c.mcc134_calibration_coefficient_read","channel"],[0,6,1,"c.mcc134_calibration_coefficient_read","offset"],[0,6,1,"c.mcc134_calibration_coefficient_read","slope"]],"mcc134_calibration_coefficient_write":[[0,6,1,"c.mcc134_calibration_coefficient_write","address"],[0,6,1,"c.mcc134_calibration_coefficient_write","channel"],[0,6,1,"c.mcc134_calibration_coefficient_write","offset"],[0,6,1,"c.mcc134_calibration_coefficient_write","slope"]],"mcc134_calibration_date":[[0,6,1,"c.mcc134_calibration_date","address"],[0,6,1,"c.mcc134_calibration_date","buffer"]],"mcc134_cjc_read":[[0,6,1,"c.mcc134_cjc_read","address"],[0,6,1,"c.mcc134_cjc_read","channel"],[0,6,1,"c.mcc134_cjc_read","value"]],"mcc134_close":[[0,6,1,"c.mcc134_close","address"]],"mcc134_is_open":[[0,6,1,"c.mcc134_is_open","address"]],"mcc134_open":[[0,6,1,"c.mcc134_open","address"]],"mcc134_serial":[[0,6,1,"c.mcc134_serial","address"],[0,6,1,"c.mcc134_serial","buffer"]],"mcc134_t_in_read":[[0,6,1,"c.mcc134_t_in_read","address"],[0,6,1,"c.mcc134_t_in_read","channel"],[0,6,1,"c.mcc134_t_in_read","value"]],"mcc134_tc_type_read":[[0,6,1,"c.mcc134_tc_type_read","address"],[0,6,1,"c.mcc134_tc_type_read","channel"],[0,6,1,"c.mcc134_tc_type_read","type"]],"mcc134_tc_type_write":[[0,6,1,"c.mcc134_tc_type_write","address"],[0,6,1,"c.mcc134_tc_type_write","channel"],[0,6,1,"c.mcc134_tc_type_write","type"]],"mcc134_update_interval_read":[[0,6,1,"c.mcc134_update_interval_read","address"],[0,6,1,"c.mcc134_update_interval_read","interval"]],"mcc134_update_interval_write":[[0,6,1,"c.mcc134_update_interval_write","address"],[0,6,1,"c.mcc134_update_interval_write","interval"]],"mcc152_a_out_write":[[0,6,1,"c.mcc152_a_out_write","address"],[0,6,1,"c.mcc152_a_out_write","channel"],[0,6,1,"c.mcc152_a_out_write","options"],[0,6,1,"c.mcc152_a_out_write","value"]],"mcc152_a_out_write_all":[[0,6,1,"c.mcc152_a_out_write_all","address"],[0,6,1,"c.mcc152_a_out_write_all","options"],[0,6,1,"c.mcc152_a_out_write_all","values"]],"mcc152_close":[[0,6,1,"c.mcc152_close","address"]],"mcc152_dio_config_read_bit":[[0,6,1,"c.mcc152_dio_config_read_bit","address"],[0,6,1,"c.mcc152_dio_config_read_bit","channel"],[0,6,1,"c.mcc152_dio_config_read_bit","item"],[0,6,1,"c.mcc152_dio_config_read_bit","value"]],"mcc152_dio_config_read_port":[[0,6,1,"c.mcc152_dio_config_read_port","address"],[0,6,1,"c.mcc152_dio_config_read_port","item"],[0,6,1,"c.mcc152_dio_config_read_port","value"]],"mcc152_dio_config_write_bit":[[0,6,1,"c.mcc152_dio_config_write_bit","address"],[0,6,1,"c.mcc152_dio_config_write_bit","channel"],[0,6,1,"c.mcc152_dio_config_write_bit","item"],[0,6,1,"c.mcc152_dio_config_write_bit","value"]],"mcc152_dio_config_write_port":[[0,6,1,"c.mcc152_dio_config_write_port","address"],[0,6,1,"c.mcc152_dio_config_write_port","item"],[0,6,1,"c.mcc152_dio_config_write_port","value"]],"mcc152_dio_input_read_bit":[[0,6,1,"c.mcc152_dio_input_read_bit","address"],[0,6,1,"c.mcc152_dio_input_read_bit","channel"],[0,6,1,"c.mcc152_dio_input_read_bit","value"]],"mcc152_dio_input_read_port":[[0,6,1,"c.mcc152_dio_input_read_port","address"],[0,6,1,"c.mcc152_dio_input_read_port","value"]],"mcc152_dio_int_status_read_bit":[[0,6,1,"c.mcc152_dio_int_status_read_bit","address"],[0,6,1,"c.mcc152_dio_int_status_read_bit","channel"],[0,6,1,"c.mcc152_dio_int_status_read_bit","value"]],"mcc152_dio_int_status_read_port":[[0,6,1,"c.mcc152_dio_int_status_read_port","address"],[0,6,1,"c.mcc152_dio_int_status_read_port","value"]],"mcc152_dio_output_read_bit":[[0,6,1,"c.mcc152_dio_output_read_bit","address"],[0,6,1,"c.mcc152_dio_output_read_bit","channel"],[0,6,1,"c.mcc152_dio_output_read_bit","value"]],"mcc152_dio_output_read_port":[[0,6,1,"c.mcc152_dio_output_read_port","address"],[0,6,1,"c.mcc152_dio_output_read_port","value"]],"mcc152_dio_output_write_bit":[[0,6,1,"c.mcc152_dio_output_write_bit","address"],[0,6,1,"c.mcc152_dio_output_write_bit","channel"],[0,6,1,"c.mcc152_dio_output_write_bit","value"]],"mcc152_dio_output_write_port":[[0,6,1,"c.mcc152_dio_output_write_port","address"],[0,6,1,"c.mcc152_dio_output_write_port","value"]],"mcc152_dio_reset":[[0,6,1,"c.mcc152_dio_reset","address"]],"mcc152_is_open":[[0,6,1,"c.mcc152_is_open","address"]],"mcc152_open":[[0,6,1,"c.mcc152_open","address"]],"mcc152_serial":[[0,6,1,"c.mcc152_serial","address"],[0,6,1,"c.mcc152_serial","buffer"]],"mcc172_a_in_clock_config_read":[[0,6,1,"c.mcc172_a_in_clock_config_read","address"],[0,6,1,"c.mcc172_a_in_clock_config_read","clock_source"],[0,6,1,"c.mcc172_a_in_clock_config_read","sample_rate_per_channel"],[0,6,1,"c.mcc172_a_in_clock_config_read","synced"]],"mcc172_a_in_clock_config_write":[[0,6,1,"c.mcc172_a_in_clock_config_write","address"],[0,6,1,"c.mcc172_a_in_clock_config_write","clock_source"],[0,6,1,"c.mcc172_a_in_clock_config_write","sample_rate_per_channel"]],"mcc172_a_in_scan_buffer_size":[[0,6,1,"c.mcc172_a_in_scan_buffer_size","address"],[0,6,1,"c.mcc172_a_in_scan_buffer_size","buffer_size_samples"]],"mcc172_a_in_scan_channel_count":[[0,6,1,"c.mcc172_a_in_scan_channel_count","address"]],"mcc172_a_in_scan_cleanup":[[0,6,1,"c.mcc172_a_in_scan_cleanup","address"]],"mcc172_a_in_scan_read":[[0,6,1,"c.mcc172_a_in_scan_read","address"],[0,6,1,"c.mcc172_a_in_scan_read","buffer"],[0,6,1,"c.mcc172_a_in_scan_read","buffer_size_samples"],[0,6,1,"c.mcc172_a_in_scan_read","samples_per_channel"],[0,6,1,"c.mcc172_a_in_scan_read","samples_read_per_channel"],[0,6,1,"c.mcc172_a_in_scan_read","status"],[0,6,1,"c.mcc172_a_in_scan_read","timeout"]],"mcc172_a_in_scan_start":[[0,6,1,"c.mcc172_a_in_scan_start","address"],[0,6,1,"c.mcc172_a_in_scan_start","channel_mask"],[0,6,1,"c.mcc172_a_in_scan_start","options"],[0,6,1,"c.mcc172_a_in_scan_start","samples_per_channel"]],"mcc172_a_in_scan_status":[[0,6,1,"c.mcc172_a_in_scan_status","address"],[0,6,1,"c.mcc172_a_in_scan_status","samples_per_channel"],[0,6,1,"c.mcc172_a_in_scan_status","status"]],"mcc172_a_in_scan_stop":[[0,6,1,"c.mcc172_a_in_scan_stop","address"]],"mcc172_a_in_sensitivity_read":[[0,6,1,"c.mcc172_a_in_sensitivity_read","address"],[0,6,1,"c.mcc172_a_in_sensitivity_read","channel"],[0,6,1,"c.mcc172_a_in_sensitivity_read","value"]],"mcc172_a_in_sensitivity_write":[[0,6,1,"c.mcc172_a_in_sensitivity_write","address"],[0,6,1,"c.mcc172_a_in_sensitivity_write","channel"],[0,6,1,"c.mcc172_a_in_sensitivity_write","value"]],"mcc172_blink_led":[[0,6,1,"c.mcc172_blink_led","address"],[0,6,1,"c.mcc172_blink_led","count"]],"mcc172_calibration_coefficient_read":[[0,6,1,"c.mcc172_calibration_coefficient_read","address"],[0,6,1,"c.mcc172_calibration_coefficient_read","channel"],[0,6,1,"c.mcc172_calibration_coefficient_read","offset"],[0,6,1,"c.mcc172_calibration_coefficient_read","slope"]],"mcc172_calibration_coefficient_write":[[0,6,1,"c.mcc172_calibration_coefficient_write","address"],[0,6,1,"c.mcc172_calibration_coefficient_write","channel"],[0,6,1,"c.mcc172_calibration_coefficient_write","offset"],[0,6,1,"c.mcc172_calibration_coefficient_write","slope"]],"mcc172_calibration_date":[[0,6,1,"c.mcc172_calibration_date","address"],[0,6,1,"c.mcc172_calibration_date","buffer"]],"mcc172_close":[[0,6,1,"c.mcc172_close","address"]],"mcc172_firmware_version":[[0,6,1,"c.mcc172_firmware_version","address"],[0,6,1,"c.mcc172_firmware_version","version"]],"mcc172_iepe_config_read":[[0,6,1,"c.mcc172_iepe_config_read","address"],[0,6,1,"c.mcc172_iepe_config_read","channel"],[0,6,1,"c.mcc172_iepe_config_read","config"]],"mcc172_iepe_config_write":[[0,6,1,"c.mcc172_iepe_config_write","address"],[0,6,1,"c.mcc172_iepe_config_write","channel"],[0,6,1,"c.mcc172_iepe_config_write","config"]],"mcc172_is_open":[[0,6,1,"c.mcc172_is_open","address"]],"mcc172_open":[[0,6,1,"c.mcc172_open","address"]],"mcc172_serial":[[0,6,1,"c.mcc172_serial","address"],[0,6,1,"c.mcc172_serial","buffer"]],"mcc172_test_signals_read":[[1,6,1,"c.mcc172_test_signals_read","address"],[1,6,1,"c.mcc172_test_signals_read","clock"],[1,6,1,"c.mcc172_test_signals_read","sync"],[1,6,1,"c.mcc172_test_signals_read","trigger"]],"mcc172_test_signals_write":[[1,6,1,"c.mcc172_test_signals_write","address"],[1,6,1,"c.mcc172_test_signals_write","clock"],[1,6,1,"c.mcc172_test_signals_write","mode"],[1,6,1,"c.mcc172_test_signals_write","sync"]],"mcc172_trigger_config":[[0,6,1,"c.mcc172_trigger_config","address"],[0,6,1,"c.mcc172_trigger_config","mode"],[0,6,1,"c.mcc172_trigger_config","source"]]},"objnames":{"0":["c","enumerator","C enumerator"],"1":["c","enum","C enum"],"2":["c","macro","C macro"],"3":["c","struct","C struct"],"4":["c","member","C member"],"5":["c","function","C function"],"6":["c","functionParam","C function parameter"],"7":["py","class","Python class"],"8":["py","attribute","Python attribute"],"9":["py","exception","Python exception"],"10":["py","function","Python function"],"11":["py","method","Python method"]},"objtypes":{"0":"c:enumerator","1":"c:enum","2":"c:macro","3":"c:struct","4":"c:member","5":"c:function","6":"c:functionParam","7":"py:class","8":"py:attribute","9":"py:exception","10":"py:function","11":"py:method"},"terms":{"078125v":0,"0v":0,"0x0000":0,"0x0001":0,"0x0002":0,"0x0004":0,"0x0008":0,"0x0010":0,"0x01":[0,6],"0x0103":0,"0x03":[0,6],"0x05":6,"0xf0":0,"0xff":[0,6],"100k":[0,6],"10k":[0,6],"10v":[0,6],"118s":0,"128s":0,"134s":0,"152s":[0,6],"172s":[0,5,6],"1v":[0,5,6],"1x10":5,"1x6":5,"2v":[0,5,6],"2x20":2,"3v":[0,3,6],"5v":[0,3,6],"A":[0,2,5,6,7],"All":[0,6],"An":[0,5,6],"At":5,"Could":0,"Do":6,"Each":[0,6],"For":[0,5,6],"I":[0,4,5,6],"If":[0,4,5,6],"In":[0,5,6],"It":[0,4,6],"No":[0,6],"Not":[0,6],"OR":6,"Some":0,"The":[0,1,2,4,5,6,7],"There":[0,2,6],"These":[1,7],"They":[0,5,6],"This":[0,1,4,5,6,7],"To":[4,5,6],"When":[0,5,6],"You":[0,4],"a0":[2,5],"a1":2,"a2":[2,5],"a_in_clock_config_read":6,"a_in_clock_config_writ":[6,7],"a_in_mod":6,"a_in_mode_diff":0,"a_in_mode_read":6,"a_in_mode_s":0,"a_in_mode_writ":6,"a_in_rang":6,"a_in_range_bip_10v":0,"a_in_range_bip_1v":0,"a_in_range_bip_2v":0,"a_in_range_bip_5v":0,"a_in_range_read":6,"a_in_range_writ":6,"a_in_read":6,"a_in_scan_actual_r":6,"a_in_scan_buffer_s":6,"a_in_scan_channel_count":6,"a_in_scan_cleanup":6,"a_in_scan_read":6,"a_in_scan_read_numpi":6,"a_in_scan_start":6,"a_in_scan_status":6,"a_in_scan_stop":6,"a_in_sensitivity_read":6,"a_in_sensitivity_writ":6,"a_out_writ":6,"a_out_write_al":6,"abnorm":[0,6],"abov":[0,2,5],"ac":5,"accept":5,"access":[0,2],"accessori":4,"accur":3,"accuraci":5,"achiev":[0,5,6],"acquir":[0,5,6],"acquisit":[0,6],"across":5,"act":[0,6],"action":[0,6],"activ":[0,5,6],"active_high":6,"active_low":6,"actual":[0,6],"actual_sample_rate_per_channel":0,"adc":[0,1,3,6,7],"add":[2,4,5],"addit":[0,2,5,6],"address":[0,1,2,3,4,6,7],"adher":5,"adjust":[0,6],"affect":[0,5,6],"agnd":5,"ai_max_cod":[0,6],"ai_max_rang":[0,6],"ai_max_voltag":[0,6],"ai_min_cod":[0,6],"ai_min_rang":[0,6],"ai_min_voltag":[0,6],"airflow":5,"alia":3,"alias":5,"alloc":[0,6],"allow":[0,4,5,6],"alreadi":[0,1,6],"also":[0,5,6],"alway":[0,2,6],"amount":[0,6],"analog":[3,5],"analoginputmod":[0,6],"analoginputrang":[0,6],"ani":[0,2,4,5,6],"anoth":[0,6],"anti":5,"anyth":0,"ao0":5,"ao1":5,"ao_max_cod":[0,6],"ao_max_rang":[0,6],"ao_max_voltag":[0,6],"ao_min_cod":[0,6],"ao_min_rang":[0,6],"ao_min_voltag":[0,6],"aox":5,"appear":2,"append":4,"appli":[0,5,6,7],"applic":[4,5],"appropri":2,"approxim":[0,5,6],"apt":4,"argument":[0,6],"array":[0,6],"associ":[0,6],"attach":[0,2,4,5,6],"automat":[0,6],"avail":[0,4,5,6],"avoid":[0,5,6],"away":5,"b":[0,5,6],"back":[0,4,6],"background":[0,6],"bandwidth":5,"bcd":0,"becaus":[0,6],"becom":[0,6],"befor":[0,6],"begin":5,"behavior":[0,6],"bend":2,"best":[0,3,6],"better":[0,6],"bidirect":5,"bin":4,"bip_10v":6,"bip_1v":6,"bip_2v":6,"bip_5v":6,"bit":[0,5,6],"bitmask":0,"blink":[0,5,6],"blink_l":6,"block":3,"board":[0,1,3,4,6,7],"bool":6,"boot":5,"boot_vers":0,"bootload":[0,6],"bootloader_vers":6,"bottom":2,"brand":5,"break":4,"buffer":[0,5,6],"buffer_overrun":6,"buffer_size_sampl":0,"build":4,"busi":[0,6],"byte":0,"c":[3,5,6],"calcul":[0,6],"calibr":[0,5,6],"calibrated_adc_cod":[0,6],"calibration_coefficient_read":6,"calibration_coefficient_writ":6,"calibration_d":6,"call":[0,1,6],"callback":[0,6],"can":[0,1,4,5,6,7],"capabl":5,"captur":[0,5,6],"care":[0,2,6],"case":[0,5,6],"caus":[0,5,6],"cd":4,"celsius":[0,6],"certain":[0,5,6],"ch":5,"ch0":5,"ch0h":5,"ch0l":5,"ch1":5,"ch3h":5,"ch3l":5,"chang":[0,4,5,6],"channel":[0,5,6],"channel_count":[0,6],"channel_mask":[0,6],"char":0,"charact":0,"check":0,"chx":5,"circular":[0,6],"cjc":[0,6],"cjc_read":6,"class":[3,7],"clean":[0,6],"clear":[0,6],"clk":[0,1,5,6,7],"clock":[0,1,3,6,7],"clock_sourc":[0,6],"clone":4,"close":0,"cmos":5,"coaxial":3,"code":[1,3,4,6],"coeffici":[0,6],"cold":[0,5,6],"com":4,"combin":[0,6],"come":[0,2,5,6],"command":[0,4,5,6],"common":[0,5,6],"common_mode_tc_valu":[0,3,6],"communic":[0,5],"compar":6,"compat":3,"compens":[0,5,6],"compil":4,"complet":[0,6,7],"compon":3,"condit":[0,5,6],"config":[3,5],"configur":[0,3,6],"confirm":[1,7],"conjunct":[1,7],"connect":[0,2,5,6],"connector":[2,3],"consider":[0,6],"const":0,"constant":[0,6],"consult":5,"contain":[0,6,7],"content":[4,6],"continu":[0,6],"control":[4,6],"convers":[5,7],"convert":[0,5,6],"cool":5,"cooler":5,"core":5,"corner":2,"correct":[0,4,6],"correspond":[0,6],"count":[0,6],"coupl":5,"cpu":[0,6],"creat":[0,3,5],"current":[0,1,5,6,7],"cutoff":5,"cycl":[0,5,6],"d":[0,2,5,6],"dac":[0,6],"damag":[0,5,6],"daq":[0,4,5,6],"daqhat":[4,5,6,7],"daqhats_list_board":4,"daqhats_read_eeprom":[0,4,6],"daqhats_vers":4,"data":[3,5],"data_rate_per_channel":0,"date":[0,6],"dd":[0,6],"def":6,"default":[0,5,6],"defin":[0,6],"definit":3,"degre":[0,6],"degress":[0,6],"delay":[0,5,6],"demonstr":[4,5],"descript":[0,1,6],"design":5,"desir":[0,2,4,5,6],"desktop":4,"detail":[0,3,6],"detect":[0,4,5,6],"determin":[0,6],"develop":5,"devic":[3,5,6,7],"dgnd":5,"diagram":3,"dictionari":6,"diff":6,"differ":[0,6],"differenti":[0,3,6],"digit":[0,3,6],"dio":3,"dio0":5,"dio7":5,"dio_config_read_bit":6,"dio_config_read_port":6,"dio_config_read_tupl":6,"dio_config_write_bit":6,"dio_config_write_dict":6,"dio_config_write_port":6,"dio_direct":0,"dio_input_invert":0,"dio_input_latch":0,"dio_input_read_bit":6,"dio_input_read_port":6,"dio_input_read_tupl":6,"dio_int_mask":0,"dio_int_status_read_bit":6,"dio_int_status_read_port":6,"dio_int_status_read_tupl":6,"dio_output_read_bit":6,"dio_output_read_port":6,"dio_output_read_tupl":6,"dio_output_typ":0,"dio_output_write_bit":6,"dio_output_write_dict":6,"dio_output_write_port":6,"dio_pull_config":0,"dio_pull_en":0,"dio_reset":6,"dioconfigitem":[0,6],"diox":5,"direct":[0,5,6],"directori":4,"disabl":[0,6],"disconnect":5,"discourag":4,"discret":[0,6],"display":[4,5],"dissip":5,"divid":[0,6],"document":[0,4,5],"doe":[0,6,7],"doubl":0,"download":4,"drain":[0,5,6],"drive":5,"driver":5,"due":[0,5,6],"dure":4,"e":[0,2,5,6],"edg":[0,5,6],"eeprom":[0,4,6],"effect":[0,6],"either":[0,2,6],"elaps":6,"electr":5,"element":6,"els":6,"enabl":[0,6],"encount":4,"end":[0,1,3,6,7],"enough":[0,6],"ensur":5,"entir":[0,6],"enum":0,"enumer":0,"environ":[4,5],"environment":5,"equal":[0,6],"equival":[2,5],"error":[0,4,5,6],"etc":[0,6],"even":[5,6],"event":[0,5,6],"everi":[0,6],"examin":6,"exampl":[0,4,5,6],"except":6,"excess":5,"exercis":7,"exit":7,"expect":[0,6],"expir":6,"explicit":[0,6],"extclock":6,"extend":[2,5],"extern":[0,5,6,7],"extract":0,"exttrigg":6,"factor":[0,6],"factori":[0,5,6],"fail":[0,6],"fall":[0,5,6],"falling_edg":6,"fals":6,"fan":5,"farthest":5,"fast":[0,6],"featur":5,"femal":2,"field":[2,6,7],"file":[0,4],"fill":0,"filter":[0,5,6],"filter_by_id":6,"filter_id":0,"find":4,"finish":[0,6],"finit":[0,6],"firmwar":[0,3,6],"firmware_vers":6,"first":[0,2,5,6],"fit":0,"fix":5,"flag":3,"flash":5,"float":6,"float64":6,"flow":5,"folder":4,"follow":[0,2,5,6,7],"forev":[0,6],"form":6,"format":[0,6],"forth":2,"found":[0,6],"free":[0,6],"frequenc":[0,5,6],"full":[0,4,6],"fulli":5,"function":[3,6],"fw":5,"g":[0,6],"general":5,"generat":[0,6],"get":[0,6],"git":4,"github":4,"global":3,"gnd":5,"go":[2,4],"goe":[0,6],"gpio":[1,2,5,7],"graphic":4,"greater":[0,6],"ground":[0,5,6],"h":4,"handler":0,"hardwar":[0,3,6],"hardware_overrun":6,"harsh":5,"hat":[4,5],"hat_error_messag":[0,3],"hat_id_ani":0,"hat_id_mcc_118":0,"hat_id_mcc_118_bootload":0,"hat_id_mcc_128":0,"hat_id_mcc_134":0,"hat_id_mcc_152":0,"hat_id_mcc_172":0,"hat_interrupt_callback_dis":[0,3],"hat_interrupt_callback_en":[0,3],"hat_interrupt_st":[0,3],"hat_list":[0,3,6],"hat_wait_for_interrupt":[0,3],"haterror":[3,7],"hatid":[0,6],"hatinfo":3,"hdmi":5,"header":[2,3,4,6],"heat":5,"hex":[4,5],"hexadecim":0,"high":[0,1,5,6,7],"higher":[5,6],"hold":[0,5,6],"hole":2,"host":4,"howev":[0,5],"https":4,"id":3,"identifi":[5,6],"iep":[0,5,6],"iepe_config_read":6,"iepe_config_writ":6,"ignor":[0,6],"imag":[0,4],"immedi":[0,6],"immut":6,"import":4,"inact":[0,6],"includ":[1,2,4,7],"incom":[0,6],"incorrect":[0,6,7],"increas":[0,5,6],"increment":[2,6],"indefinit":[0,6],"independ":[0,6],"indic":[0,6],"individu":[0,6],"info":[3,6],"inform":[0,4,5,6],"initi":[0,6,7],"input":[1,3,7],"input_invert":6,"input_latch":6,"insert":2,"insid":6,"instal":[3,5],"instanc":0,"instead":5,"int":[0,1,6,7],"int32_t":0,"int_mask":6,"integ":[0,6],"interfac":[4,5],"intern":[0,5,6],"interrrupt":0,"interrupt":[0,5,6],"interrupt_callback_dis":[3,6],"interrupt_callback_en":[3,6],"interrupt_enable_callback":6,"interrupt_st":[3,6],"interv":[0,6],"invalid":[0,6,7],"invers":[0,6],"invert":[0,6],"ioctl":4,"isol":5,"issu":5,"item":3,"j":[0,5,6],"jumper":[2,3],"junction":[0,5,6],"k":[0,5,6],"keep":[0,6],"kernel":4,"key":6,"khz":[0,1,5,6,7],"known":[0,6],"ks":[0,5,6],"lack":[0,6],"larg":[0,6],"larger":[0,5,6],"last":[0,6],"latch":[0,6],"launch":4,"lcd":5,"ldaqhat":4,"lead":[2,5],"least":[0,6],"led":[0,3,6],"length":0,"level":[0,1,5,6,7],"lib":4,"libdaqhat":4,"librari":5,"light":2,"like":[0,2,6],"limit":[5,6],"line":[2,4],"linear":5,"linker":4,"list":[0,4,6],"load":[0,5,6],"local":[0,4,6],"locat":[2,4,6],"lock":0,"log":4,"logic":[0,1,5,6],"longer":[0,6],"look":2,"loss":[0,6],"lost":[0,6],"low":[0,1,5,6,7],"lower":5,"lsb":[0,6],"lvcmos":5,"m":4,"ma":5,"made":6,"major":0,"make":6,"makefil":4,"male":2,"malloc":0,"manag":4,"mani":0,"manner":2,"manual":[0,6],"manufactur":[1,7],"mask":[0,6],"master":[0,6],"match":[0,6],"max":[0,6],"max_number_hat":[0,3],"maximum":[0,5,6],"may":[0,4,5,6],"mcc":2,"mcc118":[3,6,7],"mcc118_a_in_read":[0,3],"mcc118_a_in_scan_actual_r":[0,3],"mcc118_a_in_scan_buffer_s":[0,3],"mcc118_a_in_scan_channel_count":[0,3],"mcc118_a_in_scan_cleanup":[0,3],"mcc118_a_in_scan_read":[0,3],"mcc118_a_in_scan_start":[0,3],"mcc118_a_in_scan_status":[0,3],"mcc118_a_in_scan_stop":[0,3],"mcc118_blink_l":[0,3],"mcc118_calibration_coefficient_read":[0,3],"mcc118_calibration_coefficient_writ":[0,3],"mcc118_calibration_d":[0,3],"mcc118_close":[0,3],"mcc118_firmware_upd":[4,5],"mcc118_firmware_vers":[0,3],"mcc118_info":[0,3],"mcc118_is_open":[0,3],"mcc118_open":[0,3],"mcc118_serial":[0,3],"mcc118_test_clock":1,"mcc118_test_trigg":1,"mcc118_trigger_mod":[0,3],"mcc118deviceinfo":0,"mcc128":[3,6,7],"mcc128_a_in_mode_read":[0,3],"mcc128_a_in_mode_writ":[0,3],"mcc128_a_in_range_read":[0,3],"mcc128_a_in_range_writ":[0,3],"mcc128_a_in_read":[0,3],"mcc128_a_in_scan_actual_r":[0,3],"mcc128_a_in_scan_buffer_s":[0,3],"mcc128_a_in_scan_channel_count":[0,3],"mcc128_a_in_scan_cleanup":[0,3],"mcc128_a_in_scan_read":[0,3],"mcc128_a_in_scan_start":[0,3],"mcc128_a_in_scan_status":[0,3],"mcc128_a_in_scan_stop":[0,3],"mcc128_blink_l":[0,3],"mcc128_calibration_coefficient_read":[0,3],"mcc128_calibration_coefficient_writ":[0,3],"mcc128_calibration_d":[0,3],"mcc128_close":[0,3],"mcc128_firmware_upd":5,"mcc128_firmware_vers":[0,3],"mcc128_info":[0,3],"mcc128_is_open":[0,3],"mcc128_open":[0,3],"mcc128_serial":[0,3],"mcc128_trigger_mod":[0,3],"mcc128deviceinfo":0,"mcc134":[3,6],"mcc134_a_in_read":[0,3],"mcc134_calibration_coefficient_read":[0,3],"mcc134_calibration_coefficient_writ":[0,3],"mcc134_calibration_d":[0,3],"mcc134_cjc_read":[0,3],"mcc134_close":[0,3],"mcc134_info":[0,3],"mcc134_is_open":[0,3],"mcc134_open":[0,3],"mcc134_serial":[0,3],"mcc134_t_in_read":[0,3],"mcc134_tc_type_read":[0,3],"mcc134_tc_type_writ":[0,3],"mcc134_update_interval_read":[0,3],"mcc134_update_interval_writ":[0,3],"mcc134deviceinfo":0,"mcc152":[3,6],"mcc152_a_out_writ":[0,3],"mcc152_a_out_write_al":[0,3],"mcc152_close":[0,3],"mcc152_dio_config_read_bit":[0,3],"mcc152_dio_config_read_port":[0,3],"mcc152_dio_config_write_bit":[0,3],"mcc152_dio_config_write_port":[0,3],"mcc152_dio_input_read_bit":[0,3],"mcc152_dio_input_read_port":[0,3],"mcc152_dio_int_status_read_bit":[0,3],"mcc152_dio_int_status_read_port":[0,3],"mcc152_dio_output_read_bit":[0,3],"mcc152_dio_output_read_port":[0,3],"mcc152_dio_output_writ":0,"mcc152_dio_output_write_bit":[0,3],"mcc152_dio_output_write_port":[0,3],"mcc152_dio_reset":[0,3],"mcc152_info":[0,3],"mcc152_is_open":[0,3],"mcc152_open":[0,3],"mcc152_serial":[0,3],"mcc152deviceinfo":0,"mcc172":[3,6,7],"mcc172_a_in_clock_config_read":[0,3],"mcc172_a_in_clock_config_writ":[0,1,3],"mcc172_a_in_scan_buffer_s":[0,3],"mcc172_a_in_scan_channel_count":[0,3],"mcc172_a_in_scan_cleanup":[0,3],"mcc172_a_in_scan_read":[0,3],"mcc172_a_in_scan_start":[0,3],"mcc172_a_in_scan_status":[0,3],"mcc172_a_in_scan_stop":[0,3],"mcc172_a_in_sensitivity_read":[0,3],"mcc172_a_in_sensitivity_writ":[0,3],"mcc172_blink_l":[0,3],"mcc172_calibration_coefficient_read":[0,3],"mcc172_calibration_coefficient_writ":[0,3],"mcc172_calibration_d":[0,3],"mcc172_close":[0,3],"mcc172_firmware_upd":5,"mcc172_firmware_vers":[0,3],"mcc172_iepe_config_read":[0,3],"mcc172_iepe_config_writ":[0,3],"mcc172_info":[0,3],"mcc172_is_open":[0,3],"mcc172_open":[0,3],"mcc172_serial":[0,3],"mcc172_test_signals_read":1,"mcc172_test_signals_writ":1,"mcc172_trigger_config":[0,1,3],"mcc172deviceinfo":0,"mcc_118":[4,5,6],"mcc_128":[5,6],"mcc_134":6,"mcc_152":6,"mcc_172":[5,6],"mccdaq":4,"meaning":[0,6],"measur":[0,3,6],"mechan":[0,6],"member":0,"memori":[0,6],"menu":4,"messag":0,"met":[0,5,6],"method":[2,3,5],"mhz":[0,6],"millisecond":0,"minim":5,"minimum":[0,6],"minor":0,"miss":[0,6],"mix":3,"mm":[0,6],"mode":[1,3,5,7],"model":5,"modifi":[0,6],"monitor":[0,6],"mount":2,"much":[0,6],"multipl":[0,3,5,6],"must":[0,1,2,4,5,6,7],"mv":[0,5,6],"my_funct":6,"n":[0,5,6],"name":[0,4,6,7],"namedtupl":[6,7],"natur":[0,5,6],"nearest":[0,6],"need":[0,4,6],"negat":[0,6],"never":[0,6],"new":[0,2,6],"next":[0,2,6],"nocalibratedata":6,"non":[0,6],"normal":[0,1,6,7],"noscaledata":6,"note":4,"notic":[0,5,6],"now":4,"null":0,"num_ai_channel":[0,6],"num_ai_mod":[0,6],"num_ai_rang":[0,6],"num_ao_channel":[0,6],"num_dio_channel":[0,6],"number":[0,6],"numpi":6,"nut":2,"o":[0,5,6],"object":6,"obtain":0,"occur":[0,5,6,7],"oem":3,"offset":[0,6],"often":[0,6],"ohm":5,"old":[0,6],"onboard":5,"onc":[0,2,6],"one":[0,4,5,6],"onli":[0,5,6],"onto":2,"open":[0,1,4,5,6],"open_tc_valu":[0,3,6],"oper":[0,1,4,5,6],"option":[3,4],"optionflag":6,"opts_continu":0,"opts_default":0,"opts_extclock":0,"opts_exttrigg":0,"opts_nocalibratedata":0,"opts_noscaledata":0,"order":[0,4,6],"ore":[0,6],"organiz":[0,6],"origin":[0,5,6],"os":[0,4],"otherwis":[0,6],"output":[0,1,5,6,7],"output_typ":6,"outsid":[0,6],"overrang":0,"overrange_tc_valu":[0,3,6],"overrid":6,"overrun":[0,6],"overview":3,"overwritten":[0,6],"pace":[0,6],"packag":[4,6],"pair":6,"paramet":[0,1,6,7],"particular":5,"pass":[0,6],"path_to_venv":4,"pdf":3,"per":[0,5,6],"perform":[0,4,6,7],"period":[0,6],"pi":[0,1,2,4,5,6,7],"pin":[0,1,2,5,6,7],"pip":4,"place":5,"plan":[0,6],"pointer":0,"port":[0,5,6],"portion":2,"posit":[0,5,6],"possibl":[0,5,6],"power":[0,2,3,4,6],"practic":3,"present":[0,6,7],"press":2,"prevent":5,"previous":2,"print":6,"prior":[0,5,6],"probabl":5,"problem":[0,5,6],"proc":6,"procedur":2,"processor":5,"product":[0,6],"product_nam":[0,6],"program":[0,3,5,6],"programm":5,"progress":[0,6],"project":4,"provid":[0,2,5,6],"public":0,"pull":[0,5,6],"pull_config":6,"pull_en":6,"push":[0,5,6],"put":[1,7],"python":[3,5],"r":[0,5,6],"rail":5,"rais":[5,6,7],"rang":[3,5],"raspberri":[0,2,4,5,6,7],"rate":[0,5,6],"rather":[0,6],"raw_adc_cod":[0,6],"read":[0,1,3,5,7],"reboot":4,"receiv":[0,1,6],"recent":[0,4,6],"receptacl":2,"recommend":[2,5],"reduc":[0,5,6],"refer":[3,5],"reflect":[0,6],"regist":[0,6],"reject":3,"relat":[0,6],"remov":[0,2,5],"repeat":[2,4,5,6],"replac":[0,4,6],"report":[0,6],"repres":[0,6],"request":[0,6],"requir":[0,6,7],"reset":[0,6],"resistor":[0,5,6],"resourc":[0,6],"respond":[6,7],"rest":2,"result":[1,3,5,6],"result_bad_paramet":0,"result_busi":[0,1],"result_comms_failur":0,"result_invalid_devic":0,"result_lock_timeout":0,"result_resource_unavail":0,"result_success":[0,1],"result_timeout":0,"result_undefin":0,"resultcod":0,"return":[0,1,6,7],"rise":[0,5,6],"rising_edg":6,"rpi":4,"run":[0,1,4,5,6],"s":[0,4,5,6],"sampl":[0,5,6,7],"sample_rate_per_channel":[0,6],"samples_avail":6,"samples_per_channel":[0,6],"samples_read_per_channel":0,"samtec":2,"save":[0,4,6],"scale":[0,6],"scan":[1,3],"screw":[2,3],"se":6,"second":[0,6],"secur":2,"see":[0,4,6],"seen":4,"seismic":[0,6],"select":[0,5,6],"sensit":[0,5,6],"sensor":[0,5,6],"separ":[0,6],"seri":5,"serial":[0,6],"set":[0,1,2,5,6,7],"sever":[0,6],"sh":4,"share":[0,1,4,5,6,7],"show":[0,6],"shown":2,"signal":[0,1,5,6,7],"signific":5,"similar":6,"simpl":4,"simpli":[0,6],"simultan":[0,5,6],"sinc":[0,5,6],"singl":[0,3,6],"sink":5,"size":[0,6],"sizeof":0,"slave":[0,1,6,7],"slide":2,"slope":[0,6],"softwar":5,"sourc":[3,4,5],"source_loc":0,"source_mast":0,"source_slav":0,"sourcetyp":[0,6],"space":[0,5],"special":[0,6],"specif":[0,3,6],"specifi":[0,1,6,7],"spi":5,"squar":[1,7],"ssq":2,"stack":[0,4,5],"stackup":4,"standard":5,"standoff":2,"start":[0,4,5,6],"state":[0,1,5,6,7],"static":6,"status":[3,6],"status_buffer_overrun":0,"status_hw_overrun":0,"status_run":0,"status_trigg":0,"steadi":5,"step":[0,2,4,6],"still":[0,5,6],"stop":[0,6],"store":[0,6],"str":6,"stream":[0,6],"string":[0,6],"struct":0,"structur":3,"studi":4,"succeed":[0,6],"success":[0,1],"sudden":5,"sudo":4,"suppli":[5,6],"support":[0,5,6],"suppress":5,"sync":[0,1,6,7],"synchron":[0,5,6,7],"syncron":0,"system":[0,4,6],"t":[0,2,5,6],"t_in_read":6,"tabl":[0,6],"taken":[0,6],"target":[1,7],"tc_disabl":0,"tc_type":6,"tc_type_":0,"tc_type_b":0,"tc_type_j":0,"tc_type_k":0,"tc_type_n":0,"tc_type_r":0,"tc_type_read":6,"tc_type_t":0,"tc_type_writ":6,"tctype":[0,6],"tech":5,"tell":[0,6],"temperatur":[0,5,6],"temporarili":[0,6],"termin":[0,2,3,4,6],"terminolog":[0,6],"test_clock":7,"test_signals_read":7,"test_signals_writ":7,"test_trigg":7,"text":0,"thermocoupl":3,"though":6,"thread":[0,2,6],"tighten":2,"time":[0,4,5,6],"timeout":[0,6],"tip":5,"togeth":[0,6],"toler":5,"tool":[0,4,5,6],"top":[2,5],"topic":5,"total":[0,6],"transduc":5,"transient":5,"transit":6,"tree":6,"trig":[0,1,5,6,7],"trig_active_high":0,"trig_active_low":0,"trig_falling_edg":0,"trig_rising_edg":0,"trigger":[1,3,7],"trigger_config":[6,7],"trigger_mod":6,"trigger_sourc":6,"triggermod":[0,6],"true":6,"ttl":5,"tupl":6,"turn":[5,6],"two":[0,5,6],"txt":5,"type":[3,5,7],"type_":6,"type_b":6,"type_j":6,"type_k":6,"type_n":6,"type_r":6,"type_t":6,"typic":[2,5],"uininstal":4,"uint16_t":0,"uint32_t":0,"uint8_t":[0,1],"uncalibr":[0,6],"uninstal":4,"unit":[0,6],"unload":6,"unpopul":5,"unscal":[0,6],"unspecifi":6,"updat":[0,3,6],"update_interval_read":6,"update_interval_writ":6,"upgrad":4,"usag":0,"use":[0,1,3,5,6,7],"user":[0,1,4,5,6,7],"user_data":[0,6],"usr":4,"usual":5,"util":4,"v":[0,5,6],"valid":[0,6],"valu":[0,1,6,7],"value_dict":6,"valueerror":[6,7],"variat":5,"various":5,"venv":4,"veri":[0,6],"verifi":6,"version":[0,3,4,5,6],"vibrat":[0,6],"vio":5,"virtual":4,"void":0,"volt":0,"voltag":[0,5,6],"w3":3,"wait":[0,6],"wait_for_interrupt":[3,6],"want":[0,6],"wave":[1,7],"whatev":0,"whenev":[0,6],"whichev":[0,6],"wide":4,"will":[0,1,2,4,5,6,7],"window":4,"wire":2,"within":5,"without":[0,6],"work":5,"write":[0,1,6,7],"written":[0,6],"x":5,"y":2,"yyyi":[0,6],"zero":[0,6]},"titles":["C Library Reference","C Test Function Reference","Installing the DAQ HAT board","MCC DAQ HAT Library documentation","Installing and Using the Library","Hardware Overview","Python Library Reference","Python Test Function Reference"],"titleterms":{"3v":5,"5v":5,"accur":5,"adc":5,"address":5,"alia":5,"analog":[0,6],"best":5,"block":5,"board":[2,5],"c":[0,1,4],"class":6,"clock":5,"coaxial":5,"code":0,"compat":5,"compon":5,"config":[0,6],"configur":5,"connector":5,"creat":4,"daq":[2,3],"data":[0,6],"definit":0,"detail":5,"devic":0,"diagram":5,"differenti":5,"digit":5,"dio":[0,5,6],"document":3,"end":5,"firmwar":[4,5],"flag":[0,6],"function":[0,1,5,7],"global":[0,6],"hardwar":5,"hat":[0,2,3,6],"haterror":6,"hatinfo":0,"header":5,"id":[0,6],"info":0,"input":[0,5,6],"instal":[2,4],"item":[0,6],"jumper":5,"led":5,"librari":[0,3,4,6],"mcc":[0,1,3,4,5,6,7],"measur":5,"method":[6,7],"mix":5,"mode":[0,6],"multipl":2,"oem":5,"option":[0,6],"overview":5,"power":5,"practic":5,"program":4,"python":[4,6,7],"rang":[0,6],"read":6,"refer":[0,1,6,7],"reject":5,"result":0,"scan":[0,5,6],"screw":5,"singl":[2,5],"sourc":[0,6],"specif":5,"status":[0,5],"structur":0,"termin":5,"test":[1,7],"thermocoupl":[0,5,6],"trigger":[0,5,6],"type":[0,6],"updat":[4,5],"use":4,"w3":5}}) \ No newline at end of file diff --git a/docsource/images/mcc134-diag-web.jpg b/docsource/images/mcc134-diag-web.jpg index c56da80..6f9bbbb 100644 Binary files a/docsource/images/mcc134-diag-web.jpg and b/docsource/images/mcc134-diag-web.jpg differ diff --git a/docsource/images/mcc134-diag.jpg b/docsource/images/mcc134-diag.jpg index 2c96410..57f6e34 100644 Binary files a/docsource/images/mcc134-diag.jpg and b/docsource/images/mcc134-diag.jpg differ diff --git a/docsource/overview_mcc134.inc b/docsource/overview_mcc134.inc index 9d55856..afaecdf 100644 --- a/docsource/overview_mcc134.inc +++ b/docsource/overview_mcc134.inc @@ -7,7 +7,8 @@ The MCC 134 is a 4-channel thermocouple input board with the following features: - Onboard sensor for cold junction compensation - Linearization for J, K, R, S, T, N, E, B type thermocouples - Open thermocouple detection -- Thermocouple inputs are electrically isolated from the Raspberry Pi for use in harsh environments +- Thermocouple inputs are functionally isolated from the Raspberry Pi for use in + harsh environments .. only:: html @@ -30,15 +31,21 @@ Screw terminals Address jumpers ^^^^^^^^^^^^^^^ -- **A0** to **A2**: Used to identify each HAT when multiple boards are connected. The first HAT connected to the Raspberry Pi must be at address 0 (no jumper). Install jumpers on each additional connected board to set the desired address. Refer to the :ref:`multiple` topic for more information about the recommended addressing method. +- **A0** to **A2**: Used to identify each HAT when multiple boards are connected. + The first HAT connected to the Raspberry Pi must be at address 0 (no jumper). + Install jumpers on each additional connected board to set the desired address. + Refer to the :ref:`multiple` topic for more information about the recommended + addressing method. Status LED ^^^^^^^^^^ -The LED turns on when the board is connected to a Raspberry Pi with external power applied. +The LED turns on when the board is connected to a Raspberry Pi with external +power applied. Header connector ^^^^^^^^^^^^^^^^ -The board header is used to connect with the Raspberry Pi. Refer to :ref:`install` for more information about the header connector. +The board header is used to connect with the Raspberry Pi. Refer to :ref:`install` +for more information about the header connector. Functional block diagram ------------------------ @@ -82,7 +89,8 @@ MCC recommends the following practices: increase accuracy. For additional information, refer to the `Measuring Thermocouples with Raspberry Pi -and the MCC 134 `_ Tech Tip. +and the MCC 134 +`_ Tech Tip. Specifications -------------- diff --git a/docsource/specs/esmcc134.pdf b/docsource/specs/esmcc134.pdf index 69932b2..f27ed58 100644 Binary files a/docsource/specs/esmcc134.pdf and b/docsource/specs/esmcc134.pdf differ diff --git a/lib/gpio.c b/lib/gpio.c index c0dc23b..b80c67f 100644 --- a/lib/gpio.c +++ b/lib/gpio.c @@ -65,16 +65,6 @@ void gpio_init(void) #endif // get all the GPIO lines for the chip -#if 0 - // This isn't compatible with older versions of libgpiod - if (-1 == gpiod_chip_get_all_lines(chip, &lines)) - { - printf("gpio_init: error getting lines\n"); - gpiod_chip_close(chip); - chip = NULL; - return; - } -#else gpiod_line_bulk_init(&lines); unsigned int count = gpiod_chip_num_lines(chip); for (unsigned int i = 0; i < count; i++) @@ -89,7 +79,6 @@ void gpio_init(void) } gpiod_line_bulk_add(&lines, line); } -#endif gpio_initialized = true; } diff --git a/lib/gpio_v2.c b/lib/gpio_v2.c new file mode 100644 index 0000000..a4da7ff --- /dev/null +++ b/lib/gpio_v2.c @@ -0,0 +1,579 @@ +/* +* file gpio_v2.c +* author Measurement Computing Corp. +* brief This file contains lightweight GPIO pin control functions for libgpio v2. +* +* date 24 Nov 2025 +*/ +#include +#include +#include +#include +#include +#include +#include + +#include "gpio.h" + +//#define DEBUG + +const char* app_name = "daqhats"; + +static bool gpio_initialized = false; +static struct gpiod_chip* chip = NULL; +static struct +{ + unsigned int num_lines; + struct gpiod_line_request** requests; +} lines = {0}; + +// Variables for GPIO interrupt threads +#define NUM_GPIO 32 // max number of GPIO pins we handle for interrupts +static int gpio_int_thread_signal[NUM_GPIO] = {0}; +static void* gpio_callback_data[NUM_GPIO] = {0}; +static pthread_t gpio_int_threads[NUM_GPIO]; +static bool gpio_threads_running[NUM_GPIO] = {0}; +static void (*gpio_callback_functions[NUM_GPIO])(void*) = {0}; + +// libgpiod v2 helper functions +static int _request_output(unsigned int pin, unsigned int value) +{ + struct gpiod_request_config *req_cfg = NULL; + struct gpiod_line_request *request = NULL; + struct gpiod_line_settings *settings; + struct gpiod_line_config *line_cfg; + int ret = -1; + + if (!gpio_initialized || (pin >= lines.num_lines)) + return ret; + + // if we have an existing request then release it + if (NULL != lines.requests[pin]) + { + gpiod_line_request_release(lines.requests[pin]); + lines.requests[pin] = NULL; + } + + settings = gpiod_line_settings_new(); + if (!settings) + { + return ret; + } + + gpiod_line_settings_set_direction(settings, GPIOD_LINE_DIRECTION_OUTPUT); + gpiod_line_settings_set_output_value(settings, + (0 == value) ? + GPIOD_LINE_VALUE_INACTIVE : GPIOD_LINE_VALUE_ACTIVE); + + line_cfg = gpiod_line_config_new(); + if (!line_cfg) + goto free_settings; + + ret = gpiod_line_config_add_line_settings(line_cfg, &pin, 1, settings); + if (ret) + goto free_line_config; + + req_cfg = gpiod_request_config_new(); + if (!req_cfg) + goto free_line_config; + + gpiod_request_config_set_consumer(req_cfg, app_name); + + request = gpiod_chip_request_lines(chip, req_cfg, line_cfg); + gpiod_request_config_free(req_cfg); + + if (NULL != request) + { + ret = 0; + } + lines.requests[pin] = request; + +free_line_config: + gpiod_line_config_free(line_cfg); + +free_settings: + gpiod_line_settings_free(settings); + + return ret; +} + +static int _write_output_value(unsigned int pin, unsigned int value) +{ + if (!gpio_initialized || (pin >= lines.num_lines)) + return -1; + + // if we don't have an existing request then try to set pin to output + if (NULL == lines.requests[pin]) + { + return _request_output(pin, value); + } + + // write the value + enum gpiod_line_value out_value = (0 == value) ? GPIOD_LINE_VALUE_INACTIVE : GPIOD_LINE_VALUE_ACTIVE; + return gpiod_line_request_set_value(lines.requests[pin], pin, out_value); +} + +static int _request_input(unsigned int pin, enum gpiod_line_edge edge) +{ + struct gpiod_request_config *req_cfg = NULL; + struct gpiod_line_request *request = NULL; + struct gpiod_line_settings *settings; + struct gpiod_line_config *line_cfg; + int ret = -1; + + if (!gpio_initialized || (pin >= lines.num_lines)) + return ret; + + // if we have an existing request then release it + if (NULL != lines.requests[pin]) + { + gpiod_line_request_release(lines.requests[pin]); + lines.requests[pin] = NULL; + } + + settings = gpiod_line_settings_new(); + if (!settings) + return ret; + + gpiod_line_settings_set_direction(settings, GPIOD_LINE_DIRECTION_INPUT); + gpiod_line_settings_set_edge_detection(settings, edge); + + line_cfg = gpiod_line_config_new(); + if (!line_cfg) + goto free_settings; + + ret = gpiod_line_config_add_line_settings(line_cfg, &pin, 1, settings); + if (ret) + goto free_line_config; + + req_cfg = gpiod_request_config_new(); + if (!req_cfg) + goto free_line_config; + + gpiod_request_config_set_consumer(req_cfg, app_name); + + request = gpiod_chip_request_lines(chip, req_cfg, line_cfg); + gpiod_request_config_free(req_cfg); + + if (NULL != request) + { + ret = 0; + } + lines.requests[pin] = request; + +free_line_config: + gpiod_line_config_free(line_cfg); + +free_settings: + gpiod_line_settings_free(settings); + + return ret; +} + +static int _read_input_value(unsigned int pin) +{ + int ret = -1; + + if (!gpio_initialized || (pin >= lines.num_lines)) + return -1; + + // if we don't have an existing request then try to set pin to input + if (NULL == lines.requests[pin]) + { + if (-1 == _request_input(pin, GPIOD_LINE_EDGE_NONE)) + { + return -1; + } + } + + // read the value + enum gpiod_line_value value = gpiod_line_request_get_value(lines.requests[pin], pin); + switch (value) + { + case GPIOD_LINE_VALUE_ACTIVE: + ret = 1; + break; + case GPIOD_LINE_VALUE_INACTIVE: + ret = 0; + break; + default: + ret = -1; + break; + } + + return ret; +} + +void gpio_init(void) +{ + if (gpio_initialized) + { + return; + } + + // determine if this is running on a Pi 5 + if (NULL == (chip = gpiod_chip_open("/dev/gpiochip4"))) + { + // could not open gpiochip4, so must be < Pi 5 + if (NULL == (chip = gpiod_chip_open("/dev/gpiochip0"))) + { + // could not open gpiochip0 - error + printf("gpio_init: could not open gpiochip\n"); + return; + } + else + { +#ifdef DEBUG + printf("gpio_init: found gpiochip0\n"); +#endif + } + } + else + { +#ifdef DEBUG + printf("gpio_init: found gpiochip4\n"); +#endif + } + +#ifdef DEBUG + printf("gpio_init: chip = %p\n", chip); +#endif + + // get the GPIO line info for the chip and create an array of request pointers + struct gpiod_chip_info* info = gpiod_chip_get_info(chip); + if (!info) + { + printf("gpio_init: failed to get chip info\n"); + gpiod_chip_close(chip); + chip = NULL; + return; + } + lines.num_lines = gpiod_chip_info_get_num_lines(info); + gpiod_chip_info_free(info); +#ifdef DEBUG + printf("gpio_init: %d lines\n", lines.num_lines); +#endif + lines.requests = (struct gpiod_line_request**)calloc(lines.num_lines, sizeof(struct gpiod_line_request*)); + if (NULL == lines.requests) + { + printf("gpio_init: calloc failed\n"); + return; + } + + gpio_initialized = true; +} + +void gpio_close(void) +{ + if (!gpio_initialized) + { + return; + } + +#ifdef DEBUG + printf("gpio_close\n"); +#endif + + // release any lines + for (unsigned int i = 0; i < lines.num_lines; i++) + { + gpio_release(i); + } + + // free the requests array + free(lines.requests); + + gpiod_chip_close(chip); + chip = NULL; + + gpio_initialized = false; +} + +void gpio_set_output(unsigned int pin, unsigned int value) +{ +#ifdef DEBUG + printf("gpio_set_output %d %d\n", pin, value); +#endif + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_set_output: pin %d invalid\n", pin); + return; + } + + // Set pin to output. + if (-1 == _request_output(pin, value)) + { + printf("gpio_set_output: _request_output failed\n"); + } +} + +void gpio_write(unsigned int pin, unsigned int value) +{ +#ifdef DEBUG + printf("gpio_write %d %d\n", pin, value); +#endif + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_write: pin %d invalid\n", pin); + return; + } + + // Set output value + if (-1 == _write_output_value(pin, value)) + { + printf("gpio_write: _request_output_value failed\n"); + } +} + +void gpio_input(unsigned int pin) +{ +#ifdef DEBUG + printf("gpio_input %d\n", pin); +#endif + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_input: pin %d invalid\n", pin); + return; + } + + // Set pin to input. + if (-1 == _request_input(pin, GPIOD_LINE_EDGE_NONE)) + { + printf("gpio_input: gpiod_line_request_input failed\n"); + } +} + +void gpio_release(unsigned int pin) +{ +#ifdef DEBUG + printf("gpio_release %d\n", pin); +#endif + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_release: pin %d invalid\n", pin); + return; + } + + // Release pin + if (NULL != lines.requests[pin]) + { + gpiod_line_request_release(lines.requests[pin]); + lines.requests[pin] = NULL; + } +} + +int gpio_read(unsigned int pin) +{ + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_read: pin %d invalid\n", pin); + return -1; + } + + // get the value + int value = _read_input_value(pin); + if (-1 == value) + { + printf("gpio_read _read_input_value failed\n"); + } + return value; +} + +static void *gpio_interrupt_thread(void* arg) +{ + unsigned int pin = (unsigned int)(intptr_t)arg; + + if (!gpio_initialized) + { + return NULL; + } + if (pin >= lines.num_lines) + { + printf("gpio_interrupt_thread: pin %d invalid\n", pin); + return NULL; + } + + struct gpiod_edge_event_buffer *event_buffer = gpiod_edge_event_buffer_new(1); + if (!event_buffer) + { + return NULL; + } + + struct pollfd pollfd; + pollfd.fd = gpiod_line_request_get_fd(lines.requests[pin]); + pollfd.events = POLLIN; + + while (0 == gpio_int_thread_signal[pin]) + { + // timeout every millisecond to check for shutdown signals + int ret = poll(&pollfd, 1, 1); + if (-1 == ret) + { + // error + goto cleanup; + } + else if (0 == ret) + { + // timeout + continue; + } + + int count = gpiod_line_request_read_edge_events(lines.requests[pin], event_buffer, 1); + if (-1 == count) + { + goto cleanup; + } + // call the callback + gpio_callback_functions[pin](gpio_callback_data[pin]); + } + +cleanup: + gpiod_edge_event_buffer_free(event_buffer); + gpio_release(pin); + return NULL; +} + +int gpio_interrupt_callback(unsigned int pin, unsigned int mode, void (*function)(void*), + void* data) +{ + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_interrupt_callback: pin %d invalid\n", pin); + return -1; + } + + // check for an existing thread + if (true == gpio_threads_running[pin]) + { + // there is already an interrupt thread on this pin so signal the + // thread to end and wait for it + gpio_int_thread_signal[pin] = 1; + pthread_join(gpio_int_threads[pin], NULL); + gpio_threads_running[pin] = false; + } + + // temporarily release the line and request it with the desired event mode + gpio_release(pin); + int result; + switch (mode) + { + case 0: // falling + result = _request_input(pin, GPIOD_LINE_EDGE_FALLING); + break; + case 1: // rising + result = _request_input(pin, GPIOD_LINE_EDGE_RISING); + break; + case 2: // both + result = _request_input(pin, GPIOD_LINE_EDGE_BOTH); + break; + default: // disable events + gpio_input(pin); + return 0; + } + + // only get here if we are configuring events + + if (0 != result) + { + // error + printf("gpio_interrupt_callback: _request_input failed\n"); + return -1; + } + + // clear any unread events + struct gpiod_edge_event_buffer* buffer = gpiod_edge_event_buffer_new(1); + + int ret = 0; + do + { + ret = gpiod_line_request_wait_edge_events(lines.requests[pin], 0); + if (1 == ret) + { + gpiod_line_request_read_edge_events(lines.requests[pin], buffer, 1); + } + } while (1 == ret); + gpiod_edge_event_buffer_free(buffer); + + // set the callback function + gpio_callback_functions[pin] = function; + gpio_callback_data[pin] = data; + gpio_int_thread_signal[pin] = 0; + + // start the interrupt thread + if (0 == pthread_create(&gpio_int_threads[pin], NULL, gpio_interrupt_thread, (void*)(intptr_t)pin)) + { + gpio_threads_running[pin] = true; + } + + return 0; +} + +int gpio_wait_for_low(unsigned int pin, unsigned int timeout) +{ + if (!gpio_initialized) + { + gpio_init(); + } + if (pin >= lines.num_lines) + { + printf("gpio_wait_for_low: pin %d invalid\n", pin); + return -1; + } + + if (-1 == _request_input(pin, GPIOD_LINE_EDGE_FALLING)) + { + printf("gpio_wait_for_low: _request_input failed\n"); + return -1; + } + + // return if line is already low + if (0 == gpio_read(pin)) + { + gpio_release(pin); + return 1; + } + + // clear any unread events + struct gpiod_edge_event_buffer* buffer = gpiod_edge_event_buffer_new(1); + + int ret = 0; + do + { + ret = gpiod_line_request_wait_edge_events(lines.requests[pin], 0); + if (1 == ret) + { + gpiod_line_request_read_edge_events(lines.requests[pin], buffer, 1); + } + } while (1 == ret); + + // wait for a falling edge + ret = gpiod_line_request_wait_edge_events(lines.requests[pin], timeout * 1000000); + + gpiod_edge_event_buffer_free(buffer); + gpio_release(pin); + return ret; +} diff --git a/lib/makefile b/lib/makefile index 4c5f938..7155511 100644 --- a/lib/makefile +++ b/lib/makefile @@ -1,6 +1,6 @@ MAJOR = 1 MINOR = 5 -SUB = 0.0 +SUB = 0.1 NAME = daqhats VERSION = $(MAJOR).$(MINOR).$(SUB) INSTALL_DIR = /usr/local/lib @@ -13,10 +13,32 @@ DEPLIBS = -lm -lgpiod RM = rm -f TARGET_LIB = lib$(NAME).so.$(VERSION) -SRCS = util.c mcc118.c mcc152.c mcc152_dac.c mcc152_dio.c gpio.c cJSON.c mcc134.c mcc134_adc.c nist.c mcc172.c mcc128.c +SRCS = util.c mcc118.c mcc152.c mcc152_dac.c mcc152_dio.c cJSON.c mcc134.c mcc134_adc.c nist.c mcc172.c mcc128.c OBJS = $(SRCS:%.c=$(BUILD_DIR)/%.o) DEPS = $(OBJS:%.o=%.d) +# Get the full gpiod version string from pkg-config +# The 'shell' function executes the command and stores the output. +GPIOD_VERSION := $(shell pkg-config --modversion libgpiod 2>/dev/null) + +# Extract the major version number using another shell call +VERSION_MAJOR := $(shell echo $(GPIOD_VERSION) | cut -d. -f1) + +# Start conditional logic within the Makefile +ifeq ($(VERSION_MAJOR), 2) + # --- V2 Logic --- + # Define the macro for C code + SRCS += gpio_v2.c + MESSAGE = "Building with libgpiod V2 ($(GPIOD_VERSION))" +else ifeq ($(VERSION_MAJOR), 1) + # --- V1 Logic --- + SRCS += gpio.c + MESSAGE = "Building with libgpiod V1 ($(GPIOD_VERSION))" +else + # --- Error Handling --- + $(error libgpiod version could not be determined or is not supported. Version: $(GPIOD_VERSION)) +endif + .PHONY: all clean all: $(BUILD_DIR)/$(TARGET_LIB) @@ -28,6 +50,7 @@ $(BUILD_DIR)/$(TARGET_LIB): $(OBJS) -include $(DEPS) $(BUILD_DIR)/%.o : %.c + @echo $(MESSAGE) @mkdir -p $(@D) $(CC) $(CFLAGS) -MMD -c $< -o $@ diff --git a/lib/mcc118.c b/lib/mcc118.c index 7542147..a196d5c 100644 --- a/lib/mcc118.c +++ b/lib/mcc118.c @@ -1516,7 +1516,7 @@ int mcc118_a_in_scan_start(uint8_t address, uint8_t channel_mask, } dev->scan_info = (struct mcc118ScanThreadInfo*)calloc( - sizeof(struct mcc118ScanThreadInfo), 1); + 1, sizeof(struct mcc118ScanThreadInfo)); if (dev->scan_info == NULL) { return RESULT_RESOURCE_UNAVAIL; diff --git a/lib/mcc128.c b/lib/mcc128.c index 0fdebb4..68c29f9 100644 --- a/lib/mcc128.c +++ b/lib/mcc128.c @@ -1636,7 +1636,7 @@ int mcc128_a_in_scan_queue_start(uint8_t address, uint8_t queue_count, } dev->scan_info = (struct mcc128ScanThreadInfo*)calloc( - sizeof(struct mcc128ScanThreadInfo), 1); + 1, sizeof(struct mcc128ScanThreadInfo)); if (dev->scan_info == NULL) { return RESULT_RESOURCE_UNAVAIL; diff --git a/lib/mcc172.c b/lib/mcc172.c index b455803..caee212 100644 --- a/lib/mcc172.c +++ b/lib/mcc172.c @@ -1615,7 +1615,7 @@ int mcc172_a_in_scan_start(uint8_t address, uint8_t channel_mask, } dev->scan_info = (struct mcc172ScanThreadInfo*)calloc( - sizeof(struct mcc172ScanThreadInfo), 1); + 1, sizeof(struct mcc172ScanThreadInfo)); if (dev->scan_info == NULL) { return RESULT_RESOURCE_UNAVAIL; diff --git a/lib/util.c b/lib/util.c index c31e2eb..1117add 100644 --- a/lib/util.c +++ b/lib/util.c @@ -955,7 +955,10 @@ int _hat_info(uint8_t address, struct HatInfo* entry, char* pData, } } if (eeprom_fd != -1) + { close(eeprom_fd); + eeprom_fd = -1; + } } if (!found_vendor) @@ -1079,6 +1082,11 @@ int _hat_info(uint8_t address, struct HatInfo* entry, char* pData, } } + if (eeprom_fd != -1) + { + close(eeprom_fd); + } + return RESULT_SUCCESS; } diff --git a/setup.cfg b/setup.cfg index 2c842ee..df001b2 100755 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = daqhats -version = 1.4.1.0 +version = 1.5.0.1 author = Measurement Computing Corp. author_email = info@mccdaq.com description = MCC DAQ HAT Python Library diff --git a/setup.py b/setup.py index bbf45c0..b19e576 100755 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ from setuptools import setup __project__ = 'daqhats' -__version__ = '1.5.0.0' +__version__ = '1.5.0.1' __description__ = 'MCC DAQ HAT Python Library' __packages__ = ['daqhats'] __author__ = 'Measurement Computing Corp.' diff --git a/tools/daqhats_read_eeproms b/tools/daqhats_read_eeproms index f8c90f5..5fe0f45 100755 --- a/tools/daqhats_read_eeproms +++ b/tools/daqhats_read_eeproms @@ -62,7 +62,7 @@ if [ "$rc" != 0 ]; then exit $rc fi -SYS=/sys/class/i2c-adapter/i2c-$BUS +SYS=/sys/bus/i2c/devices/i2c-$BUS rm -f /etc/mcc/hats/*.bin diff --git a/version_history.txt b/version_history.txt index 3c0a15c..0ccc692 100644 --- a/version_history.txt +++ b/version_history.txt @@ -1,5 +1,10 @@ +1.5.0.1: + - Added support for libgpiod v2 in Trixie and above + - Fixed issue with daqhats_read_eeproms on newer versions of Raspberry Pi OS + - Updated MCC 134 documentation + 1.5.0.0: - - Added support for Raspberry Pi 5 by switching to libgpiod for the GPIO functions. + - Added support for Raspberry Pi 5 by switching to libgpiod for the GPIO functions - No longer install the Python library during install, allowing the user to install in a venv if desired - Control panel apps were ported to C to remove dependency on system-wide Python library