diff --git a/debconf/iptables-persistent b/debconf/iptables-persistent new file mode 100644 index 0000000..ebb6d69 --- /dev/null +++ b/debconf/iptables-persistent @@ -0,0 +1,2 @@ +iptables-persistent iptables-persistent/autosave_v6 boolean false +iptables-persistent iptables-persistent/autosave_v4 boolean false diff --git a/debconf/keyboard-configuration b/debconf/keyboard-configuration new file mode 100644 index 0000000..eeec8ea --- /dev/null +++ b/debconf/keyboard-configuration @@ -0,0 +1,18 @@ +keyboard-configuration keyboard-configuration/model select Generic 105-key PC (intl.) +keyboard-configuration keyboard-configuration/compose select No compose key +keyboard-configuration keyboard-configuration/toggle select No toggling +keyboard-configuration keyboard-configuration/store_defaults_in_debconf_db boolean true +keyboard-configuration keyboard-configuration/unsupported_config_options boolean true +keyboard-configuration keyboard-configuration/xkb-keymap select gb +keyboard-configuration keyboard-configuration/optionscode string +keyboard-configuration keyboard-configuration/switch select No temporary switch +keyboard-configuration keyboard-configuration/layout select German +keyboard-configuration keyboard-configuration/altgr select The default for the keyboard layout +keyboard-configuration keyboard-configuration/modelcode string pc105 +keyboard-configuration keyboard-configuration/unsupported_options boolean true +keyboard-configuration keyboard-configuration/unsupported_layout boolean true +keyboard-configuration keyboard-configuration/ctrl_alt_bksp boolean false +keyboard-configuration keyboard-configuration/unsupported_config_layout boolean true +keyboard-configuration keyboard-configuration/variant select German +keyboard-configuration keyboard-configuration/layoutcode string de +keyboard-configuration keyboard-configuration/variantcode string diff --git a/debconf/tzdata b/debconf/tzdata new file mode 100644 index 0000000..eadbc6e --- /dev/null +++ b/debconf/tzdata @@ -0,0 +1,14 @@ +tzdata tzdata/Zones/Europe select Berlin +tzdata tzdata/Zones/Indian select +tzdata tzdata/Zones/Pacific select +tzdata tzdata/Zones/Atlantic select +tzdata tzdata/Zones/Africa select +tzdata tzdata/Zones/Asia select +tzdata tzdata/Zones/Etc select UTC +tzdata tzdata/Zones/SystemV select +tzdata tzdata/Zones/Arctic select +tzdata tzdata/Zones/US select +tzdata tzdata/Zones/Australia select +tzdata tzdata/Areas select Europe +tzdata tzdata/Zones/America select +tzdata tzdata/Zones/Antarctica select diff --git a/debconf/wireshark b/debconf/wireshark new file mode 100644 index 0000000..35c2462 --- /dev/null +++ b/debconf/wireshark @@ -0,0 +1 @@ +wireshark-common wireshark-common/install-setuid boolean true diff --git a/debs/apt-ntop_1.0.190416-469_all.deb b/debs/apt-ntop_1.0.190416-469_all.deb new file mode 100644 index 0000000..a8e5855 Binary files /dev/null and b/debs/apt-ntop_1.0.190416-469_all.deb differ diff --git a/debs/libgtk-3-0_3.24.5-1_armhf.deb b/debs/libgtk-3-0_3.24.5-1_armhf.deb new file mode 100644 index 0000000..cfcd51f Binary files /dev/null and b/debs/libgtk-3-0_3.24.5-1_armhf.deb differ diff --git a/debs/libgtk-3-bin_3.24.5-1_armhf.deb b/debs/libgtk-3-bin_3.24.5-1_armhf.deb new file mode 100644 index 0000000..855b5a4 Binary files /dev/null and b/debs/libgtk-3-bin_3.24.5-1_armhf.deb differ diff --git a/debs/libgtk-3-common_3.24.5-1_all.deb b/debs/libgtk-3-common_3.24.5-1_all.deb new file mode 100644 index 0000000..820cba7 Binary files /dev/null and b/debs/libgtk-3-common_3.24.5-1_all.deb differ diff --git a/debs/raspion-keyring_2019_all.deb b/debs/raspion-keyring_2019_all.deb new file mode 100644 index 0000000..83665d8 Binary files /dev/null and b/debs/raspion-keyring_2019_all.deb differ diff --git a/debs/wireshark-gtk_2.6.8-1.1_armhf.deb b/debs/wireshark-gtk_2.6.8-1.1_armhf.deb new file mode 100644 index 0000000..f100e98 Binary files /dev/null and b/debs/wireshark-gtk_2.6.8-1.1_armhf.deb differ diff --git a/files/10-dir-listing.conf b/files/10-dir-listing.conf new file mode 100644 index 0000000..7b1454b --- /dev/null +++ b/files/10-dir-listing.conf @@ -0,0 +1,8 @@ +dir-listing.encoding = "utf-8" +$HTTP["url"] =~ "^/~pi/caps($|/)" { + dir-listing.activate = "enable" + } +$HTTP["url"] =~ "^/~pi/scans($|/)" { + dir-listing.activate = "enable" + } + diff --git a/files/20-extport.conf b/files/20-extport.conf new file mode 100644 index 0000000..2868a10 --- /dev/null +++ b/files/20-extport.conf @@ -0,0 +1,15 @@ +$SERVER["socket"] == ":81" { + server.document-root = "/home/pi/public_html" + dir-listing.encoding = "utf-8" + $HTTP["url"] =~ "^/caps($|/)" { + dir-listing.activate = "enable" + } + $HTTP["url"] =~ "^/scans($|/)" { + dir-listing.activate = "enable" + } + $HTTP["url"] =~ "^/admin" { + proxy.server = ( "" => (( "host" => "192.168.24.1", "port" => "80")) ) + } +} + + diff --git a/files/bootstrap.css b/files/bootstrap.css new file mode 100644 index 0000000..92e3fe8 --- /dev/null +++ b/files/bootstrap.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/files/bootstrap.js b/files/bootstrap.js new file mode 100644 index 0000000..4320368 --- /dev/null +++ b/files/bootstrap.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.3.1 (https://getbootstrap.com/) + * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n=i.clientWidth&&n>=i.clientHeight}),h=0l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-ps[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)r(o.top)||"bottom"===_&&r(i.top)r(g.right),c=r(i.top)r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:''}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t 'pihole', + 'url' => '/admin', + 'title' => 'Pi-hole', + 'description' => 'DNS-Anfragen zeigen
Einstellungen ändern' + ), + + array( + 'id' => 'ntopng', + 'url' => ':3000', + 'title' => 'ntopng', + 'description' => 'Live-Netzwerkverkehr anzeigen' + ), + + array( + 'id' => 'wireshark', + 'url' => ':10000', + 'title' => 'Wireshark', + 'description' => 'Mitschnitt und Analyse' + ), + + array( + 'id' => 'mitm', + 'url' => ':9090', + 'title' => 'mitmproxy', + 'description' => 'HTTP(S)-Verkehr einsehen
ein/ausschalten' + ), + + array( + 'id' => 'caps', + 'url' => '/caps', + 'title' => 'pcap-Dateien', + 'description' => 'Gespeicherte Mitschnitte' + ), + + array( + 'id' => 'console', + 'url' => ':4200', + 'title' => 'Konsole', + 'description' => 'Kommandozeile öffnen' + ), + +); + +$interfaces = array(array('eth0', 'Uplink zum Internet'), array('br0', 'Testnetzwerk')); + +//array of controllable systemd services +$systemd_services = array('hostapd', 'wireshark', 'broadwayd', 'mitmweb', 'shellinabox'); + +//array of integrated tools +$tools = array( + array( + 'id' => 'mitmon', + 'title' => 'mitm-Proxy aktivieren', + 'description' => 'Firewall-Regeln für Umleitung von Webzugriffen (Port 80 und 443) auf mitmproxy', + 'parameters' => array(), + 'buttons' => array( + //id, class, title + array('mitmstart', 'btn-success mr-3', 'Aktivieren'), + array('mitmstop', 'btn-danger', 'Deaktivieren'), + ), + ), + + array( + 'id' => 'contcap', + 'title' => 'Schnüffeln im Hintergrund', + 'description' => 'Paketmitschnitt anstoßen', + 'parameters' => array( + //title, text, default value + array('Dateiname', 'text', date('d_m_Y-h_i_s', time())), + array('Laufzeit', 'number', 600) + ), + 'buttons' => array( + array('contcapstart', 'btn-success mr-3', 'Starten'), + array('contcapstop', 'btn-danger', 'Abbrechen'), + ), + ), + array( + 'id' => 'systemd', + 'title' => 'Dienste beeinflussen', + 'description' => 'Vorübergehend beenden oder neu starten', + 'parameters' => array( + array('Dienst', 'select', $systemd_services) + ), + 'buttons' => array( + array('systemdstart', 'btn-success mr-3', 'Start'), + array('systemdstop', 'btn-danger mr-3', 'Stop'), + array('systemdrestart', 'btn-warning', 'Neustart'), + ), + ), +); diff --git a/files/config.yaml b/files/config.yaml new file mode 100644 index 0000000..692e84f --- /dev/null +++ b/files/config.yaml @@ -0,0 +1,5 @@ +block_global: False +console_focus_follow: True +ssl_insecure: True +stream_websockets: True + diff --git a/files/console.png b/files/console.png new file mode 100644 index 0000000..0fc568e Binary files /dev/null and b/files/console.png differ diff --git a/files/favicon.ico b/files/favicon.ico new file mode 100644 index 0000000..37075e5 Binary files /dev/null and b/files/favicon.ico differ diff --git a/files/functions.php b/files/functions.php new file mode 100644 index 0000000..14d77c5 --- /dev/null +++ b/files/functions.php @@ -0,0 +1,77 @@ +IPv4:' . implode('', $ipv4_addr) . ''; + $ipv6_addr = 'IPv6:' . implode('', $ipv6_addr) . ''; + return '' . $ipv4_addr . '' . $ipv6_addr . '
'; +} + +// echo divs that cause breaks in the card groups for certain screen widths +function responsiveCardBreaks($i, $w = 'small') +{ + if ($w == 'small') { + echo '
'; + if (($i + 1) % 2 == 0) { + echo '
'; + } + if (($i + 1) % 3 == 0) { + echo '
'; + } + if (($i + 1) % 4 == 0) { + echo '
'; + } + }; + if ($w == 'wide') { + echo '
'; + if (($i + 1) % 2 == 0) { + echo '
'; + } + }; + if ($w == 'full') { + echo '
'; + }; +} + +//create a select form from given data +function buildSelect($title, $id, $options) +{ + $html_select = '
+ + +
'; + $options_html = ""; + for ($i = 0; $i < count($options); ++$i) { + $options_html .= ''; + }; + + return sprintf($html_select, $title, $id, $options_html); +}; + +function sanitizeSystemdService($string) +{ + global $systemd_services; + $sservice = preg_replace('/[^a-z_\-0-9]/i', '', $string); + if (in_array($sservice, $systemd_services)) { + return $sservice; + } +} + +function executeCommand($command) +{ + exec($command, $output, $return); + if ($return != 0) { + http_response_code(500); + echo "Fehler beim Ausführen von: " . $command; + } else { + http_response_code(200); + }; + echo (implode("
", $output)); +} diff --git a/files/hostapd.conf b/files/hostapd.conf new file mode 100644 index 0000000..480d31e --- /dev/null +++ b/files/hostapd.conf @@ -0,0 +1,10 @@ +interface=wlan0 +bridge=br0 +ssid=raspion +country_code=DE +wpa=2 +wpa_key_mgmt=WPA-PSK +wpa_pairwise=CCMP +rsn_pairwise=CCMP +channel=5 + diff --git a/files/hostname b/files/hostname new file mode 100644 index 0000000..92a67be --- /dev/null +++ b/files/hostname @@ -0,0 +1 @@ +raspion diff --git a/files/hosts b/files/hosts new file mode 100644 index 0000000..fde9720 --- /dev/null +++ b/files/hosts @@ -0,0 +1,6 @@ +127.0.0.1 localhost +::1 localhost ip6-localhost ip6-loopback +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters + +127.0.1.1 raspion diff --git a/files/index.css b/files/index.css new file mode 100644 index 0000000..c0e72cf --- /dev/null +++ b/files/index.css @@ -0,0 +1,31 @@ +a.btn { + cursor: pointer; +} +.card-deck.card-full-width .card { + max-width: calc(100% - 30px); +} + +#footerlink { + font-size:9px; +} + +@media (min-width: 576px) { + .card-deck.card-small-width) .card { + max-width: calc(50% - 30px); + } +} + +@media (min-width: 768px) { + .card-deck.card-small-width .card { + max-width: calc(33.333% - 30px); + } +} + +@media (min-width: 992px) { + .card-deck.card-small-width .card { + max-width: calc(25% - 30px); + } + .card-deck.card-double-width .card { + max-width: calc(50% - 30px); + } +} diff --git a/files/index.js b/files/index.js new file mode 100644 index 0000000..cdd7e3e --- /dev/null +++ b/files/index.js @@ -0,0 +1,50 @@ +window.addEventListener('load', function () { + // get all buttons and add executeCommand as an eventlistener for click + var tool_buttons = document.querySelectorAll('.toollist .command'); + tool_buttons.forEach(command => { + command.addEventListener('click', function () { + executeCommand(command); + }); + }); + + $('#commandModal').on('hidden.bs.modal', function (e) { + location.reload(); + }) + + // send command as a post request including all of it's parameters. the + // parameters are not ordered. + function executeCommand(elem) { + var dataArray = [elem.id] + command_parent = elem.closest('.card'); + parameter_elements = command_parent.querySelectorAll('.parameter'); + parameter_elements.forEach(element => { dataArray.push(element.value) }); + sendRequest(dataArray); + } + + // send the data via xhr + function sendRequest(params) { + $('#commandModal').modal('show'); + var body = document.querySelector('#commandModal .modal-body'); + var xhr = new XMLHttpRequest(); + var url = '/index.php'; + xhr.onreadystatechange = function () { + if (this.readyState == 4) { + if (this.status == 200) { + body.innerHTML = "Befehl erfolgreich ausgeführt.
" + this.responseText + "
" + } else if (this.status == 500 || this.status == 404) { + body.innerHTML = "Ausführung fehlgeschlagen.
" + this.responseText + "
" + } + } + }; + xhr.open('POST', url, true); + xhr.setRequestHeader('Content-Type', 'application/json'); + data = JSON.stringify(params); + xhr.send(data); + } + + var power_button = this.document.getElementById('poweroff'); + power_button.addEventListener('click', function () { + sendRequest(['poweroff']); + }); + +}) diff --git a/files/index.php b/files/index.php new file mode 100644 index 0000000..df74a27 --- /dev/null +++ b/files/index.php @@ -0,0 +1,212 @@ + + + + + + + + + + c't-Raspion + + + + + +
+

+ Ein Projekt aus c't 1/2020, um Datenschleudern und -Petzen zu untersuchen. + Weitere Hinweise gibt es auf der Projektseite. +

+
Dienste
+
+ +
+ + %s +
+
+

%s

+
+ +
+ '; + + + for ($i = 0; $i < count($services); ++$i) { + echo sprintf( + $html_card, + $services[$i]['id'], + $services[$i]['title'], + $services[$i]['description'], + 'http://' . $localip[0] . $services[$i]['url'] + ); + responsiveCardBreaks($i); + } + ?> +
+ + +
Werkzeuge
+
+ + + %s'; + + $html_input = ' +
+
+ %s +
+ +
'; + + $html_tool = ' +
+
+
+ %s +
+

%s

+ %s +
+ +
'; + + for ($i = 0; $i < count($tools); ++$i) { + $tool_button_html = ""; + $tool_input_html = ""; + + for ($j = 0; $j < count($tools[$i]['parameters']); ++$j) { + $parameter = $tools[$i]['parameters'][$j]; + + if ($parameter[1] == "select") { + $select_html = buildSelect($parameter['0'], $parameter['1'], $parameter[2]); + $tool_input_html .= $select_html; + } else { + $tool_input_html .= sprintf($html_input, $parameter[0], $parameter[1], $parameter[2]); + } + } + + for ($j = 0; $j < count($tools[$i]['buttons']); ++$j) { + $button = $tools[$i]['buttons'][$j]; + $tool_button_html .= sprintf($html_button, $button[0], $button[1], $button[2]); + } + echo sprintf($html_tool, $tools[$i]['id'], $tools[$i]['title'], $tools[$i]['description'], $tool_input_html, $tool_button_html); + + echo '
'; + if (($i + 1) % 2 == 0) { + echo '
'; + } + }; ?> +
+
IP-Adressen
+
+ + +
+
+ %s +
+
%s
+
+
'; + + + for ($i = 0; $i < count($interfaces); ++$i) { + $ips = getIPAddresses($interfaces[$i][0]); + echo sprintf($html_net_info, $interfaces[$i][0] . " – " . $interfaces[$i][1], $ips); + responsiveCardBreaks($i, 'full'); + }; + ?> + + + + ©2019 + c't – magazin für computer technik + + + + + + + + + + + + /proc/sys/net/ipv6/conf/eth0/accept_dad + diff --git a/files/ipforward.conf b/files/ipforward.conf new file mode 100644 index 0000000..c24ade9 --- /dev/null +++ b/files/ipforward.conf @@ -0,0 +1,2 @@ +net.ipv4.ip_forward=1 +net.ipv6.conf.all.forwarding=1 diff --git a/files/jquery.js b/files/jquery.js new file mode 100644 index 0000000..a1c07fd --- /dev/null +++ b/files/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/files/mitm.png b/files/mitm.png new file mode 100644 index 0000000..fbb6b53 Binary files /dev/null and b/files/mitm.png differ diff --git a/files/mitmweb.service b/files/mitmweb.service new file mode 100644 index 0000000..cd196ee --- /dev/null +++ b/files/mitmweb.service @@ -0,0 +1,14 @@ +[Unit] +Description=mitmweb service +After=network.target + +[Service] +Type=simple +User=root +ExecStart=/usr/local/sbin/mitmweb.sh +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target + diff --git a/files/ntopng.conf b/files/ntopng.conf new file mode 100644 index 0000000..1131e59 --- /dev/null +++ b/files/ntopng.conf @@ -0,0 +1,74 @@ +# The configuration file is similar to the command line, with the exception that an equal +# sign '=' must be used between key and value. Example: -i=p1p2 or --interface=p1p2 For +# options with no value (e.g. -v) the equal is also necessary. Example: "-v=" must be used. +# +# +# -G|--pid-path +# Specifies the path where the PID (process ID) is saved. This option is ignored when +# ntopng is controlled with systemd (e.g., service ntopng start). +# +-G=/var/run/ntopng.pid +# +# -e|--daemon +# This parameter causes ntop to become a daemon, i.e. a task which runs in the background +# without connection to a specific terminal. To use ntop other than as a casual monitoring +# tool, you probably will want to use this option. This option is ignored when ntopng is +# controlled with systemd (e.g., service ntopng start) +# +# -e= +# +# -i|--interface +# Specifies the network interface or collector endpoint to be used by ntopng for network +# monitoring. On Unix you can specify both the interface name (e.g. lo) or the numeric +# interface id as shown by ntopng -h. On Windows you must use the interface number instead. +# Note that you can specify -i multiple times in order to instruct ntopng to create multi- +# ple interfaces. +# +# -i=eth1 +# -i=eth2 +# +# -w|--http-port +# Sets the HTTP port of the embedded web server. +# +# -w=3000 +# +# -m|--local-networks +# ntopng determines the ip addresses and netmasks for each active interface. Any traffic on +# those networks is considered local. This parameter allows the user to define additional +# networks and subnetworks whose traffic is also considered local in ntopng reports. All +# other hosts are considered remote. If not specified the default is set to 192.168.1.0/24. +# +# Commas separate multiple network values. Both netmask and CIDR notation may be used, +# even mixed together, for instance "131.114.21.0/24,10.0.0.0/255.0.0.0". +# +# -m=10.10.123.0/24 +# -m=10.10.124.0/24 +# +# -n|--dns-mode +# Sets the DNS address resolution mode: 0 - Decode DNS responses and resolve only local +# (-m) numeric IPs 1 - Decode DNS responses and resolve all numeric IPs 2 - Decode DNS +# responses and don't resolve numeric IPs 3 - Don't decode DNS responses and don't resolve +# +# -n=1 +# +# -S|--sticky-hosts +# ntopng periodically purges idle hosts. With this option you can modify this behaviour by +# telling ntopng not to purge the hosts specified by -S. This parameter requires an argu- +# ment that can be "all" (Keep all hosts in memory), "local" (Keep only local hosts), +# "remote" (Keep only remote hosts), "none" (Flush hosts when idle). +# +# -S= +# +# -d|--data-dir +# Specifies the data directory (it must be writable by the user that is executing ntopng). +# +# -d=/var/lib/ntopng +# +# -q|--disable-autologout +# Disable web interface logout for inactivity. +# +# -q= + +-i=br0 +-l=1 +--community diff --git a/files/ntopng.png b/files/ntopng.png new file mode 100644 index 0000000..a4519b7 Binary files /dev/null and b/files/ntopng.png differ diff --git a/files/pihole-FTL b/files/pihole-FTL new file mode 100755 index 0000000..d9a5b1e --- /dev/null +++ b/files/pihole-FTL @@ -0,0 +1,119 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: pihole-FTL +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: pihole-FTL daemon +# Description: Enable service provided by pihole-FTL daemon +### END INIT INFO + +FTLUSER=pihole +PIDFILE=/var/run/pihole-FTL.pid + +get_pid() { + # First, try to obtain PID from PIDFILE + if [ -s "${PIDFILE}" ]; then + cat "${PIDFILE}" + return + fi + + # If the PIDFILE is empty or not available, obtain the PID using pidof + pidof "pihole-FTL" | awk '{print $(NF)}' +} + +is_running() { + ps "$(get_pid)" > /dev/null 2>&1 +} + + +# Start the service +start() { + if is_running; then + echo "pihole-FTL is already running" + else + # Touch files to ensure they exist (create if non-existing, preserve if existing) + touch /var/log/pihole-FTL.log /var/log/pihole.log + touch /run/pihole-FTL.pid /run/pihole-FTL.port + touch /etc/pihole/dhcp.leases + mkdir -p /var/run/pihole + mkdir -p /var/log/pihole + chown pihole:pihole /var/run/pihole /var/log/pihole + # Remove possible leftovers from previous pihole-FTL processes + rm -f /dev/shm/FTL-* 2> /dev/null + rm /var/run/pihole/FTL.sock 2> /dev/null + # Ensure that permissions are set so that pihole-FTL can edit all necessary files + chown pihole:pihole /run/pihole-FTL.pid /run/pihole-FTL.port + chown pihole:pihole /etc/pihole /etc/pihole/dhcp.leases 2> /dev/null + chown pihole:pihole /var/log/pihole-FTL.log /var/log/pihole.log + chmod 0644 /var/log/pihole-FTL.log /run/pihole-FTL.pid /run/pihole-FTL.port /var/log/pihole.log +# echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.piholeFTL + if setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW,CAP_NET_ADMIN+eip "$(which pihole-FTL)"; then + su -s /bin/sh -c "/usr/bin/pihole-FTL" "$FTLUSER" + else + echo "Warning: Starting pihole-FTL as root because setting capabilities is not supported on this system" + pihole-FTL + fi + echo + fi +} + +# Stop the service +stop() { + if is_running; then +# /sbin/resolvconf -d lo.piholeFTL + kill "$(get_pid)" + for i in {1..5}; do + if ! is_running; then + break + fi + + echo -n "." + sleep 1 + done + echo + + if is_running; then + echo "Not stopped; may still be shutting down or shutdown may have failed, killing now" + kill -9 "$(get_pid)" + exit 1 + else + echo "Stopped" + fi + else + echo "Not running" + fi + echo +} + +# Indicate the service status +status() { + if is_running; then + echo "[ ok ] pihole-FTL is running" + exit 0 + else + echo "[ ] pihole-FTL is not running" + exit 1 + fi +} + + +### main logic ### +case "$1" in + stop) + stop + ;; + status) + status + ;; + start|restart|reload|condrestart) + stop + start + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|status}" + exit 1 +esac + +exit 0 diff --git a/files/pihole.png b/files/pihole.png new file mode 100644 index 0000000..97d48f2 Binary files /dev/null and b/files/pihole.png differ diff --git a/files/preferences_wireshark b/files/preferences_wireshark new file mode 100644 index 0000000..7a5e71f --- /dev/null +++ b/files/preferences_wireshark @@ -0,0 +1,4836 @@ +# Configuration file for Wireshark 2.6.8. +# +# This file is regenerated each time preferences are saved within +# Wireshark. Making manual changes should be safe, however. +# Preferences that have been commented out have not been +# changed from their default value. + +####### User Interface ######## + +# Open a console window (Windows only) +# One of: NEVER, AUTOMATIC, ALWAYS +# (case-insensitive). +#gui.console_open: NEVER + +# Alternating colors in TreeViews? +# TRUE or FALSE (case-insensitive) +#gui.tree_view_altern_colors: FALSE + +# Display Icons on Expert Composite Dialog Tabs? +# TRUE or FALSE (case-insensitive) +#gui.expert_composite_eyecandy: FALSE + +# Place filter toolbar inside the statusbar? +# TRUE or FALSE (case-insensitive) +#gui.filter_toolbar_show_in_statusbar: FALSE + +# Restore current display filter after following a stream? +# TRUE or FALSE (case-insensitive) +#gui.restore_filter_after_following_stream: FALSE + +# Protocol-tree line style +# One of: NONE, SOLID, DOTTED, TABBED +# (case-insensitive). +#gui.protocol_tree_line_style: NONE + +# Protocol-tree expander style +# One of: NONE, SQUARE, TRIANGLE, CIRCULAR +# (case-insensitive). +#gui.protocol_tree_expander_style: SQUARE + +# Hex dump highlight style +# One of: BOLD, INVERSE +# (case-insensitive). +#gui.hex_dump_highlight_style: INVERSE + +# Where to start the File Open dialog box +# One of: LAST_OPENED, SPECIFIED +# (case-insensitive). +gui.fileopen.style: SPECIFIED + +# The max. number of items in the open recent files list +# A decimal number +#gui.recent_files_count.max: 10 + +# The max. number of entries in the display filter list +# A decimal number +#gui.recent_display_filter_entries.max: 10 + +# Directory to start in when opening File Open dialog. +# A path to a directory +gui.fileopen.dir: /home/pi/public_html/caps/ + +# The preview timeout in the File Open dialog +# A decimal number +#gui.fileopen.preview: 3 + +# Ask to save unsaved capture files? +# TRUE or FALSE (case-insensitive) +#gui.ask_unsaved: TRUE + +# Wrap to beginning/end of file during search? +# TRUE or FALSE (case-insensitive) +#gui.find_wrap: TRUE + +# Settings dialogs use a save button? +# TRUE or FALSE (case-insensitive) +#gui.use_pref_save: FALSE + +# Save window position at exit? +# TRUE or FALSE (case-insensitive) +#gui.geometry.save.position: TRUE + +# Save window size at exit? +# TRUE or FALSE (case-insensitive) +#gui.geometry.save.size: TRUE + +# Save window maximized state at exit? +# TRUE or FALSE (case-insensitive) +#gui.geometry.save.maximized: TRUE + +# Use macOS style (macOS with native GTK only)? +# TRUE or FALSE (case-insensitive) +#gui.macosx_style: TRUE + +# Main Toolbar style +# One of: ICONS, TEXT, BOTH +# (case-insensitive). +#gui.toolbar_main_style: ICONS + +# Filter Toolbar style +# One of: ICONS, TEXT, BOTH +# (case-insensitive). +#gui.toolbar_filter_style: TEXT + +# The path to the webbrowser (Ex: mozilla) +# A string +#gui.webbrowser: + +# Check for updates (Windows only) +# TRUE or FALSE (case-insensitive) +#gui.update.enabled: TRUE + +# The type of update to fetch. You should probably leave this set to UPDATE_CHANNEL_STABLE. +# One of: DEVELOPMENT, STABLE +# (case-insensitive). +#gui.update.channel: STABLE + +# How often to check for software updates in seconds +# A decimal number +#gui.update.interval: 86400 + +# Custom window title to be appended to the existing title +# %P = profile name +# %V = version info +# A string +#gui.window_title: + +# Custom window title to be prepended to the existing title +# %P = profile name +# %V = version info +# A string +#gui.prepend_window_title: + +# Custom start page title +# A string +#gui.start_title: The World's Most Popular Network Protocol Analyzer + +# Show version in the start page and/or main screen's title bar +# One of: WELCOME, TITLE, BOTH, NEITHER +# (case-insensitive). +#gui.version_placement: WELCOME + +# When selecting a new packet, automatically scrollto the packet detail item that matches the mostrecently selected item +# TRUE or FALSE (case-insensitive) +#gui.auto_scroll_on_expand: FALSE + +# The percentage down the view the recently expanded detail item should be scrolled +# A decimal number +#gui.auto_scroll_percentage: 0 + +# Enable Packet Editor (Experimental) +# TRUE or FALSE (case-insensitive) +#gui.packet_editor.enabled: FALSE + +# The position of "..." in packet list text. +# One of: LEFT, RIGHT, MIDDLE, NONE +# (case-insensitive). +#gui.packet_list_elide_mode: RIGHT + +# Show all interfaces, including interfaces marked as hidden +# TRUE or FALSE (case-insensitive) +#gui.interfaces_show_hidden: FALSE + +# Show remote interfaces in the interface selection +# TRUE or FALSE (case-insensitive) +#gui.interfaces_remote_display: TRUE + +# Hide the given interface types in the startup list +# A string +#gui.interfaces_hidden_types: + +####### User Interface: Colors ######## + +# Color preferences for a marked frame +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.marked_frame.fg: ffffff + +# Color preferences for a marked frame +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.marked_frame.bg: 00202a + +# Color preferences for a ignored frame +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.ignored_frame.fg: 7f7f7f + +# Color preferences for a ignored frame +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.ignored_frame.bg: ffffff + +# TCP stream window color preference +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.stream.client.fg: 7f0000 + +# TCP stream window color preference +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.stream.client.bg: fbeded + +# TCP stream window color preference +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.stream.server.fg: 00007f + +# TCP stream window color preference +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.stream.server.bg: ededfb + +# Valid color filter background +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.color_filter_bg.valid: afffaf + +# Invalid color filter background +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.color_filter_bg.invalid: ffafaf + +# Deprecated color filter background +# A six-digit hexadecimal RGB color triplet (e.g. fce94f) +#gui.color_filter_bg.deprecated: ffffaf + +####### User Interface: Columns ######## + +# Packet list hidden columns +# List all columns to hide in the packet list. +#gui.column.hidden: + +# Packet list column format +# Each pair of strings consists of a column title and its format +#gui.column.format: +# "No.", "%m", +# "Time", "%t", +# "Source", "%s", +# "Destination", "%d", +# "Protocol", "%p", +# "Length", "%L", +# "Info", "%i" + +####### User Interface: Font ######## + +# Font name for packet list, protocol tree, and hex dump panes. (GTK+) +# A string +#gui.gtk2.font_name: Monospace 10 + +# Font name for packet list, protocol tree, and hex dump panes. (Qt) +# A string +#gui.qt.font_name: + +####### User Interface: Layout ######## + +# Layout type (1-6) +# A decimal number +#gui.layout_type: 1 + +# Layout content of the pane 1 +# One of: NONE, PLIST, PDETAILS, PBYTES +# (case-insensitive). +#gui.layout_content_1: PLIST + +# Layout content of the pane 2 +# One of: NONE, PLIST, PDETAILS, PBYTES +# (case-insensitive). +#gui.layout_content_2: PDETAILS + +# Layout content of the pane 3 +# One of: NONE, PLIST, PDETAILS, PBYTES +# (case-insensitive). +#gui.layout_content_3: PBYTES + +# Enable Packet List Separator +# TRUE or FALSE (case-insensitive) +#gui.packet_list_separator.enabled: FALSE + +# Show selected packet in the Status Bar +# TRUE or FALSE (case-insensitive) +#gui.show_selected_packet.enabled: FALSE + +# Show file load time in the Status Bar +# TRUE or FALSE (case-insensitive) +#gui.show_file_load_time.enabled: FALSE + +# Show related packet indicators in the first column +# TRUE or FALSE (case-insensitive) +#gui.packet_list_show_related: TRUE + +# Show the intelligent scroll bar (a minimap of packet list colors in the scrollbar) +# TRUE or FALSE (case-insensitive) +#gui.packet_list_show_minimap: TRUE + +####### Capture ######## + +# Default capture device +# A string +capture.device: br0 + +# Interface link-layer header types (Ex: en0(1),en1(143),...) +# A string +#capture.devices_linktypes: + +# Interface descriptions (Ex: eth0(eth0 descr),eth1(eth1 descr),...) +# A string +#capture.devices_descr: + +# Hide interface? (Ex: eth0,eth3,...) +# A string +#capture.devices_hide: + +# By default, capture in monitor mode on interface? (Ex: eth0,eth3,...) +# A string +#capture.devices_monitor_mode: + +# Interface buffer size (Ex: en0(1),en1(143),...) +# A string +#capture.devices_buffersize: + +# Interface snap length (Ex: en0(65535),en1(1430),...) +# A string +#capture.devices_snaplen: + +# Interface promiscuous mode (Ex: en0(0),en1(1),...) +# A string +#capture.devices_pmode: + +# Capture in promiscuous mode? +# TRUE or FALSE (case-insensitive) +#capture.prom_mode: TRUE + +# Interface capture filter (Ex: en0(tcp),en1(udp),...) +# A string +#capture.devices_filter: + +# Capture in pcapng format? +# TRUE or FALSE (case-insensitive) +#capture.pcap_ng: TRUE + +# Update packet list in real time during capture? +# TRUE or FALSE (case-insensitive) +#capture.real_time_update: TRUE + +# Disable external capture modules (extcap) +# TRUE or FALSE (case-insensitive) +#capture.no_extcap: FALSE + +# Scroll packet list during capture? +# TRUE or FALSE (case-insensitive) +#capture.auto_scroll: TRUE + +# Show capture info dialog while capturing? +# TRUE or FALSE (case-insensitive) +#capture.show_info: FALSE + +# Column list +# List of columns to be displayed in the capture options dialog. +# Possible values: INTERFACE, LINK, PMODE, SNAPLEN, MONITOR, BUFFER, FILTER +# +#capture.columns: +# "INTERFACE", "LINK", +# "PMODE", "SNAPLEN", +# "MONITOR", "BUFFER", +# "FILTER" + +####### Console ######## + +# Log level +# Console log level (for debugging) +# A bitmask of log levels: +# ERROR = 4 +# CRITICAL = 8 +# WARNING = 16 +# MESSAGE = 32 +# INFO = 64 +# DEBUG = 128 +#console.log.level: 28 + +# Look for dissectors that left some bytes undecoded (debug) +# TRUE or FALSE (case-insensitive) +#console.incomplete_dissectors_check_debug: FALSE + +####### Extcap Utilities ######## + +# Save arguments on start of capture +# TRUE or FALSE (case-insensitive) +#extcap.gui_save_on_start: TRUE + +# Remote SSH server address +# A string +#extcap.sshdump.remotehost: + +# Remote SSH server port +# A string +#extcap.sshdump.remoteport: 22 + +# Remote SSH server username +# A string +#extcap.sshdump.remoteusername: pi + +# Path to SSH private key +# A string +#extcap.sshdump.sshkey: + +# Remote interface +# A string +#extcap.sshdump.remoteinterface: eth0 + +# Remote capture command +# A string +#extcap.sshdump.remotecapturecommand: + +# Use sudo on the remote machine +# A string +#extcap.sshdump.remotesudo: + +# No promiscuous mode +# A string +#extcap.sshdump.remotenoprom: + +# Remote capture filter +# A string +#extcap.sshdump.remotefilter: not ((host fe80::7ce8:1aff:fea0:68cc or host fd00:24::1 or host 2003:dd:f17:a5f4:ba27:ebff:feaa:90c1 or host fe80::ba27:ebff:feff:c594 or host 2003:dd:f17:a500:ba27:ebff:feff:c594 or host fd00::ba27:ebff:feff:c594 or host 192.168.24.1 or host 192.168.25.200) and port 22) + +# Packets to capture +# A string +#extcap.sshdump.remotecount: 0 + +# Run in debug mode +# A string +#extcap.sshdump.debug: false + +# Use a file for debug +# A string +#extcap.sshdump.debugfile: + +# Max bytes in a packet +# A string +#extcap.randpkt.maxbytes: 5000 + +# Number of packets +# A string +#extcap.randpkt.count: 1000 + +# Random type +# A string +#extcap.randpkt.randomtype: false + +# All random packets +# A string +#extcap.randpkt.allrandom: false + +# Type of packet +# A string +#extcap.randpkt.type: + +# Run in debug mode +# A string +#extcap.randpkt.debug: false + +# Use a file for debug +# A string +#extcap.randpkt.debugfile: + +# Remote SSH server address +# A string +#extcap.ciscodump.remotehost: + +# Remote SSH server port +# A string +#extcap.ciscodump.remoteport: 22 + +# Remote SSH server username +# A string +#extcap.ciscodump.remoteusername: pi + +# Path to SSH private key +# A string +#extcap.ciscodump.sshkey: + +# Remote interface +# A string +#extcap.ciscodump.remoteinterface: + +# Remote capture filter +# A string +#extcap.ciscodump.remotefilter: deny tcp host fe80::7ce8:1aff:fea0:68cc any eq 22, deny tcp any eq 22 host fe80::7ce8:1aff:fea0:68cc, deny tcp host fd00:24::1 any eq 22, deny tcp any eq 22 host fd00:24::1, deny tcp host 2003:dd:f17:a5f4:ba27:ebff:feaa:90c1 any eq 22, deny tcp any eq 22 host 2003:dd:f17:a5f4:ba27:ebff:feaa:90c1, deny tcp host fe80::ba27:ebff:feff:c594 any eq 22, deny tcp any eq 22 host fe80::ba27:ebff:feff:c594, deny tcp host 2003:dd:f17:a500:ba27:ebff:feff:c594 any eq 22, deny tcp any eq 22 host 2003:dd:f17:a500:ba27:ebff:feff:c594, deny tcp host fd00::ba27:ebff:feff:c594 any eq 22, deny tcp any eq 22 host fd00::ba27:ebff:feff:c594, deny tcp host 192.168.24.1 any eq 22, deny tcp any eq 22 host 192.168.24.1, deny tcp host 192.168.25.200 any eq 22, deny tcp any eq 22 host 192.168.25.200, permit ip any any + +# Packets to capture +# A string +#extcap.ciscodump.remotecount: + +# Run in debug mode +# A string +#extcap.ciscodump.debug: false + +# Use a file for debug +# A string +#extcap.ciscodump.debugfile: + +# Listen port +# A string +#extcap.udpdump.port: 5555 + +# Payload type +# A string +#extcap.udpdump.payload: data + +# Run in debug mode +# A string +#extcap.udpdump.debug: false + +# Use a file for debug +# A string +#extcap.udpdump.debugfile: + +####### Name Resolution ######## + +# Resolve Ethernet MAC addresses to host names from the preferences or system's Ethers file, or to a manufacturer based name. +# TRUE or FALSE (case-insensitive) +#nameres.mac_name: TRUE + +# Resolve TCP/UDP ports into service names +# TRUE or FALSE (case-insensitive) +#nameres.transport_name: FALSE + +# Resolve IPv4, IPv6, and IPX addresses into host names. The next set of check boxes determines how name resolution should be performed. If no other options are checked name resolution is made from Wireshark's host file, capture file name resolution blocks and DNS packets in the capture. +# TRUE or FALSE (case-insensitive) +#nameres.network_name: FALSE + +# Whether address/name pairs found in captured DNS packets should be used by Wireshark for name resolution. +# TRUE or FALSE (case-insensitive) +#nameres.dns_pkt_addr_resolution: TRUE + +# Use your system's configured name resolver (usually DNS) to resolve network names. Only applies when network name resolution is enabled. +# TRUE or FALSE (case-insensitive) +#nameres.use_external_name_resolver: TRUE + +# The maximum number of DNS requests that may be active at any time. A large value (many thousands) might overload the network or make your DNS server behave badly. +# A decimal number +#nameres.name_resolve_concurrency: 500 + +# By default "hosts" files will be loaded from multiple sources. Checking this box only loads the "hosts" in the current profile. +# TRUE or FALSE (case-insensitive) +#nameres.hosts_file_handling: FALSE + +# Resolve VLAN IDs to network names from the preferences "vlans" file. Format of the file is: "IDName". One line per VLAN, e.g.: 1 Management +# TRUE or FALSE (case-insensitive) +#nameres.vlan_name: FALSE + +# Resolve SS7 Point Codes to node names from the profiles "ss7pcs" file. Format of the file is: "Network_IndicatorPC_DecimalName". One line per Point Code, e.g.: 2-1234 MyPointCode1 +# TRUE or FALSE (case-insensitive) +#nameres.ss7_pc_name: FALSE + +# Resolve Object IDs to object names from the MIB and PIB modules defined below. You must restart Wireshark for this change to take effect +# TRUE or FALSE (case-insensitive) +#nameres.load_smi_modules: FALSE + +# While loading MIB or PIB modules errors may be detected, which are reported. Some errors can be ignored. If unsure, set to false. +# TRUE or FALSE (case-insensitive) +#nameres.suppress_smi_errors: FALSE + +####### Printing ######## + +# Can be one of "text" or "postscript" +# One of: Plain Text, Postscript +# (case-insensitive). +#print.format: Plain Text + +# Can be one of "command" or "file" +# One of: Command, File +# (case-insensitive). +#print.destination: Command + +# Output gets piped to this command when the destination is set to "command" +# A string +#print.command: lpr + +# This is the file that gets written to when the destination is set to "file" +# A path to a file +#print.file: wireshark.out + +####### Protocols ######## + +# Display all hidden protocol items in the packet list. +# TRUE or FALSE (case-insensitive) +#protocols.display_hidden_proto_items: FALSE + +# Display all byte fields with a space character between each byte in the packet list. +# TRUE or FALSE (case-insensitive) +#protocols.display_byte_fields_with_spaces: FALSE + +# Look for dissectors that left some bytes undecoded. +# TRUE or FALSE (case-insensitive) +#protocols.enable_incomplete_dissectors_check: FALSE + +# Protocols may use things like VLAN ID or interface ID to narrow the potential for duplicate conversations.Currently only ICMP and ICMPv6 use this preference to add VLAN ID to conversation tracking +# TRUE or FALSE (case-insensitive) +#protocols.strict_conversation_tracking_heuristics: FALSE + +# Use a registered heuristic sub-dissector to decode the data payload +# TRUE or FALSE (case-insensitive) +#lbmc.use_heuristic_subdissectors: TRUE + +# Reassemble data message fragments +# TRUE or FALSE (case-insensitive) +#lbmc.reassemble_fragments: FALSE + +# Recognize and dissect payloads containing LBMPDM messages (requires reassembly to be enabled) +# TRUE or FALSE (case-insensitive) +#lbmc.dissect_lbmpdm: FALSE + +# Set the low end of the TCP port range +# A decimal number +#lbmpdm_tcp.port_low: 14371 + +# Set the high end of the port range +# A decimal number +#lbmpdm_tcp.port_high: 14390 + +# Use table of LBMPDM-TCP tags to decode the packet instead of above values +# TRUE or FALSE (case-insensitive) +#lbmpdm_tcp.use_lbmpdm_tcp_domain: FALSE + +# Set the UDP port for incoming multicast topic resolution (context resolver_multicast_incoming_port) +# A decimal number +#lbmr.mc_incoming_port: 12965 + +# Set the multicast address for incoming multicast topic resolution (context resolver_multicast_incoming_address) +# A string +#lbmr.mc_incoming_address: 224.9.10.11 + +# Set the UDP port for outgoing multicast topic resolution (context resolver_multicast_outgoing_port) +# A decimal number +#lbmr.mc_outgoing_port: 12965 + +# Set the multicast address for outgoing multicast topic resolution (context resolver_multicast_outgoing_address) +# A string +#lbmr.mc_outgoing_address: 224.9.10.11 + +# Set the low UDP port for unicast topic resolution (context resolver_unicast_port_low) +# A decimal number +#lbmr.uc_port_low: 14402 + +# Set the high UDP port for unicast topic resolution (context resolver_unicast_port_high) +# A decimal number +#lbmr.uc_port_high: 14406 + +# Set the destination port for unicast topic resolution (context resolver_unicast_destination_port) +# A decimal number +#lbmr.uc_dest_port: 15380 + +# Set the address of the unicast resolver daemon (context resolver_unicast_address) +# A string +#lbmr.uc_address: 0.0.0.0 + +# Use table of LBMR tags to decode the packet instead of above values +# TRUE or FALSE (case-insensitive) +#lbmr.use_lbmr_domain: FALSE + +# Set the low end of the LBT-RM multicast address range (context transport_lbtrm_multicast_address_low) +# A string +#lbtrm.mc_address_low: 224.10.10.10 + +# Set the high end of the LBT-RM multicast address range (context transport_lbtrm_multicast_address_high) +# A string +#lbtrm.mc_address_high: 224.10.10.14 + +# Set the low end of the LBT-RM UDP destination port range (source transport_lbtrm_destination_port) +# A decimal number +#lbtrm.dport_low: 14400 + +# Set the high end of the LBT-RM UDP destination port range (source transport_lbtrm_destination_port) +# A decimal number +#lbtrm.dport_high: 14400 + +# Set the low end of the LBT-RM UDP source port range (context transport_lbtrm_source_port_low) +# A decimal number +#lbtrm.sport_low: 14390 + +# Set the high end of the LBT-RM UDP source port range (context transport_lbtrm_source_port_high) +# A decimal number +#lbtrm.sport_high: 14399 + +# Set the incoming MIM multicast address (context mim_incoming_address) +# A string +#lbtrm.mim_incoming_address: 224.10.10.21 + +# Set the outgoing MIM multicast address (context mim_outgoing_address) +# A string +#lbtrm.mim_outgoing_address: 224.10.10.21 + +# Set the incoming MIM UDP port (context mim_incoming_destination_port) +# A decimal number +#lbtrm.mim_incoming_dport: 14401 + +# Set the outgoing MIM UDP port (context mim_outgoing_destination_port) +# A decimal number +#lbtrm.mim_outgoing_dport: 14401 + +# Separate multiple NAKs from a single packet into distinct Expert Info entries +# TRUE or FALSE (case-insensitive) +#lbtrm.expert_separate_naks: FALSE + +# Separate multiple NCFs from a single packet into distinct Expert Info entries +# TRUE or FALSE (case-insensitive) +#lbtrm.expert_separate_ncfs: FALSE + +# Perform analysis on LBT-RM sequence numbers to determine out-of-order, gaps, loss, etc +# TRUE or FALSE (case-insensitive) +#lbtrm.sequence_analysis: FALSE + +# Use table of LBT-RM tags to decode the packet instead of above values +# TRUE or FALSE (case-insensitive) +#lbtrm.use_lbtrm_domain: FALSE + +# Set the low end of the LBT-RU source UDP port range (context transport_lbtru_port_low) +# A decimal number +#lbtru.source_port_low: 14380 + +# Set the high end of the LBT-RU source UDP port range (context transport_lbtru_port_high) +# A decimal number +#lbtru.source_port_high: 14389 + +# Set the low end of the LBT-RU receiver UDP port range (receiver transport_lbtru_port_low) +# A decimal number +#lbtru.receiver_port_low: 14360 + +# Set the high end of the LBT-RU receiver UDP port range (receiver transport_lbtru_port_high) +# A decimal number +#lbtru.receiver_port_high: 14379 + +# Separate multiple NAKs from a single packet into distinct Expert Info entries +# TRUE or FALSE (case-insensitive) +#lbtru.expert_separate_naks: FALSE + +# Separate multiple NCFs from a single packet into distinct Expert Info entries +# TRUE or FALSE (case-insensitive) +#lbtru.expert_separate_ncfs: FALSE + +# Perform analysis on LBT-RU sequence numbers to determine out-of-order, gaps, loss, etc +# TRUE or FALSE (case-insensitive) +#lbtru.sequence_analysis: FALSE + +# Use table of LBT-RU tags to decode the packet instead of above values +# TRUE or FALSE (case-insensitive) +#lbtru.use_lbtru_domain: FALSE + +# Set the low end of the LBT-TCP source TCP port range (context transport_tcp_port_low) +# A decimal number +#lbttcp.source_port_low: 14371 + +# Set the high end of the LBT-TCP source TCP port range (context transport_tcp_port_high) +# A decimal number +#lbttcp.source_port_high: 14390 + +# Set the low end of the LBT-TCP request TCP port range (context request_tcp_port_low) +# A decimal number +#lbttcp.request_port_low: 14391 + +# Set the high end of the LBT-TCP request TCP port range (context request_tcp_port_high) +# A decimal number +#lbttcp.request_port_high: 14395 + +# Set the low end of the LBT-TCP UME Store TCP port range +# A decimal number +#lbttcp.store_port_low: 0 + +# Set the high end of the LBT-TCP UME Store TCP port range +# A decimal number +#lbttcp.store_port_high: 0 + +# Use table of LBT-TCP tags to decode the packet instead of above values +# TRUE or FALSE (case-insensitive) +#lbttcp.use_lbttcp_domain: FALSE + +# Enable this option to recognise all traffic on RTP dynamic payload type 96 (0x60) as FEC data corresponding to Pro-MPEG Code of Practice #3 release 2 +# TRUE or FALSE (case-insensitive) +#2dparityfec.enable: FALSE + +# Derive IID from a short 16-bit address according to RFC 4944 (using the PAN ID). +# TRUE or FALSE (case-insensitive) +#6lowpan.rfc4944_short_address_format: FALSE + +# Linux kernels before version 4.12 does toggle the Universal/Local bit. +# TRUE or FALSE (case-insensitive) +#6lowpan.iid_has_universal_local_bit: FALSE + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context0: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context1: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context2: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context3: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context4: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context5: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context6: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context7: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context8: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context9: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context10: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context11: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context12: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context13: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context14: + +# IPv6 prefix to use for stateful address decompression. +# A string +#6lowpan.context15: + +# Some generators incorrectly indicate long preamble when the preamble was actuallyshort. Always assume short preamble when calculating duration. +# TRUE or FALSE (case-insensitive) +#wlan_radio.always_short_preamble: FALSE + +# Some generators timestamp the end of the PPDU rather than the start of the (A)MPDU. +# TRUE or FALSE (case-insensitive) +#wlan_radio.tsf_at_end: TRUE + +# Enables an additional panel for navigating through packets +# TRUE or FALSE (case-insensitive) +#wlan_radio.timeline: FALSE + +# Radiotap has a bit to indicate whether the FCS is still on the frame or not. Some generators (e.g. AirPcap) use a non-standard radiotap flag 14 to put the FCS into the header. +# TRUE or FALSE (case-insensitive) +#radiotap.bit14_fcs_in_header: FALSE + +# Some generators use rates with bit 7 set to indicate an MCS, e.g. BSD. others (Linux, AirPcap) do not. +# TRUE or FALSE (case-insensitive) +#radiotap.interpret_high_rates_as_mcs: FALSE + +# Use ipaccess nanoBTS specific definitions for OML +# One of: ETSI/3GPP TS 12.21, Siemens, ip.access, Ericsson OM2000 +# (case-insensitive). +#gsm_abis_oml.oml_dialect: ETSI/3GPP TS 12.21 + +# Enable Streaming DMX extension dissector (ANSI BSR E1.31) +# TRUE or FALSE (case-insensitive) +#acn.dmx_enable: FALSE + +# Display format +# One of: Hex , Decimal, Percent +# (case-insensitive). +#acn.dmx_display_view: Hex + +# Display zeros instead of dots +# TRUE or FALSE (case-insensitive) +#acn.dmx_display_zeros: FALSE + +# Display leading zeros on levels +# TRUE or FALSE (case-insensitive) +#acn.dmx_display_leading_zeros: FALSE + +# Display line format +# One of: 20 per line, 16 per line +# (case-insensitive). +#acn.dmx_display_line_format: 20 per line + +# Server Port +# A decimal number +#adb_cs.server_port: 5037 + +# Dissect more detail for framebuffer service +# TRUE or FALSE (case-insensitive) +#adb_service.framebuffer_more_details: FALSE + +# Specify if the Data sections of packets should be dissected or not +# TRUE or FALSE (case-insensitive) +#adwin.dissect_data: TRUE + +# Include next/previous frame for channel, stream, and term, and other transport sequence analysis. +# TRUE or FALSE (case-insensitive) +#aeron.sequence_analysis: FALSE + +# Include stream analysis, tracking publisher and subscriber positions. Requires "Analyze transport sequencing". +# TRUE or FALSE (case-insensitive) +#aeron.stream_analysis: FALSE + +# Reassemble fragmented data messages. Requires "Analyze transport sequencing" and "Analyze stream sequencing". +# TRUE or FALSE (case-insensitive) +#aeron.reassemble_fragments: FALSE + +# Use a registered heuristic sub-dissector to decode the payload data. Requires "Analyze transport sequencing", "Analyze stream sequencing", and "Reassemble fragmented data". +# TRUE or FALSE (case-insensitive) +#aeron.use_heuristic_subdissectors: FALSE + +# Whether the AIM dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#aim.desegment: TRUE + +# Whether the LCT header Codepoint field should be considered the FEC Encoding ID of carried object +# TRUE or FALSE (case-insensitive) +#alc.lct.codepoint_as_fec_id: TRUE + +# How to decode LCT header extension 192 +# One of: Don't decode, Decode as FLUTE extension (EXT_FDT) +# (case-insensitive). +#alc.lct.ext.192: Decode as FLUTE extension (EXT_FDT) + +# How to decode LCT header extension 193 +# One of: Don't decode, Decode as FLUTE extension (EXT_CENC) +# (case-insensitive). +#alc.lct.ext.193: Decode as FLUTE extension (EXT_CENC) + +# Whether persistent call leg information is to be kept +# TRUE or FALSE (case-insensitive) +#alcap.leg_info: TRUE + +# Set the TCP port for AMQP over TLS/SSL(if other than the default of 5671) +# A decimal number +#amqp.ssl.port: 5671 + +# The dynamic payload types which will be interpreted as AMR(default 0) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#amr.dynamic.payload.type: + +# The dynamic payload types which will be interpreted as AMR-WB(default 0) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#amr.wb.dynamic.payload.type: + +# Type of AMR encoding of the payload +# One of: RFC 3267 octet aligned, RFC 3267 BW-efficient, AMR IF1, AMR IF2 +# (case-insensitive). +#amr.encoding.version: RFC 3267 octet aligned + +# The AMR mode +# One of: Narrowband AMR, Wideband AMR +# (case-insensitive). +#amr.mode: Narrowband AMR + +# (if other than the default of IOS 4.0.1) +# One of: IS-634 rev. 0, TSB-80, IS-634-A, IOS 2.x, IOS 3.x, IOS 4.0.1, IOS 5.0.1 +# (case-insensitive). +#ansi_a_bsmap.global_variant: IOS 4.0.1 + +# Whether the mobile ID and service options are displayed in the INFO column +# TRUE or FALSE (case-insensitive) +#ansi_a_bsmap.top_display_mid_so: TRUE + +# ANSI MAP SSNs to decode as ANSI MAP +# A string denoting an positive integer range (e.g., "1-20,30-40") +#ansi_map.map.ssn: 5-14 + +# Type of matching invoke/response, risk of mismatch if loose matching chosen +# One of: Transaction ID only, Transaction ID and Source, Transaction ID Source and Destination +# (case-insensitive). +#ansi_map.transaction.matchtype: Transaction ID and Source + +# Type of matching invoke/response, risk of mismatch if loose matching chosen +# One of: Transaction ID only, Transaction ID and Source, Transaction ID Source and Destination +# (case-insensitive). +#ansi_tcap.transaction.matchtype: Transaction ID only + +# Whether the AOL dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#aol.desegment: TRUE + +# Attempt to display common APRS protocol violations correctly +# TRUE or FALSE (case-insensitive) +#aprs.showaprslax: FALSE + +# Attempt to detect excessive rate of ARP requests +# TRUE or FALSE (case-insensitive) +#arp.detect_request_storms: FALSE + +# Number of requests needed within period to indicate a storm +# A decimal number +#arp.detect_storm_number_of_packets: 30 + +# Period in milliseconds during which a packet storm may be detected +# A decimal number +#arp.detect_storm_period: 100 + +# Attempt to detect duplicate use of IP addresses +# TRUE or FALSE (case-insensitive) +#arp.detect_duplicate_ips: TRUE + +# Try to resolve physical addresses to host names from ARP requests/responses +# TRUE or FALSE (case-insensitive) +#arp.register_network_address_binding: TRUE + +# Select the CAT001 version +# One of: Version 1.2 +# (case-insensitive). +#asterix.i001_version: Version 1.2 + +# Select the CAT002 version +# One of: Version 1.0 +# (case-insensitive). +#asterix.i002_version: Version 1.0 + +# Select the CAT004 version +# One of: Version 1.7 +# (case-insensitive). +#asterix.i004_version: Version 1.7 + +# Select the CAT008 version +# One of: Version 1.1 +# (case-insensitive). +#asterix.i008_version: Version 1.1 + +# Select the CAT009 version +# One of: Version 2.0 +# (case-insensitive). +#asterix.i009_version: Version 2.0 + +# Select the CAT021 version +# One of: Version 2.3, Version 2.1 +# (case-insensitive). +#asterix.i021_version: Version 2.3 + +# Select the CAT023 version +# One of: Version 1.2 +# (case-insensitive). +#asterix.i023_version: Version 1.2 + +# Select the CAT025 version +# One of: Version 1.1 +# (case-insensitive). +#asterix.i025_version: Version 1.1 + +# Select the CAT034 version +# One of: Version 1.27 +# (case-insensitive). +#asterix.i034_version: Version 1.27 + +# Select the CAT048 version +# One of: Version 1.17 +# (case-insensitive). +#asterix.i048_version: Version 1.17 + +# Select the CAT062 version +# One of: Version 1.16, Version 0.17 +# (case-insensitive). +#asterix.i062_version: Version 1.16 + +# Select the CAT063 version +# One of: Version 1.3 +# (case-insensitive). +#asterix.i063_version: Version 1.3 + +# Select the CAT065 version +# One of: Version 1.3 +# (case-insensitive). +#asterix.i065_version: Version 1.3 + +# Autodection between LANE and SSCOP is hard. As default LANE is preferred +# TRUE or FALSE (case-insensitive) +#atm.dissect_lane_as_sscop: FALSE + +# Whether the ATP dissector should reassemble messages spanning multiple DDP packets +# TRUE or FALSE (case-insensitive) +#atp.desegment: TRUE + +# Enable checksum calculation. +# TRUE or FALSE (case-insensitive) +#ax25_kiss.showcksum: FALSE + +# Enable decoding of the payload as APRS. +# TRUE or FALSE (case-insensitive) +#ax25_nol3.showaprs: FALSE + +# Enable decoding of the payload as DX cluster info. +# TRUE or FALSE (case-insensitive) +#ax25_nol3.showcluster: FALSE + +# Ethertype used to indicate B.A.T.M.A.N. packet. +# A hexadecimal number +#batadv.batmanadv.ethertype: 0x4305 + +# Whether the Bazaar dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#bzr.desegment: TRUE + +# Specifies that BEEP requires CRLF as a terminator, and not just CR or LF +# TRUE or FALSE (case-insensitive) +#beep.strict_header_terminator: TRUE + +# Whether the dissector should also display internal ASN.1 BER details such as Identifier and Length fields +# TRUE or FALSE (case-insensitive) +#ber.show_internals: FALSE + +# Whether the dissector should decode unexpected tags as ASN.1 BER encoded data +# TRUE or FALSE (case-insensitive) +#ber.decode_unexpected: FALSE + +# Whether the dissector should try decoding OCTET STRINGs as constructed ASN.1 BER encoded data +# TRUE or FALSE (case-insensitive) +#ber.decode_octetstring: FALSE + +# Whether the dissector should try decoding unknown primitive as constructed ASN.1 BER encoded data +# TRUE or FALSE (case-insensitive) +#ber.decode_primitive: FALSE + +# Whether the dissector should warn if excessive leading zero (0) bits +# TRUE or FALSE (case-insensitive) +#ber.warn_too_many_bytes: FALSE + +# Whether the BGP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#bgp.desegment: TRUE + +# BGP dissector detect the length of the AS number in AS_PATH attributes automatically or manually (NOTE: Automatic detection is not 100% accurate) +# One of: Auto-detect, 2 octet, 4 octet +# (case-insensitive). +#bgp.asn_len: Auto-detect + +# Whether the Bitcoin dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#bitcoin.desegment: TRUE + +# Whether the BitTorrent dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#bittorrent.desegment: TRUE + +# Enabling this will tell which BitTorrent client that produced the handshake message +# TRUE or FALSE (case-insensitive) +#bittorrent.decode_client: FALSE + +# Force decoding stream as A2DP with Content Protection SCMS-T +# TRUE or FALSE (case-insensitive) +#bta2dp.a2dp.content_protection.scms_t: FALSE + +# Force decoding stream as A2DP with specified codec +# One of: Default, SBC, MPEG12 AUDIO, MPEG24 AAC, APT-X +# (case-insensitive). +#bta2dp.a2dp.codec: Default + +# Dissecting the top protocols +# TRUE or FALSE (case-insensitive) +#btbnep.bnep.top_dissect: TRUE + +# If "yes" localhost will be treat as Client, "no" as Server +# One of: Default, Yes, No +# (case-insensitive). +#bthcrp.hcrp.force_client: Default + +# L2CAP PSM for Control +# A decimal number +#bthcrp.hcrp.control.psm: 0 + +# L2CAP PSM for Data +# A decimal number +#bthcrp.hcrp.data.psm: 0 + +# L2CAP PSM for Notification +# A decimal number +#bthcrp.hcrp.notification.psm: 0 + +# Force treat packets as AG or HS role +# One of: Off, Sent is AG, Rcvd is HS, Sent is HS, Rcvd is AG +# (case-insensitive). +#bthfp.hfp.hfp_role: Off + +# Show what is deprecated in HID 1.1 +# TRUE or FALSE (case-insensitive) +#bthid.hid.deprecated: FALSE + +# Force treat packets as AG or HS role +# One of: Off, Sent is AG, Rcvd is HS, Sent is HS, Rcvd is AG +# (case-insensitive). +#bthsp.hsp.hsp_role: Off + +# Detect retransmission based on SN (Sequence Number) +# TRUE or FALSE (case-insensitive) +#btle.detect_retransmit: TRUE + +# Turn on/off decode by next rules +# TRUE or FALSE (case-insensitive) +#btrfcomm.rfcomm.decode_by.enabled: FALSE + +# Dissecting the top protocols +# One of: off, Put higher dissectors under this one, On top +# (case-insensitive). +#btsap.sap.top_dissect: Put higher dissectors under this one + +# Force decoding stream as VDP with Content Protection SCMS-T +# TRUE or FALSE (case-insensitive) +#btvdp.vdp.content_protection.scms_t: FALSE + +# Force decoding stream as VDP with specified codec +# One of: H263, MPEG4 VSP +# (case-insensitive). +#btvdp.vdp.codec: H263 + +# Whether the ACL dissector should reassemble fragmented PDUs +# TRUE or FALSE (case-insensitive) +#bthci_acl.hci_acl_reassembly: TRUE + +# Whether the BMP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#bmp.desegment: TRUE + +# Novell Servers option 85 can be configured as a string instead of address +# TRUE or FALSE (case-insensitive) +#bootp.novellserverstring: FALSE + +# The PacketCable CCC protocol version +# One of: PKT-SP-PROV-I05-021127, IETF Draft 5, RFC 3495 +# (case-insensitive). +#bootp.pkt.ccc.protocol_version: RFC 3495 + +# Option Number for PacketCable CableLabs Client Configuration +# A decimal number +#bootp.pkt.ccc.option: 122 + +# Endianness applied to UUID fields +# One of: Little Endian, Big Endian +# (case-insensitive). +#bootp.uuid.endian: Little Endian + +# For the sake of sub-dissectors registering to accept data from the BSSAP/BSAP dissector, this defines whether it is identified as BSSAP or BSAP. +# One of: BSSAP, BSAP +# (case-insensitive). +#bssap.bsap_or_bssap: BSSAP + +# GSM-A is the interface between the BSC and the MSC. Lb is the interface between the BSC and the SMLC. +# One of: GSM A, Lb +# (case-insensitive). +#bssap.gsm_or_lb_interface: GSM A + +# Set Subsystem number used for BSSAP/BSSAP+ +# A decimal number +#bssap.ssn: 98 + +# Decode NRI (for use with SGSN in Pool) +# TRUE or FALSE (case-insensitive) +#bssgp.decode_nri: FALSE + +# NRI length, in bits +# A decimal number +#bssgp.nri_length: 4 + +# Dissect next layer +# TRUE or FALSE (case-insensitive) +#btsnoop.dissect_next_layer: FALSE + +# Whether the C12.22 dissector should reassemble all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#c1222.desegment: TRUE + +# Base object identifier for use in resolving relative object identifiers +# A string +#c1222.baseoid: + +# Whether the C12.22 dissector should verify the crypto for all relevant messages +# TRUE or FALSE (case-insensitive) +#c1222.decrypt: TRUE + +# The date format: (DD/MM) or (MM/DD) +# One of: DD/MM/YYYY, MM/DD/YYYY +# (case-insensitive). +#camel.date.format: DD/MM/YYYY + +# TCAP Subsystem numbers used for Camel +# A string denoting an positive integer range (e.g., "1-20,30-40") +#camel.tcap.ssn: 146 + +# Enable response time analysis +# TRUE or FALSE (case-insensitive) +#camel.srt: FALSE + +# Statistics for Response Time +# TRUE or FALSE (case-insensitive) +#camel.persistentsrt: FALSE + +# Whether the CAN ID/flags field should be byte-swapped +# TRUE or FALSE (case-insensitive) +#can.byte_swap: FALSE + +# Enable support of Cisco Wireless Controller (based on old 8 draft revision). +# TRUE or FALSE (case-insensitive) +#capwap.draft_8_cisco: FALSE + +# Reassemble fragmented CAPWAP packets. +# TRUE or FALSE (case-insensitive) +#capwap.reassemble: TRUE + +# Swap frame control bytes (needed for some APs). +# TRUE or FALSE (case-insensitive) +#capwap.swap_fc: TRUE + +# Whether the CAST dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#cast.reassembly: TRUE + +# Whether the checksum of all messages should be validated or not +# TRUE or FALSE (case-insensitive) +#cattp.checksum: TRUE + +# Specify how the dissector should handle the CCSDS checkword +# One of: Use header flag, Override header flag to be false, Override header flag to be true +# (case-insensitive). +#ccsds.global_pref_checkword: Use header flag + +# Set the port(s) for NetFlow messages (default: 2055,9996) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#cflow.netflow.ports: 2055,9996 + +# Set the port(s) for IPFIX messages (default: 4739) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#cflow.ipfix.ports: 4739 + +# Set the number of fields allowed in a template. Use 0 (zero) for unlimited. (default: 60) +# A decimal number +#cflow.max_template_fields: 60 + +# Whether the Netflow/Ipfix dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#cflow.desegment: TRUE + +# The type of CHDLC frame checksum (none, 16-bit, 32-bit) +# One of: None, 16-Bit, 32-Bit +# (case-insensitive). +#chdlc.fcs_type: None + +# The version of CIGI with which to dissect packets +# One of: From Packet, CIGI 2, CIGI 3 +# (case-insensitive). +#cigi.version: From Packet + +# The byte order with which to dissect CIGI packets (CIGI3) +# One of: From Packet, Big-Endian, Little-Endian +# (case-insensitive). +#cigi.byte_order: From Packet + +# IPv4 address or hostname of the host +# A string +#cigi.host: + +# IPv4 address or hostname of the image generator +# A string +#cigi.ig: + +# Whether the CIP dissector should display enhanced/verbose data in the Info column for CIP explicit messages +# TRUE or FALSE (case-insensitive) +#cip.enhanced_info_column: TRUE + +# NSAP selector for Transport Protocol (last byte in hex) +# A hexadecimal number +#clnp.tp_nsap_selector: 0x21 + +# Always try to decode NSDU as transport PDUs +# TRUE or FALSE (case-insensitive) +#clnp.always_decode_transport: FALSE + +# Whether segmented CLNP datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#clnp.reassemble: TRUE + +# Whether ATN security label should be decoded +# TRUE or FALSE (case-insensitive) +#clnp.decode_atn_options: FALSE + +# Whether the CMP-over-TCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#cmp.desegment: TRUE + +# Decode this TCP port's traffic as CMP-over-HTTP. Set to "0" to disable. Use this if the Content-Type is not set correctly. +# A decimal number +#cmp.http_alternate_port: 0 + +# Decode this TCP port's traffic as TCP-transport-style CMP-over-HTTP. Set to "0" to disable. Use this if the Content-Type is not set correctly. +# A decimal number +#cmp.tcp_style_http_alternate_port: 0 + +# Whether the COPS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#cops.desegment: TRUE + +# Decode the COPS messages using PacketCable clients. (Select port 2126) +# TRUE or FALSE (case-insensitive) +#cops.packetcable: TRUE + +# Semicolon-separated list of keys for decryption(e.g. key1;key2;... +# A string +#corosync_totemnet.private_keys: + +# Whether segmented COTP datagrams should be reassembled. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#cotp.reassemble: TRUE + +# How TSAPs should be displayed +# One of: As strings if printable, As strings, As bytes +# (case-insensitive). +#cotp.tsap_display: As strings if printable + +# Whether to decode OSI TPDUs with ATN (Aereonautical Telecommunications Network) extensions. To use this option, you must also enable "Always try to decode NSDU as transport PDUs" in the CLNP protocol settings. +# TRUE or FALSE (case-insensitive) +#cotp.decode_atn: FALSE + +# Whether the memcache dissector should reassemble PDUs spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#couchbase.desegment_pdus: TRUE + +# The port used for communicating with the data service via ssl/tls +# A decimal number +#couchbase.ssl_port: 11207 + +# Whether the SEL Protocol dissector should automatically pre-process Telnet data to remove IAC bytes +# TRUE or FALSE (case-insensitive) +#cp2179.telnetclean: TRUE + +# Set the port for InstanceToInstance messages (if other than the default of 5001) +# A decimal number +#cpfi.udp.port2: 5001 + +# Control the way the '-->' is displayed. When enabled, keeps the 'lowest valued' endpoint of the src-dest pair on the left, and the arrow moves to distinguish source from dest. When disabled, keeps the arrow pointing right so the source of the frame is always on the left. +# TRUE or FALSE (case-insensitive) +#cpfi.arrow_ctl: TRUE + +# Show not dissected data on new Packet Bytes pane +# TRUE or FALSE (case-insensitive) +#data.datapref.newpane: FALSE + +# Try to uncompress zlib compressed data and show as uncompressed if successful +# TRUE or FALSE (case-insensitive) +#data.uncompress_data: FALSE + +# Show data as text in the Packet Details pane +# TRUE or FALSE (case-insensitive) +#data.show_as_text: FALSE + +# Whether or not MD5 hashes should be generated and shown for each payload. +# TRUE or FALSE (case-insensitive) +#data.md5_hash: FALSE + +# Whether the LAN sync dissector should reassemble PDUs spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#db-lsp.desegment_pdus: TRUE + +# Try to decode the payload using an heuristic sub-dissector +# TRUE or FALSE (case-insensitive) +#db-lsp.try_heuristic: TRUE + +# Whether the DCCP summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#dccp.summary_in_tree: TRUE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port +# TRUE or FALSE (case-insensitive) +#dccp.try_heuristic_first: FALSE + +# Whether to check the validity of the DCCP checksum +# TRUE or FALSE (case-insensitive) +#dccp.check_checksum: TRUE + +# Whether the DCE/RPC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#dcerpc.desegment_dcerpc: TRUE + +# Whether the DCE/RPC dissector should reassemble fragmented DCE/RPC PDUs +# TRUE or FALSE (case-insensitive) +#dcerpc.reassemble_dcerpc: TRUE + +# Display some DCOM unmarshalled fields usually hidden +# TRUE or FALSE (case-insensitive) +#dcom.display_unmarshalling_details: FALSE + +# If a payload looks like it's embedded in an IP primitive message, and there is a Wireshark dissector matching the DCT2000 protocol name, try parsing the payload using that dissector +# TRUE or FALSE (case-insensitive) +#dct2000.ipprim_heuristic: TRUE + +# If a payload looks like it's embedded in an SCTP primitive message, and there is a Wireshark dissector matching the DCT2000 protocol name, try parsing the payload using that dissector +# TRUE or FALSE (case-insensitive) +#dct2000.sctpprim_heuristic: TRUE + +# When set, attempt to decode LTE RRC frames. Note that this won't affect other protocols that also call the LTE RRC dissector +# TRUE or FALSE (case-insensitive) +#dct2000.decode_lte_rrc: TRUE + +# When set, attempt to decode LTE S1AP frames. Note that this won't affect other protocols that also call the LTE S1AP dissector +# TRUE or FALSE (case-insensitive) +#dct2000.decode_lte_s1ap: TRUE + +# When set, look for formatted messages indicating specific events. This may be quite slow, so should be disabled if LTE MAC is not being analysed +# TRUE or FALSE (case-insensitive) +#dct2000.decode_mac_lte_oob_messages: TRUE + +# Whether the DHCP failover dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#dhcpfo.desegment: TRUE + +# Whether Option 18 is dissected as CableLab or RFC 3315 +# TRUE or FALSE (case-insensitive) +#dhcpv6.cablelabs_interface_id: FALSE + +# Whether the Bulk Leasequery dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#dhcpv6.bulk_leasequery.desegment: TRUE + +# SCTP ports to be decoded as Diameter (default: 3868) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#diameter.sctp.ports: 3868 + +# Whether the Diameter dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#diameter.desegment: TRUE + +# Create DICOM File Meta Header according to PS 3.10 on export for PDUs. If the captured PDV does not contain a SOP Class UID and SOP Instance UID (e.g. for command PDVs), wireshark specific ones will be created. +# TRUE or FALSE (case-insensitive) +#dicom.export_header: TRUE + +# Do not show items below this size in the export list. Set it to 0, to see DICOM commands and responses in the list. Set it higher, to just export DICOM IODs (i.e. CT Images, RT Structures). +# A decimal number +#dicom.export_minsize: 4096 + +# Create a node for sequences and items, and show children in a hierarchy. Deselect this option, if you prefer a flat display or e.g. when using TShark to create a text output. +# TRUE or FALSE (case-insensitive) +#dicom.seq_tree: TRUE + +# Create a node for a tag and show tag details as single elements. This can be useful to debug a tag and to allow display filters on these attributes. When using TShark to create a text output, it's better to have it disabled. +# TRUE or FALSE (case-insensitive) +#dicom.tag_tree: FALSE + +# Show message ID and number of completed, remaining, warned or failed operations in header and info column. +# TRUE or FALSE (case-insensitive) +#dicom.cmd_details: TRUE + +# Decode all DICOM tags in the last PDV. This will ensure the proper reassembly. When not set, the decoding may fail and the exports may become corrupt. +# TRUE or FALSE (case-insensitive) +#dicom.pdv_reassemble: TRUE + +# Whether the DISTCC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#distcc.desegment_distcc_over_tcp: TRUE + +# Whether DJIUAV should reassemble messages spanning multiple TCP segments (required to get useful results) +# TRUE or FALSE (case-insensitive) +#djiuav.desegment: TRUE + +# Set the SCTP port for Distributed Lock Manager +# A decimal number +#dlm3.sctp.port: 21064 + +# Select the type of decoding for nationally-defined values +# One of: None (raw data), As for regular, Thales XOmail +# (case-insensitive). +#dmp.national_decode: As for regular + +# Select the nation of sending server. This is used when presenting security classification values in messages with security policy set to National (nation of local server) +# One of: None, Albania, Armenia, Austria, Azerbaijan, Belarus, Belgium, Bosnia and Hercegowina, Bulgaria, Canada, Croatia, Czech Republic, Denmark, Estonia, Euro-Atlantic Partnership Council (EAPC), European Union (EU), Finland, Former Yugoslav Republic of Macedonia, France, Georgia, Germany, Greece, Hungary, Iceland, International Security Assistance Force (ISAF), Ireland, Italy, Kazakhstan, Kyrgyztan, Latvia, Lithuania, Luxembourg, Malta, Moldova, Montenegro, Netherlands, Norway, Partnership for Peace (PfP), Poland, Portugal, Romania, Russian Federation, Serbia, Slovakia, Slovenia, Spain, Sweden, Switzerland, Tajikistan, Turkey, Turkmenistan, United Kingdom, United States, Ukraine, Uzbekistan, Western European Union (WEU) +# (case-insensitive). +#dmp.local_nation: None + +# Calculate sequence/acknowledgement analysis +# TRUE or FALSE (case-insensitive) +#dmp.seq_ack_analysis: TRUE + +# Align identifiers in info list (does not align when retransmission or duplicate acknowledgement indication) +# TRUE or FALSE (case-insensitive) +#dmp.align_ids: FALSE + +# The way DMX values are displayed +# One of: Percent, Hexadecimal, Decimal +# (case-insensitive). +#dmx_chan.dmx_disp_chan_val_type: Percent + +# The way DMX channel numbers are displayed +# One of: Hexadecimal, Decimal +# (case-insensitive). +#dmx_chan.dmx_disp_chan_nr_type: Hexadecimal + +# The number of columns for the DMX display +# One of: 6, 10, 12, 16, 24 +# (case-insensitive). +#dmx_chan.dmx_disp_col_count: 16 + +# Whether the DNP3 dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#dnp3.desegment: TRUE + +# Whether the DNS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#dns.desegment_dns_messages: TRUE + +# Number of seconds allowed between DNS requests with the same transaction ID to consider it a retransmission. Otherwise its considered a new request. +# A decimal number +#dns.retransmission_timer: 5 + +# Whether or not to validate the Header Check Sequence +# TRUE or FALSE (case-insensitive) +#docsis.check_fcs: TRUE + +# Specifies that decryption should be attempted on all packets, even if the session initialization wasn't captured. +# TRUE or FALSE (case-insensitive) +#dof.custom_dof_decrypt_all: FALSE + +# Specifies that operations should be tracked across multiple packets, providing summary lists. This takes time and memory. +# TRUE or FALSE (case-insensitive) +#dof.custom_dof_track_operations: FALSE + +# Limits the number of operations shown before and after the current operations +# A decimal number +#dof.custom_dof_track_operations_window: 5 + +# Whether the DRDA dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#drda.desegment: TRUE + +# Whether the DSI dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#dsi.desegment: TRUE + +# redirect dtls debug to file name; leave empty to disable debug, use "-" to redirect output to stderr +# +# A path to a file +#dtls.debug_file: + +# Semicolon-separated list of private RSA keys used for DTLS decryption. Used by versions of Wireshark prior to 1.6 +# A string +#dtls.keys_list: + +# Pre-Shared-Key as HEX string. Should be 0 to 16 bytes. +# A string +#dtls.psk: + +# The name of a file which contains a list of +# (pre-)master secrets in one of the following formats: +# +# RSA +# RSA Session-ID: Master-Key: +# CLIENT_RANDOM +# PMS_CLIENT_RANDOM +# +# Where: +# = First 8 bytes of the Encrypted PMS +# = The Pre-Master-Secret (PMS) used to derive the MS +# = The SSL Session ID +# = The Master-Secret (MS) +# = The Client's random number from the ClientHello message +# +# (All fields are in hex notation) +# A path to a file +#dtls.keylog_file: + +# SAC Encryption Key (16 hex bytes) +# A string +#dvb-ci.sek: + +# SAC Init Vector (16 hex bytes) +# A string +#dvb-ci.siv: + +# Dissect the content of messages transmitted on the Low-Speed Communication resource. This requires a dissector for the protocol and target port contained in the connection descriptor. +# TRUE or FALSE (case-insensitive) +#dvb-ci.dissect_lsc_msg: FALSE + +# Check this to enable full protocol dissection of data above GSE Layer +# TRUE or FALSE (case-insensitive) +#dvb-s2_modeadapt.full_decode: FALSE + +# Allow only packets with Major=0x03//Minor=0xFF as DVMRP V3 packets +# TRUE or FALSE (case-insensitive) +#dvmrp.strict_v3: FALSE + +# Whether the eDonkey dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#edonkey.desegment: TRUE + +# Whether the EtherNet/IP dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#enip.desegment: TRUE + +# Determines whether all I/O connections will assume a 32-bit header in the O->T direction +# TRUE or FALSE (case-insensitive) +#enip.o2t_run_idle: TRUE + +# Determines whether all I/O connections will assume a 32-bit header in the T->O direction +# TRUE or FALSE (case-insensitive) +#enip.t2o_run_idle: FALSE + +# The way DMX values are displayed +# One of: Percent, Hexadecimal, Decimal +# (case-insensitive). +#enttec.dmx_disp_chan_val_type: Percent + +# The way DMX channel numbers are displayed +# One of: Hexadecimal, Decimal +# (case-insensitive). +#enttec.dmx_disp_chan_nr_type: Hexadecimal + +# The number of columns for the DMX display +# One of: 6, 10, 12, 16, 24 +# (case-insensitive). +#enttec.dmx_disp_col_count: 16 + +# If you are capturing in networks with multiplexed or slow nodes, this can be useful +# TRUE or FALSE (case-insensitive) +#epl.show_soc_flags: FALSE + +# For analysis purposes one might want to show the command layer even if the dissectore assumes a duplicated frame +# TRUE or FALSE (case-insensitive) +#epl.show_duplicated_command_layer: FALSE + +# For analysis purposes one might want to see how long the current mapping has been active for and what OD write caused it +# TRUE or FALSE (case-insensitive) +#epl.show_pdo_meta_info: FALSE + +# Partition PDOs according to ObjectMappings sent via SDO +# TRUE or FALSE (case-insensitive) +#epl.use_sdo_mappings: TRUE + +# If you want to parse the defaultValue (XDD) and actualValue (XDC) attributes for ObjectMappings in order to detect default PDO mappings, which may not be sent over SDO +# TRUE or FALSE (case-insensitive) +#epl.use_xdc_mappings: TRUE + +# If a data field has untyped data under 8 byte long, interpret it as unsigned little endian integer and show decimal and hexadecimal representation thereof. Otherwise use stock data dissector +# TRUE or FALSE (case-insensitive) +#epl.interpret_untyped_as_le: TRUE + +# If you have a capture without IdentResponse and many nodes, it's easier to set a default profile here than to add entries for all MAC address or Node IDs +# A path to a file +#epl.default_profile: + +# Protocol encapsulated in HDLC records +# One of: Cisco HDLC, PPP serial, Frame Relay, SS7 MTP2, Attempt to guess +# (case-insensitive). +#erf.hdlc_type: Attempt to guess + +# Whether raw ATM cells should be treated as the first cell of an AAL5 PDU +# TRUE or FALSE (case-insensitive) +#erf.rawcell_first: FALSE + +# Protocol encapsulated in ATM AAL5 packets +# One of: Attempt to guess, LLC multiplexed, Unspecified +# (case-insensitive). +#erf.aal5_type: Attempt to guess + +# The packets contain the optional Incremental Redundancy (IR) fields +# TRUE or FALSE (case-insensitive) +#gsm_abis_pgsl.ir: FALSE + +# This is done only if the Decoding is not SET or the packet does not belong to a SA. Assumes a 12 byte auth (HMAC-SHA1-96/HMAC-MD5-96/AES-XCBC-MAC-96) and attempts decode based on the ethertype 13 bytes from packet end +# TRUE or FALSE (case-insensitive) +#esp.enable_null_encryption_decode_heuristic: FALSE + +# Check that successive frames increase sequence number by 1 within an SPI. This should work OK when only one host is sending frames on an SPI +# TRUE or FALSE (case-insensitive) +#esp.do_esp_sequence_analysis: TRUE + +# Attempt to decode based on the SAD described hereafter. +# TRUE or FALSE (case-insensitive) +#esp.enable_encryption_decode: FALSE + +# Attempt to Check ESP Authentication based on the SAD described hereafter. +# TRUE or FALSE (case-insensitive) +#esp.enable_authentication_check: FALSE + +# Whether the E-Tag summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#etag.summary_in_tree: TRUE + +# Place the hash/symbol files (generated by the Apache Etch compiler) ending with .ewh here +# A path to a directory +#etch.file: + +# Some devices add trailing data to frames. When this setting is checked the Ethernet dissector will assume there has been added padding to the frame before the trailer was added. Uncheck if a device added a trailer before the frame was padded. +# TRUE or FALSE (case-insensitive) +#eth.assume_padding: TRUE + +# Some TAPs add a fixed length ethernet trailer at the end of the frame, but before the (optional) FCS. Make sure it gets interpreted correctly. +# A decimal number +#eth.trailer_length: 0 + +# Some Ethernet adapters and drivers include the FCS at the end of a packet, others do not. The Ethernet dissector attempts to guess whether a captured packet has an FCS, but it cannot always guess correctly. +# TRUE or FALSE (case-insensitive) +#eth.assume_fcs: FALSE + +# Whether to validate the Frame Check Sequence +# TRUE or FALSE (case-insensitive) +#eth.check_fcs: TRUE + +# Whether packets should be interpreted as coming from CheckPoint FireWall-1 monitor file if they look as if they do +# TRUE or FALSE (case-insensitive) +#eth.interpret_as_fw1_monitor: FALSE + +# When capturing on a Cisco FEX some frames start with an extra destination mac +# TRUE or FALSE (case-insensitive) +#eth.deduplicate_dmac: FALSE + +# Set the condition that must be true for the CCSDS dissector to be called +# TRUE or FALSE (case-insensitive) +#eth.ccsds_heuristic_length: FALSE + +# Set the condition that must be true for the CCSDS dissector to be called +# TRUE or FALSE (case-insensitive) +#eth.ccsds_heuristic_version: FALSE + +# Set the condition that must be true for the CCSDS dissector to be called +# TRUE or FALSE (case-insensitive) +#eth.ccsds_heuristic_header: FALSE + +# Set the condition that must be true for the CCSDS dissector to be called +# TRUE or FALSE (case-insensitive) +#eth.ccsds_heuristic_bit: FALSE + +# Whether the EVRC dissector should process payload type 60 as legacy EVRC packets +# TRUE or FALSE (case-insensitive) +#evrc.legacy_pt_60: FALSE + +# Controls the display of the session's username in the info column. This is only displayed if the packet containing it was seen during this capture session. +# TRUE or FALSE (case-insensitive) +#exec.info_show_username: TRUE + +# Controls the display of the command being run on the server by this session in the info column. This is only displayed if the packet containing it was seen during this capture session. +# TRUE or FALSE (case-insensitive) +#exec.info_show_command: FALSE + +# Disable this if you do not want this dissector to populate well-known fields in other dissectors (i.e. ip.addr, ipv6.addr, tcp.port and udp.port). Enabling this will allow filters that reference those fields to also find data in the trailers but will reduce performance. After disabling, you should restart Wireshark to get performance back. +# TRUE or FALSE (case-insensitive) +#f5ethtrailer.pop_other_fields: FALSE + +# Enabling this will perform analysis of the trailer data. It will enable taps on other protocols and slow down Wireshark. +# TRUE or FALSE (case-insensitive) +#f5ethtrailer.perform_analysis: TRUE + +# In/out only removes slot/tmm information. Brief shortens the string to >S/T (for in) or <" ('>' for in and '<' for out). If this is not set or is less than two characters, the default is used. If it is longer than two characters, the extra characters are ignored. +# A string +#f5ethtrailer.brief_inout_chars: + +# If the platform in the F5 FILEINFO packet matches the provided regex, slot information will be displayed in the info column; otherwise, it will not. A reasonable value is "^(A.*|Z101)$". If the regex is empty or there is no platform information in the capture, slot information is always displayed. +# A string +#f5ethtrailer.slots_regex: + +# If present, include the RST cause text from the trailer in the "info" column of the packet list pane. +# TRUE or FALSE (case-insensitive) +#f5ethtrailer.rstcause_in_info: TRUE + +# If enabled, reassembly of multi-frame sequences is done +# TRUE or FALSE (case-insensitive) +#fc.reassemble: TRUE + +# This is the size of non-last frames in a multi-frame sequence +# A decimal number +#fc.max_frame_size: 1024 + +# Whether the FDDI dissector should add 3-byte padding to all captured FDDI packets (useful with e.g. Tru64 UNIX tcpdump) +# TRUE or FALSE (case-insensitive) +#fddi.padding: FALSE + +# Whether the FCIP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#fcip.desegment: TRUE + +# Port number used for FCIP +# A decimal number +#fcip.target_port: 3225 + +# Dissect next layer +# TRUE or FALSE (case-insensitive) +#file-pcap.dissect_next_layer: FALSE + +# Dissect next layer +# TRUE or FALSE (case-insensitive) +#file-pcapng.dissect_next_layer: FALSE + +# Whether the FIX dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#fix.desegment: TRUE + +# With this option display filters for fmp fhandle a RPC call, even if the actual fhandle is only present in one of the packets +# TRUE or FALSE (case-insensitive) +#fmp.fhandle_find_both_reqrep: FALSE + +# Decode packets on this sctp port as ForCES +# A decimal number +#forces.sctp_high_prio_port: 0 + +# Decode packets on this sctp port as ForCES +# A decimal number +#forces.sctp_med_prio_port: 0 + +# Decode packets on this sctp port as ForCES +# A decimal number +#forces.sctp_low_prio_port: 0 + +# Show reported release info +# TRUE or FALSE (case-insensitive) +#fp.show_release_info: TRUE + +# Call MAC dissector for payloads +# TRUE or FALSE (case-insensitive) +#fp.call_mac: TRUE + +# Validate FP payload checksums +# TRUE or FALSE (case-insensitive) +#fp.payload_checksum: TRUE + +# Validate FP header checksums +# TRUE or FALSE (case-insensitive) +#fp.header_checksum: TRUE + +# For each PCH data frame, Try to show the paging indications bitmap found in the previous frame +# TRUE or FALSE (case-insensitive) +#fp.track_paging_indications: TRUE + +# Whether the UID value should be appended in the protocol tree +# TRUE or FALSE (case-insensitive) +#fp_mux.uid_in_tree: TRUE + +# Whether to try heuristic FP dissectors for the muxed payloads +# TRUE or FALSE (case-insensitive) +#fp_mux.call_heur_fp: TRUE + +# Encapsulation +# One of: FRF 3.2/Cisco HDLC, GPRS Network Service, Raw Ethernet +# (case-insensitive). +#fr.encap: FRF 3.2/Cisco HDLC + +# Show offset of frame in capture file +# TRUE or FALSE (case-insensitive) +#frame.show_file_off: FALSE + +# Treat all frames as DOCSIS Frames +# TRUE or FALSE (case-insensitive) +#frame.force_docsis_encap: FALSE + +# Whether or not MD5 hashes should be generated for each frame, useful for finding duplicate frames. +# TRUE or FALSE (case-insensitive) +#frame.generate_md5_hash: FALSE + +# Whether or not an Epoch time entry should be generated for each frame. +# TRUE or FALSE (case-insensitive) +#frame.generate_epoch_time: TRUE + +# Whether or not the number of bits in the frame should be shown. +# TRUE or FALSE (case-insensitive) +#frame.generate_bits_field: TRUE + +# Whether or not 'packet size limited during capture' message in shown in Info column. +# TRUE or FALSE (case-insensitive) +#frame.disable_packet_size_limited_in_summary: FALSE + +# Whether the FireWall-1 summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#fw1.summary_in_tree: TRUE + +# Whether the Firewall-1 monitor file includes UUID information +# TRUE or FALSE (case-insensitive) +#fw1.with_uuid: FALSE + +# Whether the interface list includes the chain position +# TRUE or FALSE (case-insensitive) +#fw1.iflist_with_chain: FALSE + +# Whether the Gadu-Gadu dissector should reassemble messages spanning multiple TCP segments.To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#gadu-gadu.desegment: TRUE + +# Whether the Gearman dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#gearman.desegment: TRUE + +# Whether the GED125 dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#ged125.desegment_body: TRUE + +# Whether the GIOP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#giop.desegment_giop_messages: TRUE + +# Whether fragmented GIOP messages should be reassembled +# TRUE or FALSE (case-insensitive) +#giop.reassemble: TRUE + +# Maximum allowed message size in bytes (default=10485760) +# A decimal number +#giop.max_message_size: 10485760 + +# File containing stringified IORs, one per line. +# A path to a file +#giop.ior_txt: IOR.txt + +# Whether the GIT dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#git.desegment: TRUE + +# Whether the Gigamon header summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#gmhdr.summary_in_tree: TRUE + +# Whether the Gigamon Trailer summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#gmtrailer.summary_in_tree: TRUE + +# Whether the Gigamon trailer containing HW timestamp, source id and original CRC should be decoded +# TRUE or FALSE (case-insensitive) +#gmtrailer.decode_trailer_timestamp: TRUE + +# Whether to autodetect the cipher bit (because it might be set on unciphered data) +# TRUE or FALSE (case-insensitive) +#llcgprs.autodetect_cipher_bit: FALSE + +# Help for debug... +# TRUE or FALSE (case-insensitive) +#gquic.debug.quic: FALSE + +# Normally application/grpc message is protobuf, but sometime the true message is json. If this option in on, we always check whether the message is JSON (body starts with '{' and ends with '}') regardless of grpc_message_type_subdissector_table settings (which dissect grpc message according to content-type). +# TRUE or FALSE (case-insensitive) +#grpc.detect_json_automaticlly: TRUE + +# Whether the Gryphon dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#gryphon.desegment: TRUE + +# No description +# TRUE or FALSE (case-insensitive) +#gsm_ipa.hsl_debug_in_root_tree: FALSE + +# No description +# TRUE or FALSE (case-insensitive) +#gsm_ipa.hsl_debug_in_info: FALSE + +# Whether the dissector should reassemble SMS spanning multiple packets +# TRUE or FALSE (case-insensitive) +#gsm_sms.reassemble: TRUE + +# Whether the dissector should take into account info coming from lower layers (like GSM-MAP) to perform SMS reassembly +# TRUE or FALSE (case-insensitive) +#gsm_sms.reassemble_with_lower_layers_info: TRUE + +# Always decode a GSM Short Message as Connectionless WSP if a Port Number Information Element is present in the SMS User Data Header. +# TRUE or FALSE (case-insensitive) +#gsm_sms_ud.port_number_udh_means_wsp: FALSE + +# Always try subdissection of the 1st fragment of a fragmented GSM Short Message. If reassembly is possible, the Short Message may be dissected twice (once as a short frame, once in its entirety). +# TRUE or FALSE (case-insensitive) +#gsm_sms_ud.try_dissect_1st_fragment: FALSE + +# Prevent sub-dissectors from replacing column data with their own. Eg. Prevent WSP dissector overwriting SMPP information. +# TRUE or FALSE (case-insensitive) +#gsm_sms_ud.prevent_dissectors_chg_cols: FALSE + +# Treat ARFCN 512-810 as DCS 1800 rather than PCS 1900 +# TRUE or FALSE (case-insensitive) +#gsm_um.dcs1800: TRUE + +# TCAP Subsystem numbers used for GSM MAP +# A string denoting an positive integer range (e.g., "1-20,30-40") +#gsm_map.tcap.ssn: 6-9 + +# How to treat Application context +# One of: Use application context from the trace, Treat as AC 1, Treat as AC 2, Treat as AC 3 +# (case-insensitive). +#gsm_map.application.context.version: Use application context from the trace + +# When enabled, dissector will use the non 3GPP standard extensions from Ericsson (that can override the standard ones) +# TRUE or FALSE (case-insensitive) +#gsm_map.ericsson.proprietary.extensions: FALSE + +# Whether or not to try reassembling GSSAPI blobs spanning multiple (SMB/SessionSetup) PDUs +# TRUE or FALSE (case-insensitive) +#gss-api.gssapi_reassembly: TRUE + +# GTPv0 and GTP' port (default 3386) +# A decimal number +#gtp.v0_port: 3386 + +# GTPv1 and GTPv2 control plane port (default 2123) +# A decimal number +#gtp.v1c_port: 2123 + +# GTPv1 user plane port (default 2152) +# A decimal number +#gtp.v1u_port: 2152 + +# Dissect T-PDU as +# One of: None, TPDU, SYNC +# (case-insensitive). +#gtp.dissect_tpdu_as: TPDU + +# GTP ETSI order +# TRUE or FALSE (case-insensitive) +#gtp.check_etsi: FALSE + +# Dissect GTP over TCP +# TRUE or FALSE (case-insensitive) +#gtp.dissect_gtp_over_tcp: TRUE + +# Track GTP session +# TRUE or FALSE (case-insensitive) +#gtp.track_gtp_session: FALSE + +# Use this setting to decode the Transparent Containers in the SRVCC PS-to-CS messages. +# This is needed until there's a reliable way to determine the contents of the transparent containers. +# One of: Don't decode, Assume UTRAN target +# (case-insensitive). +#gtpv2.decode_srvcc_p2c_trans_cont_target: Don't decode + +# H.225 Server TLS Port +# A decimal number +#h225.tls.port: 1300 + +# Whether the H.225 dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#h225.reassembly: TRUE + +# ON - display tunnelled H.245 inside H.225.0 tree, OFF - display tunnelled H.245 in root tree after H.225.0 +# TRUE or FALSE (case-insensitive) +#h225.h245_in_tree: TRUE + +# ON - display tunnelled protocols inside H.225.0 tree, OFF - display tunnelled protocols in root tree after H.225.0 +# TRUE or FALSE (case-insensitive) +#h225.tp_in_tree: TRUE + +# Whether the H.245 dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#h245.reassembly: TRUE + +# Whether the dissector should show short names or the long names from the standard +# TRUE or FALSE (case-insensitive) +#h245.shorttypes: FALSE + +# Whether the dissector should print items of h245 Info column in reversed order +# TRUE or FALSE (case-insensitive) +#h245.prepand: FALSE + +# Desegment H.501 messages that span more TCP segments +# TRUE or FALSE (case-insensitive) +#h501.desegment: TRUE + +# Maintain relationships between transactions and contexts and display an extra tree showing context data +# TRUE or FALSE (case-insensitive) +#h248.ctx_info: FALSE + +# Desegment H.248 messages that span more TCP segments +# TRUE or FALSE (case-insensitive) +#h248.desegment: TRUE + +# The dynamic payload type which will be interpreted as H264; The value must be greater than 95 +# A decimal number +#h263p.dynamic.payload.type: 0 + +# Dynamic payload types which will be interpreted as H264; Values must be in the range 96 - 127 +# A string denoting an positive integer range (e.g., "1-20,30-40") +#h264.dynamic.payload.type: + +# Whether the HART-IP dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#hart_ip.desegment: TRUE + +# Whether the hazel dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#hzlcst.desegment: TRUE + +# The ethernet type used for L2 communications +# A decimal number +#hcrt.dissector_ethertype: 61522 + +# Specifies that the raw text of the HL7 message should be displayed in addition to the dissection tree +# TRUE or FALSE (case-insensitive) +#hl7.display_raw: FALSE + +# Specifies that the LLP session information should be displayed (Start/End Of Block) in addition to the dissection tree +# TRUE or FALSE (case-insensitive) +#hl7.display_llp: FALSE + +# Set the port for HNBAP messages (Default of 29169) +# A decimal number +#hnbap.port: 29169 + +# Whether the HPFEEDS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#hpfeeds.desegment_hpfeeds_messages: TRUE + +# Try to decode the payload using an heuristic sub-dissector +# TRUE or FALSE (case-insensitive) +#hpfeeds.try_heuristic: TRUE + +# Whether the HTTP dissector should reassemble headers of a request spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#http.desegment_headers: TRUE + +# Whether the HTTP dissector should use the "Content-length:" value, if present, to reassemble the body of a request spanning multiple TCP segments, and reassemble chunked data spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#http.desegment_body: TRUE + +# Whether to reassemble bodies of entities that are transferred using the "Transfer-Encoding: chunked" method +# TRUE or FALSE (case-insensitive) +#http.dechunk_body: TRUE + +# Whether to uncompress entity bodies that are compressed using "Content-Encoding: " +# TRUE or FALSE (case-insensitive) +#http.decompress_body: TRUE + +# SCTP Ports range +# A string denoting an positive integer range (e.g., "1-20,30-40") +#http.sctp.port: 80 + +# SSL/TLS Ports range +# A string denoting an positive integer range (e.g., "1-20,30-40") +#http.ssl.port: 443 + +# The UDP port for RROCE messages (default 4791) +# A decimal number +#infiniband.rroce.port: 4791 + +# Try to decode a packet using an heuristic sub-dissector before using Decode As +# TRUE or FALSE (case-insensitive) +#infiniband.try_heuristic_first: TRUE + +# Maximum number of batch requests allowed +# A decimal number +#icep.max_batch_requests: 64 + +# Maximum length allowed of an ICEP string +# A decimal number +#icep.max_ice_string_len: 512 + +# Maximum number of context pairs allowed +# A decimal number +#icep.max_ice_context_pairs: 64 + +# Whether the 128th and following bytes of the ICMP payload should be decoded as MPLS extensions or as a portion of the original packet +# TRUE or FALSE (case-insensitive) +#icmp.favor_icmp_mpls: FALSE + +# Whether fragmented 802.11 datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#wlan.defragment: TRUE + +# Don't dissect 802.11n draft HT elements (which might contain duplicate information). +# TRUE or FALSE (case-insensitive) +#wlan.ignore_draft_ht: FALSE + +# Whether retransmitted 802.11 frames should be subdissected +# TRUE or FALSE (case-insensitive) +#wlan.retransmitted: TRUE + +# Some 802.11 cards include the FCS at the end of a packet, others do not. +# TRUE or FALSE (case-insensitive) +#wlan.check_fcs: FALSE + +# Whether to validate the FCS checksum or not. +# TRUE or FALSE (case-insensitive) +#wlan.check_checksum: TRUE + +# Some 802.11 cards leave the Protection bit set even though the packet is decrypted, and some also leave the IV (initialization vector). +# One of: No, Yes - without IV, Yes - with IV +# (case-insensitive). +#wlan.ignore_wep: No + +# Some Key MIC lengths are greater than 16 bytes, so set the length you require +# A decimal number +#wlan.wpa_key_mic_len: 0 + +# Enable WEP and WPA/WPA2 decryption +# TRUE or FALSE (case-insensitive) +#wlan.enable_decryption: TRUE + +# (Hexadecimal) Ethertype used to indicate IEEE 802.15.4 frame. +# A hexadecimal number +#wpan.802154_ethertype: 0x809a + +# Set if the FCS field is in TI CC24xx format. +# TRUE or FALSE (case-insensitive) +#wpan.802154_cc24xx: FALSE + +# Dissect payload only if FCS is valid. +# TRUE or FALSE (case-insensitive) +#wpan.802154_fcs_ok: TRUE + +# Specifies the security suite to use for 802.15.4-2003 secured frames (only supported suites are listed). Option ignored for 802.15.4-2006 and unsecured frames. +# One of: AES-128 Encryption, 128-bit Integrity Protection, AES-128 Encryption, 64-bit Integrity Protection, AES-128 Encryption, 32-bit Integrity Protection +# (case-insensitive). +#wpan.802154_sec_suite: AES-128 Encryption, 64-bit Integrity Protection + +# Set if the manufacturer extends the authentication data with the security header. Option ignored for 802.15.4-2006 and unsecured frames. +# TRUE or FALSE (case-insensitive) +#wpan.802154_extend_auth: TRUE + +# (Hexadecimal) Ethertype used to indicate IEEE 802.1ah tag. +# A hexadecimal number +#ieee8021ah.8021ah_ethertype: 0x88e7 + +# Whether the iFCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ifcp.desegment: TRUE + +# Whether the ILP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ilp.desegment_ilp_messages: TRUE + +# Whether to use heuristics for post-STARTTLS detection of encrypted IMAP conversations +# TRUE or FALSE (case-insensitive) +#imap.ssl_heuristic: TRUE + +# TCAP Subsystem numbers used for INAP +# A string denoting an positive integer range (e.g., "1-20,30-40") +#inap.ssn: 106,241 + +# Whether the IPDC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ipdc.desegment_ipdc_messages: TRUE + +# Dissect IPMB commands +# TRUE or FALSE (case-insensitive) +#ipmi.dissect_bus_commands: FALSE + +# FRU Language Code is English; strings are ASCII+LATIN1 (vs. Unicode) +# TRUE or FALSE (case-insensitive) +#ipmi.fru_langcode_is_english: TRUE + +# Do not search for responses coming after this timeout (milliseconds) +# A decimal number +#ipmi.response_after_req: 5000 + +# Allow for responses before requests (milliseconds) +# A decimal number +#ipmi.response_before_req: 0 + +# Format of messages embedded into Send/Get/Forward Message +# One of: None, IPMB, Session-based (LAN, ...), Use heuristics +# (case-insensitive). +#ipmi.msgfmt: Use heuristics + +# Selects which OEM format is used for commands that IPMI does not define +# One of: None, Pigeon Point Systems +# (case-insensitive). +#ipmi.selected_oem: None + +# Whether the IPv4 type-of-service field should be decoded as a Differentiated Services field (see RFC2474/RFC2475) +# TRUE or FALSE (case-insensitive) +#ip.decode_tos_as_diffserv: TRUE + +# Whether fragmented IPv4 datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#ip.defragment: TRUE + +# Whether the IPv4 summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#ip.summary_in_tree: TRUE + +# Whether to validate the IPv4 checksum +# TRUE or FALSE (case-insensitive) +#ip.check_checksum: FALSE + +# Whether to correct for TSO-enabled (TCP segmentation offload) hardware captures, such as spoofing the IP packet length +# TRUE or FALSE (case-insensitive) +#ip.tso_support: TRUE + +# Whether to look up IP addresses in each MaxMind database we have loaded +# TRUE or FALSE (case-insensitive) +#ip.use_geoip: TRUE + +# Whether to interpret the originally reserved flag as security flag +# TRUE or FALSE (case-insensitive) +#ip.security_flag: FALSE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port +# TRUE or FALSE (case-insensitive) +#ip.try_heuristic_first: FALSE + +# Whether fragmented IPv6 datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#ipv6.defragment: TRUE + +# Whether the IPv6 summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#ipv6.summary_in_tree: TRUE + +# Whether to look up IPv6 addresses in each MaxMind database we have loaded +# TRUE or FALSE (case-insensitive) +#ipv6.use_geoip: TRUE + +# Check that all RPL Source Routed packets conform to RFC 6554 and do not visit a node more than once +# TRUE or FALSE (case-insensitive) +#ipv6.perform_strict_rpl_srh_rfc_checking: FALSE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port +# TRUE or FALSE (case-insensitive) +#ipv6.try_heuristic_first: FALSE + +# Whether to display IPv6 extension headers as a separate protocol or a sub-protocol of the IPv6 packet +# TRUE or FALSE (case-insensitive) +#ipv6.exthdr_under_root_protocol_tree: FALSE + +# If enabled the Length field in octets will be hidden +# TRUE or FALSE (case-insensitive) +#ipv6.exthdr_hide_len_oct_field: FALSE + +# Whether to correct for TSO-enabled (TCP segmentation offload) hardware captures, such as spoofing the IPv6 packet length +# TRUE or FALSE (case-insensitive) +#ipv6.tso_support: FALSE + +# The iSCSI protocol version +# One of: Draft 08, Draft 09, Draft 11, Draft 12, Draft 13 +# (case-insensitive). +#iscsi.protocol_version: Draft 13 + +# Whether the iSCSI dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#iscsi.desegment_iscsi_messages: TRUE + +# When enabled, packets that appear bogus are ignored +# TRUE or FALSE (case-insensitive) +#iscsi.bogus_pdu_filter: TRUE + +# Ignore packets that haven't set the F bit when they should have +# TRUE or FALSE (case-insensitive) +#iscsi.demand_good_f_bit: FALSE + +# Treat packets whose data segment length is greater than this value as bogus +# A decimal number +#iscsi.bogus_pdu_max_data_len: 262144 + +# Range of iSCSI target ports(default 3260) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#iscsi.target_ports: 3260 + +# System port number of iSCSI target +# A decimal number +#iscsi.target_system_port: 860 + +# The protocol running on the D channel +# One of: LAPD, DPNSS +# (case-insensitive). +#isdn.dchannel_protocol: LAPD + +# Range of iSER target ports(default 3260) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#iser.target_ports: 3260 + +# The dynamic payload type which will be interpreted as ISMACryp +# A decimal number +#ismacryp.dynamic.payload.type: 0 + +# ISMACryp version +# One of: ISMACryp v1.1, ISMACryp v2.0 +# (case-insensitive). +#ismacryp.version: ISMACryp v1.1 + +# Indicates whether or not the ISMACryp version deduced from RTP payload type, if present, is used or whether the version above is used +# TRUE or FALSE (case-insensitive) +#ismacryp.override_rtp_pt: FALSE + +# Set the length of the IV in the ISMACryp AU Header in bytes +# A decimal number +#ismacryp.iv_length: 4 + +# Set the length of the Delta IV in the ISMACryp AU Header in bytes +# A decimal number +#ismacryp.delta_iv_length: 0 + +# Set the length of the Key Indicator in the ISMACryp AU Header in bytes +# A decimal number +#ismacryp.key_indicator_length: 0 + +# Indicates whether or not the Key Indicator is present in all AU Headers (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.key_indicator_per_au_flag: FALSE + +# Indicates whether or not selective encryption is enabled (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.selective_encryption: TRUE + +# Indicates whether or not slice start / end is present (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.slice_indication: FALSE + +# Indicates whether or not padding information is present (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.padding_indication: FALSE + +# RFC3640 mode +# One of: aac-hbr, mpeg4-video, avc-video +# (case-insensitive). +#ismacryp.rfc3640_mode: avc-video + +# Indicates use of user mode instead of RFC3640 modes (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.user_mode: FALSE + +# Set the length of the AU size in the AU Header in bits +# A decimal number +#ismacryp.au_size_length: 0 + +# Set the length of the AU index in the AU Header in bits +# A decimal number +#ismacryp.au_index_length: 0 + +# Set the length of the AU delta index in the AU Header in bits +# A decimal number +#ismacryp.au_index_delta_length: 0 + +# Set the length of the CTS delta field in the AU Header in bits +# A decimal number +#ismacryp.cts_delta_length: 0 + +# Set the length of the DTS delta field in the AU Header in bits +# A decimal number +#ismacryp.dts_delta_length: 0 + +# Indicates whether or not the RAP field is present in the AU Header (T/F) +# TRUE or FALSE (case-insensitive) +#ismacryp.random_access_indication: FALSE + +# Indicates the number of bits on which the stream state field is encoded in the AU Header (bits) +# A decimal number +#ismacryp.stream_state_indication: 0 + +# Whether the iSNS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#isns.desegment: TRUE + +# Addressing of ISO 15765. Normal or Extended +# One of: Normal addressing, Extended addressing +# (case-insensitive). +#iso15765.addressing: Normal addressing + +# Window of ISO 15765 fragments +# A decimal number +#iso15765.window: 8 + +# Endian of the length field. Big endian or Little endian +# One of: Big endian, Little endian +# (case-insensitive). +#iso8583.len_endian: Little endian + +# charset for numbers +# One of: Digits represented as ASCII Characters, Digits represented in nibbles +# (case-insensitive). +#iso8583.charset: Digits represented as ASCII Characters + +# binary data representation +# One of: Bin data represented as Hex Ascii characters, Bin data not encoded +# (case-insensitive). +#iso8583.binencode: Bin data represented as Hex Ascii characters + +# File containing a translation from object ID to string +# A path to a file +#isobus.vt.object_ids: + +# Note national variants may not be fully supported +# One of: ITU Standard, French National Standard, Israeli National Standard, Russian National Standard, Japan National Standard, Japan National Standard (TTC) +# (case-insensitive). +#isup.variant: ITU Standard + +# Show the CIC value (in addition to the message type) in the Info column +# TRUE or FALSE (case-insensitive) +#isup.show_cic_in_info: TRUE + +# Whether APM messages datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#isup.defragment_apm: TRUE + +# The MPLS label (aka Flow Bundle ID) used by ITDM traffic. +# A hexadecimal number +#itdm.mpls_label: 0x99887 + +# Flow Number used by I-TDM Control Protocol traffic. +# A decimal number +#itdm.ctl_flowno: 0 + +# Support Implementers Guide (version 01) +# TRUE or FALSE (case-insensitive) +#iua.support_ig: FALSE + +# Use SAPI values as specified in TS 48 056 +# TRUE or FALSE (case-insensitive) +#iua.use_gsm_sapi_values: TRUE + +# Whether IuUP Payload bits should be dissected +# TRUE or FALSE (case-insensitive) +#iuup.dissect_payload: FALSE + +# The payload contains a two byte pseudoheader indicating direction and circuit_id +# TRUE or FALSE (case-insensitive) +#iuup.two_byte_pseudoheader: FALSE + +# The dynamic payload type which will be interpreted as IuUP +# A decimal number +#iuup.dynamic.payload.type: 0 + +# Whether the trailer summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#ixiatrailer.summary_in_tree: TRUE + +# Display JSON like in browsers devtool +# TRUE or FALSE (case-insensitive) +#json.compact_form: FALSE + +# Enable to have correctly typed MIME media dissected as JXTA Messages. +# TRUE or FALSE (case-insensitive) +#jxta.msg.mediatype: TRUE + +# Whether the JXTA dissector should reassemble messages spanning multiple UDP/TCP/SCTP segments. To use this option you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings and enable "Reassemble fragmented IP datagrams" in the IP protocol settings. +# TRUE or FALSE (case-insensitive) +#jxta.desegment: TRUE + +# No description +# TRUE or FALSE (case-insensitive) +#kafka.show_string_bytes_lengths: FALSE + +# Set the SCTP port for kNet messages +# A decimal number +#knet.sctp.port: 2345 + +# Whether the Kpasswd dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#kpasswd.desegment: TRUE + +# Whether the Kerberos dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#kerberos.desegment: TRUE + +# Whether the dissector should try to decrypt encrypted Kerberos blobs. This requires that the proper keytab file is installed as well. +# TRUE or FALSE (case-insensitive) +#kerberos.decrypt: FALSE + +# The keytab file containing all the secrets +# A path to a file +#kerberos.file: + +# KT allows binary values in keys and values. Attempt to show an ASCII representation anyway (which might be prematurely terminated by a NULL! +# TRUE or FALSE (case-insensitive) +#kt.present_key_val_as_ascii: FALSE + +# Whether the L&G 8979 dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#lg8979.desegment: TRUE + +# L2TPv3 Cookie Size +# One of: Detect, None, 4 Byte Cookie, 8 Byte Cookie +# (case-insensitive). +#l2tp.cookie_size: Detect + +# L2TPv3 L2-Specific Sublayer +# One of: Detect, None, Default L2-Specific, ATM-Specific, LAPD-Specific, DOCSIS DMPT-Specific +# (case-insensitive). +#l2tp.l2_specific: Detect + +# Shared secret used for control message digest authentication +# A string +#l2tp.shared_secret: + +# Use SAPI values as specified in TS 48 056 +# TRUE or FALSE (case-insensitive) +#lapd.use_gsm_sapi_values: FALSE + +# RTP payload type for embedded LAPD. It must be one of the dynamic types from 96 to 127. Set it to 0 to disable. +# A decimal number +#lapd.rtp_payload_type: 0 + +# SCTP Payload Protocol Identifier for LAPD. It is a 32 bits value from 0 to 4294967295. Set it to 0 to disable. +# A decimal number +#lapd.sctp_payload_protocol_identifier: 0 + +# Whether the dissector should defragment LAPDm messages spanning multiple packets. +# TRUE or FALSE (case-insensitive) +#lapdm.reassemble: TRUE + +# Whether the Laplink dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#laplink.desegment_laplink_over_tcp: TRUE + +# Set the SCTP port for LCSAP messages +# A decimal number +#lcsap.sctp.port: 9082 + +# Whether the LDAP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ldap.desegment_ldap_messages: TRUE + +# Set the port for LDAP operations over SSL +# A decimal number +#ldap.ssl.port: 636 + +# Whether the LDP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ldp.desegment_ldp_messages: TRUE + +# Which Information will be showed at Column Information is decided by the selection +# One of: Default Column Info, PROFINET Special Column Info +# (case-insensitive). +#lldp.column_info_selection: Default Column Info + +# Dissect this ethertype as LLT traffic in addition to the default, 0xCAFE. +# A hexadecimal number +#llt.alternate_ethertype: 0 + +# Whether LMP contains a checksum which can be checked +# TRUE or FALSE (case-insensitive) +#lmp.checksum: FALSE + +# Use oneline info column by replace all new line characters by spaces +# TRUE or FALSE (case-insensitive) +#logcat.oneline_info_column: TRUE + +# Swap frame control bytes (needed for some APs +# TRUE or FALSE (case-insensitive) +#lwapp.swap_fc: FALSE + +# Whether to validate the LWL4 crc when crc bit is not set +# TRUE or FALSE (case-insensitive) +#lwl4.check_crc: TRUE + +# 128-bit decryption key in hexadecimal format +# A string +#lwm.lwmes_key: + +# Version used by Wireshark +# One of: Internet Draft version 2, Internet Draft version 8, RFC 4165 +# (case-insensitive). +#m2pa.version: RFC 4165 + +# Set the port for M2PA messages (default: 3565) +# A decimal number +#m2pa.port: 3565 + +# The value of the parameter tag for protocol data 1 +# One of: 0x000e (Draft 7), 0x0300 (RFC3331) +# (case-insensitive). +#m2ua.protocol_data_1_tag: 0x0300 (RFC3331) + +# Version used by Wireshark +# One of: Internet Draft version 5, Internet Draft version 6, Internet Draft version 7, RFC 4666 +# (case-insensitive). +#m3ua.version: RFC 4666 + +# TSN size in bits, either 6 or 14 bit +# One of: 6 bits, 14 bits +# (case-insensitive). +#mac.tsn_size: 6 bits + +# Number of Re-Transmits before expert warning triggered +# A decimal number +#mac-lte.retx_count_warn: 3 + +# Attempt to decode BCH, PCH and CCCH data using LTE RRC dissector +# TRUE or FALSE (case-insensitive) +#mac-lte.attempt_rrc_decode: TRUE + +# Attempt to dissect frames that have failed CRC check +# TRUE or FALSE (case-insensitive) +#mac-lte.attempt_to_dissect_crc_failures: FALSE + +# Will call LTE RLC dissector with standard settings as per RRC spec +# TRUE or FALSE (case-insensitive) +#mac-lte.attempt_to_dissect_srb_sdus: TRUE + +# Will call LTE RLC dissector for MCH LCID 0 +# TRUE or FALSE (case-insensitive) +#mac-lte.attempt_to_dissect_mcch: FALSE + +# Call RLC dissector MTCH LCIDs +# TRUE or FALSE (case-insensitive) +#mac-lte.call_rlc_for_mtch: FALSE + +# Set whether LCID -> drb Table is taken from static table (below) or from info learned from control protocol (e.g. RRC) +# One of: From static table, From configuration protocol +# (case-insensitive). +#mac-lte.lcid_to_drb_mapping_source: From static table + +# If any BSR report is >= this number, an expert warning will be added +# A decimal number +#mac-lte.bsr_warn_threshold: 50 + +# Track status of SRs, providing links between requests, failure indications and grants +# TRUE or FALSE (case-insensitive) +#mac-lte.track_sr: TRUE + +# Can show PHY, MAC or RLC layer info in Info column +# One of: PHY Info, MAC Info, RLC Info +# (case-insensitive). +#mac-lte.layer_to_show: RLC Info + +# Attempt to decode 6 bytes of Contention Resolution body as an UL CCCH PDU +# TRUE or FALSE (case-insensitive) +#mac-lte.decode_cr_body: FALSE + +# Apply DRX config and show DRX state within each UE +# TRUE or FALSE (case-insensitive) +#mac-lte.show_drx: FALSE + +# Add as a generated field the middle of the range indicated by the BSR index +# TRUE or FALSE (case-insensitive) +#mac-lte.show_bsr_median: FALSE + +# Attempt to decode BCCH, PCCH and CCCH data using NR RRC dissector +# TRUE or FALSE (case-insensitive) +#mac-nr.attempt_rrc_decode: TRUE + +# The name of the file containing the mate module's configuration +# A path to a file +#mate.config: + +# Decode control data received on "usb.control" with an unknown interface class as MBIM +# TRUE or FALSE (case-insensitive) +#mbim.control_decode_unknown_itf: FALSE + +# Format used for SMS PDU decoding +# One of: Automatic, 3GPP, 3GPP2 +# (case-insensitive). +#mbim.sms_pdu_format: Automatic + +# Set the UDP port for the MCPE Server +# A decimal number +#mcpe.udp.port: 19132 + +# A frame is considered for decoding as MDSHDR if either ethertype is 0xFCFC or zero. Turn this flag off if you don't want ethertype zero to be decoded as MDSHDR. This might be useful to avoid problems with test frames. +# TRUE or FALSE (case-insensitive) +#mdshdr.decode_if_etype_zero: FALSE + +# Set the SCTP port for MEGACO text messages +# A decimal number +#megaco.sctp.txt_port: 2944 + +# Specifies that the raw text of the MEGACO message should be displayed instead of (or in addition to) the dissection tree +# TRUE or FALSE (case-insensitive) +#megaco.display_raw_text: TRUE + +# Specifies that the dissection tree of the MEGACO message should be displayed instead of (or in addition to) the raw text +# TRUE or FALSE (case-insensitive) +#megaco.display_dissect_tree: TRUE + +# Maintain relationships between transactions and contexts and display an extra tree showing context data +# TRUE or FALSE (case-insensitive) +#megaco.ctx_info: FALSE + +# Whether the MEMCACHE dissector should reassemble headers of a request spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#memcache.desegment_headers: TRUE + +# Whether the memcache dissector should reassemble PDUs spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#memcache.desegment_pdus: TRUE + +# Set the UDP port for gateway messages (if other than the default of 2427) +# A decimal number +#mgcp.tcp.gateway_port: 2427 + +# Set the TCP port for gateway messages (if other than the default of 2427) +# A decimal number +#mgcp.udp.gateway_port: 2427 + +# Set the TCP port for callagent messages (if other than the default of 2727) +# A decimal number +#mgcp.tcp.callagent_port: 2727 + +# Set the UDP port for callagent messages (if other than the default of 2727) +# A decimal number +#mgcp.udp.callagent_port: 2727 + +# Specifies that the raw text of the MGCP message should be displayed instead of (or in addition to) the dissection tree +# TRUE or FALSE (case-insensitive) +#mgcp.display_raw_text: FALSE + +# Display the number of MGCP messages found in a packet in the protocol column. +# TRUE or FALSE (case-insensitive) +#mgcp.display_mgcp_message_count: FALSE + +# Display multipart bodies with no media type dissector as raw text (may cause problems with binary data). +# TRUE or FALSE (case-insensitive) +#mime_multipart.display_unknown_body_as_text: FALSE + +# Remove any base64 content-transfer encoding from bodies. This supports export of the body and its further dissection. +# TRUE or FALSE (case-insensitive) +#mime_multipart.remove_base64_encoding: FALSE + +# Dissect payload only if MIC is valid. +# TRUE or FALSE (case-insensitive) +#mle.meshlink_mic_ok: FALSE + +# Register Format +# One of: UINT16 , INT16 , UINT32 , INT32 , IEEE FLT , MODICON FLT +# (case-insensitive). +#modbus.mbus_register_format: UINT16 + +# Whether the Modbus RTU dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#mbrtu.desegment: TRUE + +# Whether to validate the CRC +# TRUE or FALSE (case-insensitive) +#mbrtu.crc_verification: FALSE + +# Whether the Modbus RTU dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#mbtcp.desegment: TRUE + +# The dynamic payload type which will be interpreted as MP4V-ES +# A decimal number +#mp4v-es.dynamic.payload.type: 0 + +# Whether the section dissector should verify the CRC or checksum +# TRUE or FALSE (case-insensitive) +#mpeg_dsmcc.verify_crc: FALSE + +# Whether the section dissector should verify the CRC +# TRUE or FALSE (case-insensitive) +#mpeg_sect.verify_crc: FALSE + +# Lowest label is used to segregate flows inside a pseudowire +# TRUE or FALSE (case-insensitive) +#mpls.flowlabel_in_mpls_header: FALSE + +# Enable to allow non-zero Length in Control Word. This may be needed to correctly decode traffic from some legacy devices which generate non-zero Length even if there is no padding in the packet. Note that Length should have proper value (dissector checks this anyway). +# +# Disable to blame all packets with CW.Length <> 0. This conforms to RFC4717. +# TRUE or FALSE (case-insensitive) +#mplspwatmaal5sdu.allow_cw_length_nonzero_aal5: FALSE + +# Enable to use reserved bits (8..9) of Control Word as an extension of CW.Length. This may be needed to correctly decode traffic from some legacy devices which uses reserved bits as extension of Length +# +# Disable to blame all packets with CW.Reserved <> 0. This conforms to RFC4717. +# TRUE or FALSE (case-insensitive) +#mplspwatmaal5sdu.extend_cw_length_with_rsvd_aal5: FALSE + +# Enable to allow non-zero Length in Control Word. This may be needed to correctly decode traffic from some legacy devices which generate non-zero Length even if there is no padding in the packet. Note that Length should have proper value (dissector checks this anyway). +# +# Disable to blame all packets with CW.Length <> 0. This conforms to RFC4717. +# TRUE or FALSE (case-insensitive) +#mplspwatmn1cw.allow_cw_length_nonzero: FALSE + +# Enable to use reserved bits (8..9) of Control Word as an extension of CW.Length. This may be needed to correctly decode traffic from some legacy devices which uses reserved bits as extension of Length +# +# Disable to blame all packets with CW.Reserved <> 0. This conforms to RFC4717. +# TRUE or FALSE (case-insensitive) +#mplspwatmn1cw.extend_cw_length_with_rsvd: FALSE + +# To use this option you must also enable "Analyze TCP sequence numbers". +# TRUE or FALSE (case-insensitive) +#mptcp.analyze_mptcp: TRUE + +# In case you don't capture the key, it will use the first DSN seen +# TRUE or FALSE (case-insensitive) +#mptcp.relative_sequence_numbers: TRUE + +# You need to capture the handshake for this to work."Map TCP subflows to their respective MPTCP connections" +# TRUE or FALSE (case-insensitive) +#mptcp.analyze_mappings: FALSE + +# You need to enable DSS mapping analysis for this option to work +# TRUE or FALSE (case-insensitive) +#mptcp.intersubflows_retransmission: FALSE + +# Whether the MQ dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#mq.desegment: TRUE + +# Whether the MQ dissector should reassemble MQ messages spanning multiple TSH segments +# TRUE or FALSE (case-insensitive) +#mq.reassembly: TRUE + +# When dissecting PCF there can be a lot of parameters. You can limit the number of parameter decoded, before it continue with the next PCF. +# A decimal number +#mqpcf.maxprm: 999 + +# When dissecting a parameter of a PCFm, if it is a StringList, IntegerList or Integer64 List, You can limit the number of elements displayed, before it continues with the next Parameter. +# A decimal number +#mqpcf.maxlst: 20000 + +# Specifies that the raw text of the MSRP message should be displayed in addition to the dissection tree +# TRUE or FALSE (case-insensitive) +#msrp.display_raw_text: TRUE + +# Where available, show which protocol and frame caused this MSRP stream to be created +# TRUE or FALSE (case-insensitive) +#msrp.show_setup_info: TRUE + +# Whether the MTP2 dissector should use extended sequence numbers as described in Q.703, Annex A as a default. +# TRUE or FALSE (case-insensitive) +#mtp2.use_extended_sequence_numbers: FALSE + +# This only works for SCCP traffic for now +# TRUE or FALSE (case-insensitive) +#mtp3.heuristic_standard: FALSE + +# The SS7 standard used in MTP3 packets +# One of: ITU, ANSI, Chinese ITU, Japan +# (case-insensitive). +#mtp3.standard: ITU + +# The structure of the pointcodes in ITU networks +# One of: Unstructured, 3-8-3, 4-3-4-3 +# (case-insensitive). +#mtp3.itu_pc_structure: Unstructured + +# The structure of the pointcodes in Japan networks +# One of: Unstructured, 7-4-5, 3-4-4-5 +# (case-insensitive). +#mtp3.japan_pc_structure: Unstructured + +# Use 5-bit (instead of 8-bit) SLS in ANSI MTP3 packets +# TRUE or FALSE (case-insensitive) +#mtp3.ansi_5_bit_sls: FALSE + +# Use 5-bit (instead of 4-bit) SLS in Japan MTP3 packets +# TRUE or FALSE (case-insensitive) +#mtp3.japan_5_bit_sls: FALSE + +# Format for point code in the address columns +# One of: Decimal, Hexadecimal, NI-Decimal, NI-Hexadecimal, Dashed +# (case-insensitive). +#mtp3.addr_format: Dashed + +# Decode the spare bits of the SIO as the MSU priority (a national option in ITU) +# TRUE or FALSE (case-insensitive) +#mtp3.itu_priority: FALSE + +# Whether the MySQL dissector should reassemble MySQL buffers spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#mysql.desegment_buffers: TRUE + +# Whether the MySQL dissector should display the SQL query string in the INFO column. +# TRUE or FALSE (case-insensitive) +#mysql.show_sql_query: FALSE + +# Always dissect NAS EPS messages as plain +# TRUE or FALSE (case-insensitive) +#nas-eps.dissect_plain: FALSE + +# This should work when the NAS ciphering algorithm is NULL (128-EEA0) +# TRUE or FALSE (case-insensitive) +#nas-eps.null_decipher: TRUE + +# No description +# TRUE or FALSE (case-insensitive) +#nas-eps.user_data_container_as_ip: TRUE + +# Whether the Nasdaq ITCH dissector should decode Chi X extensions. +# TRUE or FALSE (case-insensitive) +#nasdaq_itch.chi_x: TRUE + +# Whether the Nasdaq-SoupTCP dissector should reassemble messages spanning multiple TCP segments. +# TRUE or FALSE (case-insensitive) +#nasdaq_soup.desegment: TRUE + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch1_content: MAC_CONTENT_DCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch2_content: MAC_CONTENT_DCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch3_content: MAC_CONTENT_DCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch4_content: MAC_CONTENT_DCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch5_content: MAC_CONTENT_CS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch6_content: MAC_CONTENT_CS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch7_content: MAC_CONTENT_CS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch8_content: MAC_CONTENT_DCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch9_content: MAC_CONTENT_PS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch10_content: MAC_CONTENT_UNKNOWN + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch11_content: MAC_CONTENT_PS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch12_content: MAC_CONTENT_PS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch13_content: MAC_CONTENT_CS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch14_content: MAC_CONTENT_PS_DTCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch15_content: MAC_CONTENT_CCCH + +# foo +# One of: MAC_CONTENT_UNKNOWN, MAC_CONTENT_DCCH, MAC_CONTENT_PS_DTCH, MAC_CONTENT_CS_DTCH, MAC_CONTENT_CCCH +# (case-insensitive). +#nbap.lch16_content: MAC_CONTENT_DCCH + +# Whether the NBD dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings +# TRUE or FALSE (case-insensitive) +#nbd.desegment_nbd_messages: TRUE + +# Whether the NBSS dissector should reassemble packets spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#nbss.desegment_nbss_commands: TRUE + +# Whether the NCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ncp.desegment: TRUE + +# Whether the NCP dissector should defragment NDS messages spanning multiple reply packets. +# TRUE or FALSE (case-insensitive) +#ncp.defragment_nds: TRUE + +# Dissect the NetWare Information Structure as NetWare 5.x or higher or as older NetWare 3.x. +# TRUE or FALSE (case-insensitive) +#ncp.newstyle: TRUE + +# Whether the NCP dissector should echo the NDS Entry ID to name resolves to the expert table. +# TRUE or FALSE (case-insensitive) +#ncp.eid_2_expert: TRUE + +# Whether the NCP dissector should echo NCP connection information to the expert table. +# TRUE or FALSE (case-insensitive) +#ncp.connection_2_expert: FALSE + +# Whether the NCP dissector should echo protocol errors to the expert table. +# TRUE or FALSE (case-insensitive) +#ncp.error_2_expert: TRUE + +# Whether the NCP dissector should echo server information to the expert table. +# TRUE or FALSE (case-insensitive) +#ncp.server_2_expert: TRUE + +# Whether the NCP dissector should echo file open/close/oplock information to the expert table. +# TRUE or FALSE (case-insensitive) +#ncp.file_2_expert: FALSE + +# Version of the NDMP protocol to assume if the version can not be automatically detected from the capture +# One of: Version 2, Version 3, Version 4, Version 5 +# (case-insensitive). +#ndmp.default_protocol_version: Version 4 + +# Whether the NDMP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ndmp.desegment: TRUE + +# Whether the dissector should defragment NDMP messages spanning multiple packets. +# TRUE or FALSE (case-insensitive) +#ndmp.defragment: TRUE + +# Whether the NDPS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ndps.desegment_tcp: TRUE + +# Whether the NDPS dissector should reassemble fragmented NDPS messages spanning multiple SPX packets +# TRUE or FALSE (case-insensitive) +#ndps.desegment_spx: TRUE + +# Whether or not the NDPS dissector should show object id's and other details +# TRUE or FALSE (case-insensitive) +#ndps.show_oid: FALSE + +# Whether the NetBIOS dissector should defragment messages spanning multiple frames +# TRUE or FALSE (case-insensitive) +#netbios.defragment: TRUE + +# Whether the Netsync dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#netsync.desegment_netsync_messages: TRUE + +# Whether the dissector should snoop the FH to filename mappings by looking inside certain packets +# TRUE or FALSE (case-insensitive) +#nfs.file_name_snooping: FALSE + +# Whether the dissector should snoop the full pathname for files for matching FH's +# TRUE or FALSE (case-insensitive) +#nfs.file_full_name_snooping: FALSE + +# With this option display filters for nfs fhandles (nfs.fh.{name|full_name|hash}) will find both the request and response packets for a RPC call, even if the actual fhandle is only present in one of the packets +# TRUE or FALSE (case-insensitive) +#nfs.fhandle_find_both_reqrep: FALSE + +# When enabled, this option will print the NFSv4 tag (if one exists) in the Info column in the Summary pane +# TRUE or FALSE (case-insensitive) +#nfs.display_nfsv4_tag: TRUE + +# When enabled, shows only the significant NFSv4 Operations in the info column. Others (like GETFH, PUTFH, etc) are not displayed +# TRUE or FALSE (case-insensitive) +#nfs.display_major_nfsv4_ops: TRUE + +# Whether the Authentication Extension data contains the source address. Some Cisco IOS implementations forgo this part of RFC2332. +# TRUE or FALSE (case-insensitive) +#nhrp.auth_ext_has_addr: TRUE + +# Whether the dissector will track and match MSG and RES calls for asynchronous NLM +# TRUE or FALSE (case-insensitive) +#nlm.msg_res_matching: FALSE + +# In the standard the Source Node Identifier is the first byte and the Control Bit Vector is the second byte. Using this parameter they can be swapped +# TRUE or FALSE (case-insensitive) +#nm.swap_ctrl_and_src: TRUE + +# NT Password (used to decrypt payloads) +# A string +#ntlmssp.nt_password: + +# Range of NVMe Subsystem ports(default 4420) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#nvme-rdma.subsystem_ports: 4420 + +# Dissect custom olsr.org message types (compatible with rfc routing agents) +# TRUE or FALSE (case-insensitive) +#olsr.ff_olsrorg: TRUE + +# Dissect custom nrlolsr tc message (incompatible with rfc routing agents) +# TRUE or FALSE (case-insensitive) +#olsr.nrlolsr: TRUE + +# SSL/TLS Ports range +# A string denoting an positive integer range (e.g., "1-20,30-40") +#opa.fe.ssl.port: 3249-3252 + +# Attempt to parse mad payload even when MAD.Status is non-zero +# TRUE or FALSE (case-insensitive) +#opa.mad.parse_mad_error: FALSE + +# Whether the OpenFlow dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#openflow.desegment: TRUE + +# To be able to fully dissect SSDO and SPDO packages, a valid UDID for the SCM has to be provided +# A string +#opensafety.scm_udid: 00:00:00:00:00:00 + +# Automatically assign a detected SCM UDID (by reading SNMT->SNTM_assign_UDID_SCM) and set it for the file +# TRUE or FALSE (case-insensitive) +#opensafety.scm_udid_autoset: TRUE + +# A comma-separated list of nodes to be filtered during dissection +# A string +#opensafety.filter_nodes: + +# If set to true, only nodes in the list will be shown, otherwise they will be hidden +# TRUE or FALSE (case-insensitive) +#opensafety.filter_show_nodes_in_filterlist: TRUE + +# Port used by any UDP demo implementation to transport data +# A decimal number +#opensafety.network_udp_port: 9877 + +# UDP port used by SercosIII to transport data +# A decimal number +#opensafety.network_udp_port_sercosiii: 8755 + +# In an SercosIII/UDP transport stream, openSAFETY frame 2 will be expected before frame 1 +# TRUE or FALSE (case-insensitive) +#opensafety.network_udp_frame_first_sercosiii: FALSE + +# In the transport stream, openSAFETY frame 2 will be expected before frame 1 +# TRUE or FALSE (case-insensitive) +#opensafety.network_udp_frame_first: FALSE + +# Modbus/TCP words can be transcoded either big- or little endian. Default will be little endian +# TRUE or FALSE (case-insensitive) +#opensafety.mbtcp_big_endian: FALSE + +# Enables additional information in the dissection for better debugging an openSAFETY trace +# TRUE or FALSE (case-insensitive) +#opensafety.debug_verbose: FALSE + +# Enable heuristic dissection for openSAFETY over UDP encoded traffic +# TRUE or FALSE (case-insensitive) +#opensafety.enable_udp: TRUE + +# Enable heuristic dissection for Modbus/TCP +# TRUE or FALSE (case-insensitive) +#opensafety.enable_mbtcp: TRUE + +# Display the data between openSAFETY packets +# TRUE or FALSE (case-insensitive) +#opensafety.display_intergap_data: FALSE + +# SPDOs may only be found in cyclic data, SSDOs/SNMTS only in acyclic data +# TRUE or FALSE (case-insensitive) +#opensafety.classify_transport: TRUE + +# Port used by the openSAFETY over UDP data transport +# A decimal number +#opensafety_udp.network_udp_port: 9877 + +# If tls-auth detection fails, you can choose to override detection and set tls-auth yourself +# TRUE or FALSE (case-insensitive) +#openvpn.tls_auth_detection_override: FALSE + +# If the parameter --tls-auth is used, the following preferences must also be defined. +# TRUE or FALSE (case-insensitive) +#openvpn.tls_auth: FALSE + +# If the parameter --tls-auth is used, a HMAC header is being inserted. +# The default HMAC algorithm is SHA-1 which generates a 160 bit HMAC, therefore 20 bytes should be ok. +# The value must be between 20 (160 bits) and 64 (512 bits). +# A decimal number +#openvpn.tls_auth_hmac_size: 20 + +# If the parameter --tls-auth is used, an additional packet-id for replay protection is inserted after the HMAC signature. This field can either be 4 bytes or 8 bytes including an optional time_t timestamp long. +# This option is only evaluated if tls_auth_hmac_size > 0. +# The default value is TRUE. +# TRUE or FALSE (case-insensitive) +#openvpn.long_format: TRUE + +# Whether the Openwire dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#openwire.desegment: TRUE + +# Whether verbose type and length information are displayed in the protocol tree +# TRUE or FALSE (case-insensitive) +#openwire.verbose_type: FALSE + +# Whether the OPSI dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#opsi.desegment_opsi_messages: TRUE + +# Whether segmented TPKT datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#osi.tpkt_reassemble: FALSE + +# Whether segmented RTSE datagrams should be reassembled. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rtse.reassemble: TRUE + +# Whether the IDMP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#idmp.desegment_idmp_messages: TRUE + +# Whether segmented IDMP datagrams should be reassembled. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#idmp.reassemble: TRUE + +# Reassemble fragmented P_Mul packets +# TRUE or FALSE (case-insensitive) +#p_mul.reassemble: TRUE + +# Make the P_Mul dissector use relative message id number instead of absolute ones +# TRUE or FALSE (case-insensitive) +#p_mul.relative_msgid: TRUE + +# Calculate sequence/acknowledgement analysis +# TRUE or FALSE (case-insensitive) +#p_mul.seq_ack_analysis: TRUE + +# Type of content in Data_PDU +# One of: No decoding, BER encoded ASN.1, Compressed Data Type +# (case-insensitive). +#p_mul.decode: No decoding + +# Attempt to decode parts of the message that aren't fully understood yet +# TRUE or FALSE (case-insensitive) +#papi.experimental_decode: FALSE + +# SCCP (and SUA) SSNs to decode as PCAP +# A string denoting an positive integer range (e.g., "1-20,30-40") +#pcap.ssn: + +# Whether the PCLI summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#pcli.summary_in_tree: TRUE + +# Show uncompressed User-Plane data as IP +# TRUE or FALSE (case-insensitive) +#pdcp-lte.show_user_plane_as_ip: TRUE + +# Show unciphered Signalling-Plane data as RRC +# TRUE or FALSE (case-insensitive) +#pdcp-lte.show_signalling_plane_as_rrc: TRUE + +# Do sequence number analysis +# One of: No-Analysis, Only-RLC-frames, Only-PDCP-frames +# (case-insensitive). +#pdcp-lte.check_sequence_numbers: Only-RLC-frames + +# Attempt to decode ROHC data +# TRUE or FALSE (case-insensitive) +#pdcp-lte.dissect_rohc: FALSE + +# Can show RLC, PDCP or Traffic layer info in Info column +# One of: RLC Info, PDCP Info, Traffic Info +# (case-insensitive). +#pdcp-lte.layer_to_show: RLC Info + +# If RRC Security Info not seen, e.g. in Handover +# One of: EEA0 (NULL), EEA1 (SNOW3G), EEA2 (AES), EEA3 (ZUC) +# (case-insensitive). +#pdcp-lte.default_ciphering_algorithm: EEA0 (NULL) + +# If RRC Security Info not seen, e.g. in Handover +# One of: EIA0 (NULL), EIA1 (SNOW3G), EIA2 (AES), EIA3 (ZUC) +# (case-insensitive). +#pdcp-lte.default_integrity_algorithm: EIA0 (NULL) + +# N.B. only possible if build with algorithm support, and have key available and configured +# TRUE or FALSE (case-insensitive) +#pdcp-lte.decipher_signalling: TRUE + +# N.B. only possible if build with algorithm support, and have key available and configured +# TRUE or FALSE (case-insensitive) +#pdcp-lte.decipher_userplane: FALSE + +# N.B. only possible if build with algorithm support, and have key available and configured +# TRUE or FALSE (case-insensitive) +#pdcp-lte.verify_integrity: TRUE + +# Ignore the LTE RRC security algorithm configuration, to be used when PDCP is already deciphered in the capture +# TRUE or FALSE (case-insensitive) +#pdcp-lte.ignore_rrc_sec_params: FALSE + +# Whether the dissector should put the internal PER data in the tree or if it should hide it +# TRUE or FALSE (case-insensitive) +#per.display_internal_per_fields: FALSE + +# Whether or not UID and PID fields are dissected in big or little endian +# TRUE or FALSE (case-insensitive) +#pflog.uid_endian: TRUE + +# Whether to check the validity of the PGM checksum +# TRUE or FALSE (case-insensitive) +#pgm.check_checksum: TRUE + +# Whether the PIM payload is shown off of the main tree or encapsulated within the PIM options +# TRUE or FALSE (case-insensitive) +#pim.payload_tree: TRUE + +# The password to used to decrypt the encrypted elements within the PKCS#12 file +# A string +#pkcs12.password: + +# Whether to try and decrypt the encrypted data within the PKCS#12 with a NULL password +# TRUE or FALSE (case-insensitive) +#pkcs12.try_null_password: FALSE + +# Whether the PN-RT summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#pn_rt.summary_in_tree: TRUE + +# Reassemble PNIO Fragments and get them decoded +# TRUE or FALSE (case-insensitive) +#pn_rt.desegment: TRUE + +# Protocol payload type +# One of: Data, Sony FeliCa, NXP MiFare, ISO 7816 +# (case-insensitive). +#pn532.prtype532: Data + +# Whether the PNIO dissector is allowed to use detailed PROFIsafe dissection of cyclic data frames +# TRUE or FALSE (case-insensitive) +#pn_io.pnio_ps_selection: TRUE + +# Select your Networkpath to your GSD-Files. +# A path to a directory +#pn_io.pnio_ps_networkpath: + +# Whether the POP dissector should reassemble RETR and TOP responses and spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#pop.desegment_data: TRUE + +# Whether fragmented 802.11 aggregated MPDUs should be reassembled +# TRUE or FALSE (case-insensitive) +#ppi.reassemble: TRUE + +# The type of PPP frame checksum (none, 16-bit, 32-bit) +# One of: None, 16-Bit, 32-Bit +# (case-insensitive). +#ppp.fcs_type: None + +# Default Protocol ID to be used for PPPMuxCP +# A hexadecimal number +#ppp.default_proto_id: 0 + +# Whether PPP Multilink frames use 12-bit sequence numbers +# TRUE or FALSE (case-insensitive) +#mp.short_seqno: FALSE + +# Maximum number of PPP Multilink fragments to try to reassemble into one frame +# A decimal number +#mp.max_fragments: 6 + +# Age off unreassmbled fragments after this many packets +# A decimal number +#mp.fragment_aging: 4000 + +# Show values of tags and lengths of data fields +# TRUE or FALSE (case-insensitive) +#pppoed.show_tags_and_lengths: FALSE + +# Try to dissect all length-delimited field as string. +# TRUE or FALSE (case-insensitive) +#protobuf.try_dissect_all_length_delimited_field_as_string: FALSE + +# Try to dissect length-delimited field as repeated. +# TRUE or FALSE (case-insensitive) +#protobuf.try_dissect_length_delimited_field_as_repeated: FALSE + +# Try to show all possible field types for each field according to wire type. +# TRUE or FALSE (case-insensitive) +#protobuf.show_all_possible_field_types: FALSE + +# Properly translates vendor specific opcodes +# One of: Unknown vendor, Eastman Kodak, Canon, Nikon, Casio EX-F1, Microsoft / MTP, Olympus E series +# (case-insensitive). +#ptpip.vendor: Unknown vendor + +# Whether the PVFS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#pvfs.desegment: TRUE + +# Whether the Q.931 dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#q931.desegment_h323_messages: TRUE + +# Reassemble segmented Q.931 messages (Q.931 - Annex H) +# TRUE or FALSE (case-insensitive) +#q931.reassembly: TRUE + +# Decode ISO/IEC cause coding standard as ITU-T +# TRUE or FALSE (case-insensitive) +#q931.iso_iec_cause_coding: FALSE + +# Type of Facility encoding +# One of: Dissect facility as QSIG, Dissect facility as ETSI +# (case-insensitive). +#q932.facility_encoding: Dissect facility as QSIG + +# Set the UDP base port for the Quake III Arena Server +# A decimal number +#quake3.udp.arena_port: 27960 + +# Set the UDP base port for the Quake III Arena Master Server +# A decimal number +#quake3.udp.master_port: 27950 + +# Shared secret used to decode User Passwords and validate Response Authenticators +# A string +#radius.shared_secret: + +# Whether to check or not if Response Authenticator is correct. You need to define shared secret for this to work. +# TRUE or FALSE (case-insensitive) +#radius.validate_authenticator: FALSE + +# Whether to add or not to the tree the AVP's payload length +# TRUE or FALSE (case-insensitive) +#radius.show_length: FALSE + +# Whether to interpret 241-246 as extended attributes according to RFC 6929 +# TRUE or FALSE (case-insensitive) +#radius.disable_extended_attributes: FALSE + +# The SCCP SubSystem Number for RANAP (default 142) +# A decimal number +#ranap.sccp_ssn: 142 + +# Attempt to dissect RRC message embedded in RRC-Container IE +# TRUE or FALSE (case-insensitive) +#ranap.dissect_rrc_container: FALSE + +# Where available, show which protocol and frame caused this RDT stream to be created +# TRUE or FALSE (case-insensitive) +#rdt.show_setup_info: TRUE + +# Whether fragmented RELOAD datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#reload.defragment: TRUE + +# Length of the NodeId as defined in the overlay. +# A decimal number +#reload.nodeid_length: 16 + +# topology plugin defined in the overlay +# A string +#reload.topology_plugin: CHORD-RELOAD + +# Display the third and forth bytes of the RIPv2 header as the Routing Domain field (introduced in RFC 1388 [January 1993] and obsolete as of RFC 1723 [November 1994]) +# TRUE or FALSE (case-insensitive) +#rip.display_routing_domain: FALSE + +# When enabled, try to reassemble SDUs from the various PDUs received +# TRUE or FALSE (case-insensitive) +#rlc.perform_reassembly: TRUE + +# When enabled, if data is not present, don't report as an error, but instead add expert info to indicate that headers were omitted +# TRUE or FALSE (case-insensitive) +#rlc.header_only_mode: FALSE + +# When enabled, RLC will ignore sequence numbers reported in 'Security Mode Command'/'Security Mode Complete' (RRC) messages when checking if frames are ciphered +# TRUE or FALSE (case-insensitive) +#rlc.ignore_rrc_cipher_indication: FALSE + +# When enabled, RLC will assume all payloads in RLC frames are ciphered +# TRUE or FALSE (case-insensitive) +#rlc.ciphered_data: FALSE + +# LI size in bits, either 7 or 15 bit +# One of: 7 bits, 15 bits, Let upper layers decide +# (case-insensitive). +#rlc.li_size: Let upper layers decide + +# Attempt to keep track of PDUs for AM channels, and point out problems +# One of: No-Analysis, Only-MAC-frames, Only-RLC-frames +# (case-insensitive). +#rlc-lte.do_sequence_analysis_am: Only-MAC-frames + +# Attempt to keep track of PDUs for UM channels, and point out problems +# One of: No-Analysis, Only-MAC-frames, Only-RLC-frames +# (case-insensitive). +#rlc-lte.do_sequence_analysis: Only-MAC-frames + +# Call PDCP dissector for signalling PDUs. Note that without reassembly, it canonly be called for complete PDUs (i.e. not segmented over RLC) +# TRUE or FALSE (case-insensitive) +#rlc-lte.call_pdcp_for_srb: TRUE + +# Call PDCP dissector for user-plane PDUs. Note that without reassembly, it canonly be called for complete PDUs (i.e. not segmented over RLC) +# One of: Off, 7-bit SN, 12-bit SN, 15-bit SN, 18-bit SN, Use signalled value +# (case-insensitive). +#rlc-lte.call_pdcp_for_drb: Use signalled value + +# Call RRC dissector for CCCH PDUs +# TRUE or FALSE (case-insensitive) +#rlc-lte.call_rrc_for_ccch: TRUE + +# Call RRC dissector for MCCH PDUs Note that without reassembly, it canonly be called for complete PDUs (i.e. not segmented over RLC) +# TRUE or FALSE (case-insensitive) +#rlc-lte.call_rrc_for_mcch: FALSE + +# Call ip dissector for MTCH PDUs Note that without reassembly, it canonly be called for complete PDUs (i.e. not segmented over RLC) +# TRUE or FALSE (case-insensitive) +#rlc-lte.call_ip_for_mtch: FALSE + +# When enabled, if data is not present, don't report as an error, but instead add expert info to indicate that headers were omitted +# TRUE or FALSE (case-insensitive) +#rlc-lte.header_only_mode: FALSE + +# When enabled, attempts to re-assemble upper-layer SDUs that are split over more than one RLC PDU. Note: does not currently support out-of-order or re-segmentation. N.B. sequence analysis must also be turned on in order for reassembly to work +# TRUE or FALSE (case-insensitive) +#rlc-lte.reassembly: TRUE + +# Call RRC dissector for CCCH PDUs +# TRUE or FALSE (case-insensitive) +#rlc-nr.call_rrc_for_ccch: TRUE + +# When enabled, if data is not present, don't report as an error, but instead add expert info to indicate that headers were omitted +# TRUE or FALSE (case-insensitive) +#rlc-nr.header_only_mode: FALSE + +# Whether the RPC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rpc.desegment_rpc_over_tcp: TRUE + +# Whether the RPC dissector should defragment RPC-over-TCP messages. +# TRUE or FALSE (case-insensitive) +#rpc.defragment_rpc_over_tcp: TRUE + +# Set the maximum size of RPCoverTCP PDUs. If the size field of the record marker is larger than this value it will not be considered a valid RPC PDU. +# A decimal number +#rpc.max_tcp_pdu_size: 4194304 + +# Whether the RPC dissector should attempt to dissect RPC PDUs containing programs that are not known to Wireshark. This will make the heuristics significantly weaker and elevate the risk for falsely identifying and misdissecting packets significantly. +# TRUE or FALSE (case-insensitive) +#rpc.dissect_unknown_programs: FALSE + +# Whether the RPC dissector should attempt to locate RPC PDU boundaries when initial fragment alignment is not known. This may cause false positives, or slow operation. +# TRUE or FALSE (case-insensitive) +#rpc.find_fragment_start: FALSE + +# Whether the RPCAP dissector should reassemble PDUs spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rpcap.desegment_pdus: TRUE + +# Whether the packets should be decoded according to the link-layer type. +# TRUE or FALSE (case-insensitive) +#rpcap.decode_content: TRUE + +# Default link-layer type to use if an Open Reply packet has not been received. +# A decimal number +#rpcap.linktype: 4294967295 + +# RPKI-Router Protocol TCP TLS port if other than the default +# A decimal number +#rpkirtr.tcp.rpkirtr_tls.port: 324 + +# Controls the display of the session's client username in the info column. This is only displayed if the packet containing it was seen during this capture session. +# TRUE or FALSE (case-insensitive) +#rsh.info_show_client_username: FALSE + +# Controls the display of the session's server username in the info column. This is only displayed if the packet containing it was seen during this capture session. +# TRUE or FALSE (case-insensitive) +#rsh.info_show_server_username: TRUE + +# Controls the display of the command being run on the server by this session in the info column. This is only displayed if the packet containing it was seen during this capture session. +# TRUE or FALSE (case-insensitive) +#rsh.info_show_command: FALSE + +# Use ipaccess nanoBTS specific definitions for RSL +# TRUE or FALSE (case-insensitive) +#gsm_abis_rsl.use_ipaccess_rsl: FALSE + +# The Physical Context Information field is not specified This information should be not be analysed by BSC, but merely forwarded from one TRX/channel to another. +# TRUE or FALSE (case-insensitive) +#gsm_abis_rsl.dissect_phy_ctx_inf: TRUE + +# Specifies whether Wireshark should decode and display sub-messages within BUNDLE messages +# TRUE or FALSE (case-insensitive) +#rsvp.process_bundle: TRUE + +# Specifies how Wireshark should dissect generalized labels +# One of: data (no interpretation), SONET/SDH ("S, U, K, L, M" scheme), Wavelength Label (G.694 frequency grid), ODUk Label +# (case-insensitive). +#rsvp.generalized_label_options: data (no interpretation) + +# Set the TCP port for RSYNC messages +# A decimal number +#rsync.tcp_port: 873 + +# Whether the RSYNC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rsync.desegment: TRUE + +# RTCDC SCTP PPID if other than the default +# A decimal number +#rtcdc.sctp.ppi: 50 + +# Where available, show which protocol and frame caused this RTCP stream to be created +# TRUE or FALSE (case-insensitive) +#rtcp.show_setup_info: TRUE + +# Try to work out network delay by comparing time between packets as captured and delays as seen by endpoint +# TRUE or FALSE (case-insensitive) +#rtcp.show_roundtrip_calculation: FALSE + +# Minimum (absolute) calculated roundtrip delay time in milliseconds that should be reported +# A decimal number +#rtcp.roundtrip_min_threshhold: 10 + +# Whether the RTMPT dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rtmpt.desegment: TRUE + +# The largest acceptable packet size for reassembly +# A decimal number +#rtmpt.max_packet_size: 32768 + +# Where available, show which protocol and frame caused this RTP stream to be created +# TRUE or FALSE (case-insensitive) +#rtp.show_setup_info: TRUE + +# Whether subdissector can request RTP streams to be reassembled +# TRUE or FALSE (case-insensitive) +#rtp.desegment_rtp_streams: TRUE + +# If an RTP version 0 packet is encountered, it can be treated as an invalid or ZRTP packet, a CLASSIC-STUN packet, or a T.38 packet +# One of: Invalid or ZRTP packets, STUN packets, CLASSIC-STUN packets, T.38 packets, SPRT packets +# (case-insensitive). +#rtp.version0_type: Invalid or ZRTP packets + +# Payload Type for RFC2198 Redundant Audio Data +# A decimal number +#rtp.rfc2198_payload_type: 99 + +# This is the value of the Payload Type field that specifies RTP Events +# A decimal number +#rtpevent.event_payload_type_value: 101 + +# This is the value of the Payload Type field that specifies Cisco Named Signaling Events +# A decimal number +#rtpevent.cisco_nse_payload_type_value: 100 + +# This is the value of the Payload Type field that specifies RTP-MIDI +# A decimal number +#rtpmidi.midi_payload_type_value: 0 + +# Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based upon port numbers found in RTPproxy answers +# TRUE or FALSE (case-insensitive) +#rtpproxy.establish_conversation: TRUE + +# Maximum timeout value in waiting for reply from RTPProxy (in milliseconds). +# A decimal number +#rtpproxy.reply.timeout: 1000 + +# Specifies the maximum number of samples dissected in a DATA_BATCH submessage. Increasing this value may affect performances if the trace has a lot of big batched samples. +# A decimal number +#rtps.max_batch_samples_dissected: 16 + +# Shows the Topic Name and Type Name of the samples. +# TRUE or FALSE (case-insensitive) +#rtps.enable_topic_info: FALSE + +# Whether the RTSP dissector should reassemble headers of a request spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#rtsp.desegment_headers: TRUE + +# Whether the RTSP dissector should use the "Content-length:" value to desegment the body of a request spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#rtsp.desegment_body: TRUE + +# Set the port for RUA messages (Default of 29169) +# A decimal number +#rua.port: 29169 + +# Set the SCTP port for S1AP messages +# A decimal number +#s1ap.sctp.port: 36412 + +# Dissect TransparentContainers that are opaque to S1AP +# TRUE or FALSE (case-insensitive) +#s1ap.dissect_container: TRUE + +# Select whether LTE TransparentContainer should be dissected as NB-IOT or legacy LTE +# One of: Automatic, Legacy LTE, NB-IoT +# (case-insensitive). +#s1ap.dissect_lte_container_as: Automatic + +# Show length of text field +# TRUE or FALSE (case-insensitive) +#sametime.show_length: FALSE + +# reassemble packets +# TRUE or FALSE (case-insensitive) +#sametime.reassemble: TRUE + +# Whether the SASP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#sasp.desegment_sasp_messages: TRUE + +# The source point code (usually MSC) (to determine whether message is uplink or downlink) +# A hexadecimal number +#sccp.source_pc: 0 + +# Show parameter length in the protocol tree +# TRUE or FALSE (case-insensitive) +#sccp.show_length: FALSE + +# Whether SCCP messages should be reassembled +# TRUE or FALSE (case-insensitive) +#sccp.defragment_xudt: TRUE + +# Whether to keep information about messages and their associations +# TRUE or FALSE (case-insensitive) +#sccp.trace_sccp: FALSE + +# Show SLR, DLR, and CAUSE Parameters in the Information Column of the Summary +# TRUE or FALSE (case-insensitive) +#sccp.show_more_info: FALSE + +# Set the source and destination addresses to the GT digits (if present). This may affect TCAP's ability to recognize which messages belong to which TCAP session. +# TRUE or FALSE (case-insensitive) +#sccp.set_addresses: FALSE + +# The protocol which should be used to dissect the payload if nothing else has claimed it +# A string +#sccp.default_payload: + +# When Target Cannot Be Identified, Decode SCSI Messages As +# One of: Block Device, Sequential Device, Object Based Storage Device, Medium Changer Device, Multimedia Device +# (case-insensitive). +#scsi.decode_scsi_messages_as: Block Device + +# Whether fragmented SCSI DATA IN/OUT transfers should be reassembled +# TRUE or FALSE (case-insensitive) +#scsi.defragment: FALSE + +# Show source and destination port numbers in the protocol tree +# TRUE or FALSE (case-insensitive) +#sctp.show_port_numbers_in_tree: TRUE + +# The type of checksum used in SCTP packets +# One of: None, Adler 32, CRC 32c, Automatic +# (case-insensitive). +#sctp.checksum: None + +# Show always SCTP control chunks in the Info column +# TRUE or FALSE (case-insensitive) +#sctp.show_always_control_chunks: TRUE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port or PPI +# TRUE or FALSE (case-insensitive) +#sctp.try_heuristic_first: FALSE + +# Whether fragmented SCTP user messages should be reassembled +# TRUE or FALSE (case-insensitive) +#sctp.reassembly: TRUE + +# Match TSNs and their SACKs +# TRUE or FALSE (case-insensitive) +#sctp.tsn_analysis: TRUE + +# Dissect upper layer protocols +# TRUE or FALSE (case-insensitive) +#sctp.ulp_dissection: TRUE + +# Data rate +# One of: Attempt to guess, OC-3, OC-12, OC-24, OC-48 +# (case-insensitive). +#sdh.data.rate: OC-3 + +# Specifies that RTP/RTCP/T.38/MSRP/etc streams are decoded based upon port numbers found in SDP payload +# TRUE or FALSE (case-insensitive) +#sdp.establish_conversation: TRUE + +# Whether the SEL Protocol dissector should desegment all messages spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#selfm.desegment: TRUE + +# Whether the SEL Protocol dissector should automatically pre-process Telnet data to remove duplicate 0xFF IAC bytes +# TRUE or FALSE (case-insensitive) +#selfm.telnetclean: TRUE + +# Perform CRC16 validation on Fast Messages +# TRUE or FALSE (case-insensitive) +#selfm.crc_verification: FALSE + +# List of word bits contained in SER equations (Comma-separated, no Quotes or Checksums) +# A string +#selfm.ser_list: + +# Whether the session dissector should reassemble messages spanning multiple SES segments +# TRUE or FALSE (case-insensitive) +#ses.desegment: TRUE + +# Enabling dissection makes it easy to view protocol details in each of the sampled headers. Disabling dissection may reduce noise caused when display filters match the contents of any sampled header(s). +# TRUE or FALSE (case-insensitive) +#sflow.enable_dissection: TRUE + +# This option only makes sense if dissection of sampled headers is enabled and probably not even then. +# TRUE or FALSE (case-insensitive) +#sflow.enable_analysis: FALSE + +# Port numbers used for SGsAP traffic (default 29118) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#sgsap.sctp_ports: 29118 + +# Preference whether to Dissect the UDVM code or not +# TRUE or FALSE (case-insensitive) +#sigcomp.display.udvm.code: FALSE + +# preference whether to display the bytecode in UDVM operands or not +# TRUE or FALSE (case-insensitive) +#sigcomp.display.bytecode: FALSE + +# preference whether to decompress message or not +# TRUE or FALSE (case-insensitive) +#sigcomp.decomp.msg: FALSE + +# preference whether to display the decompressed message as raw text or not +# TRUE or FALSE (case-insensitive) +#sigcomp.display.decomp.msg.as.txt: FALSE + +# 'No-Printout' = UDVM executes silently, then increasing detail about execution of UDVM instructions; Warning! CPU intense at high detail +# One of: No-Printout, Low-detail, Medium-detail, High-detail +# (case-insensitive). +#sigcomp.show.udvm.execution: No-Printout + +# Set the CA_system_ID used to decode ECM datagram as MIKEY +# A hexadecimal number +#simulcrypt.ca_system_id_mikey: 0x9999 + +# SIP Server TLS Port +# A decimal number +#sip.tls.port: 5061 + +# Specifies that the raw text of the SIP message should be displayed in addition to the dissection tree +# TRUE or FALSE (case-insensitive) +#sip.display_raw_text: FALSE + +# If the raw text of the SIP message is displayed, the trailing carriage return and line feed are not shown +# TRUE or FALSE (case-insensitive) +#sip.display_raw_text_without_crlf: FALSE + +# If enabled, only SIP/2.0 traffic will be dissected as SIP. Disable it to allow SIP traffic with a different version to be dissected as SIP. +# TRUE or FALSE (case-insensitive) +#sip.strict_sip_version: TRUE + +# Whether the SIP dissector should reassemble headers of a request spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#sip.desegment_headers: TRUE + +# Whether the SIP dissector should use the "Content-length:" value, if present, to reassemble the body of a request spanning multiple TCP segments, and reassemble chunked data spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#sip.desegment_body: TRUE + +# Whether retransmissions are detected coming from the same source port only. +# TRUE or FALSE (case-insensitive) +#sip.retrans_the_same_sport: TRUE + +# Whether SIP should delay tracking the media (e.g., RTP/RTCP) until an SDP offer is answered. If enabled, mid-dialog changes to SDP and media state only take effect if and when an SDP offer is successfully answered; however enabling this prevents tracking media in early-media call scenarios +# TRUE or FALSE (case-insensitive) +#sip.delay_sdp_changes: FALSE + +# Validate SIP authorizations with known credentials +# TRUE or FALSE (case-insensitive) +#sip.validate_authorization: FALSE + +# Whether the SKINNY dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#skinny.desegment: TRUE + +# Whether the dissector should reassemble the payload of SMB Transaction commands spanning multiple SMB PDUs +# TRUE or FALSE (case-insensitive) +#smb.trans_reassembly: TRUE + +# Whether the dissector should reassemble DCERPC over SMB commands +# TRUE or FALSE (case-insensitive) +#smb.dcerpc_reassembly: TRUE + +# Whether the dissector should snoop SMB and related CIFS protocols to discover and display Names associated with SIDs +# TRUE or FALSE (case-insensitive) +#smb.sid_name_snooping: FALSE + +# Whether the dissector should display SIDs and RIDs in hexadecimal rather than decimal +# TRUE or FALSE (case-insensitive) +#smb.sid_display_hex: FALSE + +# Whether the export object functionality will take the full path file name as file identifier +# TRUE or FALSE (case-insensitive) +#smb.eosmb_take_name_as_fid: FALSE + +# Whether the export object functionality will take the full path file name as file identifier +# TRUE or FALSE (case-insensitive) +#smb2.eosmb2_take_name_as_fid: FALSE + +# Whether the dissector should reassemble Named Pipes over SMB2 commands +# TRUE or FALSE (case-insensitive) +#smb2.pipe_reassembly: TRUE + +# Whether the SMB Direct dissector should reassemble fragmented payloads +# TRUE or FALSE (case-insensitive) +#smb_direct.reassemble_smb_direct: TRUE + +# Enable reassembling (default is enabled) +# TRUE or FALSE (case-insensitive) +#sml.reassemble: TRUE + +# Enable crc (default is disabled) +# TRUE or FALSE (case-insensitive) +#sml.crc: FALSE + +# Whether the SMP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#smp.desegment: TRUE + +# Whether the SMPP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#smpp.reassemble_smpp_over_tcp: TRUE + +# Whether the SMTP dissector should reassemble command and response lines spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#smtp.desegment_lines: TRUE + +# Whether the SMTP dissector should reassemble DATA command and lines spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#smtp.desegment_data: TRUE + +# Whether the SMTP dissector should decode base-64-encoded AUTH parameters +# TRUE or FALSE (case-insensitive) +#smtp.decryption: FALSE + +# Whether fragmented BIUs should be reassembled +# TRUE or FALSE (case-insensitive) +#sna.defragment: TRUE + +# Whether the SNMP OID should be shown in the info column +# TRUE or FALSE (case-insensitive) +#snmp.display_oid: TRUE + +# Whether the SNMP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#snmp.desegment: TRUE + +# ON - display dissected variables inside SNMP tree, OFF - display dissected variables in root tree after SNMP +# TRUE or FALSE (case-insensitive) +#snmp.var_in_tree: TRUE + +# Set whether dissector should run Snort itself or use user packet comments +# One of: Not looking for Snort alerts, From running Snort, From user comments +# (case-insensitive). +#snort.alerts_source: Not looking for Snort alerts + +# The name of the snort binary file to run +# A path to a file +#snort.binary: /usr/sbin/snort + +# The name of the file containing the snort IDS configuration. Typically snort.conf +# A path to a file +#snort.config: /etc/snort/snort.conf + +# Whether or not information about the rule set and detected alerts should be shown in the tree of every snort PDU tree +# TRUE or FALSE (case-insensitive) +#snort.show_rule_set_stats: FALSE + +# Whether or not expert info should be used to highlight fired alerts +# TRUE or FALSE (case-insensitive) +#snort.show_alert_expert_info: FALSE + +# Attempt to show alert in reassembled frame where possible +# TRUE or FALSE (case-insensitive) +#snort.show_alert_in_reassembled_frame: FALSE + +# Show unidentified fields ("padding") in packet dissections +# TRUE or FALSE (case-insensitive) +#solaredge.unknown: TRUE + +# Inverter system encryption key +# A string +#solaredge.system_encryption_key: + +# Whether the SoulSeek dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#slsk.desegment: TRUE + +# Whether the SoulSeek dissector should decompress all zlib compressed packets inside messages +# TRUE or FALSE (case-insensitive) +#slsk.decompress: TRUE + +# Whether the SoupBinTCP dissector should reassemble messages spanning multiple TCP segments. +# TRUE or FALSE (case-insensitive) +#soupbintcp.desegment: TRUE + +# Whether the SPDY dissector should reassemble multiple data frames into an entity body. +# TRUE or FALSE (case-insensitive) +#spdy.assemble_data_frames: TRUE + +# Whether to uncompress SPDY headers. +# TRUE or FALSE (case-insensitive) +#spdy.decompress_headers: TRUE + +# Whether to uncompress entity bodies that are compressed using "Content-Encoding: " +# TRUE or FALSE (case-insensitive) +#spdy.decompress_body: TRUE + +# Where available, show which protocol and frame caused this SPRT stream to be created +# TRUE or FALSE (case-insensitive) +#sprt.show_setup_info: TRUE + +# Show the DLCI field in I_OCTET messages as well as the frame that enabled/disabled the DLCI +# TRUE or FALSE (case-insensitive) +#sprt.show_dlci_info: TRUE + +# Whether the SRVLOC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#srvloc.desegment_tcp: TRUE + +# SSCOP payload (dissector to call on SSCOP payload) +# One of: Data (no further dissection), Q.2931, SSCF-NNI (MTP3-b), ALCAP, NBAP +# (case-insensitive). +#sscop.payload: Q.2931 + +# Whether the SSH dissector should reassemble SSH buffers spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ssh.desegment_buffers: TRUE + +# Redirect SSL debug to the file specified. Leave empty to disable debugging or use "-" to redirect output to stderr. +# A path to a file +#ssl.debug_file: + +# Semicolon-separated list of private RSA keys used for SSL decryption. Used by versions of Wireshark prior to 1.6 +# A string +#ssl.keys_list: + +# Whether the SSL dissector should reassemble SSL records spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ssl.desegment_ssl_records: TRUE + +# Whether the SSL dissector should reassemble SSL Application Data spanning multiple SSL records. +# TRUE or FALSE (case-insensitive) +#ssl.desegment_ssl_application_data: TRUE + +# For troubleshooting ignore the mac check result and decrypt also if the Message Authentication Code (MAC) fails. +# TRUE or FALSE (case-insensitive) +#ssl.ignore_ssl_mac_failed: FALSE + +# Pre-Shared-Key as HEX string. Should be 0 to 16 bytes. +# A string +#ssl.psk: + +# The name of a file which contains a list of +# (pre-)master secrets in one of the following formats: +# +# RSA +# RSA Session-ID: Master-Key: +# CLIENT_RANDOM +# PMS_CLIENT_RANDOM +# +# Where: +# = First 8 bytes of the Encrypted PMS +# = The Pre-Master-Secret (PMS) used to derive the MS +# = The SSL Session ID +# = The Master-Secret (MS) +# = The Client's random number from the ClientHello message +# +# (All fields are in hex notation) +# A path to a file +#ssl.keylog_file: + +# Whether the STANAG 5066 DTS Layer dissector should reassemble DPDUs spanning multiple TCP segments +# TRUE or FALSE (case-insensitive) +#s5066dts.proto_desegment: TRUE + +# Whether the S5066 SIS dissector should reassemble PDUs spanning multiple TCP segments. The default is to use reassembly. +# TRUE or FALSE (case-insensitive) +#s5066sis.desegment_pdus: TRUE + +# Whether the S5066 SIS dissector should dissect this edition of the STANAG. This edition was never formally approved and is very rare. The common edition is edition 1.2. +# TRUE or FALSE (case-insensitive) +#s5066sis.edition_one: FALSE + +# Whether the StarTeam dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#starteam.desegment: TRUE + +# Steam IHS Discovery UDP port if other than the default +# A decimal number +#steam_ihs_discovery.udp.port: 27036 + +# Whether the BPDU dissector should use 802.1t System ID Extensions when dissecting the Bridge Identifier +# TRUE or FALSE (case-insensitive) +#stp.use_system_id_extension: TRUE + +# Reassembles greater than MTU sized STT packets broken into segments on transmit +# TRUE or FALSE (case-insensitive) +#stt.reassemble: TRUE + +# Whether to validate the STT checksum or not. +# TRUE or FALSE (case-insensitive) +#stt.check_checksum: FALSE + +# Version used by Wireshark +# One of: Internet Draft version 08, RFC 3868 +# (case-insensitive). +#sua.version: RFC 3868 + +# Set the source and destination addresses to the PC or GT digits, depending on the routing indicator. This may affect TCAP's ability to recognize which messages belong to which TCAP session. +# TRUE or FALSE (case-insensitive) +#sua.set_addresses: FALSE + +# No description +# TRUE or FALSE (case-insensitive) +#sv.decode_data_as_phsmeas: FALSE + +# Whether the T.38 dissector should decode using the Pre-Corrigendum T.38 ASN.1 specification (1998). +# TRUE or FALSE (case-insensitive) +#t38.use_pre_corrigendum_asn1_specification: TRUE + +# Whether a UDP packet that looks like RTP version 2 packet will be dissected as RTP packet or T.38 packet. If enabled there is a risk that T.38 UDPTL packets with sequence number higher than 32767 may be dissected as RTP. +# TRUE or FALSE (case-insensitive) +#t38.dissect_possible_rtpv2_packets_as_rtp: FALSE + +# Whether the dissector should reassemble T.38 PDUs spanning multiple TCP segments when TPKT is used over TCP. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#t38.reassembly: TRUE + +# Whether T.38 is used with TPKT for TCP +# One of: Never, Always, Maybe +# (case-insensitive). +#t38.tpkt_usage: Maybe + +# Where available, show which protocol and frame caused this T.38 stream to be created +# TRUE or FALSE (case-insensitive) +#t38.show_setup_info: TRUE + +# Whether the TACACS+ dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tacplus.desegment: TRUE + +# TACACS+ Encryption Key +# A string +#tacplus.key: + +# Whether the TALI dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tali.reassemble: TRUE + +# SCCP (and SUA) SSNs to decode as TCAP +# A string denoting an positive integer range (e.g., "1-20,30-40") +#tcap.ssn: + +# Activate the analyse for Response Time +# TRUE or FALSE (case-insensitive) +#tcap.srt: FALSE + +# Statistics for Response Time +# TRUE or FALSE (case-insensitive) +#tcap.persistentsrt: FALSE + +# Maximal delay for message repetition +# A decimal number +#tcap.repetitiontimeout: 10 + +# Maximal delay for message lost +# A decimal number +#tcap.losttimeout: 30 + +# Whether the TCP summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#tcp.summary_in_tree: TRUE + +# Whether to validate the TCP checksum or not. (Invalid checksums will cause reassembly, if enabled, to fail.) +# TRUE or FALSE (case-insensitive) +#tcp.check_checksum: FALSE + +# Whether subdissector can request TCP streams to be reassembled +# TRUE or FALSE (case-insensitive) +#tcp.desegment_tcp_streams: TRUE + +# Make the TCP dissector analyze TCP sequence numbers to find and flag segment retransmissions, missing segments and RTT +# TRUE or FALSE (case-insensitive) +#tcp.analyze_sequence_numbers: TRUE + +# Make the TCP dissector use relative sequence numbers instead of absolute ones. To use this option you must also enable "Analyze TCP sequence numbers". +# TRUE or FALSE (case-insensitive) +#tcp.relative_sequence_numbers: TRUE + +# Make the TCP dissector use this scaling factor for streams where the signalled scaling factor is not visible in the capture +# One of: Not known, 0 (no scaling), 1 (multiply by 2), 2 (multiply by 4), 3 (multiply by 8), 4 (multiply by 16), 5 (multiply by 32), 6 (multiply by 64), 7 (multiply by 128), 8 (multiply by 256), 9 (multiply by 512), 10 (multiply by 1024), 11 (multiply by 2048), 12 (multiply by 4096), 13 (multiply by 8192), 14 (multiply by 16384) +# (case-insensitive). +#tcp.default_window_scaling: Not known + +# Make the TCP dissector track the number on un-ACKed bytes of data are in flight per packet. To use this option you must also enable "Analyze TCP sequence numbers". This takes a lot of memory but allows you to track how much data are in flight at a time and graphing it in io-graphs +# TRUE or FALSE (case-insensitive) +#tcp.track_bytes_in_flight: TRUE + +# Calculate timestamps relative to the first frame and the previous frame in the tcp conversation +# TRUE or FALSE (case-insensitive) +#tcp.calculate_timestamps: TRUE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port +# TRUE or FALSE (case-insensitive) +#tcp.try_heuristic_first: FALSE + +# Do not place the TCP Timestamps in the summary line +# TRUE or FALSE (case-insensitive) +#tcp.ignore_tcp_timestamps: FALSE + +# Do not call any subdissectors for Retransmitted or OutOfOrder segments +# TRUE or FALSE (case-insensitive) +#tcp.no_subdissector_on_error: TRUE + +# Assume TCP Experimental Options (253, 254) have a Magic Number and use it for dissection +# TRUE or FALSE (case-insensitive) +#tcp.dissect_experimental_options_with_magic: TRUE + +# Collect and store process information retrieved from IPFIX dissector +# TRUE or FALSE (case-insensitive) +#tcp.display_process_info_from_ipfix: FALSE + +# Whether the TCPROS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tcpros.desegment_tcpros_messages: TRUE + +# The TDMoE channel that contains the D-Channel. +# A decimal number +#tdmoe.d_channel: 24 + +# The TDMoD channel that contains the D-Channel. +# A decimal number +#tdmop.d_channel: 16 + +# The bitmask of channels in uncompressed TDMoP frame +# A hexadecimal number +#tdmop.ts_mask: 0xffffffff + +# The ethertype assigned to TDMoP (without IP/UDP) stream +# A hexadecimal number +#tdmop.ethertype: 0 + +# Whether the TDS dissector should reassemble TDS buffers spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tds.desegment_buffers: TRUE + +# Whether the TDS dissector should defragment messages spanning multiple Netlib buffers +# TRUE or FALSE (case-insensitive) +#tds.defragment: TRUE + +# Hint as to version of TDS protocol being decoded +# One of: Not Specified, TDS 4.x, TDS 5.0, TDS 7.0, TDS 7.1, TDS 7.2, TDS 7.3, TDS 7.3A, TDS 7.3B, TDS 7.4 +# (case-insensitive). +#tds.protocol_type: Not Specified + +# Hint as to whether to decode TDS protocol as little-endian or big-endian. (TDS7/8 always decoded as little-endian) +# One of: Little Endian, Big Endian +# (case-insensitive). +#tds.endian_type: Little Endian + +# Whether the captured data include carrier number +# TRUE or FALSE (case-insensitive) +#tetra.include_carrier_number: TRUE + +# 32-bit sequence counter for hash +# A string +#thread.thr_seq_ctr: + +# Set if the PAN ID should be used as the first two octets of the master key (PAN ID LSB), (PAN ID MSB), Key[2]... +# TRUE or FALSE (case-insensitive) +#thread.thr_use_pan_id_in_key: FALSE + +# Set if the Thread sequence counter should be automatically acquired from Key ID mode 2 MLE messages. +# TRUE or FALSE (case-insensitive) +#thread.thr_auto_acq_thr_seq_ctr: TRUE + +# Thrift TLS Port +# A decimal number +#thrift.tls.port: 0 + +# Try the default RSA key in use by nearly all Open Tibia servers +# TRUE or FALSE (case-insensitive) +#tibia.try_otserv_key: TRUE + +# Shows active character for every packet +# TRUE or FALSE (case-insensitive) +#tibia.show_char_name: TRUE + +# Shows account name/password or session key for every packet +# TRUE or FALSE (case-insensitive) +#tibia.show_acc_info: TRUE + +# Shows which XTEA key was applied for a packet +# TRUE or FALSE (case-insensitive) +#tibia.show_xtea_key: FALSE + +# Only decrypt packets and dissect login packets. Pass game commands to the data dissector +# TRUE or FALSE (case-insensitive) +#tibia.dissect_game_commands: FALSE + +# Whether the Tibia dissector should reassemble packets spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tibia.reassemble_tcp_segments: TRUE + +# Time display type +# One of: UTC, Local +# (case-insensitive). +#time.display_time_type: Local + +# Whether TIPCv1 SEGMENTATION_MANAGER datagrams should be reassembled +# TRUE or FALSE (case-insensitive) +#tipc.defragment: TRUE + +# Whether to try to dissect TIPC data or not +# TRUE or FALSE (case-insensitive) +#tipc.dissect_tipc_data: TRUE + +# Try to decode a TIPCv2 packet using an heuristic sub-dissector before using a registered sub-dissector +# TRUE or FALSE (case-insensitive) +#tipc.try_heuristic_first: FALSE + +# TIPC 1.7 removes/adds fields (not) available in TIPC 1.5/1.6 while keeping the version number 2 in the packages. "ALL" shows all fields that were ever used in both versions. +# One of: ALL, TIPC 1.5/1.6, TIPC 1.7 +# (case-insensitive). +#tipc.handle_v2_as: ALL + +# Whether the TIPC-over-TCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tipc.desegment: TRUE + +# Whether the TNS dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tns.desegment_tns_messages: TRUE + +# Whether Linux mangling of the link-layer header should be checked for and worked around +# TRUE or FALSE (case-insensitive) +#tr.fix_linux_botches: FALSE + +# Whether the TPKT dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#tpkt.desegment: TRUE + +# TCP ports to be decoded as TPKT (default: 102) +# A string denoting an positive integer range (e.g., "1-20,30-40") +#tpkt.tcp.ports: 102 + +# Whether to load the Database or not; not loading the DB disables the protocol; Wireshark has to be restarted for the setting to take effect. +# TRUE or FALSE (case-insensitive) +#tpncp.load_db: FALSE + +# No description +# A decimal number +#tpncp.tcp.trunkpack_port: 2424 + +# No description +# A decimal number +#tpncp.udp.trunkpack_port: 2424 + +# Position of the capture unit that produced this trace. This setting affects the way TRANSUM handles TCP Retransmissions. See the manual for details. +# One of: Client, Intermediate, Service +# (case-insensitive). +#transum.capture_position: Client + +# Set this to match to the TCP subdissector reassembly setting +# TRUE or FALSE (case-insensitive) +#transum.reassembly: TRUE + +# Add and remove ports numbers separated by commas +# Ranges are supported e.g. 25,80,2000-3000,5432 +# A string denoting an positive integer range (e.g., "1-20,30-40") +#transum.tcp_port_ranges: 25,80,443,1433 + +# Add and remove ports numbers separated by commas +# Ranges are supported e.g. 123,137-139,520-521,2049 +# A string denoting an positive integer range (e.g., "1-20,30-40") +#transum.udp_port_ranges: 137-139 + +# Set this to discard any packet in the direction client to service, +# with a 1-byte payload of 0x00 and the ACK flag set +# TRUE or FALSE (case-insensitive) +#transum.orphan_ka_discard: FALSE + +# RTE data will be added to the first request packet +# TRUE or FALSE (case-insensitive) +#transum.rte_on_first_req: FALSE + +# RTE data will be added to the last request packet +# TRUE or FALSE (case-insensitive) +#transum.rte_on_last_req: TRUE + +# RTE data will be added to the first response packet +# TRUE or FALSE (case-insensitive) +#transum.rte_on_first_rsp: FALSE + +# RTE data will be added to the last response packet +# TRUE or FALSE (case-insensitive) +#transum.rte_on_last_rsp: FALSE + +# Set this only to troubleshoot problems +# TRUE or FALSE (case-insensitive) +#transum.debug_enabled: FALSE + +# Critical Traffic Mask (base hex) +# A hexadecimal number +#tte.ct_mask_value: 0 + +# Critical Traffic Marker (base hex) +# A hexadecimal number +#tte.ct_marker_value: 0xffffffff + +# Setup RTP/RTCP conversations when parsing Start RTP messages +# TRUE or FALSE (case-insensitive) +#ua.setup_conversations: TRUE + +# NOE SIP Protocol +# TRUE or FALSE (case-insensitive) +#uasip.noesip: FALSE + +# IPv4 address of the proxy (Invalid values will be ignored) +# A string +#uasip.proxy_ipaddr: + +# IPv4 address of the DHS3 system. (Used only in case of identical source and destination ports) +# A string +#uaudp.system_ip: + +# Whether the UCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ucp.desegment_ucp_messages: TRUE + +# Whether the UDP summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#udp.summary_in_tree: TRUE + +# Try to decode a packet using an heuristic sub-dissector before using a sub-dissector registered to a specific port +# TRUE or FALSE (case-insensitive) +#udp.try_heuristic_first: FALSE + +# Whether to validate the UDP checksum +# TRUE or FALSE (case-insensitive) +#udp.check_checksum: FALSE + +# Collect process flow information from IPFIX +# TRUE or FALSE (case-insensitive) +#udp.process_info: FALSE + +# Ignore an invalid checksum coverage field and continue dissection +# TRUE or FALSE (case-insensitive) +#udplite.ignore_checksum_coverage: TRUE + +# Whether to validate the UDP-Lite checksum +# TRUE or FALSE (case-insensitive) +#udplite.check_checksum: FALSE + +# Whether the ULP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ulp.desegment_ulp_messages: TRUE + +# Whether the UMA dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#uma.desegment_ucp_messages: TRUE + +# Try to decode a packet using a heuristic sub-dissector before attempting to dissect the packet using the "usb.bulk", "usb.interrupt" or "usb.control" dissector tables. +# TRUE or FALSE (case-insensitive) +#usb.try_heuristics: TRUE + +# Activate workaround for weird Ettus UHD header offset on data packets +# TRUE or FALSE (case-insensitive) +#vrt.ettus_uhd_header_format: FALSE + +# Whether the vlan summary line should be shown in the protocol tree +# TRUE or FALSE (case-insensitive) +#vlan.summary_in_tree: TRUE + +# The (hexadecimal) Ethertype used to indicate 802.1QinQ VLAN in VLAN tunneling. +# A hexadecimal number +#vlan.qinq_ethertype: 0x9100 + +# IEEE 802.1Q specification version used (802.1Q-1998 uses 802.1D-2004 for PRI values) +# One of: IEEE 802.1Q-1998, IEEE 802.1Q-2005, IEEE 802.1Q-2011 +# (case-insensitive). +#vlan.version: IEEE 802.1Q-2011 + +# Number of priorities supported, and number of those drop eligible (not used for 802.1Q-1998) +# One of: 8 Priorities, 0 Drop Eligible, 7 Priorities, 1 Drop Eligible, 6 Priorities, 2 Drop Eligible, 5 Priorities, 3 Drop Eligible +# (case-insensitive). +#vlan.priority_drop: 8 Priorities, 0 Drop Eligible + +# Whether the VNC dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#vnc.desegment: TRUE + +# Dynamic payload types which will be interpreted as vp8; Values must be in the range 96 - 127 +# A string denoting an positive integer range (e.g., "1-20,30-40") +#vp8.dynamic.payload.type: + +# There is some ambiguity on how to calculate V3 checksumsAs in V3 will use a pseudo header(which may only be implemented for IPv6 by some manufacturers) +# TRUE or FALSE (case-insensitive) +#vrrp.v3_checksum_as_in_v2: FALSE + +# Enable this preference if you want to view the WBXML tokens without the representation in a media type (e.g., WML). Tokens will show up as Tag_0x12, attrStart_0x08 or attrValue_0x0B for example. +# TRUE or FALSE (case-insensitive) +#wbxml.skip_wbxml_token_mapping: FALSE + +# Enable this preference if you want to skip the parsing of the WBXML tokens that constitute the body of the WBXML document. Only the WBXML header will be dissected (and visualized) then. +# TRUE or FALSE (case-insensitive) +#wbxml.disable_wbxml_token_parsing: FALSE + +# Select dissector for websocket text +# One of: No subdissection, Line based text, As json, As SIP +# (case-insensitive). +#websocket.text_type: No subdissection + +# No description +# TRUE or FALSE (case-insensitive) +#websocket.decompress: TRUE + +# Set the maximum Basic CID used in the Wimax decoder (if other than the default of 320). Note: The maximum Primary CID is double the maximum Basic CID. +# A decimal number +#wmx.basic_cid_max: 320 + +# Set to TRUE to use the Corrigendum 2 version of Wimax message decoding. Set to FALSE to use the 802.16e-2005 version. +# TRUE or FALSE (case-insensitive) +#wmx.corrigendum_2_version: FALSE + +# Show transaction ID direction bit separately from the rest of the transaction ID field. +# TRUE or FALSE (case-insensitive) +#wimaxasncp.show_transaction_id_d_bit: FALSE + +# Print debug output to the console. +# TRUE or FALSE (case-insensitive) +#wimaxasncp.debug_enabled: FALSE + +# Version of the NWG that the R6 protocol complies with +# One of: R1.0 v1.0.0, R1.0 v1.2.0, R1.0 v1.2.1 +# (case-insensitive). +#wimaxasncp.nwg_version: R1.0 v1.2.1 + +# Whether the WINS-Replication dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#winsrepl.reassemble: TRUE + +# Whether the wow dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#wow.desegment: TRUE + +# If CALL REQUEST not seen or didn't specify protocol, dissect as QLLC/SNA +# TRUE or FALSE (case-insensitive) +#x25.payload_is_qllc_sna: FALSE + +# If CALL REQUEST has no data, assume the protocol handled is COTP +# TRUE or FALSE (case-insensitive) +#x25.call_request_nodata_is_cotp: FALSE + +# If CALL REQUEST not seen or didn't specify protocol, check user data before checking heuristic dissectors +# TRUE or FALSE (case-insensitive) +#x25.payload_check_data: FALSE + +# Reassemble fragmented X.25 packets +# TRUE or FALSE (case-insensitive) +#x25.reassemble: TRUE + +# Whether the X11 dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#x11.desegment: TRUE + +# Set the SCTP port for X2AP messages +# A decimal number +#x2ap.sctp.port: 36422 + +# Select whether RRC Context should be dissected as legacy LTE or NB-IOT +# One of: LTE, NB-IoT +# (case-insensitive). +#x2ap.dissect_rrc_context_as: LTE + +# Try to recognize XML encoded in Unicode (UCS-2BE) +# TRUE or FALSE (case-insensitive) +#xml.heuristic_unicode: FALSE + +# Whether the XMPP dissector should reassemble messages. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings +# TRUE or FALSE (case-insensitive) +#xmpp.desegment: TRUE + +# Whether the X.25-over-TCP dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings +# TRUE or FALSE (case-insensitive) +#xot.desegment: TRUE + +# Whether the X.25-over-TCP dissector should reassemble all X.25 packets before calling the X25 dissector. If the TCP packets arrive out-of-order, the X.25 reassembly can otherwise fail. To use this option, you should also enable "Reassemble X.25-over-TCP messages spanning multiple TCP segments", "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings and "Reassemble fragmented X.25 packets" in the X.25 protocol settings. +# TRUE or FALSE (case-insensitive) +#xot.x25_desegment: FALSE + +# Whether the YAMI dissector should reassemble messages spanning multiple TCP segments.To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#yami.desegment: TRUE + +# Whether the YMSG dissector should reassemble messages spanning multiple TCP segments. To use this option, you must also enable "Allow subdissectors to reassemble TCP streams" in the TCP protocol settings. +# TRUE or FALSE (case-insensitive) +#ymsg.desegment: TRUE + +# Specifies the security level to use in the +# decryption process. This value is ignored +# for ZigBee 2004 and unsecured networks. +# One of: No Security, No Encryption, 32-bit Integrity Protection, No Encryption, 64-bit Integrity Protection, No Encryption, 128-bit Integrity Protection, AES-128 Encryption, No Integrity Protection, AES-128 Encryption, 32-bit Integrity Protection, AES-128 Encryption, 64-bit Integrity Protection, AES-128 Encryption, 128-bit Integrity Protection +# (case-insensitive). +#zbee_nwk.seclevel: AES-128 Encryption, 32-bit Integrity Protection + +# Specifies the ZigBee Smart Energy version used when dissecting ZigBee APS messages within the Smart Energy Profile +# One of: SE 1.1b, SE 1.2, SE 1.2a, SE 1.2b, SE 1.4 +# (case-insensitive). +#zbee_aps.zbeeseversion: SE 1.4 + +####### Statistics ######## + +# Determines time between tap updates +# A decimal number +#statistics.update_interval: 3000 + +# If enabled burst rates will be calcuted for statistics that use the stats_tree system. Burst rates are calculated over a much shorter time interval than the rate column. +# TRUE or FALSE (case-insensitive) +#statistics.st_enable_burstinfo: TRUE + +# If selected the stats_tree statistics nodes will show the count of events within the burst window instead of a burst rate. Burst rate is calculated as number of events within burst window divided by the burst windown length. +# TRUE or FALSE (case-insensitive) +#statistics.st_burst_showcount: FALSE + +# Sets the duration of the time interval into which events are grouped when calculating the burst rate. Higher resolution (smaller number) increases processing overhead. +# A decimal number +#statistics.st_burst_resolution: 5 + +# Sets the duration of the sliding window during which the burst rate is measured. Longer window relative to burst rate resolution increases processing overhead. Will be truncated to a multiple of burst resolution. +# A decimal number +#statistics.st_burst_windowlen: 100 + +# Sets the default column by which stats based on the stats_tree system is sorted. +# One of: Node name (topic/item), Item count, Average value of the node, Minimum value of the node, Maximum value of the node, Burst rate of the node +# (case-insensitive). +#statistics.st_sort_defcolflag: Item count + +# When selected, statistics based on the stats_tree system will by default be sorted in descending order. +# TRUE or FALSE (case-insensitive) +#statistics.st_sort_defdescending: TRUE + +# When selected, the item/node names of statistics based on the stats_tree system will be sorted taking case into account. Else the case of the name will be ignored. +# TRUE or FALSE (case-insensitive) +#statistics.st_sort_casesensitve: TRUE + +# When selected, the stats_tree nodes representing a range of values (0-49, 50-100, etc.) will always be sorted by name (the range of the node). Else range nodes are sorted by the same column as the rest of the tree. +# TRUE or FALSE (case-insensitive) +#statistics.st_sort_rng_nameonly: TRUE + +# When selected, the stats_tree nodes representing a range of values (0-49, 50-100, etc.) will always be sorted ascending; else it follows the sort direction of the tree. Only effective if "Always sort 'range' nodes by name" is also selected. +# TRUE or FALSE (case-insensitive) +#statistics.st_sort_rng_fixorder: TRUE + +# When selected, the full name (including menu path) of the stats_tree plug-in is show in windows. If cleared the plug-in name is shown without menu path (only the part of the name after last '/' character.) +# TRUE or FALSE (case-insensitive) +#statistics.st_sort_showfullname: FALSE diff --git a/files/prefix_delegation b/files/prefix_delegation new file mode 100755 index 0000000..b9876ff --- /dev/null +++ b/files/prefix_delegation @@ -0,0 +1,137 @@ +# This script assigns a delegated IPv6 prefix obtained via DHCPv6 to another interface +# +# Usage: This scrips is designed to be called from dhclient-script (isc-dhcp-client). +# +# LOCATION: /etc/dhcp/dhclient-exit-hooks.d/prefix_delegation +# RECOMMENDED PACKAGES: ipv6calc + +# CONFIGURATION OPTIONS + +# Define the interface to which a delegated prefix will be assigned +# This must not be the same interface on which the prefix is learned! +IA_PD_IFACE="br0" + +# Provide a space separated list of services that need to be restarted or reloaded after a prefix change +# Services must be controllable via systemd's systemctl, the default action is restart +# Service names may be followed by a colon and action name, to override the default action +# Supported actions are: restart and reload +# Example: IA_PD_SERVICES="shorewall6:reload dnsmasq" +IA_PD_SERVICES="hostapd radvd" + +# Define the location of the ipv6calc executable, if installed +# If this is empty or no executable file, no EUI-64 based IPv6 address will be calculated for the interface set in IA_PD_IFACE; instead, a static interface identifier (::1) will be appended to the prefix +# Example: IA_PD_IPV6CALC="/usr/bin/ipv6calc" +IA_PD_IPV6CALC="/usr/bin/ipv6calc" + +# Set to yes to make logging more verbose +IA_PD_DEBUG="yes" + +# END OF CONFIGURATION OPTIONS + +fn_calc_ip6addr() { + [ -z "$1" ] && return + local ia_pd_mac + local ia_pd_addr + [ -e "/sys/class/net/${IA_PD_IFACE}/address" ] && ia_pd_mac="$(cat /sys/class/net/${IA_PD_IFACE}/address)" + if [ -n "$ia_pd_mac" ] && [ -n "$IA_PD_IPV6CALC" ] && [ -x "$IA_PD_IPV6CALC" ]; then + [ "$IA_PD_DEBUG" = "yes" ] && logger -t "dhcpv6-pd" -p daemon.debug "Debug: Determined MAC address $ia_pd_mac for interface $IA_PD_IFACE." + ia_pd_addr="$("$IA_PD_IPV6CALC" -I prefix+mac -A prefixmac2ipv6 -O ipv6addr "$1" "$ia_pd_mac")" + fi + if [ -z "$ia_pd_addr" ]; then + [ "$IA_PD_DEBUG" = "yes" ] && logger -t "dhcpv6-pd" -p daemon.debug "Debug: Failed to calculate EUI-64 based IPv6 address, using static client suffix ::1 instead." + echo "$1" | sed 's#::/#::1/#' + else + echo "$ia_pd_addr" + fi +} + +fn_restart_services() { + if [ -n "$IA_PD_SERVICES" ]; then + local pair + local action + local daemon + for pair in $IA_PD_SERVICES ; do + action="$(echo "$pair" | cut -d':' -f2)" + daemon="$(echo "$pair" | cut -d':' -f1)" + # Check if a valid action was provided or default to 'restart' + case $action in + reload) action="reload";; + *) action="restart";; + esac + # Check if daemon is active before trying to restart or reload it (avoids non-zero exit code) + if ! systemctl -q is-active "${daemon}.service" > /dev/null ; then + logger -t "dhcpv6-pd" -p daemon.info "Info: $daemon is inactive. No $action required." + continue + fi + if systemctl -q "$action" "${daemon}.service" > /dev/null ; then + logger -t "dhcpv6-pd" -p daemon.info "Info: Performed $action of $daemon due to change of IPv6 prefix." + else + logger -t "dhcpv6-pd" -p daemon.err "Error: Failed to perform $action of $daemon after change of IPv6 prefix." + fi + done + elif [ "$IA_PD_DEBUG" = "yes" ]; then + logger -t "dhcpv6-pd" -p daemon.debug "Debug: No list of services to restart or reload defined." + fi +} + +fn_remove_prefix() { + [ -z "$1" ] && return + [ "$IA_PD_DEBUG" = "yes" ] && logger -t "dhcpv6-pd" -p daemon.debug "Debug: Old prefix $1 expired." + if [ "$(ip -6 addr show dev "$IA_PD_IFACE" scope global | wc -l)" -gt 0 ]; then + logger -t "dhcpv6-pd" -p daemon.info "Info: Flushing global IPv6 addresses from interface $IA_PD_IFACE." + if ! ip -6 addr flush dev "$IA_PD_IFACE" scope global ; then + logger -t "dhcpv6-pd" -p daemon.err "Error: Failed to flush global IPv6 addresses from interface $IA_PD_IFACE." + return + fi + # Restart services in case there is no new prefix to assign + [ -z "$new_ip6_prefix" ] && fn_restart_services + elif [ "$IA_PD_DEBUG" = "yes" ]; then + logger -t "dhcpv6-pd" -p daemon.debug "Debug: No global IPv6 addresses assigned to interface $IA_PD_IFACE." + fi +} + +fn_assign_prefix() { + [ -z "$1" ] && return + local new_ia_pd_addr + new_ia_pd_addr="$(fn_calc_ip6addr "$1")" + if [ -z "$new_ia_pd_addr" ]; then + logger -t "dhcpv6-pd" -p daemon.err "Error: Failed to calculate address for interface $IA_PD_IFACE and prefix $1" + return + fi + [ "$IA_PD_DEBUG" = "yes" ] && logger -t "dhcpv6-pd" -p daemon.debug "Debug: Received new prefix $1." + # dhclient may return an old_ip6_prefix even after a reboot, so manually check if the address is already assigned to the interface + if [ "$(ip -6 addr show dev "$IA_PD_IFACE" | grep -c "$new_ia_pd_addr")" -lt 1 ]; then + logger -t "dhcpv6-pd" -p daemon.info "Info: Adding new address $new_ia_pd_addr to interface $IA_PD_IFACE." + if ! ip -6 addr add "$new_ia_pd_addr" dev "$IA_PD_IFACE" ; then + logger -t "dhcpv6-pd" -p daemon.err "Error: Failed to add new address $new_ia_pd_addr to interface $IA_PD_IFACE." + return + fi + fn_restart_services + elif [ "$IA_PD_DEBUG" = "yes" ]; then + logger -t "dhcpv6-pd" -p daemon.debug "Debug: Address $new_ia_pd_addr already assigned to interface $IA_PD_IFACE." + fi +} + +# Only execute on specific occasions +case $reason in + BOUND6|EXPIRE6|REBIND6|REBOOT6|RENEW6) + # Only execute if either an old or a new prefix is defined + if [ -n "$old_ip6_prefix" ] || [ -n "$new_ip6_prefix" ]; then + # Check if interface is defined and exits + if [ -z "$IA_PD_IFACE" ] || [ ! -e "/sys/class/net/${IA_PD_IFACE}" ]; then + logger -t "dhcpv6-pd" -p daemon.err "Error: Interface ${IA_PD_IFACE:-} not found. Cannot assign delegated prefix!" + else + logger -t "dhcpv6-pd" -p daemon.debug "Debug: got old $old_ip6_prefix and new $new_ip6_prefix." + oold_ip6_prefix=$(echo "$old_ip6_prefix" | sed 's|/62|/64|') + nnew_ip6_prefix=$(echo "$new_ip6_prefix" | sed 's|/62|/64|') + logger -t "dhcpv6-pd" -p daemon.debug "Debug: got old $oold_ip6_prefix and new $nnew_ip6_prefix." + # Remove old prefix if it differs from new prefix + [ -n "$oold_ip6_prefix" ] && [ "$oold_ip6_prefix" != "$nnew_ip6_prefix" ] && fn_remove_prefix "$oold_ip6_prefix" + # Assign new prefix + [ -n "$nnew_ip6_prefix" ] && fn_assign_prefix "$nnew_ip6_prefix" + fi + fi + ;; +esac + + diff --git a/files/radvd.conf b/files/radvd.conf new file mode 100644 index 0000000..210000f --- /dev/null +++ b/files/radvd.conf @@ -0,0 +1,13 @@ +interface br0 +{ + AdvSendAdvert on; + prefix ::/64 + { + DeprecatePrefix on; + AdvRouterAddr on; + }; + RDNSS fd00:24::1 { + AdvRDNSSLifetime 3600; + }; +}; + diff --git a/files/raspion-sudo b/files/raspion-sudo new file mode 100644 index 0000000..6c7221d --- /dev/null +++ b/files/raspion-sudo @@ -0,0 +1,3 @@ +Cmnd_Alias RASPION = /usr/local/sbin/contcap.sh, /usr/local/sbin/mitmoff.sh, /usr/local/sbin/mitmon.sh, /usr/local/sbin/mitmstat.sh, /usr/local/sbin/mitmweb.sh, /usr/local/sbin/scan.sh, /usr/local/sbin/canvul.sh, /bin/systemctl, /usr/bin/killall, /usr/bin/pgrep + +www-data ALL=(ALL) NOPASSWD: RASPION diff --git a/files/recent b/files/recent new file mode 100644 index 0000000..bb5d8ea --- /dev/null +++ b/files/recent @@ -0,0 +1,97 @@ +# Recent settings file for Wireshark 2.6.8. +# +# This file is regenerated each time Wireshark is quit +# and when changing configuration profile. +# So be careful, if you want to make manual changes here. + + +# Main Toolbar show (hide). +# TRUE or FALSE (case-insensitive). +gui.toolbar_main_show: TRUE + +# Filter Toolbar show (hide). +# TRUE or FALSE (case-insensitive). +gui.filter_toolbar_show: TRUE + +# Wireless Settings Toolbar show (hide). +# TRUE or FALSE (case-insensitive). +gui.wireless_toolbar_show: FALSE + +# Packet list show (hide). +# TRUE or FALSE (case-insensitive). +gui.packet_list_show: TRUE + +# Tree view show (hide). +# TRUE or FALSE (case-insensitive). +gui.tree_view_show: TRUE + +# Byte view show (hide). +# TRUE or FALSE (case-insensitive). +gui.byte_view_show: TRUE + +# Statusbar show (hide). +# TRUE or FALSE (case-insensitive). +gui.statusbar_show: TRUE + +# Packet list colorize (hide). +# TRUE or FALSE (case-insensitive). +gui.packet_list_colorize: TRUE + +# Timestamp display format. +# One of: RELATIVE, ABSOLUTE, ABSOLUTE_WITH_YMD, ABSOLUTE_WITH_YDOY, ABSOLUTE_WITH_DATE, DELTA, DELTA_DIS, EPOCH, UTC, UTC_WITH_YMD, UTC_WITH_YDOY, UTC_WITH_DATE +gui.time_format: RELATIVE + +# Timestamp display precision. +# One of: AUTO, SEC, DSEC, CSEC, MSEC, USEC, NSEC +gui.time_precision: AUTO + +# Seconds display format. +# One of: SECONDS, HOUR_MIN_SEC +gui.seconds_format: SECONDS + +# Zoom level. +# A decimal number. +gui.zoom_level: 0 + +# Bytes view display type. +# One of: HEX, BITS +gui.bytes_view: HEX + +# Bytes view text encoding. +# One of: FROM_PACKET, ASCII, EBCDIC +gui.bytes_encoding: FROM_PACKET + +# Main window upper (or leftmost) pane size. +# Decimal number. +gui.geometry_main_upper_pane: 223 + +# Main window middle pane size. +# Decimal number. +gui.geometry_main_lower_pane: 147 + +# Packet list column pixel widths. +# Each pair of strings consists of a column format and its pixel width. +column.width: %m, 66, %t, 98, %s, 178, %d, 178, %p, 74, %L, 58, %i, 1255 + +# Open conversation dialog tabs. +# List of conversation names, e.g. "TCP", "IPv6". +gui.conversation_tabs: + +# Open endpoint dialog tabs. +# List of endpoint names, e.g. "TCP", "IPv6". +gui.endpoint_tabs: + +# For RLC stats, whether to use RLC PDUs found inside MAC frames. +# TRUE or FALSE (case-insensitive). +gui.rlc_pdus_from_mac_frames: FALSE + +# Last directory navigated to in File Open dialog. +gui.fileopen_remembered_dir: /home/pi/public_html/caps + +# Additional Toolbars shown +# List of additional toolbars to show. +gui.additional_toolbar_show: + +# Interface Toolbars show. +# List of interface toolbars to show. +gui.interface_toolbar_show: diff --git a/files/scans.png b/files/scans.png new file mode 100644 index 0000000..7042d5a Binary files /dev/null and b/files/scans.png differ diff --git a/files/settings.ini b/files/settings.ini new file mode 100644 index 0000000..ee81eed --- /dev/null +++ b/files/settings.ini @@ -0,0 +1,3 @@ +[Settings] +gtk-auto-mnemonics=false +gtk-enable-mnemonics=false diff --git a/files/setupVars.conf b/files/setupVars.conf new file mode 100644 index 0000000..9b0bb75 --- /dev/null +++ b/files/setupVars.conf @@ -0,0 +1,26 @@ +WEBPASSWORD= +BLOCKING_ENABLED=false +DNSMASQ_LISTENING=single +PIHOLE_DNS_3=2001:4860:4860:0:0:0:0:8888 +PIHOLE_DNS_4=2001:4860:4860:0:0:0:0:8844 +DNS_FQDN_REQUIRED=true +DNS_BOGUS_PRIV=true +DNSSEC=false +CONDITIONAL_FORWARDING=false +DHCP_ACTIVE=true +DHCP_START=192.168.24.201 +DHCP_END=192.168.24.251 +DHCP_ROUTER=192.168.24.1 +DHCP_LEASETIME=24 +PIHOLE_DOMAIN=lan +DHCP_IPv6=true +DHCP_rapid_commit=false +PIHOLE_INTERFACE=br0 +IPV4_ADDRESS=192.168.24.1/24 +IPV6_ADDRESS=fd00:24::1 +PIHOLE_DNS_1=8.8.8.8 +PIHOLE_DNS_2=8.8.4.4 +QUERY_LOGGING=true +INSTALL_WEB_SERVER=true +INSTALL_WEB_INTERFACE=true +LIGHTTPD_ENABLED=true diff --git a/files/shellinabox b/files/shellinabox new file mode 100644 index 0000000..6412a43 --- /dev/null +++ b/files/shellinabox @@ -0,0 +1,18 @@ +# Should shellinaboxd start automatically +SHELLINABOX_DAEMON_START=1 + +# TCP port that shellinboxd's webserver listens on +SHELLINABOX_PORT=4200 + +# Parameters that are managed by the system and usually should not need +# changing: +# SHELLINABOX_DATADIR=/var/lib/shellinabox +# SHELLINABOX_USER=shellinabox +# SHELLINABOX_GROUP=shellinabox + +# Any optional arguments (e.g. extra service definitions). Make sure +# that that argument is quoted. +# +# Beeps are disabled because of reports of the VLC plugin crashing +# Firefox on Linux/x86_64. +SHELLINABOX_ARGS="--no-beep -t" diff --git a/files/timezone b/files/timezone new file mode 100644 index 0000000..94d5acc --- /dev/null +++ b/files/timezone @@ -0,0 +1 @@ +Europe/Berlin diff --git a/files/wireshark.png b/files/wireshark.png new file mode 100644 index 0000000..0dd724b Binary files /dev/null and b/files/wireshark.png differ diff --git a/files/wireshark.service b/files/wireshark.service new file mode 100644 index 0000000..b08867e --- /dev/null +++ b/files/wireshark.service @@ -0,0 +1,17 @@ +[Unit] +Description=wireshark +After=network.target +Requires=broadwayd.service + +[Service] +Type=simple +User=pi +ExecStart=/usr/bin/wireshark-gtk -i br0 --fullscreen -o gui.fileopen_remembered_dir:/home/pi/public_html/caps +Environment=XDG_RUNTIME_DIR=/home/pi/.cache +Environment=GDK_BACKEND=broadway +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target + diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..c55706f --- /dev/null +++ b/install.sh @@ -0,0 +1,151 @@ +#!/bin/bash + +# +# c't-Raspion, a Raspberry Pi based all in one sniffer +# for judging on IoT and smart home devices activity +# (c) 2019-2020 c't magazin, Germany, Hannover +# see: https://ct.de/-123456 for more information +# + +set -e + +WD=$(pwd) +LOG=/var/log/raspion.log +source ./.version +sudo touch $LOG +sudo chown pi:pi $LOG + +trap 'error_report $LINENO' ERR +error_report() { + echo "Installation leider fehlgeschlagen in Zeile $1." +} + +echo "==> Einrichtung des c't-Raspion ($VER)" | tee -a $LOG + +echo "* Raspbian aktualisieren ..." | tee -a $LOG +sudo apt-get update >> $LOG 2>&1 +sudo apt-get -y dist-upgrade >> $LOG 2>&1 + +echo "* Raspbian Sprachanpassungen ..." | tee -a $LOG +sudo debconf-set-selections debconf/keyboard-configuration >> $LOG 2>&1 +sudo cp files/keyboard /etc/default >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive keyboard-configuration >> $LOG 2>&1 + +NEWLANG=de_DE.UTF-8 +sudo cp files/locale.gen /etc >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive locales >> $LOG 2>&1 +sudo update-locale LANG=$NEWLANG >> $LOG 2>&1 + +sudo debconf-set-selections debconf/tzdata >> $LOG 2>&1 +sudo ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime >> $LOG 2>&1 +sudo cp files/timezone /etc >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive tzdata >> $LOG 2>&1 + +echo "* Pakete vorkonfigurieren ..." | tee -a $LOG +sudo debconf-set-selections debconf/wireshark >> $LOG 2>&1 +sudo debconf-set-selections debconf/iptables-persistent >> $LOG 2>&1 + +echo "* Pakete installieren ..." | tee -a $LOG +sudo apt-get install -y --no-install-recommends --allow-change-held-packages \ + hostapd mitmproxy bridge-utils ipv6calc iptables-persistent radvd \ + shellinabox nmap xsltproc lighttpd tcpreplay pwgen wireshark-gtk >> $LOG 2>&1 +cd /tmp +wget http://packages.ntop.org/RaspberryPI/apt-ntop_1.0.190416-469_all.deb >> $LOG 2>&1 +sudo dpkg -i apt-ntop_1.0.190416-469_all.deb >> $LOG 2>&1 +sudo apt-get install -y --no-install-recommends ntopng >> $LOG 2>&1 +sudo dpkg -i $WD/debs/*.deb >> $LOG 2>&1 +sudo apt-mark hold wireshark-gtk >> $LOG 2>&1 +sudo apt-mark hold libgtk-3-0 >> $LOG 2>&1 +sudo apt-mark hold libgtk-3-common >> $LOG 2>&1 +sudo apt-mark hold libgtk-3-bin >> $LOG 2>&1 + +sudo cp $WD/sbin/* /usr/local/sbin >> $LOG 2>&1 +sudo chmod +x /usr/local/sbin/*.sh >> $LOG 2>&1 +sudo cp $WD/files/prefix_delegation /etc/dhcp/dhclient-exit-hooks.d >> $LOG 2>&1 +sudo chmod +x /etc/dhcp/dhclient-exit-hooks.d/prefix_delegation >> $LOG 2>&1 + +echo "* Softwaregrundkonfiguration ..." | tee -a $LOG +sudo usermod -a -G wireshark pi >> $LOG 2>&1 +sudo usermod -a -G www-data pi >> $LOG 2>&1 +sudo cp $WD/files/ntopng.conf /etc/ntopng >> $LOG 2>&1 +sudo cp $WD/files/interfaces /etc/network >> $LOG 2>&1 +sudo cp $WD/files/hostapd.conf /etc/hostapd >> $LOG 2>&1 +sudo cp $WD/files/ipforward.conf /etc/sysctl.d >> $LOG 2>&1 +sudo cp $WD/files/hostname /etc/ >> $LOG 2>&1 +sudo cp $WD/files/raspion-sudo /etc/sudoers.d/ >> $LOG 2>&1 +sudo cp $WD/files/radvd.conf /etc/ >> $LOG 2>&1 +sudo mkdir -p /root/.mitmproxy >> $LOG 2>&1 +sudo cp $WD/files/config.yaml /root/.mitmproxy >> $LOG 2>&1 +mkdir -p /home/pi/.config/wireshark >> $LOG 2>&1 +cp $WD/files/recent /home/pi/.config/wireshark >> $LOG 2>&1 +cp $WD/files/preferences_wireshark /home/pi/.config/wireshark/preferences >> $LOG 2>&1 +sudo cp $WD/files/settings.ini /etc/gtk-3.0 >> $LOG 2>&1 +sudo cp -f $WD/files/shellinabox /etc/default >> $LOG 2>&1 +cd /usr/lib/python3/dist-packages/mitmproxy/addons/onboardingapp/static >> $LOG 2>&1 +sudo ln -sf /usr/share/fonts-font-awesome fontawesome >> $LOG 2>&1 +PW=$(pwgen --ambiguous 9) +sudo -s <> /etc/hostapd/hostapd.conf +HERE + +echo "* Firewall-Regeln setzen und speichern ..." | tee -a $LOG +sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE >> $LOG 2>&1 +sudo ip6tables -t nat -A POSTROUTING -o eth0 -s fd00:24::/64 -j MASQUERADE >> $LOG 2>&1 +sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1 +sudo ip6tables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1 +sudo netfilter-persistent save >> $LOG 2>&1 + +echo "* systemd-Units vorbereiten ..." | tee -a $LOG +sudo cp $WD/files/mitmweb.service /etc/systemd/system >> $LOG 2>&1 +sudo cp $WD/files/broadwayd.service /etc/systemd/system >> $LOG 2>&1 +sudo cp $WD/files/wireshark.service /etc/systemd/system >> $LOG 2>&1 +sudo systemctl enable mitmweb.service >> $LOG 2>&1 +sudo systemctl unmask hostapd >> $LOG 2>&1 +sudo systemctl enable radvd >> $LOG 2>&1 +sudo systemctl enable broadwayd >> $LOG 2>&1 +sudo systemctl enable wireshark >> $LOG 2>&1 + +echo "* Weboberfläche hinzufügen ..." | tee -a $LOG +cd /etc/lighttpd/conf-enabled >> $LOG 2>&1 +sudo ln -sf ../conf-available/10-userdir.conf 10-userdir.conf >> $LOG 2>&1 +sudo ln -sf ../conf-available/10-proxy.conf 10-proxy.conf >> $LOG 2>&1 +sudo cp $WD/files/10-dir-listing.conf . >> $LOG 2>&1 +sudo cp $WD/files/20-extport.conf . >> $LOG 2>&1 +mkdir -p /home/pi/public_html/scans >> $LOG 2>&1 +mkdir -p /home/pi/public_html/caps >> $LOG 2>&1 +sudo chmod g+s /home/pi/public_html/caps >> $LOG 2>&1 +sudo chmod 777 /home/pi/public_html/caps >> $LOG 2>&1 +sudo chgrp www-data /home/pi/public_html/caps >> $LOG 2>&1 +cp $WD/files/*.png /home/pi/public_html >> $LOG 2>&1 +cp $WD/files/*.php /home/pi/public_html >> $LOG 2>&1 +cp $WD/files/*.css /home/pi/public_html >> $LOG 2>&1 +cp $WD/files/*.js /home/pi/public_html >> $LOG 2>&1 +cp $WD/files/*.ico /home/pi/public_html >> $LOG 2>&1 + +echo "* Pi-hole installieren ..." | tee -a $LOG +if ! id pihole >/dev/null 2>&1; then + sudo adduser --no-create-home --disabled-login --disabled-password --shell /usr/sbin/nologin --gecos "" pihole >> $LOG 2>&1 +fi +sudo mkdir -p /etc/pihole >> $LOG 2>&1 +sudo chown pihole:pihole /etc/pihole >> $LOG 2>&1 +sudo cp $WD/files/setupVars.conf /etc/pihole >> $LOG 2>&1 +sudo -s <> $LOG 2>&1 +HERE +sudo chattr -f -i /etc/init.d/pihole-FTL >> $LOG 2>&1 +sudo cp $WD/files/pihole-FTL /etc/init.d/ >> $LOG 2>&1 +sudo chattr -f +i /etc/init.d/pihole-FTL >> $LOG 2>&1 +sudo systemctl daemon-reload >> $LOG 2>&1 +sudo systemctl restart pihole-FTL >> $LOG 2>&1 +sudo pihole -f restartdns >> $LOG 2>&1 +sudo cp $WD/files/hosts /etc/ >> $LOG 2>&1 + +echo "==> Installation des c't-Raspion erfolgreich abgeschlossen." | tee -a $LOG +echo "" +echo "Das Passwort für das WLAN zur Beobachtung lautet: $PW" +echo "Notieren Sie dieses bitte, ändern Sie auch gleich das Passwort" +echo "für den Benutzer pi (mit passwd)." +echo "" +echo "Starten Sie Ihren Raspberry Pi jetzt neu: sudo reboot now" + + diff --git a/install2.sh b/install2.sh new file mode 100755 index 0000000..cb4aa7a --- /dev/null +++ b/install2.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +# +# c't-Raspion, a Raspberry Pi based all in one sniffer +# for judging on IoT and smart home devices activity +# (c) 2019-2020 c't magazin, Germany, Hannover +# see: https://ct.de/-123456 for more information +# + +set -e + +WD=$(pwd) +LOG=/var/log/raspion.log +source ./.version +sudo touch $LOG +sudo chown pi:pi $LOG + +trap 'error_report $LINENO' ERR +error_report() { + echo "Installation leider fehlgeschlagen in Zeile $1." +} + +echo "==> Einrichtung des c't-Raspion ($VER)" | tee -a $LOG + +echo "* Hilfspakete hinzufügen, Paketlisten aktualisieren" | tee -a $LOG +sudo dpkg -i $WD/debs/raspion-keyring_2019_all.deb >> $LOG 2>&1 +sudo dpkg -i $WD/debs/apt-ntop_1.0.190416-469_all.deb >> $LOG 2>&1 +# the former calls apt-get update in postinst + +echo "* Raspbian aktualisieren ..." | tee -a $LOG +sudo apt-get -y --allow-downgrades dist-upgrade >> $LOG 2>&1 + +echo "* Raspbian Sprachanpassungen ..." | tee -a $LOG +sudo debconf-set-selections debconf/keyboard-configuration >> $LOG 2>&1 +sudo cp files/keyboard /etc/default >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive keyboard-configuration >> $LOG 2>&1 + +NEWLANG=de_DE.UTF-8 +sudo cp files/locale.gen /etc >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive locales >> $LOG 2>&1 +sudo update-locale LANG=$NEWLANG >> $LOG 2>&1 + +sudo debconf-set-selections debconf/tzdata >> $LOG 2>&1 +sudo ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime >> $LOG 2>&1 +sudo cp files/timezone /etc >> $LOG 2>&1 +sudo dpkg-reconfigure -fnoninteractive tzdata >> $LOG 2>&1 + +echo "* Pakete vorkonfigurieren ..." | tee -a $LOG +sudo debconf-set-selections debconf/wireshark >> $LOG 2>&1 +sudo debconf-set-selections debconf/iptables-persistent >> $LOG 2>&1 + +echo "* Pakete installieren ..." | tee -a $LOG +sudo apt-get install -y --allow-downgrades raspion --no-install-recommends >> $LOG 2>&1 + +echo "* Softwaregrundkonfiguration ..." | tee -a $LOG +sudo usermod -a -G wireshark pi >> $LOG 2>&1 +sudo usermod -a -G www-data pi >> $LOG 2>&1 +sudo cp $WD/files/ntopng.conf /etc/ntopng >> $LOG 2>&1 +sudo cp $WD/files/interfaces /etc/network >> $LOG 2>&1 +sudo cp $WD/files/hostapd.conf /etc/hostapd >> $LOG 2>&1 +sudo cp $WD/files/ipforward.conf /etc/sysctl.d >> $LOG 2>&1 +sudo cp $WD/files/hostname /etc/ >> $LOG 2>&1 +sudo cp $WD/files/raspion-sudo /etc/sudoers.d/ >> $LOG 2>&1 +sudo cp $WD/files/radvd.conf /etc/ >> $LOG 2>&1 +sudo mkdir -p /root/.mitmproxy >> $LOG 2>&1 +sudo cp $WD/files/config.yaml /root/.mitmproxy >> $LOG 2>&1 +mkdir -p /home/pi/.config/wireshark >> $LOG 2>&1 +cp $WD/files/recent /home/pi/.config/wireshark >> $LOG 2>&1 +cp $WD/files/preferences_wireshark /home/pi/.config/wireshark/preferences >> $LOG 2>&1 +sudo cp $WD/files/settings.ini /etc/gtk-3.0 >> $LOG 2>&1 +sudo cp -f $WD/files/shellinabox /etc/default >> $LOG 2>&1 +cd /usr/lib/python3/dist-packages/mitmproxy/addons/onboardingapp/static >> $LOG 2>&1 +sudo ln -sf /usr/share/fonts-font-awesome fontawesome >> $LOG 2>&1 +PW=$(pwgen --ambiguous 9) +sudo -s <> /etc/hostapd/hostapd.conf +HERE + +echo "* Firewall-Regeln setzen und speichern ..." | tee -a $LOG +sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE >> $LOG 2>&1 +sudo ip6tables -t nat -A POSTROUTING -o eth0 -s fd00:24::/64 -j MASQUERADE >> $LOG 2>&1 +sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1 +sudo ip6tables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 81 -i eth0 >> $LOG 2>&1 +sudo netfilter-persistent save >> $LOG 2>&1 + +echo "* systemd-Units vorbereiten ..." | tee -a $LOG +sudo systemctl enable mitmweb.service >> $LOG 2>&1 +sudo systemctl unmask hostapd >> $LOG 2>&1 +sudo systemctl enable radvd >> $LOG 2>&1 +sudo systemctl enable broadwayd >> $LOG 2>&1 +sudo systemctl enable wireshark >> $LOG 2>&1 + +echo "* Weboberfläche hinzufügen ..." | tee -a $LOG +cd /etc/lighttpd/conf-enabled >> $LOG 2>&1 +sudo ln -sf ../conf-available/10-userdir.conf 10-userdir.conf >> $LOG 2>&1 +sudo ln -sf ../conf-available/10-proxy.conf 10-proxy.conf >> $LOG 2>&1 +sudo cp $WD/files/10-dir-listing.conf . >> $LOG 2>&1 +sudo cp $WD/files/20-extport.conf . >> $LOG 2>&1 +sudo chmod g+s /home/pi/public_html/caps >> $LOG 2>&1 +sudo chmod 777 /home/pi/public_html/caps >> $LOG 2>&1 +sudo chgrp www-data /home/pi/public_html/caps >> $LOG 2>&1 + +echo "* Pi-hole installieren ..." | tee -a $LOG +if ! id pihole >/dev/null 2>&1; then + sudo adduser --no-create-home --disabled-login --disabled-password --shell /usr/sbin/nologin --gecos "" pihole >> $LOG 2>&1 +fi +sudo mkdir -p /etc/pihole >> $LOG 2>&1 +sudo chown pihole:pihole /etc/pihole >> $LOG 2>&1 +sudo cp $WD/files/setupVars.conf /etc/pihole >> $LOG 2>&1 +sudo -s <> $LOG 2>&1 +HERE +sudo chattr -f -i /etc/init.d/pihole-FTL >> $LOG 2>&1 +sudo cp $WD/files/pihole-FTL /etc/init.d/ >> $LOG 2>&1 +sudo chattr -f +i /etc/init.d/pihole-FTL >> $LOG 2>&1 +sudo systemctl daemon-reload >> $LOG 2>&1 +sudo systemctl restart pihole-FTL >> $LOG 2>&1 +sudo pihole -f restartdns >> $LOG 2>&1 +sudo cp $WD/files/hosts /etc/ >> $LOG 2>&1 + +echo "==> Installation des c't-Raspion erfolgreich abgeschlossen." | tee -a $LOG +echo "" +echo "Das Passwort für das WLAN zur Beobachtung lautet: $PW" +echo "Notieren Sie dieses bitte, ändern Sie auch gleich das Passwort" +echo "für den Benutzer pi (mit passwd)." +echo "" +echo "Starten Sie Ihren Raspberry Pi jetzt neu: sudo reboot now" + + diff --git a/patches/ct_raspion_gtk+3.0-3.24.5.patch b/patches/ct_raspion_gtk+3.0-3.24.5.patch new file mode 100644 index 0000000..c480a64 --- /dev/null +++ b/patches/ct_raspion_gtk+3.0-3.24.5.patch @@ -0,0 +1,16 @@ +--- gtk+3.0-3.24.5-orig/gtk/gtkcssshorthandpropertyimpl.c 2019-12-08 18:06:58.934357281 +0000 ++++ gtk+3.0-3.24.5-new/gtk/gtkcssshorthandpropertyimpl.c 2019-12-08 17:30:57.648750023 +0000 +@@ -1118,7 +1118,12 @@ + g_value_init (&v, G_TYPE_DOUBLE); + size = pango_font_description_get_size (description) / PANGO_SCALE; + if (!pango_font_description_get_size_is_absolute (description)) +- size = size * gdk_screen_get_resolution (gdk_screen_get_default ()) / 72.0; ++ { ++ double dpi = gdk_screen_get_resolution (gdk_screen_get_default ()); ++ if (dpi <= 0.0) ++ dpi = 96.0; ++ size = size * dpi / 72.0; ++ } + g_value_set_double (&v, size); + prop = _gtk_style_property_lookup ("font-size"); + _gtk_style_property_assign (prop, props, state, &v); diff --git a/patches/ct_raspion_wireshark-gtk-2.6.8.patch b/patches/ct_raspion_wireshark-gtk-2.6.8.patch new file mode 100644 index 0000000..77684a4 --- /dev/null +++ b/patches/ct_raspion_wireshark-gtk-2.6.8.patch @@ -0,0 +1,1046 @@ +diff -Naur wireshark-2.6.8-orig/ui/gtk/capture_dlg.c wireshark-2.6.8-new/ui/gtk/capture_dlg.c +--- wireshark-2.6.8-orig/ui/gtk/capture_dlg.c 2019-12-08 17:20:59.318321605 +0000 ++++ wireshark-2.6.8-new/ui/gtk/capture_dlg.c 2019-12-08 17:18:50.740298551 +0000 +@@ -2874,7 +2874,7 @@ + + /* Promiscuous mode row */ + promisc_cb = gtk_check_button_new_with_mnemonic( +- "Capture packets in _promiscuous mode"); ++ "Capture packets in promiscuous mode"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(promisc_cb), + device.pmode); + gtk_widget_set_tooltip_text(promisc_cb, +@@ -2912,7 +2912,7 @@ + snap_hb = ws_gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 3, FALSE); + gtk_box_pack_start (GTK_BOX(left_vb), snap_hb, FALSE, FALSE, 0); + +- snap_cb = gtk_check_button_new_with_mnemonic("_Limit each packet to"); ++ snap_cb = gtk_check_button_new_with_mnemonic("Limit each packet to"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(snap_cb), + device.has_snaplen); + g_signal_connect(snap_cb, "toggled", G_CALLBACK(adjust_snap_sensitivity), NULL); +@@ -4868,7 +4868,7 @@ + + gtk_widget_set_sensitive(GTK_WIDGET(all_cb), if_present); + /* Promiscuous mode row */ +- promisc_cb = gtk_check_button_new_with_mnemonic("Use _promiscuous mode on all interfaces"); ++ promisc_cb = gtk_check_button_new_with_mnemonic("Use promiscuous mode on all interfaces"); + if (!global_capture_session.session_started) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(promisc_cb), prefs.capture_prom_mode); + } else { +@@ -5010,7 +5010,7 @@ + row = 0; + + /* multiple files row */ +- multi_files_on_cb = gtk_check_button_new_with_mnemonic("Use _multiple files"); ++ multi_files_on_cb = gtk_check_button_new_with_mnemonic("Use multiple files"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(multi_files_on_cb), + global_capture_opts.multi_files_on); + g_signal_connect(multi_files_on_cb, "toggled", G_CALLBACK(capture_prep_adjust_sensitivity), +@@ -5236,7 +5236,7 @@ + + /* "Update display in real time" row */ + sync_cb = gtk_check_button_new_with_mnemonic( +- "_Update list of packets in real time"); ++ "Update list of packets in real time"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sync_cb), + global_capture_opts.real_time_mode); + g_signal_connect(sync_cb, "toggled", G_CALLBACK(capture_prep_adjust_sensitivity), cap_open_w); +@@ -5246,7 +5246,7 @@ + gtk_box_pack_start(GTK_BOX (display_vb), sync_cb, FALSE, TRUE, 0); + + /* "Auto-scroll live update" row */ +- auto_scroll_cb = gtk_check_button_new_with_mnemonic("_Automatically scroll during live capture"); ++ auto_scroll_cb = gtk_check_button_new_with_mnemonic("Automatically scroll during live capture"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(auto_scroll_cb), auto_scroll_live); + gtk_widget_set_tooltip_text(auto_scroll_cb, + "This will scroll the \"Packet List\" automatically to the latest captured packet, " +@@ -5254,7 +5254,7 @@ + gtk_box_pack_start(GTK_BOX (display_vb), auto_scroll_cb, FALSE, TRUE, 0); + + /* "Hide capture info" row */ +- hide_info_cb = gtk_check_button_new_with_mnemonic("_Hide capture info dialog"); ++ hide_info_cb = gtk_check_button_new_with_mnemonic("Hide capture info dialog"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hide_info_cb), !global_capture_opts.show_info); + gtk_widget_set_tooltip_text(hide_info_cb, "Hide the capture info dialog while capturing."); + gtk_box_pack_start(GTK_BOX (display_vb), hide_info_cb, FALSE, TRUE, 0); +@@ -5268,21 +5268,21 @@ + gtk_container_add(GTK_CONTAINER(resolv_fr), resolv_vb); + + m_resolv_cb = gtk_check_button_new_with_mnemonic( +- "Resolve _MAC addresses"); ++ "Resolve MAC addresses"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(m_resolv_cb), + gbl_resolv_flags.mac_name); + gtk_widget_set_tooltip_text(m_resolv_cb, "Perform MAC layer name resolution while capturing."); + gtk_box_pack_start(GTK_BOX (resolv_vb), m_resolv_cb, FALSE, TRUE, 0); + + n_resolv_cb = gtk_check_button_new_with_mnemonic( +- "Resolve _network-layer names"); ++ "Resolve network-layer names"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(n_resolv_cb), + gbl_resolv_flags.network_name); + gtk_widget_set_tooltip_text(n_resolv_cb, "Perform network layer name resolution while capturing."); + gtk_box_pack_start(GTK_BOX (resolv_vb), n_resolv_cb, FALSE, TRUE, 0); + + t_resolv_cb = gtk_check_button_new_with_mnemonic( +- "Resolve _transport-layer name"); ++ "Resolve transport-layer name"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(t_resolv_cb), + gbl_resolv_flags.transport_name); + gtk_widget_set_tooltip_text(t_resolv_cb, +@@ -5290,7 +5290,7 @@ + gtk_box_pack_start(GTK_BOX (resolv_vb), t_resolv_cb, FALSE, TRUE, 0); + + e_resolv_cb = gtk_check_button_new_with_mnemonic( +- "Use _external network name resolver"); ++ "Use external network name resolver"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e_resolv_cb), + gbl_resolv_flags.use_external_net_name_resolver); + gtk_widget_set_tooltip_text(e_resolv_cb, +diff -Naur wireshark-2.6.8-orig/ui/gtk/find_dlg.c wireshark-2.6.8-new/ui/gtk/find_dlg.c +--- wireshark-2.6.8-orig/ui/gtk/find_dlg.c 2019-12-08 17:20:59.328321451 +0000 ++++ wireshark-2.6.8-new/ui/gtk/find_dlg.c 2019-12-08 17:18:50.740298551 +0000 +@@ -168,21 +168,21 @@ + gtk_widget_show(find_type_lb); + + /* Filter */ +- filter_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_Display filter"); ++ filter_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Display filter"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(filter_rb), !cfile.hex && !cfile.string); + gtk_box_pack_start(GTK_BOX(find_type_hb), filter_rb, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text(filter_rb, "Search for data by display filter syntax.\ne.g. ip.addr==10.1.1.1"); + gtk_widget_show(filter_rb); + + /* Hex */ +- hex_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(filter_rb), "_Hex value"); ++ hex_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(filter_rb), "Hex value"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hex_rb), cfile.hex); + gtk_box_pack_start(GTK_BOX(find_type_hb), hex_rb, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text(hex_rb, "Search for data by hex string.\ne.g. fffffda5"); + gtk_widget_show(hex_rb); + + /* ASCII Search */ +- string_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(filter_rb), "_String"); ++ string_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(filter_rb), "String"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(string_rb), cfile.string); + gtk_box_pack_start(GTK_BOX(find_type_hb), string_rb, FALSE, FALSE, 0); + gtk_widget_set_tooltip_text(string_rb, "Search for data by string value.\ne.g. My String"); +@@ -300,12 +300,12 @@ + gtk_container_add(GTK_CONTAINER(direction_frame), direction_vb); + gtk_widget_show(direction_vb); + +- up_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_Up"); ++ up_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Up"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(up_rb), cfile.dir == SD_BACKWARD); + gtk_box_pack_start(GTK_BOX(direction_vb), up_rb, FALSE, FALSE, 0); + gtk_widget_show(up_rb); + +- down_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(up_rb), "_Down"); ++ down_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(up_rb), "Down"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(down_rb), cfile.dir == SD_FORWARD); + gtk_box_pack_start(GTK_BOX(direction_vb), down_rb, FALSE, FALSE, 0); + gtk_widget_show(down_rb); +diff -Naur wireshark-2.6.8-orig/ui/gtk/flow_graph.c wireshark-2.6.8-new/ui/gtk/flow_graph.c +--- wireshark-2.6.8-orig/ui/gtk/flow_graph.c 2019-12-08 17:20:59.328321451 +0000 ++++ wireshark-2.6.8-new/ui/gtk/flow_graph.c 2019-12-08 17:18:50.710299012 +0000 +@@ -254,7 +254,7 @@ + gtk_container_add(GTK_CONTAINER(range_fr), range_grid); + + /* Process all packets */ +- select_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_All packets"); ++ select_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "All packets"); + gtk_widget_set_tooltip_text (select_all_rb, ("Process all packets")); + g_signal_connect(select_all_rb, "toggled", G_CALLBACK(toggle_select_all), NULL); + ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_all_rb, 0, 0, 1, 1, +@@ -266,7 +266,7 @@ + + /* Process displayed packets */ + select_displayed_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), +- "_Displayed packets"); ++ "Displayed packets"); + gtk_widget_set_tooltip_text (select_displayed_rb, ("Process displayed packets")); + g_signal_connect(select_displayed_rb, "toggled", G_CALLBACK(toggle_select_displayed), NULL); + ws_gtk_grid_attach_extended(GTK_GRID(range_grid), select_displayed_rb, 0, 1, 1, 1, +@@ -308,7 +308,7 @@ + gtk_container_add(GTK_CONTAINER(node_addr_fr), node_addr_grid); + + /* Source / Dest address */ +- src_dst_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_Standard source/destination addresses"); ++ src_dst_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Standard source/destination addresses"); + gtk_widget_set_tooltip_text (src_dst_rb, + ("Nodes in the diagram are identified with source and destination addresses")); + g_signal_connect(src_dst_rb, "toggled", G_CALLBACK(toggle_select_srcdst), NULL); +@@ -321,7 +321,7 @@ + + /* Network source / dest address */ + net_src_dst_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(src_dst_rb), +- "_Network source/destination addresses"); ++ "Network source/destination addresses"); + gtk_widget_set_tooltip_text (net_src_dst_rb, + ("Nodes in the diagram are identified with network source and destination addresses")); + g_signal_connect(net_src_dst_rb, "toggled", G_CALLBACK(toggle_select_netsrcdst), NULL); +diff -Naur wireshark-2.6.8-orig/ui/gtk/io_stat.c wireshark-2.6.8-new/ui/gtk/io_stat.c +--- wireshark-2.6.8-orig/ui/gtk/io_stat.c 2019-12-08 17:20:59.338321297 +0000 ++++ wireshark-2.6.8-new/ui/gtk/io_stat.c 2019-12-08 17:18:50.740298551 +0000 +@@ -1761,7 +1761,7 @@ + create_ctrl_menu(io, vbox, "Tick interval:", create_tick_interval_menu_items); + create_ctrl_menu(io, vbox, "Pixels per tick:", create_pixels_per_tick_menu_items); + +- view_cb = gtk_check_button_new_with_mnemonic("_View as time of day"); ++ view_cb = gtk_check_button_new_with_mnemonic("View as time of day"); + gtk_container_add(GTK_CONTAINER(vbox), view_cb); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(view_cb), io->view_as_time); + g_signal_connect(view_cb, "toggled", G_CALLBACK(view_as_time_toggle_dest), io); +diff -Naur wireshark-2.6.8-orig/ui/gtk/main_menubar.c wireshark-2.6.8-new/ui/gtk/main_menubar.c +--- wireshark-2.6.8-orig/ui/gtk/main_menubar.c 2019-12-08 17:20:59.338321297 +0000 ++++ wireshark-2.6.8-new/ui/gtk/main_menubar.c 2019-12-08 17:18:50.740298551 +0000 +@@ -1167,48 +1167,48 @@ + * ad do the UI stuff there. + */ + static const GtkActionEntry capture_menu_entries[] = { +- { "/Capture", NULL, "_Capture", NULL, NULL, NULL }, +- { "/Capture/Interfaces", WIRESHARK_STOCK_CAPTURE_INTERFACES, "_Interfaces...", "I", NULL, G_CALLBACK(capture_if_action_cb) }, +- { "/Capture/Options", WIRESHARK_STOCK_CAPTURE_OPTIONS, "_Options...", "K", NULL, G_CALLBACK(capture_prep_action_cb) }, +- { "/Capture/Start", WIRESHARK_STOCK_CAPTURE_START, "_Start", "E", NULL, G_CALLBACK(capture_start_action_cb) }, +- { "/Capture/Stop", WIRESHARK_STOCK_CAPTURE_STOP, "S_top", "E", NULL, G_CALLBACK(capture_stop_action_cb) }, +- { "/Capture/Restart", WIRESHARK_STOCK_CAPTURE_RESTART, "_Restart", "R", NULL, G_CALLBACK(capture_restart_action_cb) }, +- { "/Capture/CaptureFilters", WIRESHARK_STOCK_CAPTURE_FILTER, "Capture _Filters...", NULL, NULL, G_CALLBACK(capture_filters_action_cb) }, ++ { "/Capture", NULL, "Capture", NULL, NULL, NULL }, ++ { "/Capture/Interfaces", WIRESHARK_STOCK_CAPTURE_INTERFACES, "Interfaces...", NULL, NULL, G_CALLBACK(capture_if_action_cb) }, ++ { "/Capture/Options", WIRESHARK_STOCK_CAPTURE_OPTIONS, "Options...", NULL, NULL, G_CALLBACK(capture_prep_action_cb) }, ++ { "/Capture/Start", WIRESHARK_STOCK_CAPTURE_START, "Start", NULL, NULL, G_CALLBACK(capture_start_action_cb) }, ++ { "/Capture/Stop", WIRESHARK_STOCK_CAPTURE_STOP, "Stop", NULL, NULL, G_CALLBACK(capture_stop_action_cb) }, ++ { "/Capture/Restart", WIRESHARK_STOCK_CAPTURE_RESTART, "Restart", NULL, NULL, G_CALLBACK(capture_restart_action_cb) }, ++ { "/Capture/CaptureFilters", WIRESHARK_STOCK_CAPTURE_FILTER, "Capture Filters...", NULL, NULL, G_CALLBACK(capture_filters_action_cb) }, + { "/Capture/RefreshInterfaces", GTK_STOCK_REFRESH, "Refresh Interfaces", NULL, NULL, G_CALLBACK(refresh_interfaces_action_cb) }, + }; + #endif + + static const GtkActionEntry main_menu_bar_entries[] = { + /* Top level */ +- { "/File", NULL, "_File", NULL, NULL, NULL }, +- { "/Edit", NULL, "_Edit", NULL, NULL, NULL }, +- { "/View", NULL, "_View", NULL, NULL, NULL }, +- { "/Go", NULL, "_Go", NULL, NULL, NULL }, +- { "/Analyze", NULL, "_Analyze", NULL, NULL, NULL }, +- { "/Statistics", NULL, "_Statistics", NULL, NULL, NULL }, +- { "/Telephony", NULL, "Telephon_y", NULL, NULL, NULL }, +- { "/Tools", NULL, "_Tools", NULL, NULL, NULL }, +- { "/Internals", NULL, "_Internals", NULL, NULL, NULL }, +- { "/Help", NULL, "_Help", NULL, NULL, NULL }, ++ { "/File", NULL, "File", NULL, NULL, NULL }, ++ { "/Edit", NULL, "Edit", NULL, NULL, NULL }, ++ { "/View", NULL, "View", NULL, NULL, NULL }, ++ { "/Go", NULL, "Go", NULL, NULL, NULL }, ++ { "/Analyze", NULL, "Analyze", NULL, NULL, NULL }, ++ { "/Statistics", NULL, "Statistics", NULL, NULL, NULL }, ++ { "/Telephony", NULL, "Telephony", NULL, NULL, NULL }, ++ { "/Tools", NULL, "Tools", NULL, NULL, NULL }, ++ { "/Internals", NULL, "Internals", NULL, NULL, NULL }, ++ { "/Help", NULL, "Help", NULL, NULL, NULL }, + +- { "/File/Open", GTK_STOCK_OPEN, "_Open...", "O", "Open a file", G_CALLBACK(file_open_cmd_cb) }, ++ { "/File/Open", NULL, "Open...", NULL, "Open a file", G_CALLBACK(file_open_cmd_cb) }, + { "/File/OpenRecent", NULL, "Open _Recent", NULL, NULL, NULL }, +- { "/File/Merge", NULL, "_Merge...", NULL, NULL, G_CALLBACK(file_merge_cmd_cb) }, +- { "/File/ImportFromHexDump", NULL, "_Import from Hex Dump...", NULL, NULL, G_CALLBACK(file_import_cmd_cb) }, +- { "/File/Close", GTK_STOCK_CLOSE, "_Close", "W", NULL, G_CALLBACK(file_close_cmd_cb) }, ++ { "/File/Merge", NULL, "Merge...", NULL, NULL, G_CALLBACK(file_merge_cmd_cb) }, ++ { "/File/ImportFromHexDump", NULL, "Import from Hex Dump...", NULL, NULL, G_CALLBACK(file_import_cmd_cb) }, ++ { "/File/Close", NULL, "Close", NULL, NULL, G_CALLBACK(file_close_cmd_cb) }, + +- { "/File/Save", WIRESHARK_STOCK_SAVE, "_Save", "S", NULL, G_CALLBACK(file_save_cmd_cb) }, +- { "/File/SaveAs", WIRESHARK_STOCK_SAVE, "Save _As...", "S", NULL, G_CALLBACK(file_save_as_cmd_cb) }, ++ { "/File/Save", WIRESHARK_STOCK_SAVE, "Save", NULL, NULL, G_CALLBACK(file_save_cmd_cb) }, ++ { "/File/SaveAs", WIRESHARK_STOCK_SAVE, "Save As...", NULL, NULL, G_CALLBACK(file_save_as_cmd_cb) }, + + { "/File/Set", NULL, "File Set", NULL, NULL, NULL }, + { "/File/ExportSpecifiedPackets", NULL, "Export Specified Packets...", NULL, NULL, G_CALLBACK(file_export_specified_packets_cmd_cb) }, + { "/File/ExportPacketDissections", NULL, "Export Packet Dissections", NULL, NULL, NULL }, +- { "/File/ExportSelectedPacketBytes", NULL, "Export Selected Packet _Bytes...", "H", NULL, G_CALLBACK(savehex_cb) }, ++ { "/File/ExportSelectedPacketBytes", NULL, "Export Selected Packet _Bytes...", NULL, NULL, G_CALLBACK(savehex_cb) }, + { "/File/ExportPDUs", NULL, "Export PDUs to File...", NULL, NULL, G_CALLBACK(export_pdu_show_cb) }, + { "/File/ExportSSLSessionKeys", NULL, "Export SSL Session Keys...", NULL, NULL, G_CALLBACK(savesslkeys_cb) }, + { "/File/ExportObjects", NULL, "Export Objects", NULL, NULL, NULL }, +- { "/File/Print", GTK_STOCK_PRINT, "_Print...", "P", NULL, G_CALLBACK(file_print_cmd_cb) }, +- { "/File/Quit", GTK_STOCK_QUIT, "_Quit", "Q", NULL, G_CALLBACK(file_quit_cmd_cb) }, ++ { "/File/Print", GTK_STOCK_PRINT, "Print...", NULL, NULL, G_CALLBACK(file_print_cmd_cb) }, ++ { "/File/Quit", NULL, "Quit", NULL, NULL, G_CALLBACK(file_quit_cmd_cb) }, + + { "/File/Set/ListFiles", WIRESHARK_STOCK_FILE_SET_LIST, "List Files", NULL, NULL, G_CALLBACK(fileset_cb) }, + { "/File/Set/NextFile", WIRESHARK_STOCK_FILE_SET_NEXT, "Next File", NULL, NULL, G_CALLBACK(fileset_next_cb) }, +@@ -1216,23 +1216,23 @@ + + { "/File/ExportPacketDissections/Text", NULL, "as \"Plain _Text\" file...", NULL, NULL, G_CALLBACK(export_text_cmd_cb) }, + { "/File/ExportPacketDissections/PostScript", NULL, "as \"_PostScript\" file...", NULL, NULL, G_CALLBACK(export_ps_cmd_cb) }, +- { "/File/ExportPacketDissections/CSV", NULL, "as \"_CSV\" (Comma Separated Values packet summary) file...", ++ { "/File/ExportPacketDissections/CSV", NULL, "as \"CSV\" (Comma Separated Values packet summary) file...", + NULL, NULL, G_CALLBACK(export_csv_cmd_cb) }, +- { "/File/ExportPacketDissections/CArrays", NULL, "as \"C _Arrays\" (packet bytes) file...", ++ { "/File/ExportPacketDissections/CArrays", NULL, "as \"C Arrays\" (packet bytes) file...", + NULL, NULL, G_CALLBACK(export_carrays_cmd_cb) }, +- { "/File/ExportPacketDissections/PSML", NULL, "as XML - \"P_SML\" (packet summary) file...", ++ { "/File/ExportPacketDissections/PSML", NULL, "as XML - \"PSML\" (packet summary) file...", + NULL, NULL, G_CALLBACK(export_psml_cmd_cb) }, +- { "/File/ExportPacketDissections/PDML", NULL, "as XML - \"P_DML\" (packet details) file...", ++ { "/File/ExportPacketDissections/PDML", NULL, "as XML - \"PDML\" (packet details) file...", + NULL, NULL, G_CALLBACK(export_pdml_cmd_cb) }, +- { "/File/ExportPacketDissections/JSON", NULL, "as \"_JSON\" file...", ++ { "/File/ExportPacketDissections/JSON", NULL, "as \"JSON\" file...", + NULL, NULL, G_CALLBACK(export_json_cmd_cb) }, + + { "/Edit/Copy", NULL, "Copy", NULL, NULL, NULL }, + +- { "/Edit/Copy/Description", NULL, "Description", "D", NULL, G_CALLBACK(copy_description_cb) }, +- { "/Edit/Copy/Fieldname", NULL, "Fieldname", "F", NULL, G_CALLBACK(copy_fieldname_cb) }, +- { "/Edit/Copy/Value", NULL, "Value", "V", NULL, G_CALLBACK(copy_value_cb) }, +- { "/Edit/Copy/AsFilter", NULL, "As Filter", "C", NULL, G_CALLBACK(copy_as_filter_cb) }, ++ { "/Edit/Copy/Description", NULL, "Description", NULL, NULL, G_CALLBACK(copy_description_cb) }, ++ { "/Edit/Copy/Fieldname", NULL, "Fieldname", NULL, NULL, G_CALLBACK(copy_fieldname_cb) }, ++ { "/Edit/Copy/Value", NULL, "Value", NULL, NULL, G_CALLBACK(copy_value_cb) }, ++ { "/Edit/Copy/AsFilter", NULL, "As Filter", NULL, NULL, G_CALLBACK(copy_as_filter_cb) }, + + #if 0 + /* +@@ -1274,103 +1274,103 @@ + * We would only want Cut, Paste, Undo, and Redo for the packet + * list and packet detail panes if we support modifying them. + */ +- {"/Edit/_Undo", "Z", NULL, ++ {"/Edit/Undo", NULL, NULL, + 0, "", GTK_STOCK_UNDO,}, +- {"/Edit/_Redo", "Z", NULL, ++ {"/Edit/Redo", NULL, NULL, + 0, "", GTK_STOCK_REDO,}, + {"/Edit/", NULL, NULL, 0, "", NULL,}, +- {"/Edit/Cu_t", "X", NULL, ++ {"/Edit/Cut", NULL, NULL, + 0, "", GTK_STOCK_CUT,}, +- {"/Edit/_Copy", "C", NULL, ++ {"/Edit/Copy", NULL, NULL, + 0, "", GTK_STOCK_COPY,}, +- {"/Edit/_Paste", "V", NULL, ++ {"/Edit/Paste", NULL, NULL, + 0, "", GTK_STOCK_PASTE,}, + {"/Edit/", NULL, NULL, 0, "", NULL,}, +- {"/Edit/Select _All", "A", NULL, 0, ++ {"/Edit/Select All", NULL, NULL, 0, + "", GTK_STOCK_SELECT_ALL,}, + #endif /* 0 */ +- { "/Edit/FindPacket", GTK_STOCK_FIND, "_Find Packet...", "F", NULL, G_CALLBACK(find_frame_cb) }, +- { "/Edit/FindNext", NULL, "Find Ne_xt", "N", NULL, G_CALLBACK(find_next_cb) }, +- { "/Edit/FindPrevious", NULL, "Find Pre_vious", "B", NULL, G_CALLBACK(find_previous_cb) }, ++ { "/Edit/FindPacket", NULL, "Find Packet...", NULL, NULL, G_CALLBACK(find_frame_cb) }, ++ { "/Edit/FindNext", NULL, "Find Next", NULL, NULL, G_CALLBACK(find_next_cb) }, ++ { "/Edit/FindPrevious", NULL, "Find Previous", NULL, NULL, G_CALLBACK(find_previous_cb) }, + +- { "/Edit/MarkPacket", NULL, "_Mark/Unmark Packet", "M", NULL, G_CALLBACK(packet_list_mark_frame_cb) }, ++ { "/Edit/MarkPacket", NULL, "Mark/Unmark Packet", NULL, NULL, G_CALLBACK(packet_list_mark_frame_cb) }, + /* XXX - Unused. Should this and its associated code be removed? */ +- { "/Edit/ToggleMarkingOfAllDisplayedPackets", NULL, "Toggle Marking of All Displayed Packets", "M", NULL, G_CALLBACK(packet_list_toggle_mark_all_displayed_frames_cb) }, +- { "/Edit/MarkAllDisplayedPackets", NULL, "Mark All Displayed Packets", "M", NULL, G_CALLBACK(packet_list_mark_all_displayed_frames_cb) }, +- { "/Edit/UnmarkAllDisplayedPackets", NULL, "_Unmark All Displayed Packets", "M", NULL, G_CALLBACK(packet_list_unmark_all_displayed_frames_cb) }, +- { "/Edit/FindNextMark", NULL, "Next Mark", "N", NULL, G_CALLBACK(find_next_mark_cb) }, +- { "/Edit/FindPreviousMark", NULL, "Previous Mark", "B", NULL, G_CALLBACK(find_prev_mark_cb) }, ++ { "/Edit/ToggleMarkingOfAllDisplayedPackets", NULL, "Toggle Marking of All Displayed Packets", NULL, NULL, G_CALLBACK(packet_list_toggle_mark_all_displayed_frames_cb) }, ++ { "/Edit/MarkAllDisplayedPackets", NULL, "Mark All Displayed Packets", NULL, NULL, G_CALLBACK(packet_list_mark_all_displayed_frames_cb) }, ++ { "/Edit/UnmarkAllDisplayedPackets", NULL, "Unmark All Displayed Packets", NULL, NULL, G_CALLBACK(packet_list_unmark_all_displayed_frames_cb) }, ++ { "/Edit/FindNextMark", NULL, "Next Mark", NULL, NULL, G_CALLBACK(find_next_mark_cb) }, ++ { "/Edit/FindPreviousMark", NULL, "Previous Mark", NULL, NULL, G_CALLBACK(find_prev_mark_cb) }, + +- { "/Edit/IgnorePacket", NULL, "_Ignore/Unignore Packet", "D", NULL, G_CALLBACK(packet_list_ignore_frame_cb) }, ++ { "/Edit/IgnorePacket", NULL, "Ignore/Unignore Packet", NULL, NULL, G_CALLBACK(packet_list_ignore_frame_cb) }, + /* + * XXX - this next one overrides /Edit/Copy/Description + */ +- { "/Edit/IgnoreAllDisplayedPackets", NULL, "Ignore All Displayed Packets", "D", NULL, G_CALLBACK(packet_list_ignore_all_displayed_frames_cb) }, +- { "/Edit/Un-IgnoreAllPackets", NULL, "U_nignore All Packets", "D", NULL, G_CALLBACK(packet_list_unignore_all_frames_cb) }, +- { "/Edit/SetTimeReference", WIRESHARK_STOCK_TIME, "Set/Unset Time Reference", "T", NULL, G_CALLBACK(set_reftime_cb) }, +- { "/Edit/Un-TimeReferenceAllPackets",NULL, "Unset All Time References", "T", NULL, G_CALLBACK(packet_list_untime_reference_all_frames_cb) }, +- { "/Edit/FindNextTimeReference", NULL, "Next Time Reference", "N", NULL, G_CALLBACK(find_next_ref_time_cb) }, +- { "/Edit/FindPreviousTimeReference", NULL, "Previous Time Reference", "B", NULL, G_CALLBACK(find_previous_ref_time_cb) }, +- { "/Edit/TimeShift", WIRESHARK_STOCK_TIME, "Time Shift...", "T", NULL, G_CALLBACK(time_shift_cb) }, +- +- { "/Edit/ConfigurationProfiles", NULL, "_Configuration Profiles...", "A", NULL, G_CALLBACK(profile_dialog_cb) }, +- { "/Edit/Preferences", GTK_STOCK_PREFERENCES, "_Preferences...", "P", NULL, G_CALLBACK(menus_prefs_cb) }, +- { "/Edit/AddEditPktComment", WIRESHARK_STOCK_EDIT, "Packet Comment...", "C", NULL, G_CALLBACK(edit_packet_comment_dlg) }, +- { "/Edit/AddEditCaptureComment", NULL, "Capture Comment...", "C", NULL, G_CALLBACK(edit_capture_comment_dlg_launch) }, ++ { "/Edit/IgnoreAllDisplayedPackets", NULL, "Ignore All Displayed Packets", NULL, NULL, G_CALLBACK(packet_list_ignore_all_displayed_frames_cb) }, ++ { "/Edit/Un-IgnoreAllPackets", NULL, "Unignore All Packets", NULL, NULL, G_CALLBACK(packet_list_unignore_all_frames_cb) }, ++ { "/Edit/SetTimeReference", WIRESHARK_STOCK_TIME, "Set/Unset Time Reference", NULL, NULL, G_CALLBACK(set_reftime_cb) }, ++ { "/Edit/Un-TimeReferenceAllPackets",NULL, "Unset All Time References", NULL, NULL, G_CALLBACK(packet_list_untime_reference_all_frames_cb) }, ++ { "/Edit/FindNextTimeReference", NULL, "Next Time Reference", NULL, NULL, G_CALLBACK(find_next_ref_time_cb) }, ++ { "/Edit/FindPreviousTimeReference", NULL, "Previous Time Reference", NULL, NULL, G_CALLBACK(find_previous_ref_time_cb) }, ++ { "/Edit/TimeShift", WIRESHARK_STOCK_TIME, "Time Shift...", NULL, NULL, G_CALLBACK(time_shift_cb) }, ++ ++ { "/Edit/ConfigurationProfiles", NULL, "Configuration Profiles...", NULL, NULL, G_CALLBACK(profile_dialog_cb) }, ++ { "/Edit/Preferences", GTK_STOCK_PREFERENCES, "Preferences...", NULL, NULL, G_CALLBACK(menus_prefs_cb) }, ++ { "/Edit/AddEditPktComment", WIRESHARK_STOCK_EDIT, "Packet Comment...", NULL, NULL, G_CALLBACK(edit_packet_comment_dlg) }, ++ { "/Edit/AddEditCaptureComment", NULL, "Capture Comment...", NULL, NULL, G_CALLBACK(edit_capture_comment_dlg_launch) }, + +- { "/View/TimeDisplayFormat", NULL, "_Time Display Format", NULL, NULL, NULL }, ++ { "/View/TimeDisplayFormat", NULL, "Time Display Format", NULL, NULL, NULL }, + + { "/View/NameResolution", NULL, "Name Resol_ution", NULL, NULL, NULL }, +- { "/View/NameResolution/ResolveName", NULL, "_Resolve Name", NULL, NULL, G_CALLBACK(resolve_name_cb) }, ++ { "/View/NameResolution/ResolveName", NULL, "Resolve Name", NULL, NULL, G_CALLBACK(resolve_name_cb) }, + { "/View/NameResolution/ManuallyResolveName",NULL, "Manually Resolve Name", NULL, NULL, G_CALLBACK(manual_addr_resolv_dlg) }, + +- { "/View/ZoomIn", GTK_STOCK_ZOOM_IN, "_Zoom In", "plus", NULL, G_CALLBACK(view_zoom_in_cb) }, +- { "/View/ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", "minus", NULL, G_CALLBACK(view_zoom_out_cb) }, +- { "/View/NormalSize", GTK_STOCK_ZOOM_100, "_Normal Size", "equal", NULL, G_CALLBACK(view_zoom_100_cb) }, +- { "/View/ResizeAllColumns", WIRESHARK_STOCK_RESIZE_COLUMNS, "Resize All Columns", "R", NULL, G_CALLBACK(packet_list_resize_columns_cb) }, ++ { "/View/ZoomIn", GTK_STOCK_ZOOM_IN, "Zoom In", NULL, NULL, G_CALLBACK(view_zoom_in_cb) }, ++ { "/View/ZoomOut", GTK_STOCK_ZOOM_OUT, "Zoom _Out", NULL, NULL, G_CALLBACK(view_zoom_out_cb) }, ++ { "/View/NormalSize", GTK_STOCK_ZOOM_100, "Normal Size", NULL, NULL, G_CALLBACK(view_zoom_100_cb) }, ++ { "/View/ResizeAllColumns", WIRESHARK_STOCK_RESIZE_COLUMNS, "Resize All Columns", NULL, NULL, G_CALLBACK(packet_list_resize_columns_cb) }, + { "/View/DisplayedColumns", NULL, "Displayed Columns", NULL, NULL, NULL }, +- { "/View/ExpandSubtrees", NULL, "E_xpand Subtrees", "Right", NULL, G_CALLBACK(expand_tree_cb) }, +- { "/View/CollapseSubtrees", NULL, "Collapse Subtrees", "Left", NULL, G_CALLBACK(collapse_tree_cb) }, +- { "/View/ExpandAll", NULL, "_Expand All", "Right", NULL, G_CALLBACK(expand_all_cb) }, +- { "/View/CollapseAll", NULL, "Collapse _All", "Left", NULL, G_CALLBACK(collapse_all_cb) }, ++ { "/View/ExpandSubtrees", NULL, "Expand Subtrees", NULL, NULL, G_CALLBACK(expand_tree_cb) }, ++ { "/View/CollapseSubtrees", NULL, "Collapse Subtrees", NULL, NULL, G_CALLBACK(collapse_tree_cb) }, ++ { "/View/ExpandAll", NULL, "Expand All", NULL, NULL, G_CALLBACK(expand_all_cb) }, ++ { "/View/CollapseAll", NULL, "Collapse _All", NULL, NULL, G_CALLBACK(collapse_all_cb) }, + { "/View/ColorizeConversation", NULL, "Colorize Conversation",NULL, NULL, NULL }, + +- { "/View/ColorizeConversation/Color 1", WIRESHARK_STOCK_COLOR1, "Color 1", "1", NULL, G_CALLBACK(view_menu_color_conv_color1_cb) }, +- { "/View/ColorizeConversation/Color 2", WIRESHARK_STOCK_COLOR2, "Color 2", "2", NULL, G_CALLBACK(view_menu_color_conv_color2_cb) }, +- { "/View/ColorizeConversation/Color 3", WIRESHARK_STOCK_COLOR3, "Color 3", "3", NULL, G_CALLBACK(view_menu_color_conv_color3_cb) }, +- { "/View/ColorizeConversation/Color 4", WIRESHARK_STOCK_COLOR4, "Color 4", "4", NULL, G_CALLBACK(view_menu_color_conv_color4_cb) }, +- { "/View/ColorizeConversation/Color 5", WIRESHARK_STOCK_COLOR5, "Color 5", "5", NULL, G_CALLBACK(view_menu_color_conv_color5_cb) }, +- { "/View/ColorizeConversation/Color 6", WIRESHARK_STOCK_COLOR6, "Color 6", "6", NULL, G_CALLBACK(view_menu_color_conv_color6_cb) }, +- { "/View/ColorizeConversation/Color 7", WIRESHARK_STOCK_COLOR7, "Color 7", "7", NULL, G_CALLBACK(view_menu_color_conv_color7_cb) }, +- { "/View/ColorizeConversation/Color 8", WIRESHARK_STOCK_COLOR8, "Color 8", "8", NULL, G_CALLBACK(view_menu_color_conv_color8_cb) }, +- { "/View/ColorizeConversation/Color 9", WIRESHARK_STOCK_COLOR9, "Color 9", "9", NULL, G_CALLBACK(view_menu_color_conv_color9_cb) }, +- { "/View/ColorizeConversation/Color 10", WIRESHARK_STOCK_COLOR0, "Color 10", "0", NULL, G_CALLBACK(view_menu_color_conv_color10_cb) }, ++ { "/View/ColorizeConversation/Color 1", WIRESHARK_STOCK_COLOR1, "Color 1", NULL, NULL, G_CALLBACK(view_menu_color_conv_color1_cb) }, ++ { "/View/ColorizeConversation/Color 2", WIRESHARK_STOCK_COLOR2, "Color 2", NULL, NULL, G_CALLBACK(view_menu_color_conv_color2_cb) }, ++ { "/View/ColorizeConversation/Color 3", WIRESHARK_STOCK_COLOR3, "Color 3", NULL, NULL, G_CALLBACK(view_menu_color_conv_color3_cb) }, ++ { "/View/ColorizeConversation/Color 4", WIRESHARK_STOCK_COLOR4, "Color 4", NULL, NULL, G_CALLBACK(view_menu_color_conv_color4_cb) }, ++ { "/View/ColorizeConversation/Color 5", WIRESHARK_STOCK_COLOR5, "Color 5", NULL, NULL, G_CALLBACK(view_menu_color_conv_color5_cb) }, ++ { "/View/ColorizeConversation/Color 6", WIRESHARK_STOCK_COLOR6, "Color 6", NULL, NULL, G_CALLBACK(view_menu_color_conv_color6_cb) }, ++ { "/View/ColorizeConversation/Color 7", WIRESHARK_STOCK_COLOR7, "Color 7", NULL, NULL, G_CALLBACK(view_menu_color_conv_color7_cb) }, ++ { "/View/ColorizeConversation/Color 8", WIRESHARK_STOCK_COLOR8, "Color 8", NULL, NULL, G_CALLBACK(view_menu_color_conv_color8_cb) }, ++ { "/View/ColorizeConversation/Color 9", WIRESHARK_STOCK_COLOR9, "Color 9", NULL, NULL, G_CALLBACK(view_menu_color_conv_color9_cb) }, ++ { "/View/ColorizeConversation/Color 10", WIRESHARK_STOCK_COLOR0, "Color 10", NULL, NULL, G_CALLBACK(view_menu_color_conv_color10_cb) }, + { "/View/ColorizeConversation/NewColoringRule", NULL, "New Coloring Rule...", NULL, NULL, G_CALLBACK(view_menu_color_conv_new_rule_cb) }, + +- { "/View/ResetColoring1-10", NULL, "Reset Coloring 1-10", "space", NULL, G_CALLBACK(view_menu_reset_coloring_cb) }, +- { "/View/ColoringRules", GTK_STOCK_SELECT_COLOR, "_Coloring Rules...", NULL, NULL, G_CALLBACK(color_display_cb) }, ++ { "/View/ResetColoring1-10", NULL, "Reset Coloring 1-10", NULL, NULL, G_CALLBACK(view_menu_reset_coloring_cb) }, ++ { "/View/ColoringRules", GTK_STOCK_SELECT_COLOR, "Coloring Rules...", NULL, NULL, G_CALLBACK(color_display_cb) }, + { "/View/ShowPacketinNewWindow", NULL, "Show Packet in New _Window", NULL, NULL, G_CALLBACK(new_window_cb) }, +- { "/View/Reload", GTK_STOCK_REFRESH, "_Reload", "R", NULL, G_CALLBACK(file_reload_cmd_cb) }, ++ { "/View/Reload", GTK_STOCK_REFRESH, "Reload", NULL, NULL, G_CALLBACK(file_reload_cmd_cb) }, + + +- { "/Go/Back", GTK_STOCK_GO_BACK, "_Back", "Left", NULL, G_CALLBACK(history_back_cb) }, +- { "/Go/Forward", GTK_STOCK_GO_FORWARD, "_Forward", "Right", NULL, G_CALLBACK(history_forward_cb) }, +- { "/Go/Goto", GTK_STOCK_JUMP_TO, "_Go to Packet...", "G", NULL, G_CALLBACK(goto_frame_cb) }, +- { "/Go/GotoCorrespondingPacket", NULL, "Go to _Corresponding Packet", NULL, NULL, G_CALLBACK(goto_framenum_cb) }, +- { "/Go/PreviousPacket", GTK_STOCK_GO_UP, "Previous Packet", "Up", NULL, G_CALLBACK(goto_previous_frame_cb) }, +- { "/Go/NextPacket", GTK_STOCK_GO_DOWN, "Next Packet", "Down", NULL, G_CALLBACK(goto_next_frame_cb) }, +- { "/Go/FirstPacket", GTK_STOCK_GOTO_TOP, "F_irst Packet", "Home", NULL, G_CALLBACK(goto_top_frame_cb) }, +- { "/Go/LastPacket", GTK_STOCK_GOTO_BOTTOM, "_Last Packet", "End", NULL, G_CALLBACK(goto_bottom_frame_cb) }, +- { "/Go/PreviousPacketInConversation", GTK_STOCK_GO_UP, "Previous Packet In Conversation", "comma", NULL, G_CALLBACK(goto_previous_frame_conversation_cb) }, +- { "/Go/NextPacketInConversation", GTK_STOCK_GO_DOWN, "Next Packet In Conversation", "period", NULL, G_CALLBACK(goto_next_frame_conversation_cb) }, ++ { "/Go/Back", GTK_STOCK_GO_BACK, "Back", NULL, NULL, G_CALLBACK(history_back_cb) }, ++ { "/Go/Forward", GTK_STOCK_GO_FORWARD, "Forward", NULL, NULL, G_CALLBACK(history_forward_cb) }, ++ { "/Go/Goto", GTK_STOCK_JUMP_TO, "Go to Packet...", NULL, NULL, G_CALLBACK(goto_frame_cb) }, ++ { "/Go/GotoCorrespondingPacket", NULL, "Go to Corresponding Packet", NULL, NULL, G_CALLBACK(goto_framenum_cb) }, ++ { "/Go/PreviousPacket", GTK_STOCK_GO_UP, "Previous Packet", NULL, NULL, G_CALLBACK(goto_previous_frame_cb) }, ++ { "/Go/NextPacket", GTK_STOCK_GO_DOWN, "Next Packet", NULL, NULL, G_CALLBACK(goto_next_frame_cb) }, ++ { "/Go/FirstPacket", GTK_STOCK_GOTO_TOP, "First Packet", NULL, NULL, G_CALLBACK(goto_top_frame_cb) }, ++ { "/Go/LastPacket", GTK_STOCK_GOTO_BOTTOM, "Last Packet", NULL, NULL, G_CALLBACK(goto_bottom_frame_cb) }, ++ { "/Go/PreviousPacketInConversation", GTK_STOCK_GO_UP, "Previous Packet In Conversation", NULL, NULL, G_CALLBACK(goto_previous_frame_conversation_cb) }, ++ { "/Go/NextPacketInConversation", GTK_STOCK_GO_DOWN, "Next Packet In Conversation", NULL, NULL, G_CALLBACK(goto_next_frame_conversation_cb) }, + + +- { "/Analyze/DisplayFilters", WIRESHARK_STOCK_DISPLAY_FILTER, "_Display Filters...", NULL, NULL, G_CALLBACK(dfilter_dialog_cb) }, ++ { "/Analyze/DisplayFilters", WIRESHARK_STOCK_DISPLAY_FILTER, "Display Filters...", NULL, NULL, G_CALLBACK(dfilter_dialog_cb) }, + + { "/Analyze/DisplayFilterMacros", NULL, "Display Filter _Macros...", NULL, NULL, G_CALLBACK(macros_dialog_cb) }, + { "/Analyze/ApplyasColumn", NULL, "Apply as Column", NULL, NULL, G_CALLBACK(apply_as_custom_column_cb) }, + +- { "/Analyze/EnabledProtocols", WIRESHARK_STOCK_CHECKBOX, "_Enabled Protocols...", "E", NULL, G_CALLBACK(proto_cb) }, ++ { "/Analyze/EnabledProtocols", WIRESHARK_STOCK_CHECKBOX, "Enabled Protocols...", NULL, NULL, G_CALLBACK(proto_cb) }, + { "/Analyze/DecodeAs", WIRESHARK_STOCK_DECODE_AS, "Decode _As...", NULL, NULL, G_CALLBACK(decode_as_cb) }, + { "/Analyze/UserSpecifiedDecodes", WIRESHARK_STOCK_DECODE_AS, "_User Specified Decodes...", NULL, NULL, G_CALLBACK(decode_show_cb) }, + +@@ -1384,11 +1384,11 @@ + { "/Analyze/ConversationFilter", NULL, "Conversation Filter", NULL, NULL, NULL }, + + +- { "/Statistics/ConversationList", NULL, "_Conversation List", NULL, NULL, NULL }, ++ { "/Statistics/ConversationList", NULL, "Conversation List", NULL, NULL, NULL }, + +- { "/Statistics/EndpointList", NULL, "_Endpoint List", NULL, NULL, NULL }, ++ { "/Statistics/EndpointList", NULL, "Endpoint List", NULL, NULL, NULL }, + +- { "/Statistics/ServiceResponseTime", NULL, "Service _Response Time", NULL, NULL, NULL }, ++ { "/Statistics/ServiceResponseTime", NULL, "Service Response Time", NULL, NULL, NULL }, + { "/Statistics/ServiceResponseTime/DCE-RPC", WIRESHARK_STOCK_TIME, "DCE-RPC...", NULL, NULL, G_CALLBACK(gtk_dcerpcstat_cb) }, + { "/Statistics/ServiceResponseTime/ONC-RPC", WIRESHARK_STOCK_TIME, "ONC-RPC...", NULL, NULL, G_CALLBACK(gtk_rpcstat_cb) }, + +@@ -1418,7 +1418,7 @@ + { "/Statistics/collectd", NULL, "Collectd...", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, + { "/Statistics/compare", NULL, "Compare...", NULL, NULL, G_CALLBACK(gtk_comparestat_cb) }, + { "/Statistics/dns", NULL, "DNS", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, +- { "/Statistics/FlowGraph", WIRESHARK_STOCK_FLOW_GRAPH, "Flo_w Graph...", NULL, NULL, G_CALLBACK(flow_graph_launch) }, ++ { "/Statistics/FlowGraph", WIRESHARK_STOCK_FLOW_GRAPH, "Flow Graph...", NULL, NULL, G_CALLBACK(flow_graph_launch) }, + { "/Statistics/hart_ip", NULL, "HART-IP", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, + { "/Statistics/hpfeeds", NULL, "HPFEEDS", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, + { "/Statistics/HTTP", NULL, "HTTP", NULL, NULL, NULL }, +@@ -1438,50 +1438,50 @@ + { "/Statistics/UDPMulticastStreams", NULL, "UDP Multicast Streams", NULL, NULL, G_CALLBACK(mcaststream_launch) }, + { "/Statistics/WLANTraffic", NULL, "WLAN Traffic", NULL, NULL, G_CALLBACK(wlanstat_launch) }, + +- { "/Statistics/Summary", GTK_STOCK_PROPERTIES, "_Summary", NULL, NULL, G_CALLBACK(summary_open_cb) }, ++ { "/Statistics/Summary", GTK_STOCK_PROPERTIES, "Summary", NULL, NULL, G_CALLBACK(summary_open_cb) }, + { "/Statistics/CommentsSummary", NULL, "Comments Summary", NULL, NULL, G_CALLBACK(show_packet_comment_summary_dlg) }, + { "/Statistics/ShowAddreRes", NULL, "Show address resolution", NULL, NULL, G_CALLBACK(addr_resolution_dlg) }, +- { "/Statistics/ProtocolHierarchy", NULL, "_Protocol Hierarchy", NULL, NULL, G_CALLBACK(proto_hier_stats_cb) }, ++ { "/Statistics/ProtocolHierarchy", NULL, "Protocol Hierarchy", NULL, NULL, G_CALLBACK(proto_hier_stats_cb) }, + { "/Statistics/Conversations", WIRESHARK_STOCK_CONVERSATIONS, "Conversations", NULL, NULL, G_CALLBACK(init_conversation_notebook_cb) }, + { "/Statistics/Endpoints", WIRESHARK_STOCK_ENDPOINTS, "Endpoints", NULL, NULL, G_CALLBACK(init_hostlist_notebook_cb) }, +- { "/Statistics/IOGraphs", WIRESHARK_STOCK_GRAPHS, "_IO Graph", NULL, NULL, G_CALLBACK(gui_iostat_cb) }, ++ { "/Statistics/IOGraphs", WIRESHARK_STOCK_GRAPHS, "IO Graph", NULL, NULL, G_CALLBACK(gui_iostat_cb) }, + { "/Statistics/plen", NULL, "Packet Lengths...", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, + +- { "/Telephony/ANSI", NULL, "_ANSI", NULL, NULL, NULL }, +- { "/Telephony/GSM", NULL, "_GSM", NULL, NULL, NULL }, ++ { "/Telephony/ANSI", NULL, "ANSI", NULL, NULL, NULL }, ++ { "/Telephony/GSM", NULL, "GSM", NULL, NULL, NULL }, + { "/Telephony/GSM/MAPSummary", NULL, "MAP Summary", NULL, NULL, G_CALLBACK(gsm_map_stat_gtk_sum_cb) }, + + { "/Telephony/IAX2", NULL, "IA_X2", NULL, NULL, NULL }, + { "/Telephony/IAX2/StreamAnalysis", NULL, "Stream Analysis...", NULL, NULL, G_CALLBACK(iax2_analysis_cb) }, + +- { "/Telephony/isup_msg", NULL, "_ISUP Messages", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, ++ { "/Telephony/isup_msg", NULL, "ISUP Messages", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, + +- { "/Telephony/LTE", NULL, "_LTE", NULL, NULL, NULL }, ++ { "/Telephony/LTE", NULL, "LTE", NULL, NULL, NULL }, + { "/Telephony/LTE/RLCGraph", NULL, "RLC _Graph...", NULL, NULL, G_CALLBACK(rlc_lte_graph_cb) }, +- { "/Telephony/MTP3", NULL, "_MTP3", NULL, NULL, NULL }, ++ { "/Telephony/MTP3", NULL, "MTP3", NULL, NULL, NULL }, + { "/Telephony/MTP3/MSUSummary", NULL, "MSU Summary", NULL, NULL, G_CALLBACK(mtp3_sum_gtk_sum_cb) }, + { "/Telephony/Osmux", NULL, "Osmux", NULL, NULL, NULL }, + { "/Telephony/Osmux/osmux", NULL, "Packet Counter", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, +- { "/Telephony/RTP", NULL, "_RTP", NULL, NULL, NULL }, ++ { "/Telephony/RTP", NULL, "RTP", NULL, NULL, NULL }, + { "/Telephony/RTP/StreamAnalysis", NULL, "Stream Analysis...", NULL, NULL, G_CALLBACK(rtp_analysis_cb) }, + { "/Telephony/RTP/ShowAllStreams", NULL, "Show All Streams", NULL, NULL, G_CALLBACK(rtpstream_launch) }, + { "/Telephony/RTSP", NULL, "RTSP", NULL, NULL, NULL }, + { "/Telephony/RTSP/rtsp", NULL, "Packet Counter", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, +- { "/Telephony/SCTP", NULL, "S_CTP", NULL, NULL, NULL }, ++ { "/Telephony/SCTP", NULL, "SCTP", NULL, NULL, NULL }, + { "/Telephony/SCTP/AnalysethisAssociation", NULL, "Analyse this Association", NULL, NULL, G_CALLBACK(sctp_analyse_start) }, + { "/Telephony/SCTP/ShowAllAssociations", NULL, "Show All Associations...", NULL, NULL, G_CALLBACK(sctp_stat_start) }, +- { "/Telephony/smpp_commands", NULL, "SM_PPOperations", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, +- { "/Telephony/ucp_messages", NULL, "_UCP Messages", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, +- { "/Telephony/VoIPCalls", WIRESHARK_STOCK_TELEPHONE, "_VoIP Calls", NULL, NULL, G_CALLBACK(voip_calls_launch) }, ++ { "/Telephony/smpp_commands", NULL, "SMPPOperations", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, ++ { "/Telephony/ucp_messages", NULL, "UCP Messages", NULL, NULL, G_CALLBACK(gtk_stats_tree_cb) }, ++ { "/Telephony/VoIPCalls", WIRESHARK_STOCK_TELEPHONE, "VoIP Calls", NULL, NULL, G_CALLBACK(voip_calls_launch) }, + { "/Telephony/VoIPFlows", WIRESHARK_STOCK_TELEPHONE, "SIP _Flows", NULL, NULL, G_CALLBACK(voip_flows_launch) }, + + { "/Tools/FirewallACLRules", NULL, "Firewall ACL Rules", NULL, NULL, G_CALLBACK(firewall_rule_cb) }, + +- { "/Internals/Dissectortables", NULL, "_Dissector tables", NULL, NULL, G_CALLBACK(dissector_tables_dlg_cb) }, +- { "/Internals/Conversations", NULL, "_Conversation hash tables",NULL, NULL, G_CALLBACK(conversation_hastables_dlg) }, +- { "/Internals/SupportedProtocols", NULL, "_Supported Protocols (slow!)", NULL, NULL, G_CALLBACK(supported_cb) }, ++ { "/Internals/Dissectortables", NULL, "Dissector tables", NULL, NULL, G_CALLBACK(dissector_tables_dlg_cb) }, ++ { "/Internals/Conversations", NULL, "Conversation hash tables",NULL, NULL, G_CALLBACK(conversation_hastables_dlg) }, ++ { "/Internals/SupportedProtocols", NULL, "Supported Protocols (slow!)", NULL, NULL, G_CALLBACK(supported_cb) }, + +- { "/Help/Contents", GTK_STOCK_HELP, "_Contents", "F1", NULL, G_CALLBACK(help_menu_cont_cb) }, ++ { "/Help/Contents", GTK_STOCK_HELP, "Contents", "F1", NULL, G_CALLBACK(help_menu_cont_cb) }, + { "/Help/ManualPages", NULL, "ManualPages", NULL, NULL, NULL }, + { "/Help/ManualPages/Wireshark", NULL, "Wireshark", NULL, NULL, G_CALLBACK(help_menu_wireshark_cb) }, + { "/Help/ManualPages/WiresharkFilter", NULL, "Wireshark Filter", NULL, NULL, G_CALLBACK(help_menu_wireshark_flt_cb) }, +@@ -1503,43 +1503,43 @@ + #ifdef HAVE_SOFTWARE_UPDATE + { "/Help/CheckForUpdates", NULL, "Check for Updates...", NULL, NULL, G_CALLBACK(check_for_updates_cb) }, + #endif /* HAVE_SOFTWARE_UPDATE */ +- { "/Help/AboutWireshark", WIRESHARK_STOCK_ABOUT, "_About Wireshark", NULL, NULL, G_CALLBACK(about_wireshark_cb) }, ++ { "/Help/AboutWireshark", WIRESHARK_STOCK_ABOUT, "About Wireshark", NULL, NULL, G_CALLBACK(about_wireshark_cb) }, + }; + + static const GtkToggleActionEntry main_menu_bar_toggle_action_entries[] = + { + /* name, stock id, label, accel, tooltip, callback, is_active */ +- {"/View/MainToolbar", NULL, "_Main Toolbar", NULL, NULL, G_CALLBACK(main_toolbar_show_hide_cb), TRUE}, +- {"/View/FilterToolbar", NULL, "_Filter Toolbar", NULL, NULL, G_CALLBACK(filter_toolbar_show_hide_cb), TRUE}, ++ {"/View/MainToolbar", NULL, "Main Toolbar", NULL, NULL, G_CALLBACK(main_toolbar_show_hide_cb), TRUE}, ++ {"/View/FilterToolbar", NULL, "Filter Toolbar", NULL, NULL, G_CALLBACK(filter_toolbar_show_hide_cb), TRUE}, + {"/View/WirelessToolbar", NULL, "Wire_less Toolbar", NULL, NULL, G_CALLBACK(wireless_toolbar_show_hide_cb), FALSE}, +- {"/View/StatusBar", NULL, "_Status Bar", NULL, NULL, G_CALLBACK(status_bar_show_hide_cb), TRUE}, ++ {"/View/StatusBar", NULL, "Status Bar", NULL, NULL, G_CALLBACK(status_bar_show_hide_cb), TRUE}, + {"/View/PacketList", NULL, "Packet _List", NULL, NULL, G_CALLBACK(packet_list_show_hide_cb), TRUE}, + {"/View/PacketDetails", NULL, "Packet _Details", NULL, NULL, G_CALLBACK(packet_details_show_hide_cb), TRUE}, + {"/View/PacketBytes", NULL, "Packet _Bytes", NULL, NULL, G_CALLBACK(packet_bytes_show_hide_cb), TRUE}, + {"/View/TimeDisplayFormat/DisplaySecondsWithHoursAndMinutes", NULL, "Display Seconds with hours and minutes", NULL, NULL, G_CALLBACK(timestamp_seconds_time_cb), FALSE}, +- {"/View/NameResolution/EnableforMACLayer", NULL, "Enable for _MAC Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_MAC_cb), TRUE}, +- {"/View/NameResolution/EnableforTransportLayer", NULL, "Enable for _Transport Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_transport_cb), TRUE }, +- {"/View/NameResolution/EnableforNetworkLayer", NULL, "Enable for _Network Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_network_cb), TRUE }, +- {"/View/NameResolution/UseExternalNetworkNameResolver", NULL, "Use _External Network Name Resolver", NULL, NULL, G_CALLBACK(view_menu_en_use_external_resolver_cb), TRUE }, ++ {"/View/NameResolution/EnableforMACLayer", NULL, "Enable for MAC Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_MAC_cb), TRUE}, ++ {"/View/NameResolution/EnableforTransportLayer", NULL, "Enable for Transport Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_transport_cb), TRUE }, ++ {"/View/NameResolution/EnableforNetworkLayer", NULL, "Enable for Network Layer", NULL, NULL, G_CALLBACK(view_menu_en_for_network_cb), TRUE }, ++ {"/View/NameResolution/UseExternalNetworkNameResolver", NULL, "Use External Network Name Resolver", NULL, NULL, G_CALLBACK(view_menu_en_use_external_resolver_cb), TRUE }, + {"/View/ColorizePacketList", NULL, "Colorize Packet List", NULL, NULL, G_CALLBACK(view_menu_colorize_pkt_lst_cb), TRUE }, + #ifdef HAVE_LIBPCAP +- {"/View/AutoScrollinLiveCapture", NULL, "Auto Scroll in Li_ve Capture", NULL, NULL, G_CALLBACK(view_menu_auto_scroll_live_cb), TRUE }, ++ {"/View/AutoScrollinLiveCapture", NULL, "Auto Scroll in Live Capture", NULL, NULL, G_CALLBACK(view_menu_auto_scroll_live_cb), TRUE }, + #endif + }; + + static const GtkRadioActionEntry main_menu_bar_radio_view_time_entries [] = + { + /* name, stock id, label, accel, tooltip, value */ +- { "/View/TimeDisplayFormat/DateYMDandTimeofDay", NULL, "Date and Time of Day: 1970-01-01 01:02:03.123456", "1", NULL, TS_ABSOLUTE_WITH_YMD }, ++ { "/View/TimeDisplayFormat/DateYMDandTimeofDay", NULL, "Date and Time of Day: 1970-01-01 01:02:03.123456", NULL, NULL, TS_ABSOLUTE_WITH_YMD }, + { "/View/TimeDisplayFormat/DateYDOYandTimeofDay", NULL, "Date (with day of year) and Time of Day: 1970/001 01:02:03.123456", NULL, NULL, TS_ABSOLUTE_WITH_YDOY }, +- { "/View/TimeDisplayFormat/TimeofDay", NULL, "Time of Day: 01:02:03.123456", "2", NULL, TS_ABSOLUTE }, +- { "/View/TimeDisplayFormat/SecondsSinceEpoch", NULL, "Seconds Since Epoch (1970-01-01): 1234567890.123456", "3", NULL, TS_EPOCH }, +- { "/View/TimeDisplayFormat/SecondsSinceBeginningofCapture", NULL, "Seconds Since Beginning of Capture: 123.123456", "4", NULL, TS_RELATIVE }, +- { "/View/TimeDisplayFormat/SecondsSincePreviousCapturedPacket", NULL, "Seconds Since Previous Captured Packet: 1.123456", "5", NULL, TS_DELTA }, +- { "/View/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket",NULL, "Seconds Since Previous Displayed Packet: 1.123456", "6", NULL, TS_DELTA_DIS }, +- { "/View/TimeDisplayFormat/UTCDateYMDandTimeofDay", NULL, "UTC Date and Time of Day: 1970-01-01 01:02:03.123456", "7", NULL, TS_UTC_WITH_YMD }, ++ { "/View/TimeDisplayFormat/TimeofDay", NULL, "Time of Day: 01:02:03.123456", NULL, NULL, TS_ABSOLUTE }, ++ { "/View/TimeDisplayFormat/SecondsSinceEpoch", NULL, "Seconds Since Epoch (1970-01-01): 1234567890.123456", NULL, NULL, TS_EPOCH }, ++ { "/View/TimeDisplayFormat/SecondsSinceBeginningofCapture", NULL, "Seconds Since Beginning of Capture: 123.123456", NULL, NULL, TS_RELATIVE }, ++ { "/View/TimeDisplayFormat/SecondsSincePreviousCapturedPacket", NULL, "Seconds Since Previous Captured Packet: 1.123456", NULL, NULL, TS_DELTA }, ++ { "/View/TimeDisplayFormat/SecondsSincePreviousDisplayedPacket",NULL, "Seconds Since Previous Displayed Packet: 1.123456", NULL, NULL, TS_DELTA_DIS }, ++ { "/View/TimeDisplayFormat/UTCDateYMDandTimeofDay", NULL, "UTC Date and Time of Day: 1970-01-01 01:02:03.123456", NULL, NULL, TS_UTC_WITH_YMD }, + { "/View/TimeDisplayFormat/UTCDateYDOYandTimeofDay", NULL, "UTC Date (with day of year) and Time of Day: 1970/001 01:02:03.123456", NULL, NULL, TS_UTC_WITH_YDOY }, +- { "/View/TimeDisplayFormat/UTCTimeofDay", NULL, "UTC Time of Day: 01:02:03.123456", "8", NULL, TS_UTC }, ++ { "/View/TimeDisplayFormat/UTCTimeofDay", NULL, "UTC Time of Day: 01:02:03.123456", NULL, NULL, TS_UTC }, + }; + + static const GtkRadioActionEntry main_menu_bar_radio_view_time_fileformat_prec_entries [] = +diff -Naur wireshark-2.6.8-orig/ui/gtk/print_dlg.c wireshark-2.6.8-new/ui/gtk/print_dlg.c +--- wireshark-2.6.8-orig/ui/gtk/print_dlg.c 2019-12-08 17:20:59.348321143 +0000 ++++ wireshark-2.6.8-new/ui/gtk/print_dlg.c 2019-12-08 17:18:50.740298551 +0000 +@@ -612,7 +612,7 @@ + gtk_widget_show(printer_vb); + + /* "Plain text" / "Postscript" / "PDML", ... radio buttons */ +- text_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Plain _text"); ++ text_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Plain text"); + if (args->format == PR_FMT_TEXT) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(text_rb), TRUE); + gtk_widget_set_tooltip_text(text_rb, "Print output in ascii \"plain text\" format. If you're unsure, use this format."); +@@ -620,7 +620,7 @@ + if(action == output_action_print) + gtk_widget_show(text_rb); + +- ps_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "_PostScript"); ++ ps_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "PostScript"); + if (args->format == PR_FMT_PS) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ps_rb), TRUE); + gtk_widget_set_tooltip_text(ps_rb, "Print output in \"postscript\" format, for postscript capable printers or print servers."); +@@ -628,7 +628,7 @@ + if(action == output_action_print) + gtk_widget_show(ps_rb); + +- pdml_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "PDM_L (XML: Packet Details Markup Language)"); ++ pdml_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "PDML (XML: Packet Details Markup Language)"); + if (action == output_action_export_pdml) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pdml_rb), TRUE); + gtk_widget_set_tooltip_text(pdml_rb, +@@ -648,7 +648,7 @@ + gtk_box_pack_start(GTK_BOX(printer_vb), psml_rb, FALSE, FALSE, 0); + /* gtk_widget_show(psml_rb); */ + +- csv_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "_CSV"); ++ csv_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "CSV"); + if (action == output_action_export_csv) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(csv_rb), TRUE); + gtk_widget_set_tooltip_text(csv_rb, +@@ -686,7 +686,7 @@ + + + /* Output to file button */ +- dest_cb = gtk_check_button_new_with_mnemonic("Output to _file:"); ++ dest_cb = gtk_check_button_new_with_mnemonic("Output to file:"); + if (args->to_file) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dest_cb), TRUE); + gtk_widget_set_tooltip_text(dest_cb, "Output to file instead of printer"); +@@ -815,21 +815,21 @@ + gtk_widget_show(details_vb); + + /* "All collapsed"/"As displayed"/"All Expanded" radio buttons */ +- collapse_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "All co_llapsed"); ++ collapse_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "All collapsed"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(collapse_all_rb), args->print_dissections == print_dissections_collapsed); + gtk_widget_set_sensitive(collapse_all_rb, args->print_dissections != print_dissections_none); + gtk_widget_set_tooltip_text(collapse_all_rb, "Output of the packet details tree \"collapsed\""); + gtk_box_pack_start(GTK_BOX(details_vb), collapse_all_rb, TRUE, TRUE, 0); + gtk_widget_show(collapse_all_rb); + +- as_displayed_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "As displa_yed"); ++ as_displayed_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "As displayed"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(as_displayed_rb), args->print_dissections == print_dissections_as_displayed); + gtk_widget_set_sensitive(as_displayed_rb, args->print_dissections != print_dissections_none); + gtk_widget_set_tooltip_text(as_displayed_rb, "Output of the packet details tree \"as displayed\""); + gtk_box_pack_start(GTK_BOX(details_vb), as_displayed_rb, TRUE, TRUE, 0); + gtk_widget_show(as_displayed_rb); + +- expand_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "All e_xpanded"); ++ expand_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "All expanded"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(expand_all_rb), args->print_dissections == print_dissections_expanded); + gtk_widget_set_sensitive(expand_all_rb, args->print_dissections != print_dissections_none); + gtk_widget_set_tooltip_text(expand_all_rb, "Output of the packet details tree \"expanded\""); +diff -Naur wireshark-2.6.8-orig/ui/gtk/range_utils.c wireshark-2.6.8-new/ui/gtk/range_utils.c +--- wireshark-2.6.8-orig/ui/gtk/range_utils.c 2019-12-08 17:20:59.348321143 +0000 ++++ wireshark-2.6.8-new/ui/gtk/range_utils.c 2019-12-08 17:18:50.740298551 +0000 +@@ -560,13 +560,13 @@ + gtk_container_set_border_width(GTK_CONTAINER(range_grid), 5); + + /* captured button */ +- captured_bt = gtk_toggle_button_new_with_mnemonic("_Captured"); ++ captured_bt = gtk_toggle_button_new_with_mnemonic("Captured"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), captured_bt, 1, 0, 1, 1); + g_signal_connect(captured_bt, "toggled", G_CALLBACK(toggle_captured_cb), range_grid); + gtk_widget_set_tooltip_text (captured_bt,("Process all the below chosen packets")); + + /* displayed button */ +- displayed_bt = gtk_toggle_button_new_with_mnemonic("_Displayed"); ++ displayed_bt = gtk_toggle_button_new_with_mnemonic("Displayed"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), displayed_bt, 2, 0, 1, 1); + g_signal_connect(displayed_bt, "toggled", G_CALLBACK(toggle_filtered_cb), range_grid); + if (saving) +@@ -581,7 +581,7 @@ + + + /* Process all packets */ +- select_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "_All packets"); ++ select_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "All packets"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), select_all_rb, 0, 1, 1, 1); + gtk_widget_set_tooltip_text (select_all_rb, ("Process all packets")); + g_signal_connect(select_all_rb, "toggled", G_CALLBACK(toggle_select_all), range_grid); +@@ -594,7 +594,7 @@ + + /* Process currently selected */ + select_curr_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), +- "_Selected packet only"); ++ "Selected packet only"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), select_curr_rb, 0, 2, 1, 1); + gtk_widget_set_tooltip_text (select_curr_rb, ("Process the currently selected packet only")); + g_signal_connect(select_curr_rb, "toggled", G_CALLBACK(toggle_select_selected), range_grid); +@@ -607,7 +607,7 @@ + + /* Process marked packets */ + select_marked_only_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), +- "_Marked packets only"); ++ "Marked packets only"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), select_marked_only_rb, 0, 3, 1, 1); + gtk_widget_set_tooltip_text (select_marked_only_rb, ("Process marked packets only")); + g_signal_connect(select_marked_only_rb, "toggled", G_CALLBACK(toggle_select_marked_only), range_grid); +@@ -620,7 +620,7 @@ + + /* Process packet range between first and last packet */ + select_marked_range_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), +- "From first _to last marked packet"); ++ "From first to last marked packet"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), select_marked_range_rb, 0, 4, 1, 1); + gtk_widget_set_tooltip_text (select_marked_range_rb,("Process all packets between the first and last marker")); + g_signal_connect(select_marked_range_rb, "toggled", G_CALLBACK(toggle_select_marked_range), range_grid); +@@ -633,7 +633,7 @@ + + /* Process a user specified provided packet range : -10,30,40-70,80- */ + select_user_range_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(select_all_rb), +- "Specify a packet _range:"); ++ "Specify a packet range:"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), select_user_range_rb, 0, 5, 1, 1); + gtk_widget_set_tooltip_text (select_user_range_rb,("Process a specified packet range")); + g_signal_connect(select_user_range_rb, "toggled", G_CALLBACK(toggle_select_user_range), range_grid); +@@ -654,7 +654,7 @@ + g_signal_connect(select_user_range_entry,"activate", G_CALLBACK(range_entry_in_event), range_grid); + + /* Remove ignored packets */ +- remove_ignored_cb = gtk_check_button_new_with_mnemonic("Remove _Ignored packets"); ++ remove_ignored_cb = gtk_check_button_new_with_mnemonic("Remove Ignored packets"); + ws_gtk_grid_attach_defaults(GTK_GRID(range_grid), remove_ignored_cb, 0, 7, 1, 1); + gtk_widget_set_tooltip_text (remove_ignored_cb,("Remove all packets marked as Ignored")); + g_signal_connect(remove_ignored_cb, "toggled", G_CALLBACK(toggle_remove_ignored), range_grid); +diff -Naur wireshark-2.6.8-orig/ui/gtk/stock_icons.c wireshark-2.6.8-new/ui/gtk/stock_icons.c +--- wireshark-2.6.8-orig/ui/gtk/stock_icons.c 2019-12-08 17:20:59.358320989 +0000 ++++ wireshark-2.6.8-new/ui/gtk/stock_icons.c 2019-12-08 17:18:50.740298551 +0000 +@@ -110,14 +110,14 @@ + * PLEASE DON'T REUSE STOCK ICONS IF THEY ARE USUALLY USED FOR SOME DIFFERENT MEANING!!!) + */ + static stock_item_t ws_stock_items[] = { +- {(const char *)WIRESHARK_STOCK_CAPTURE_INTERFACES, (char *)WIRESHARK_STOCK_CAPTURE_INTERFACES, (const char *)"_Interfaces"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_OPTIONS, (const char *)WIRESHARK_STOCK_CAPTURE_OPTIONS, (const char *)"_Options"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_START, (const char *)WIRESHARK_STOCK_CAPTURE_START, (const char *)"_Start"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_STOP, (const char *)WIRESHARK_STOCK_CAPTURE_STOP, (const char *)"S_top"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_RESTART, (const char *)WIRESHARK_STOCK_CAPTURE_RESTART, (const char *)"_Restart"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_FILTER, (const char *)WIRESHARK_STOCK_CAPTURE_FILTER, (const char *)"_Capture Filter"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_FILTER_ENTRY, (const char *)WIRESHARK_STOCK_CAPTURE_FILTER_ENTRY, (const char *)"_Capture Filter:"}, +- {(const char *)WIRESHARK_STOCK_CAPTURE_DETAILS, (const char *)WIRESHARK_STOCK_CAPTURE_DETAILS, (const char *)"_Details"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_INTERFACES, (char *)WIRESHARK_STOCK_CAPTURE_INTERFACES, (const char *)"Interfaces"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_OPTIONS, (const char *)WIRESHARK_STOCK_CAPTURE_OPTIONS, (const char *)"Options"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_START, (const char *)WIRESHARK_STOCK_CAPTURE_START, (const char *)"Start"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_STOP, (const char *)WIRESHARK_STOCK_CAPTURE_STOP, (const char *)"Stop"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_RESTART, (const char *)WIRESHARK_STOCK_CAPTURE_RESTART, (const char *)"Restart"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_FILTER, (const char *)WIRESHARK_STOCK_CAPTURE_FILTER, (const char *)"Capture Filter"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_FILTER_ENTRY, (const char *)WIRESHARK_STOCK_CAPTURE_FILTER_ENTRY, (const char *)"Capture Filter:"}, ++ {(const char *)WIRESHARK_STOCK_CAPTURE_DETAILS, (const char *)WIRESHARK_STOCK_CAPTURE_DETAILS, (const char *)"Details"}, + #ifdef HAVE_GEOIP + {(const char *)WIRESHARK_STOCK_MAP, (const char *)WIRESHARK_STOCK_MAP, (const char *)"Map"}, + #endif +@@ -125,24 +125,24 @@ + {(const char *)WIRESHARK_STOCK_GRAPH_B_A, (const char *)WIRESHARK_STOCK_GRAPH_B_A, (const char *)"Graph A" UTF8_LEFTWARDS_ARROW "B"}, + {(const char *)WIRESHARK_STOCK_FOLLOW_STREAM, (const char *)WIRESHARK_STOCK_FOLLOW_STREAM, (const char *)"Follow Stream"}, + {(const char *)WIRESHARK_STOCK_DISPLAY_FILTER, (const char *)WIRESHARK_STOCK_DISPLAY_FILTER, (const char *)"Display _Filter"}, +- {(const char *)WIRESHARK_STOCK_DISPLAY_FILTER_ENTRY, (const char *)WIRESHARK_STOCK_DISPLAY_FILTER_ENTRY, (const char *)"F_ilter:"}, +- {(const char *)WIRESHARK_STOCK_BROWSE, (const char *)GTK_STOCK_OPEN, (const char *)"_Browse..."}, ++ {(const char *)WIRESHARK_STOCK_DISPLAY_FILTER_ENTRY, (const char *)WIRESHARK_STOCK_DISPLAY_FILTER_ENTRY, (const char *)"Filter:"}, ++ {(const char *)WIRESHARK_STOCK_BROWSE, (const char *)GTK_STOCK_OPEN, (const char *)"Browse..."}, + {(const char *)WIRESHARK_STOCK_CREATE_STAT, (const char *)GTK_STOCK_OK, (const char *)"Create _Stat"}, +- {(const char *)WIRESHARK_STOCK_EXPORT, (const char *)GTK_STOCK_SAVE, (const char *)"_Export..."}, /* XXX: needs a better icon */ +- {(const char *)WIRESHARK_STOCK_IMPORT, (const char *)GTK_STOCK_OPEN, (const char *)"_Import..."}, /* XXX: needs a better icon */ +- {(const char *)WIRESHARK_STOCK_EDIT, (const char *)GTK_STOCK_PROPERTIES, (const char *)"_Edit..."}, +- {(const char *)WIRESHARK_STOCK_ADD_EXPRESSION, (const char *)GTK_STOCK_ADD, (const char *)"E_xpression..." }, /* plus sign coming from icon */ +- {(const char *)WIRESHARK_STOCK_CLEAR_EXPRESSION, (const char *)GTK_STOCK_CLEAR, (const char *)"Clea_r" }, +- {(const char *)WIRESHARK_STOCK_APPLY_EXPRESSION, (const char *)GTK_STOCK_APPLY, (const char *)"App_ly" }, +- {(const char *)WIRESHARK_STOCK_SAVE_ALL, (const char *)GTK_STOCK_SAVE, (const char *)"Save A_ll"}, /* XXX: needs a better icon */ +- {(const char *)WIRESHARK_STOCK_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Continue _without Saving"}, +- {(const char *)WIRESHARK_STOCK_QUIT_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Quit _without Saving"}, +- {(const char *)WIRESHARK_STOCK_STOP_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Stop and Continue _without Saving"}, +- {(const char *)WIRESHARK_STOCK_STOP_QUIT_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Stop and Quit _without Saving"}, ++ {(const char *)WIRESHARK_STOCK_EXPORT, (const char *)GTK_STOCK_SAVE, (const char *)"Export..."}, /* XXX: needs a better icon */ ++ {(const char *)WIRESHARK_STOCK_IMPORT, (const char *)GTK_STOCK_OPEN, (const char *)"Import..."}, /* XXX: needs a better icon */ ++ {(const char *)WIRESHARK_STOCK_EDIT, (const char *)GTK_STOCK_PROPERTIES, (const char *)"Edit..."}, ++ {(const char *)WIRESHARK_STOCK_ADD_EXPRESSION, (const char *)GTK_STOCK_ADD, (const char *)"Expression..." }, /* plus sign coming from icon */ ++ {(const char *)WIRESHARK_STOCK_CLEAR_EXPRESSION, (const char *)GTK_STOCK_CLEAR, (const char *)"Clear" }, ++ {(const char *)WIRESHARK_STOCK_APPLY_EXPRESSION, (const char *)GTK_STOCK_APPLY, (const char *)"Apply" }, ++ {(const char *)WIRESHARK_STOCK_SAVE_ALL, (const char *)GTK_STOCK_SAVE, (const char *)"Save All"}, /* XXX: needs a better icon */ ++ {(const char *)WIRESHARK_STOCK_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Continue without Saving"}, ++ {(const char *)WIRESHARK_STOCK_QUIT_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Quit without Saving"}, ++ {(const char *)WIRESHARK_STOCK_STOP_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Stop and Continue without Saving"}, ++ {(const char *)WIRESHARK_STOCK_STOP_QUIT_DONT_SAVE, (const char *)GTK_STOCK_CLEAR, (const char *)"Stop and Quit without Saving"}, + {(const char *)WIRESHARK_STOCK_STOP_SAVE, (const char *)GTK_STOCK_SAVE, (const char *)"Stop and Save"}, +- {(const char *)WIRESHARK_STOCK_ABOUT, (const char *)WIRESHARK_STOCK_ABOUT, (const char *)"_About"}, +- {(const char *)WIRESHARK_STOCK_COLORIZE, (const char *)WIRESHARK_STOCK_COLORIZE, (const char *)"_Colorize"}, +- {(const char *)WIRESHARK_STOCK_AUTOSCROLL, (const char *)WIRESHARK_STOCK_AUTOSCROLL, (const char *)"_Auto Scroll"}, ++ {(const char *)WIRESHARK_STOCK_ABOUT, (const char *)WIRESHARK_STOCK_ABOUT, (const char *)"About"}, ++ {(const char *)WIRESHARK_STOCK_COLORIZE, (const char *)WIRESHARK_STOCK_COLORIZE, (const char *)"Colorize"}, ++ {(const char *)WIRESHARK_STOCK_AUTOSCROLL, (const char *)WIRESHARK_STOCK_AUTOSCROLL, (const char *)"Auto Scroll"}, + {(const char *)WIRESHARK_STOCK_RESIZE_COLUMNS, (const char *)WIRESHARK_STOCK_RESIZE_COLUMNS, (const char *)"Resize Columns"}, + {(const char *)WIRESHARK_STOCK_TIME, (const char *)WIRESHARK_STOCK_TIME, (const char *)"Time"}, + {(const char *)WIRESHARK_STOCK_INTERNET, (const char *)WIRESHARK_STOCK_INTERNET, (const char *)"Internet"}, +@@ -182,123 +182,123 @@ + }; + + static stock_item_t gtk_stock_items[] = { +- {(const char *)GTK_STOCK_ABOUT, (const char *)"help-about", (const char *)"_About"}, +- {(const char *)GTK_STOCK_ADD, (const char *)"list-add", (const char *)"_Add"}, +- {(const char *)GTK_STOCK_APPLY, NULL, (const char *)"_Apply"}, +- {(const char *)GTK_STOCK_BOLD, (const char *)"format-text-bold", (const char *)"_Bold"}, +- {(const char *)GTK_STOCK_CANCEL, NULL, (const char *)"_Cancel"}, ++ {(const char *)GTK_STOCK_ABOUT, (const char *)"help-about", (const char *)"About"}, ++ {(const char *)GTK_STOCK_ADD, (const char *)"list-add", (const char *)"Add"}, ++ {(const char *)GTK_STOCK_APPLY, NULL, (const char *)"Apply"}, ++ {(const char *)GTK_STOCK_BOLD, (const char *)"format-text-bold", (const char *)"Bold"}, ++ {(const char *)GTK_STOCK_CANCEL, NULL, (const char *)"Cancel"}, + #ifdef GTK_STOCK_CAPS_LOCK_WARNING + {(const char *)GTK_STOCK_CAPS_LOCK_WARNING, NULL, NULL}, + #endif +- {(const char *)GTK_STOCK_CDROM, (const char *)"media-optical", (const char *)"_CD-ROM"}, +- {(const char *)GTK_STOCK_CLEAR, (const char *)"edit-clear", (const char *)"_Clear"}, +- {(const char *)GTK_STOCK_CLOSE, (const char *)"window-close", (const char *)"_Close"}, ++ {(const char *)GTK_STOCK_CDROM, (const char *)"media-optical", (const char *)"CD-ROM"}, ++ {(const char *)GTK_STOCK_CLEAR, (const char *)"edit-clear", (const char *)"Clear"}, ++ {(const char *)GTK_STOCK_CLOSE, (const char *)"window-close", (const char *)"Close"}, + {(const char *)GTK_STOCK_COLOR_PICKER, NULL, NULL}, +- {(const char *)GTK_STOCK_CONNECT, NULL, (const char *)"C_onnect"}, +- {(const char *)GTK_STOCK_CONVERT, NULL, (const char *)"_Convert"}, +- {(const char *)GTK_STOCK_COPY, (const char *)"edit-copy", (const char *)"_Copy"}, +- {(const char *)GTK_STOCK_CUT, (const char *)"edit-cut", (const char *)"Cu_t"}, +- {(const char *)GTK_STOCK_DELETE, (const char *)"edit-delete", (const char *)"_Delete"}, ++ {(const char *)GTK_STOCK_CONNECT, NULL, (const char *)"Connect"}, ++ {(const char *)GTK_STOCK_CONVERT, NULL, (const char *)"Convert"}, ++ {(const char *)GTK_STOCK_COPY, (const char *)"edit-copy", (const char *)"Copy"}, ++ {(const char *)GTK_STOCK_CUT, (const char *)"edit-cut", (const char *)"Cut"}, ++ {(const char *)GTK_STOCK_DELETE, (const char *)"edit-delete", (const char *)"Delete"}, + {(const char *)GTK_STOCK_DIALOG_AUTHENTICATION, (const char *)"dialog-password", NULL}, + {(const char *)GTK_STOCK_DIALOG_INFO, (const char *)"dialog-information", (const char *)"Information"}, + {(const char *)GTK_STOCK_DIALOG_WARNING, (const char *)"dialog-warning", (const char *)"Warning"}, + {(const char *)GTK_STOCK_DIALOG_ERROR, (const char *)"dialog-error", (const char *)"Error"}, + {(const char *)GTK_STOCK_DIALOG_QUESTION, (const char *)"dialog-question", (const char *)"Question"}, + {(const char *)GTK_STOCK_DIRECTORY, (const char *)"folder", NULL}, +- {(const char *)GTK_STOCK_DISCARD, NULL, (const char *)"_Discard"}, +- {(const char *)GTK_STOCK_DISCONNECT, NULL, (const char *)"_Disconnect"}, ++ {(const char *)GTK_STOCK_DISCARD, NULL, (const char *)"Discard"}, ++ {(const char *)GTK_STOCK_DISCONNECT, NULL, (const char *)"Disconnect"}, + {(const char *)GTK_STOCK_DND, NULL, NULL}, + {(const char *)GTK_STOCK_DND_MULTIPLE, NULL, NULL}, +- {(const char *)GTK_STOCK_EDIT, NULL, (const char *)"_Edit"}, +- {(const char *)GTK_STOCK_EXECUTE, (const char *)"system-run", (const char *)"_Execute"}, +- {(const char *)GTK_STOCK_FILE, (const char *)"text-x-generic", (const char *)"_File"}, +- {(const char *)GTK_STOCK_FIND, (const char *)"edit-find", (const char *)"_Find"}, +- {(const char *)GTK_STOCK_FIND_AND_REPLACE, (const char *)"edit-find-replace", (const char *)"Find and _Replace"}, +- {(const char *)GTK_STOCK_FLOPPY, (const char *)"media-floppy", (const char *)"_Floppy"}, +- {(const char *)GTK_STOCK_FULLSCREEN, (const char *)"view-fullscreen", (const char *)"_Fullscreen"}, +- {(const char *)GTK_STOCK_GOTO_BOTTOM, (const char *)"go-bottom", (const char *)"_Bottom"}, +- {(const char *)GTK_STOCK_GOTO_FIRST, (const char *)"go-first", (const char *)"_First"}, +- {(const char *)GTK_STOCK_GOTO_LAST, (const char *)"go-last", (const char *)"_Last"}, +- {(const char *)GTK_STOCK_GOTO_TOP, (const char *)"go-top", (const char *)"_Top"}, +- {(const char *)GTK_STOCK_GO_BACK, (const char *)"go-previous", (const char *)"_Back"}, +- {(const char *)GTK_STOCK_GO_DOWN, (const char *)"go-down", (const char *)"_Down"}, +- {(const char *)GTK_STOCK_GO_FORWARD, (const char *)"go-next", (const char *)"_Forward"}, +- {(const char *)GTK_STOCK_GO_UP, (const char *)"go-up", (const char *)"_Up"}, +- {(const char *)GTK_STOCK_HARDDISK, (const char *)"drive-harddisk", (const char *)"_Hard Disk"}, +- {(const char *)GTK_STOCK_HELP, (const char *)"help-browser", (const char *)"_Help"}, +- {(const char *)GTK_STOCK_HOME, (const char *)"go-home", (const char *)"_Home"}, +- {(const char *)GTK_STOCK_INDEX, NULL, (const char *)"_Index"}, ++ {(const char *)GTK_STOCK_EDIT, NULL, (const char *)"Edit"}, ++ {(const char *)GTK_STOCK_EXECUTE, (const char *)"system-run", (const char *)"Execute"}, ++ {(const char *)GTK_STOCK_FILE, (const char *)"text-x-generic", (const char *)"File"}, ++ {(const char *)GTK_STOCK_FIND, (const char *)"edit-find", (const char *)"Find"}, ++ {(const char *)GTK_STOCK_FIND_AND_REPLACE, (const char *)"edit-find-replace", (const char *)"Find and Replace"}, ++ {(const char *)GTK_STOCK_FLOPPY, (const char *)"media-floppy", (const char *)"Floppy"}, ++ {(const char *)GTK_STOCK_FULLSCREEN, (const char *)"view-fullscreen", (const char *)"Fullscreen"}, ++ {(const char *)GTK_STOCK_GOTO_BOTTOM, (const char *)"go-bottom", (const char *)"Bottom"}, ++ {(const char *)GTK_STOCK_GOTO_FIRST, (const char *)"go-first", (const char *)"First"}, ++ {(const char *)GTK_STOCK_GOTO_LAST, (const char *)"go-last", (const char *)"Last"}, ++ {(const char *)GTK_STOCK_GOTO_TOP, (const char *)"go-top", (const char *)"Top"}, ++ {(const char *)GTK_STOCK_GO_BACK, (const char *)"go-previous", (const char *)"Back"}, ++ {(const char *)GTK_STOCK_GO_DOWN, (const char *)"go-down", (const char *)"Down"}, ++ {(const char *)GTK_STOCK_GO_FORWARD, (const char *)"go-next", (const char *)"Forward"}, ++ {(const char *)GTK_STOCK_GO_UP, (const char *)"go-up", (const char *)"Up"}, ++ {(const char *)GTK_STOCK_HARDDISK, (const char *)"drive-harddisk", (const char *)"Hard Disk"}, ++ {(const char *)GTK_STOCK_HELP, (const char *)"help-browser", (const char *)"Help"}, ++ {(const char *)GTK_STOCK_HOME, (const char *)"go-home", (const char *)"Home"}, ++ {(const char *)GTK_STOCK_INDEX, NULL, (const char *)"Index"}, + {(const char *)GTK_STOCK_INDENT, (const char *)"format-indent-more", (const char *)"Increase Indent"}, +- {(const char *)GTK_STOCK_INFO, (const char *)"dialog-information", (const char *)"_Information"}, +- {(const char *)GTK_STOCK_ITALIC, (const char *)"format-text-italic", (const char *)"_Italic"}, +- {(const char *)GTK_STOCK_JUMP_TO, (const char *)"go-jump", (const char *)"_Jump to"}, +- {(const char *)GTK_STOCK_JUSTIFY_CENTER, (const char *)"format-justify-center", (const char *)"_Center"}, +- {(const char *)GTK_STOCK_JUSTIFY_FILL, (const char *)"format-justify-fill", (const char *)"_Fill"}, +- {(const char *)GTK_STOCK_JUSTIFY_LEFT, (const char *)"format-justify-left", (const char *)"_Left"}, +- {(const char *)GTK_STOCK_JUSTIFY_RIGHT, (const char *)"format-justify-right", (const char *)"_Right"}, +- {(const char *)GTK_STOCK_LEAVE_FULLSCREEN, (const char *)"view-restore", (const char *)"_Leave Fullscreen"}, ++ {(const char *)GTK_STOCK_INFO, (const char *)"dialog-information", (const char *)"Information"}, ++ {(const char *)GTK_STOCK_ITALIC, (const char *)"format-text-italic", (const char *)"Italic"}, ++ {(const char *)GTK_STOCK_JUMP_TO, (const char *)"go-jump", (const char *)"Jump to"}, ++ {(const char *)GTK_STOCK_JUSTIFY_CENTER, (const char *)"format-justify-center", (const char *)"Center"}, ++ {(const char *)GTK_STOCK_JUSTIFY_FILL, (const char *)"format-justify-fill", (const char *)"Fill"}, ++ {(const char *)GTK_STOCK_JUSTIFY_LEFT, (const char *)"format-justify-left", (const char *)"Left"}, ++ {(const char *)GTK_STOCK_JUSTIFY_RIGHT, (const char *)"format-justify-right", (const char *)"Right"}, ++ {(const char *)GTK_STOCK_LEAVE_FULLSCREEN, (const char *)"view-restore", (const char *)"Leave Fullscreen"}, + {(const char *)GTK_STOCK_MISSING_IMAGE, (const char *)"image-missing", NULL}, +- {(const char *)GTK_STOCK_MEDIA_FORWARD, (const char *)"media-seek-forward", (const char *)"_Forward"}, +- {(const char *)GTK_STOCK_MEDIA_NEXT, (const char *)"media-skip-forward", (const char *)"_Next"}, +- {(const char *)GTK_STOCK_MEDIA_PAUSE, (const char *)"media-playback-pause", (const char *)"P_ause"}, +- {(const char *)GTK_STOCK_MEDIA_PLAY, (const char *)"media-playback-start", (const char *)"_Play"}, +- {(const char *)GTK_STOCK_MEDIA_PREVIOUS, (const char *)"media-skip-backward", (const char *)"Pre_vious"}, +- {(const char *)GTK_STOCK_MEDIA_RECORD, (const char *)"media-record", (const char *)"_Record"}, +- {(const char *)GTK_STOCK_MEDIA_REWIND, (const char *)"media-seek-backward", (const char *)"R_ewind"}, +- {(const char *)GTK_STOCK_MEDIA_STOP, (const char *)"media-playback-stop", (const char *)"_Stop"}, +- {(const char *)GTK_STOCK_NETWORK, (const char *)"network-workgroup", (const char *)"_Network"}, +- {(const char *)GTK_STOCK_NEW, (const char *)"document-new", (const char *)"_New"}, +- {(const char *)GTK_STOCK_NO, NULL, (const char *)"_No"}, +- {(const char *)GTK_STOCK_OK, NULL, (const char *)"_OK"}, +- {(const char *)GTK_STOCK_OPEN, (const char *)"document-open", (const char *)"_Open"}, ++ {(const char *)GTK_STOCK_MEDIA_FORWARD, (const char *)"media-seek-forward", (const char *)"Forward"}, ++ {(const char *)GTK_STOCK_MEDIA_NEXT, (const char *)"media-skip-forward", (const char *)"Next"}, ++ {(const char *)GTK_STOCK_MEDIA_PAUSE, (const char *)"media-playback-pause", (const char *)"Pause"}, ++ {(const char *)GTK_STOCK_MEDIA_PLAY, (const char *)"media-playback-start", (const char *)"Play"}, ++ {(const char *)GTK_STOCK_MEDIA_PREVIOUS, (const char *)"media-skip-backward", (const char *)"Previous"}, ++ {(const char *)GTK_STOCK_MEDIA_RECORD, (const char *)"media-record", (const char *)"Record"}, ++ {(const char *)GTK_STOCK_MEDIA_REWIND, (const char *)"media-seek-backward", (const char *)"Rewind"}, ++ {(const char *)GTK_STOCK_MEDIA_STOP, (const char *)"media-playback-stop", (const char *)"Stop"}, ++ {(const char *)GTK_STOCK_NETWORK, (const char *)"network-workgroup", (const char *)"Network"}, ++ {(const char *)GTK_STOCK_NEW, (const char *)"document-new", (const char *)"New"}, ++ {(const char *)GTK_STOCK_NO, NULL, (const char *)"No"}, ++ {(const char *)GTK_STOCK_OK, NULL, (const char *)"OK"}, ++ {(const char *)GTK_STOCK_OPEN, (const char *)"document-open", (const char *)"Open"}, + {(const char *)GTK_STOCK_ORIENTATION_PORTRAIT, (const char *)"?", (const char *)"Portrait"}, + {(const char *)GTK_STOCK_ORIENTATION_LANDSCAPE, (const char *)"?", (const char *)"Landscape"}, + {(const char *)GTK_STOCK_ORIENTATION_REVERSE_LANDSCAPE, (const char *)"?", (const char *)"Reverse landscape"}, + {(const char *)GTK_STOCK_ORIENTATION_REVERSE_PORTRAIT, (const char *)"?", (const char *)"Reverse portrait"}, + #ifdef GTK_STOCK_PAGE_SETUP +- {(const char *)GTK_STOCK_PAGE_SETUP, (const char *)"document-page-setup", (const char *)"Page Set_up"}, ++ {(const char *)GTK_STOCK_PAGE_SETUP, (const char *)"document-page-setup", (const char *)"Page Setup"}, + #endif +- {(const char *)GTK_STOCK_PASTE, (const char *)"edit-paste", (const char *)"_Paste"}, +- {(const char *)GTK_STOCK_PREFERENCES, (const char *)"preferences-system", (const char *)"_Preferences"}, +- {(const char *)GTK_STOCK_PRINT, (const char *)"document-print", (const char *)"_Print"}, ++ {(const char *)GTK_STOCK_PASTE, (const char *)"edit-paste", (const char *)"Paste"}, ++ {(const char *)GTK_STOCK_PREFERENCES, (const char *)"preferences-system", (const char *)"Preferences"}, ++ {(const char *)GTK_STOCK_PRINT, (const char *)"document-print", (const char *)"Print"}, + #ifdef GTK_STOCK_PRINT_ERROR + {(const char *)GTK_STOCK_PRINT_ERROR, (const char *)"printer-error", NULL}, + #endif + #ifdef GTK_STOCK_PRINT_PAUSED + {(const char *)GTK_STOCK_PRINT_PAUSED, NULL, NULL}, + #endif +- {(const char *)GTK_STOCK_PRINT_PREVIEW, NULL, (const char *)"Print Pre_view"}, ++ {(const char *)GTK_STOCK_PRINT_PREVIEW, NULL, (const char *)"Print Preview"}, + #ifdef GTK_STOCK_PRINT_REPORT + {(const char *)GTK_STOCK_PRINT_REPORT, NULL, NULL}, + #endif + #ifdef GTK_STOCK_PRINT_WARNING + {(const char *)GTK_STOCK_PRINT_WARNING, NULL, NULL}, + #endif +- {(const char *)GTK_STOCK_PROPERTIES, (const char *)"document-properties", (const char *)"_Properties"}, +- {(const char *)GTK_STOCK_QUIT, (const char *)"application-exit", (const char *)"_Quit"}, +- {(const char *)GTK_STOCK_REDO, (const char *)"edit-redo", (const char *)"_Redo"}, +- {(const char *)GTK_STOCK_REFRESH, (const char *)"view-refresh", (const char *)"_Refresh"}, +- {(const char *)GTK_STOCK_REMOVE, (const char *)"list-remove", (const char *)"_Remove"}, +- {(const char *)GTK_STOCK_REVERT_TO_SAVED, (const char *)"document-revert", (const char *)"_Revert"}, +- {(const char *)GTK_STOCK_SAVE, (const char *)"document-save", (const char *)"_Save"}, +- {(const char *)GTK_STOCK_SAVE_AS, (const char *)"document-save-as", (const char *)"Save _As"}, +- {(const char *)GTK_STOCK_SELECT_ALL, (const char *)"edit-select-all", (const char *)"Select _All"}, +- {(const char *)GTK_STOCK_SELECT_COLOR, NULL, (const char *)"_Color"}, +- {(const char *)GTK_STOCK_SELECT_FONT, NULL, (const char *)"_Font"}, +- {(const char *)GTK_STOCK_SORT_ASCENDING, (const char *)"view-sort-ascending", (const char *)"_Ascending"}, +- {(const char *)GTK_STOCK_SORT_DESCENDING, (const char *)"view-sort-descending", (const char *)"_Descending"}, +- {(const char *)GTK_STOCK_SPELL_CHECK, (const char *)"tools-check-spelling", (const char *)"_Spell Check"}, +- {(const char *)GTK_STOCK_STOP, (const char *)"process-stop", (const char *)"_Stop"}, +- {(const char *)GTK_STOCK_STRIKETHROUGH, (const char *)"format-text-strikethrough", (const char *)"_Strikethrough"}, +- {(const char *)GTK_STOCK_UNDELETE, NULL, (const char *)"_Undelete"}, +- {(const char *)GTK_STOCK_UNDERLINE, (const char *)"format-text-underline", (const char *)"_Underline"}, +- {(const char *)GTK_STOCK_UNDO, (const char *)"edit-undo", (const char *)"_Undo"}, ++ {(const char *)GTK_STOCK_PROPERTIES, (const char *)"document-properties", (const char *)"Properties"}, ++ {(const char *)GTK_STOCK_QUIT, (const char *)"application-exit", (const char *)"Quit"}, ++ {(const char *)GTK_STOCK_REDO, (const char *)"edit-redo", (const char *)"Redo"}, ++ {(const char *)GTK_STOCK_REFRESH, (const char *)"view-refresh", (const char *)"Refresh"}, ++ {(const char *)GTK_STOCK_REMOVE, (const char *)"list-remove", (const char *)"Remove"}, ++ {(const char *)GTK_STOCK_REVERT_TO_SAVED, (const char *)"document-revert", (const char *)"Revert"}, ++ {(const char *)GTK_STOCK_SAVE, (const char *)"document-save", (const char *)"Save"}, ++ {(const char *)GTK_STOCK_SAVE_AS, (const char *)"document-save-as", (const char *)"Save As"}, ++ {(const char *)GTK_STOCK_SELECT_ALL, (const char *)"edit-select-all", (const char *)"Select All"}, ++ {(const char *)GTK_STOCK_SELECT_COLOR, NULL, (const char *)"Color"}, ++ {(const char *)GTK_STOCK_SELECT_FONT, NULL, (const char *)"Font"}, ++ {(const char *)GTK_STOCK_SORT_ASCENDING, (const char *)"view-sort-ascending", (const char *)"Ascending"}, ++ {(const char *)GTK_STOCK_SORT_DESCENDING, (const char *)"view-sort-descending", (const char *)"Descending"}, ++ {(const char *)GTK_STOCK_SPELL_CHECK, (const char *)"tools-check-spelling", (const char *)"Spell Check"}, ++ {(const char *)GTK_STOCK_STOP, (const char *)"process-stop", (const char *)"Stop"}, ++ {(const char *)GTK_STOCK_STRIKETHROUGH, (const char *)"format-text-strikethrough", (const char *)"Strikethrough"}, ++ {(const char *)GTK_STOCK_UNDELETE, NULL, (const char *)"Undelete"}, ++ {(const char *)GTK_STOCK_UNDERLINE, (const char *)"format-text-underline", (const char *)"Underline"}, ++ {(const char *)GTK_STOCK_UNDO, (const char *)"edit-undo", (const char *)"Undo"}, + {(const char *)GTK_STOCK_UNINDENT, (const char *)"format-indent-less", NULL}, +- {(const char *)GTK_STOCK_YES, NULL, (const char *)"_Yes"}, +- {(const char *)GTK_STOCK_ZOOM_100, (const char *)"zoom-original", (const char *)"_Normal Size"}, +- {(const char *)GTK_STOCK_ZOOM_FIT, (const char *)"zoom-fit-best", (const char *)"Best _Fit"}, +- {(const char *)GTK_STOCK_ZOOM_IN, (const char *)"zoom-in", (const char *)"Zoom _In"}, +- {(const char *)GTK_STOCK_ZOOM_OUT, (const char *)"zoom-out", (const char *)"Zoom _Out"}, ++ {(const char *)GTK_STOCK_YES, NULL, (const char *)"Yes"}, ++ {(const char *)GTK_STOCK_ZOOM_100, (const char *)"zoom-original", (const char *)"Normal Size"}, ++ {(const char *)GTK_STOCK_ZOOM_FIT, (const char *)"zoom-fit-best", (const char *)"Best Fit"}, ++ {(const char *)GTK_STOCK_ZOOM_IN, (const char *)"zoom-in", (const char *)"Zoom In"}, ++ {(const char *)GTK_STOCK_ZOOM_OUT, (const char *)"zoom-out", (const char *)"Zoom Out"}, + }; + + /** diff --git a/pkgs/raspion/debian/changelog b/pkgs/raspion/debian/changelog new file mode 100644 index 0000000..fae9afb --- /dev/null +++ b/pkgs/raspion/debian/changelog @@ -0,0 +1,5 @@ +raspion (100) unstable; urgency=medium + + * Initial release + + -- Peter Siering Wed, 12 Dec 2019 17:00:00 +0100 diff --git a/pkgs/raspion/debian/compat b/pkgs/raspion/debian/compat new file mode 100644 index 0000000..48c962f --- /dev/null +++ b/pkgs/raspion/debian/compat @@ -0,0 +1,2 @@ +9 + diff --git a/pkgs/raspion/debian/conffiles b/pkgs/raspion/debian/conffiles new file mode 100644 index 0000000..e69de29 diff --git a/pkgs/raspion/debian/control b/pkgs/raspion/debian/control new file mode 100644 index 0000000..836a785 --- /dev/null +++ b/pkgs/raspion/debian/control @@ -0,0 +1,17 @@ +Source: raspion +Section: unknown +Priority: optional +Maintainer: Peter Siering +Build-Depends: debhelper (>=10) +Standards-Version: 4.0.0 +Homepage: https://ct.de/-4606645 + +Package: raspion +Architecture: all +Depends: lighttpd, wireshark-gtk, shellinabox, mitmproxy, bridge-utils, ipv6calc, hostapd, nmap, xsltproc, tcpreplay, pwgen, iptables-persistent, libgtk-3-bin, ntopng, radvd +Description: Meta-Paket zur c't-Raspion-Installation + Dieses Paket holt den relevanten Pakete zur Einrichtung eines + c't-Raspion zusammen, schreibt deren Konfigurationsdateien bei + einer initialen Instalaltion neu und richtet seine eigene + Weboberfläche ein. + diff --git a/pkgs/raspion/debian/copyright b/pkgs/raspion/debian/copyright new file mode 100644 index 0000000..6ee38cb --- /dev/null +++ b/pkgs/raspion/debian/copyright @@ -0,0 +1,3 @@ +Copyright: 2019 c't Magazin für Computertechnik, Hannover +License: GPL-3 + diff --git a/pkgs/raspion/debian/dirs b/pkgs/raspion/debian/dirs new file mode 100644 index 0000000..a5db925 --- /dev/null +++ b/pkgs/raspion/debian/dirs @@ -0,0 +1,4 @@ +home/pi/public_html/scans +home/pi/public_html/caps +home/pi/public_html + diff --git a/pkgs/raspion/debian/install b/pkgs/raspion/debian/install new file mode 100644 index 0000000..fda6f6f --- /dev/null +++ b/pkgs/raspion/debian/install @@ -0,0 +1,10 @@ +../../sbin/* usr/local/sbin +../../files/prefix_delegation etc/dhcp/dhclient-exit-hooks.d +../../files/*.png home/pi/public_html +../../files/*.php home/pi/public_html +../../files/*.css home/pi/public_html +../../files/*.js home/pi/public_html +../../files/*.ico home/pi/public_html +../../files/*.service etc/systemd/system + + diff --git a/pkgs/raspion/debian/rules b/pkgs/raspion/debian/rules new file mode 100755 index 0000000..8e3bd0a --- /dev/null +++ b/pkgs/raspion/debian/rules @@ -0,0 +1,8 @@ +#!/usr/bin/make -f +DH_VERBOSE = 1 +override_dh_usrlocal: + +%: + dh $@ --with systemd + + diff --git a/sbin/contcap.sh b/sbin/contcap.sh new file mode 100755 index 0000000..cb0c106 --- /dev/null +++ b/sbin/contcap.sh @@ -0,0 +1,2 @@ +#!/bin/bash +nohup dumpcap -i br0 -g -q -w /home/pi/public_html/caps/$1.pcapng -a duration:$2 >> /home/pi/public_html/caps/$1.log 2>&1 & diff --git a/sbin/mitmoff.sh b/sbin/mitmoff.sh new file mode 100755 index 0000000..2190043 --- /dev/null +++ b/sbin/mitmoff.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +RULES=$(iptables -L PREROUTING -t nat --line-number | grep mitm | cut -d" " -f1 | sort -r) +for r in $RULES; do iptables -D PREROUTING $r -t nat; done + +RULES=$(ip6tables -L PREROUTING -t nat --line-number | grep mitm | cut -d" " -f1 | sort -r) +for r in $RULES; do ip6tables -D PREROUTING $r -t nat; done + diff --git a/sbin/mitmon.sh b/sbin/mitmon.sh new file mode 100755 index 0000000..91e3fc4 --- /dev/null +++ b/sbin/mitmon.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Ausnahme für einzelnen Host: +#iptables -t nat -A PREROUTING -i br0 -p tcp -s 192.168.24.234 \ +#-m tcp --dport 80 -j ACCEPT -m comment --comment mitm +#iptables -t nat -A PREROUTING -i br0 -p tcp -s 192.168.24.234 \ +#-m tcp --dport 443 -j ACCEPT -m comment --comment mitm + +# Grundregel IPv4 +iptables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 80 \ +-j REDIRECT --to-ports 8080 -m comment --comment mitm +iptables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 443 \ +-j REDIRECT --to-ports 8080 -m comment --comment mitm + +# Grundregel IPv6 +ip6tables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 80 \ +-j REDIRECT --to-ports 8080 -m comment --comment mitm +ip6tables -t nat -A PREROUTING -i br0 -p tcp -m tcp --dport 443 \ +-j REDIRECT --to-ports 8080 -m comment --comment mitm + diff --git a/sbin/mitmstat.sh b/sbin/mitmstat.sh new file mode 100755 index 0000000..a26004f --- /dev/null +++ b/sbin/mitmstat.sh @@ -0,0 +1,6 @@ +#!/bin/bash +COUNT=$(iptables -L PREROUTING -t nat --line-number | grep mitm | wc -l) +[ $COUNT -gt 0 ] && exit 1 +COUNT=$(ip6tables -L PREROUTING -t nat --line-number | grep mitm | wc -l) +[ $COUNT -gt 0 ] && exit 1 +exit 0 diff --git a/sbin/mitmweb.sh b/sbin/mitmweb.sh new file mode 100755 index 0000000..6407cd4 --- /dev/null +++ b/sbin/mitmweb.sh @@ -0,0 +1,4 @@ +#!/bin/bash +mitmweb --mode transparent --web-port 9090 \ +--web-iface 0.0.0.0 &>> /var/log/mitmweb.log + diff --git a/sbin/scan.sh b/sbin/scan.sh new file mode 100755 index 0000000..57ad742 --- /dev/null +++ b/sbin/scan.sh @@ -0,0 +1,5 @@ +#!/bin/bash +nmap -oX /tmp/$$_nmap.xml $1 +xsltproc /tmp/$$_nmap.xml -o ~pi/public_html/scans/$1_$$_nmap.html +chown pi:pi ~pi/public_html/scans/$1_$$_nmap.html + diff --git a/sbin/scanvul.sh b/sbin/scanvul.sh new file mode 100755 index 0000000..723818e --- /dev/null +++ b/sbin/scanvul.sh @@ -0,0 +1,5 @@ +#!/bin/bash +nmap -oX /tmp/$$_nmap.xml --script vuln $1 +xsltproc /tmp/$$_nmap.xml -o ~pi/public_html/scans/$1_$$_nmap.html +chown pi:pi ~pi/public_html/scans/$1_$$_nmap.html +