
/* line 409 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\stylus\lib\functions\index.styl */

/* line 297 : D:\Atomikal\Mapfre\6-ruedas\node_modules\stylus\lib\functions\index.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */

/* line 71 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */

/* line 15 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\index.styl */

/* line 15 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\index.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\border.styl */

/* line 10 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\border.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\border-radius.styl */

/* line 53 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\border-radius.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\clearfix.styl */

/* line 28 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\clearfix.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\color-image.styl */

/* line 4 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\color-image.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\flex.styl */

/* line 196 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\flex.styl */

/* line 90 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\gradients.styl */

/* line 90 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\gradients.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\config.styl */

/* line 11 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\config.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\iconic.styl */

/* line 7 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\iconic.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\image.styl */

/* line 25 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\image.styl */

/* line 19 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\index.styl */

/* line 19 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\index.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\base.styl */

/* line 8 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\base.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\html5.styl */

/* line 19 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\html5.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\links.styl */

/* line 6 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\links.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\text.styl */

/* line 30 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\text.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\embed.styl */

/* line 7 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\embed.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\groups.styl */

/* line 17 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\groups.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\forms.styl */

/* line 69 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\forms.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\tables.styl */

/* line 7 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\normalize\tables.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\overflow.styl */

/* line 20 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\overflow.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\positions.styl */

/* line 66 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\positions.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */

/* line 78 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */

/* line 5 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\index.styl */

/* line 5 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\index.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\aliases.styl */

/* line 12 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\aliases.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\ellipsis.styl */

/* line 9 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\ellipsis.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\hide-text.styl */

/* line 8 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\hide-text.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\replace-text.styl */

/* line 9 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\replace-text.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\shadow-stroke.styl */

/* line 2 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\text\shadow-stroke.styl */

/* line 487 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\vendor.styl */

/* line 11 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\vendor.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\config.styl */

/* line 523 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\config.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\size.styl */

/* line 28 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\size.styl */

/* line 1 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  label.error{
	font-size: 1px;
	position: absolute;
	z-index: 3;
	float: right;
	top: 0;
	color: red;
	left: 140px;
	top: 4px;
	font-family: Arial,sans-serif;
	display: none !important;
}

.hidden{
	display: none;
}
.color_blanco{
	color: #FFF;
}
.color_gris{
	color: #898989;
}
.color_gris1{
	color: #4c4c4c;
}
.color_gris2{
	color: #808184;
}
.color_gris3{
	color: #898989;
}
.color_marron{
	color: #4f3306;
}
.color_rojo{
	color: #e00109;
}
.color_negro{
	color: #000;
}
.header-rojo{
	background-color: #d81e05;
}
.text-center {
    text-align: center;
}

.wrapper-texto-popup{
	width: 80%;
	margin: 0 auto;
}
.wrapper-texto-popup p{
	font-size: 13px !important;
}
.modal_fade{
	min-width: 500px;
	max-width: 600px;
	margin: 0 auto;
	position: relative;
	border: 4px #d81e05 solid;
	border-radius: 5px;
}
.modal_fade .modal-header{
	clear: both;
	padding-top: 1px;
	padding-bottom: 1px;
}
.modal_fade .modal-header .close{
	text-decoration: none;
	display: block;
	position: absolute;
	top: 5px;
	right: 10px;
}
.modal_fade .modal-body{
	background-color: #FFF;
	border-radius: 5px;
	padding-top: 10px;
	padding-bottom: 10px;
}

@media screen and (min-width: 860px) {

/* line 2 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .lazy-load-box {
    opacity: 1;
    -ms-filter: none;
    filter: none;
    -moz-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -webkit-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -o-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -ms-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -webkit-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -moz-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -o-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    -ms-transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
    transform: scale(1) rotate(0deg) translateX(0px) translateY(0px) skewX(0deg) skewY(0deg);
  }

/* line 11 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.lazy-load-box {
    opacity: 0;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
    filter: alpha(opacity=0);
  }

  #documento {
    width:147px;
  }


  label.error{
	font-size: 1px;
	position: absolute;
	z-index: 3;
	float: right;
	top: 0;
	color: red;
	left: 140px;
	top: 4px;
	font-family: Arial,sans-serif;
	display: none !important;
}

.errores-label {color: white; font-family: Arial,sans-serif;font-size: 13px;}

/* line 16 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-slideup {
    -moz-transform: translateY(100px);
    -webkit-transform: translateY(100px);
    -o-transform: translateY(100px);
    -ms-transform: translateY(100px);
    -webkit-transform: translateY(100px);
    -moz-transform: translateY(100px);
    -o-transform: translateY(100px);
    -ms-transform: translateY(100px);
    transform: translateY(100px);
  }

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-slidedown {
    -moz-transform: translateY(-50px);
    -webkit-transform: translateY(-50px);
    -o-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    -webkit-transform: translateY(-50px);
    -moz-transform: translateY(-50px);
    -o-transform: translateY(-50px);
    -ms-transform: translateY(-50px);
    transform: translateY(-50px);
  }

/* line 32 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-slidefromleft {
    -moz-transform: translateX(-150px);
    -webkit-transform: translateX(-150px);
    -o-transform: translateX(-150px);
    -ms-transform: translateX(-150px);
    -webkit-transform: translateX(-150px);
    -moz-transform: translateX(-150px);
    -o-transform: translateX(-150px);
    -ms-transform: translateX(-150px);
    transform: translateX(-150px);
  }

/* line 40 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-slidefromright {
    -moz-transform: translateX(150px);
    -webkit-transform: translateX(150px);
    -o-transform: translateX(150px);
    -ms-transform: translateX(150px);
    -webkit-transform: translateX(150px);
    -moz-transform: translateX(150px);
    -o-transform: translateX(150px);
    -ms-transform: translateX(150px);
    transform: translateX(150px);
  }

/* line 48 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-zoomin {
    -moz-transform: scale(0.5);
    -webkit-transform: scale(0.5);
    -o-transform: scale(0.5);
    -ms-transform: scale(0.5);
    -webkit-transform: scale(0.5);
    -moz-transform: scale(0.5);
    -o-transform: scale(0.5);
    -ms-transform: scale(0.5);
    transform: scale(0.5);
  }

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-zoomout {
    -moz-transform: scale(1.5);
    -webkit-transform: scale(1.5);
    -o-transform: scale(1.5);
    -ms-transform: scale(1.5);
    -webkit-transform: scale(1.5);
    -moz-transform: scale(1.5);
    -o-transform: scale(1.5);
    -ms-transform: scale(1.5);
    transform: scale(1.5);
  }

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-rotate {
    -moz-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
  }

/* line 72 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\animations.styl */
  .trigger.effect-skew {
    -moz-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -webkit-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -o-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -ms-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -webkit-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -moz-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -o-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    -ms-transform: translateY(100px) skewX(-45deg) skewY(45deg);
    transform: translateY(100px) skewX(-45deg) skewY(45deg);
  }
}

/* line 4 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-weight: inherit;
  font-style: inherit;
  font-family: inherit;
  font-size: 100%;
  vertical-align: baseline;
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
body {
  line-height: 1;
  color: #000;
  background: #fff;
}

/* line 16 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
ol,
ul {
  list-style: none;
}

/* line 18 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
table {
  border-collapse: separate;
  border-spacing: 0;
  vertical-align: middle;
}

/* line 20 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
caption,
th,
td {
  text-align: left;
  font-weight: normal;
  vertical-align: middle;
}

/* line 22 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
a img {
  border: none;
}

/* line 68 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
article,
aside,
canvas,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
main {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  display: block;
}

/* line 73 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
audio,
canvas,
video {
  display: inline-block;
  *display: inline;
  *zoom: 1;
}

/* line 77 : D:\Atomikal\Mapfre\6-ruedas\node_modules\nib\lib\nib\reset.styl */
audio:not([controls]),
[hidden] {
  display: none;
}

/* line 9 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "NotoSans";
  src: url("../fonts/NotoSans-Regular.eot");
  src: url("../fonts/NotoSans-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/NotoSans-Regular.woff") format("woff"), url("../fonts/NotoSans-Regular.ttf") format("truetype"), url("../fonts/NotoSans-Regular.svg#NotoSans") format("svg");
  font-weight: normal;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "NotoSans";
    src: url(font-url('NotoSans-Regular.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "NotoSans";
  src: url("../fonts/NotoSans-Bold.eot");
  src: url("../fonts/NotoSans-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/NotoSans-Bold.woff") format("woff"), url("../fonts/NotoSans-Bold.ttf") format("truetype"), url("../fonts/NotoSans-Bold.svg#NotoSans") format("svg");
  font-weight: bold;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "NotoSans";
    src: url(font-url('NotoSans-Bold.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "Titillium";
  src: url("../fonts/Titillium-Semibold.eot");
  src: url("../fonts/Titillium-Semibold.eot?#iefix") format("embedded-opentype"), url("../fonts/Titillium-Semibold.woff") format("woff"), url("../fonts/Titillium-Semibold.ttf") format("truetype"), url("../fonts/Titillium-Semibold.svg#Titillium") format("svg");
  font-weight: normal;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "Titillium";
    src: url(font-url('Titillium-Semibold.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "Titillium";
  src: url("../fonts/Titillium-Bold.eot");
  src: url("../fonts/Titillium-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/Titillium-Bold.woff") format("woff"), url("../fonts/Titillium-Bold.ttf") format("truetype"), url("../fonts/Titillium-Bold.svg#Titillium") format("svg");
  font-weight: bold;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "Titillium";
    src: url(font-url('Titillium-Bold.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "Helvetica";
  src: url("../fonts/Helvetica-Regular.eot");
  src: url("../fonts/Helvetica-Regular.eot?#iefix") format("embedded-opentype"), url("../fonts/Helvetica-Regular.woff") format("woff"), url("../fonts/Helvetica-Regular.ttf") format("truetype"), url("../fonts/Helvetica-Regular.svg#Helvetica") format("svg");
  font-weight: normal;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "Helvetica";
    src: url(font-url('Helvetica-Regular.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "Helvetica";
  src: url("../fonts/Helvetica-Bold.eot");
  src: url("../fonts/Helvetica-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/Helvetica-Bold.woff") format("woff"), url("../fonts/Helvetica-Bold.ttf") format("truetype"), url("../fonts/Helvetica-Bold.svg#Helvetica") format("svg");
  font-weight: bold;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "Helvetica";
    src: url(font-url('Helvetica-Bold.svg#family')) format("svg");
  }
}

/* line 14 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@font-face {
  font-family: "MyriadPro";
  src: url("../fonts/MyriadPro-Bold.eot");
  src: url("../fonts/MyriadPro-Bold.eot?#iefix") format("embedded-opentype"), url("../fonts/MyriadPro-Bold.woff") format("woff"), url("../fonts/MyriadPro-Bold.ttf") format("truetype"), url("../fonts/MyriadPro-Bold.svg#MyriadPro") format("svg");
  font-weight: normal;
  font-style: normal;
}

/* line 24 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  @font-face {
    font-family: "MyriadPro";
    src: url(font-url('MyriadPro-Bold.svg#family')) format("svg");
  }
}

/* line 29 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
body {
  min-height: 100vh;
  margin: 0;
  padding: 0;
  font-family: "NotoSans";
  color: #3a3a3a;
}

/* line 36 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
body p {
  font-size: 1.05rem;
  line-height: normal;
}
@media only screen and (min-width: 768px) {

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  body p {
    font-size: 1.1875rem;
  }
}

/* line 43 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
img {
  max-width: 100%;
}

/* line 46 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.contenedor {
  max-width: 1200px;
  margin: 0 auto;
  display: block;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* line 53 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.pagina {
  background: url("../img/bg-carro-y-moto.jpg") no-repeat;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  background-size: cover;
  background-position: bottom center;
  min-height: 100vh;
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-orient: vertical;
  -moz-box-orient: vertical;
  -o-box-orient: vertical;
  -webkit-flex-direction: column;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  -o-box-align: stretch;
  -ms-flex-align: stretch;
  -webkit-align-items: stretch;
  align-items: stretch;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .pagina {
    background: url("../img/bg-carro-y-moto-resp.jpg") no-repeat;
    -webkit-background-size: contain;
    -moz-background-size: contain;
    background-size: contain;
    display: inherit;
    min-height: auto;
  }
}

/* line 68 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado {
  position: relative;
  z-index: 1;
  background: #da1a00;
  padding: 1px 10px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #encabezado {
    padding: 12px 10px;
  }
}

/* line 75 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .contenedor {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-pack: justify;
  -moz-box-pack: justify;
  -o-box-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  -webkit-box-align: center;
  -moz-box-align: center;
  -o-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

/* line 79 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .contenedor a {
  text-decoration: none;
  color: #fff;
}

/* line 83 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .titulo {
  position: relative;
  z-index: 999;
  margin: 0;
  padding: 5px 0;
  display: inline-block;
  vertical-align: middle;
}

/* line 91 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .lema {
  display: inline-block;
  vertical-align: middle;
  border-left: #fff 1px solid;
  padding: 10px 0 10px 65px;
  margin-left: 54px;
  font-size: 13px;
  color: #fff;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #encabezado .lema {
    display: none;
  }
}

/* line 101 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .lema span {
  font-weight: bold;
}

/* line 104 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#encabezado .logo {
  display: block;
  max-width: 135px;
}
@media only screen and (min-width: 768px) {

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #encabezado .logo {
    max-width: none;
  }
}

/* line 109 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
@media only screen and (max-width: 768px) {

/* line 111 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
  #encabezado .moto-y-carro img {
    width: 80%;
  }
}

/* line 114 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#cuerpo {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1 0 auto;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  -o-box-align: stretch;
  -ms-flex-align: stretch;
  -webkit-align-items: stretch;
  align-items: stretch;
}

/* line 118 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#cuerpo .contenedor {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-align: center;
  -moz-box-align: center;
  -o-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  -ms-flex-line-pack: center;
  -webkit-align-content: center;
  align-content: center;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #cuerpo .contenedor {
    display: block;
  }
}

/* line 126 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.btn1 {
  background: red1;
  color: #fff;
  text-decoration: none;
  border-radius: 20px;
  padding: 5px 35px 8px 20px;
  letter-spacing: 0.1rem;
  position: relative;
  font-size: 1.08875rem;
  font-weight: bold;
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -o-transition: all 0.4s;
  -ms-transition: all 0.4s;
  transition: all 0.4s;
}

/* line 137 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.btn1:after {
  content: '';
  position: absolute;
  top: -4px;
  right: -10px;
  display: block;
  width: 40px;
  height: 40px;
  background: url("../img/icons/btn-arrow.png") no-repeat;
}

/* line 144 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.btn1:hover {
  background: red4;
  padding: 5px 45px 8px 30px;
}

/* line 148 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.titulo-h {
  font-family: 'Titillium';
  font-weight: bold;
  color: #fff;
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  -o-box-flex: 2;
  box-flex: 2;
  -webkit-flex: 2 1 auto;
  -ms-flex: 2 1 auto;
  flex: 2 1 auto;
  -webkit-align-self: flex-start;
  align-self: flex-start;
  -ms-flex-item-align: start;
  z-index: 1;
  padding: 2rem;
  min-height: auto;
}

/* line 158 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.titulo-h h2 {
  font-size: 3.716875rem;
  padding-bottom: 4px;
  border-bottom: 5px solid #fff;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .titulo-h h2 {
    font-size: 2.250625rem;
    border-bottom: 3px solid #fff;
    display: inline-block;
  }
}

/* line 166 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.titulo-h h3 {
  margin-top: 10px;
  font-size: 1.5rem;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .titulo-h h3 {
    font-size: 0.908125rem;
  }
}

/* line 172 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio {
  margin: 60px 40px 0 90px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio {
    margin: 160px 40px 0 40px;
  }
}

/* line 176 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio h4 {
  font-weight: normal;
  font-size: 1.5rem;
  color: #fff;
  border-bottom: 1px solid #fff;
  display: inline-block;
  margin-left: 50px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio h4 {
    font-size: 1rem;
    margin-left: 0;
  }
}

/* line 186 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */

/* line 187 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul li {
  font-size: 0.9375rem;
  color: #fff;
  margin: 20px 0;
  padding: 3px 0 0 50px;
  line-height: 24px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio ul li {
    margin: 10px 0;
    line-height: 20px;
    min-height: 40px;
  }
}

/* line 197 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul li .resalt {
  font-weight: bold;
  font-size: 1.1875rem;
  display: block;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio ul li .resalt {
    font-size: 14px;
    display: inline-block;
  }
}

/* line 204 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul li .precio {
  display: block;
  text-align: right;
  font-size: 12px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio ul li .precio {
    display: inline-block;
  }
}

/* line 210 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul li .precio .antes {
  text-decoration: line-through;
}

/* line 213 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul .ic1 {
  background: url("../img/ico_1.png") no-repeat;
}

/* line 215 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul .ic2 {
  background: url("../img/ico_2.png") no-repeat;
}

/* line 217 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.beneficio ul .ic3 {
  background: url("../img/ico_3.png") no-repeat;
}

/* line 219 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .beneficio ul .ic1,
  .beneficio ul .ic2,
  .beneficio ul .ic3 {
    -webkit-background-size: 12%;
    -moz-background-size: 12%;
    background-size: 12%;
  }
}

/* line 225 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.ocult {
  display: none;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .ocult {
    display: inherit;
  }
  #documento {
    width:100%;
  }
    label.error{
	font-size: 1px;
	position: absolute;
	z-index: 3;
	float: right;
	top: 0;
	color: red;
	left: 140px;
	top: 4px;
	font-family: Arial,sans-serif;
	display: none !important;
}
}

/* line 229 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.continu {
  display: inherit;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .continu {
    display: none;
  }
}

/* line 233 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.title-resp {
  display: none;
  background: -webkit-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -moz-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -o-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -ms-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: linear-gradient(to bottom, #fcc201 0%, #fefe00 100%);
  color: #da1a00;
  text-align: center;
  font-size: 1.5rem;
  font-family: 'MyriadPro';
  font-weight: bold;
  padding: 17px 0;
  letter-spacing: -1px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .title-resp {
    display: inherit;
  }
}

/* line 245 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.title-resp a {
  color: #da1a00;
  text-decoration: none;
}

/* line 250 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario {
  font-family: 'Helvetica';
  background: #da1a00;
  color: #fff;
  max-width: 327px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 20px 35px;
  border-radius: 6px;
  margin-left: 20px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  .formulario {
    margin: 0;
    max-width: 100%;
    border-radius: 0;
  }
}

/* line 263 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario p {
  font-size: 14px;
}

/* line 265 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario h3 {
  font-size: 1.5rem;
  margin-bottom: 10px;
  letter-spacing: -0.3px;
  font-family: 'MyriadPro';
}

/* line 271 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .head-f {
  border-bottom: #e65f4d 1px solid;
  padding-bottom: 13px;
}

/* line 274 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .head-f p {
  font-size: 1rem;
  line-height: normal;
}

/* line 277 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form {
  margin-top: 20px;
}

/* line 279 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form select {
  display: block;
}

/* line 282 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .camp {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 6px;
  border: none;
  border-radius: 3px;
  margin: 7px 0;
}

/* line 288 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .camp1 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  margin: 0.2rem;
  width: 98%;
}

/* line 293 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .enviar {
  border: 0;
  cursor: pointer;
  display: inline-block;
  background: -webkit-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -moz-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -o-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: -ms-linear-gradient(top, #fcc201 0%, #fefe00 100%);
  background: linear-gradient(to bottom, #fcc201 0%, #fefe00 100%);
  color: #da1a00;
  padding: 8px 30px;
  border-radius: 4px;
  font-family: 'MyriadPro';
  font-weight: bold;
  margin: 20px auto 0 auto;
  font-size: 1.210625rem;
  letter-spacing: -1px;
}

/* line 306 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .enviar:hover {
  background: amarillo2;
}

/* line 308 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .two {
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-orient: horizontal;
  -moz-box-orient: horizontal;
  -o-box-orient: horizontal;
  -webkit-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
  -ms-flex-line-pack: stretch;
  -webkit-align-content: stretch;
  align-content: stretch;
  -webkit-box-align: center;
  -moz-box-align: center;
  -o-box-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}

/* line 313 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .two select {
  width: 100%;
  margin: 0.2rem;
}

/* line 316 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form .two .numb {
  width: 100px;
}

.numbb {
  width: 98%;
}

/* line 318 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .form p {
  margin: 12px 0;
}

/* line 320 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .acepto {
  font-size: 0.766875rem;
  font-family: 'NotoSans';
  letter-spacing: -0.5px;
}

/* line 325 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .acepto a {
  color: #fff;
}

/* line 327 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .acepto span {
  font-weight: bold;
  text-decoration: underline;
}

/* line 330 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
.formulario .acepto .control {
  float: left;
}

/* line 333 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie {
  background-color: #da1a00;
  padding: 0.6rem 0 1rem;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie {
    display: -webkit-box;
    display: -moz-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: box;
    display: flex;
    -webkit-box-direction: reverse;
    -moz-box-direction: reverse;
    -o-box-direction: reverse;
    -webkit-box-orient: vertical;
    -moz-box-orient: vertical;
    -o-box-orient: vertical;
    -webkit-flex-direction: column-reverse;
    -ms-flex-direction: column-reverse;
    flex-direction: column-reverse;
    border-top: 10px solid #000;
  }
}

/* line 340 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor {
  text-align: left;
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: box;
  display: flex;
  -webkit-box-pack: justify;
  -moz-box-pack: justify;
  -o-box-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  padding: 0;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie .contenedor {
    display: block;
    text-align: center;
  }
}

/* line 349 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor p {
  color: #fff;
  font-size: 0.86rem;
}

/* line 353 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .copy {
  width: 100%;
  color: #000;
  font-size: 0.8rem;
}
@media only screen and (min-width: 768px) {

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie .contenedor .copy {
    width: auto;
  }
}

/* line 361 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .atencion {
  text-align: right;
  color: #fff;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie .contenedor .atencion {
    text-align: center;
    margin: 10px 0 20px 0;
  }
}

/* line 368 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .atencion p {
  display: block;
  font-size: 11px;
  margin: 0 0 4px 0;
}

/* line 372 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .enlaces {
  float: none;
  font-size: 10px;
}
@media only screen and (min-width: 768px) {

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie .contenedor .enlaces {
    display: inherit;
    float: right;
  }
}

/* line 380 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .enlaces a {
  text-decoration: none;
  opacity: 1;
  -ms-filter: none;
  filter: none;
  font-size: 10px;
  color: #fff;
  -webkit-transition: all 0.4s;
  -moz-transition: all 0.4s;
  -o-transition: all 0.4s;
  -ms-transition: all 0.4s;
  transition: all 0.4s;
}

/* line 387 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .enlaces a:hover {
  opacity: 0.5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  filter: alpha(opacity=50);
}

/* line 389 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .social-resp {
  display: inherit;
  text-align: center;
  margin-bottom: 5px;
}
@media only screen and (min-width: 768px) {

/* line 56 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #pie .contenedor .social-resp {
    display: none;
  }
}

/* line 396 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#pie .contenedor .social-resp a {
  text-decoration: none;
}

/* line 398 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#tyc {
  color: #fff;
  font-size: 12px;
  margin: 1rem auto;
  max-width: 1230px;
}
@media only screen and (max-width: 768px) {

/* line 64 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\base\utiles.styl */
  #tyc {
    width: 90%;
    margin: 0 auto 20px auto;
  }
}

/* line 406 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#tyc p {
  font-size: 12px;
}

/* line 408 : D:\Atomikal\Mapfre\6-ruedas\codigo\stylus\general.styl */
#tyc a {
  color: #fff;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFuaW1hdGlvbnMuc3R5bCIsIi4uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi92ZW5kb3Iuc3R5bCIsIi4uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9yZXNldC5zdHlsIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci5zdHlsIiwiLi4vLi4vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2ZsZXguc3R5bCIsImJhc2UvdXRpbGVzLnN0eWwiLCJnZW5lcmFsLnN0eWwiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3R5bHVzL2xpYi9mdW5jdGlvbnMvaW5kZXguc3R5bCIsIi4uLy4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXItcmFkaXVzLnN0eWwiLCIuLi8uLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvcG9zaXRpb25zLnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQW1DO0FBQ25DO0lDMlFFLFNBQVMsRUFBVDtJQVFNLFlBQVksS0FBWjtJQUNBLFFBQVEsS0FBUjtJRGxSUCxnQkFBdUIsOEVBQXZCO0lBQ0EsbUJBQTBCLDhFQUExQjtJQUNBLGNBQXFCLDhFQUFyQjtJQUNBLGVBQXNCLDhFQUF0QjtJQ3FDaUIsbUJBQUcsOEVBQUg7SUFBQSxnQkFBRyw4RUFBSDtJQUFBLGNBQUcsOEVBQUg7SUFBQSxlQUFHLDhFQUFIO0lBUkgsV0FBRyw4RUFBSDs7QUR6QmY7SUNrUUUsU0FBUyxFQUFUO0lBV00sWUFBeUUscURBQXpFO0lBQ0EsUUFBaUMsaUJBQWpDOztBRHpRUjtJQUNDLGdCQUFnQyxrQkFBaEM7SUFDQSxtQkFBbUMsa0JBQW5DO0lBQ0EsY0FBOEIsa0JBQTlCO0lBQ0EsZUFBK0Isa0JBQS9CO0lDd0JpQixtQkFBRyxrQkFBSDtJQUFBLGdCQUFHLGtCQUFIO0lBQUEsY0FBRyxrQkFBSDtJQUFBLGVBQUcsa0JBQUg7SUFSSCxXQUFHLGtCQUFIOztBRFpmO0lBQ0MsZ0JBQWdDLGtCQUFoQztJQUNB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QUFNLElBQU47SUFDQSxRQUFPLGlCQUFQOzs7QUFDRDtFQUNDLFdBQVUsS0FBVjs7QUFDRDtFQUNDLE9BQU0sS0FBTiIsImZpbGUiOiJnZW5lcmFsLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDg2MHB4KSB7IFxyXG4ubGF6eS1sb2FkLWJveCB7XHJcblx0b3BhY2l0eTogMTtcclxuXHQtbW96LXRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVgoMHB4KSB0cmFuc2xhdGVZKDBweCkgc2tld1goMGRlZykgc2tld1koMGRlZyk7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKSB0cmFuc2xhdGVYKDBweCkgdHJhbnNsYXRlWSgwcHgpIHNrZXdYKDBkZWcpIHNrZXdZKDBkZWcpO1xyXG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVgoMHB4KSB0cmFuc2xhdGVZKDBweCkgc2tld1goMGRlZykgc2tld1koMGRlZyk7XHJcblx0LW1zLXRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDBkZWcpIHRyYW5zbGF0ZVgoMHB4KSB0cmFuc2xhdGVZKDBweCkgc2tld1goMGRlZykgc2tld1koMGRlZyk7XHJcblx0dHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMGRlZykgdHJhbnNsYXRlWCgwcHgpIHRyYW5zbGF0ZVkoMHB4KSBza2V3WCgwZGVnKSBza2V3WSgwZGVnKTtcclxufVxyXG5cclxuLnRyaWdnZXIubGF6eS1sb2FkLWJveCB7XHJcblx0b3BhY2l0eTogMDtcclxufVxyXG5cclxuLyogRWZmZWN0cyAqL1xyXG4udHJpZ2dlci5lZmZlY3Qtc2xpZGV1cCB7XHJcblx0LW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTtcclxuXHQtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpO1xyXG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7XHJcbn1cclxuXHJcbi50cmlnZ2VyLmVmZmVjdC1zbGlkZWRvd24ge1xyXG5cdC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTtcclxuXHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTBweCk7XHJcblx0LW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTtcclxuXHQtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MHB4KTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwcHgpO1xyXG59XHJcblxyXG4udHJpZ2dlci5lZmZlY3Qtc2xpZGVmcm9tbGVmdCB7XHJcblx0LW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1MHB4KTtcclxuXHQtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTUwcHgpO1xyXG5cdC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTUwcHgpO1xyXG5cdC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1MHB4KTtcclxuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE1MHB4KTtcclxufVxyXG5cclxuLnRyaWdnZXIuZWZmZWN0LXNsaWRlZnJvbXJpZ2h0IHtcclxuXHQtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNTBweCk7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTUwcHgpO1xyXG5cdC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNTBweCk7XHJcblx0LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxNTBweCk7XHJcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE1MHB4KTtcclxufVxyXG5cclxuLnRyaWdnZXIuZWZmZWN0LXpvb21pbiB7XHJcblx0LW1vei10cmFuc2Zvcm06IHNjYWxlKDAuNSk7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7XHJcblx0LW8tdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xyXG5cdC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuNSk7XHJcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xyXG59XHJcblxyXG4udHJpZ2dlci5lZmZlY3Qtem9vbW91dCB7XHJcblx0LW1vei10cmFuc2Zvcm06IHNjYWxlKDEuNSk7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7XHJcblx0LW8tdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xyXG5cdC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuNSk7XHJcblx0dHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xyXG59XHJcblxyXG4udHJpZ2dlci5lZmZlY3Qtcm90YXRlIHtcclxuXHQtbW96LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuXHQtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuXHQtby10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcblx0LW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxuXHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi50cmlnZ2VyLmVmZmVjdC1za2V3IHtcclxuXHQtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCkgc2tld1goLTQ1ZGVnKSBza2V3WSg0NWRlZyk7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpIHNrZXdYKC00NWRlZykgc2tld1koNDVkZWcpO1xyXG5cdC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCkgc2tld1goLTQ1ZGVnKSBza2V3WSg0NWRlZyk7XHJcblx0LW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCkgc2tld1goLTQ1ZGVnKSBza2V3WSg0NWRlZyk7XHJcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KSBza2V3WCgtNDVkZWcpIHNrZXdZKDQ1ZGVnKTtcclxufVxyXG59IiwidXNlKCcuLi9ub2Rlcy92ZW5kb3ItaGVscGVycy5qcycpXG5AaW1wb3J0ICdjb25maWcnXG5cbi8qXG4gKiBBbGlhcyBcIm5vd3JhcFwiIGFzIFwibm8td3JhcFwiLlxuICovXG5cbm5vLXdyYXAgPSB1bnF1b3RlKCdub3dyYXAnKVxuXG4vKlxuICogSGVscGVyIHRvIGZpbmQgb3V0IGlmIGEgZ2l2ZW4gdmFsdWUgaXMgYSB3aWR0aFxuICovXG5cbmlzLXdpZHRoKHZhbClcbiAgaWYgYXV0byA9PSB2YWxcbiAgICByZXR1cm4gdHJ1ZVxuICBlbHNlIGlmIHZhbCAmJiAndW5pdCcgPT0gdHlwZSh2YWwpXG4gICAgLy8gU3R5bHVzIGRvZXMgbm90IHNob3J0IGNpcmN1aXQgc28gd2UgbmVlZCB0byBwZXJmb3JtIHRoaXMgYXMgYSBkaXN0aW5jdFxuICAgIC8vIG9wZXJhdGlvbiB0byBwcmV2ZW50IGVycm9yc1xuICAgIHJldHVybiAnJyAhPSB1bml0KHZhbClcbiAgcmV0dXJuIGZhbHNlXG5cbi8qXG4gKiBWZW5kb3Igc3VwcG9ydCBmb3IgdGhlIGdpdmVuIHByb3AgLyBhcmd1bWVudHMsIG9wdGlvbmFsbHkgc3BlY2lmeWluZyB0aGVcbiAqIG9ubHkgcHJlZml4ZXMgdG8gdXRpbGl6ZSwgb3IgdGhvc2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQuXG4gKi9cblxudmVuZG9yKHByb3AsIGFyZ3MsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsLCB2ZW5kb3ItcHJvcGVydHkgPSB0cnVlKVxuICBuZWVkX25vcm1hbGl6ZSA9ICF2ZW5kb3ItcHJvcGVydHkgb3IgcHJvcCBpbiAoJ3RyYW5zaXRpb24nICd0cmFuc2l0aW9uLXByb3BlcnR5JyAnYm9yZGVyLWltYWdlJyAnYm9yZGVyLWltYWdlLXNsaWNlJylcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKVxuICAgICAgaWYgb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAge3Byb3B9OiBhcmdzXG4gICAgICBlbHNlXG4gICAgICAgIG5ld3Byb3AgPSBwcm9wXG4gICAgICAgIG5ld3Byb3AgPSAnLScgKyBwcmVmaXggKyAnLScgKyBwcm9wIGlmIHZlbmRvci1wcm9wZXJ0eVxuXG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge25ld3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpLHByZWZpeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHtuZXdwcm9wfTogYXJnc1xuLypcbiAqIFZlbmRvcml6ZSB0aGUgZ2l2ZW4gdmFsdWUuXG4gKi9cblxudmVuZG9yLXZhbHVlKGFyZywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwpXG4gIHByb3AgPSBjdXJyZW50LXByb3BlcnR5WzBdXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSkgb3Igb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICBhZGQtcHJvcGVydHkocHJvcCwgJy0lcy0lcycgJSAocHJlZml4IGFyZykpXG4gIGFyZ1xuXG4vKlxuICogVmVuZG9yIFwiYm94LXNoYWRvd1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXNoYWRvdygpXG4gIHZlbmRvcignYm94LXNoYWRvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidXNlci1zZWxlY3RcIiBzdXBwb3J0LlxuICovXG5cbnVzZXItc2VsZWN0KClcbiAgdmVuZG9yKCd1c2VyLXNlbGVjdCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWNvdW50KClcbiAgdmVuZG9yKCdjb2x1bW4tY291bnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZ2FwXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZ2FwKClcbiAgdmVuZG9yKCdjb2x1bW4tZ2FwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLWNvbG9yXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS1jb2xvcigpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtY29sb3InLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtd2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXdpZHRoJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLXN0eWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1zdHlsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXdpZHRoKClcbiAgdmVuZG9yKCdjb2x1bW4td2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tc3BhblwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXNwYW4oKVxuICB2ZW5kb3IoJ2NvbHVtbi1zcGFuJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZmlsbFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWZpbGwoKVxuICB2ZW5kb3IoJ2NvbHVtbi1maWxsJywgYXJndW1lbnRzLCBvbmx5OiBtb3opXG5cbi8qXG4gKiBMZWdhY3kgc3ludGF4IHN1cHBvcnQgZm9yIGJhY2tncm91bmQtY2xpcCBhbmQgYmFja2dyb3VuZC1vcmlnaW5cbiAqL1xuXG5sZWdhY3ktYmctdmFsdWVzKHByb3BlcnR5LCBhcmdzKVxuICBsZWdhY3lfYXJncyA9ICgpXG4gIGltcG9ydGFuY2UgPSB1bnF1b3RlKCcnKVxuICBmb3Igc3ViYXJncyBpbiBhcmdzXG4gICAgZm9yIGFyZyBpbiBzdWJhcmdzXG4gICAgICBpZiBhcmcgaW4gKGJvcmRlci1ib3ggcGFkZGluZy1ib3ggY29udGVudC1ib3gpXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2JvcmRlcicpICBpZiBhcmcgPT0gYm9yZGVyLWJveFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdwYWRkaW5nJykgaWYgYXJnID09IHBhZGRpbmctYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2NvbnRlbnQnKSBpZiBhcmcgPT0gY29udGVudC1ib3hcbiAgICAgIGlmIGFyZyAhPSAnIWltcG9ydGFudCdcbiAgICAgICAgcHVzaChsZWdhY3lfYXJncyxhcmcpXG4gICAgICBlbHNlXG4gICAgICAgIGltcG9ydGFuY2UgPSAhaW1wb3J0YW50XG4gIHZlbmRvcihwcm9wZXJ0eSwgdW5xdW90ZShqb2luKCcsICcsbGVnYWN5X2FyZ3MpKSBpbXBvcnRhbmNlLCBvbmx5OiBtb3ogd2Via2l0KVxuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1jbGlwXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLWNsaXAoKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gdGV4dFxuICAgIHZlbmRvcignYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG4gIGVsc2VcbiAgICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMpXG4gICAgYmFja2dyb3VuZC1jbGlwOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLW9yaWdpbigpXG4gIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtb3JpZ2luJywgYXJndW1lbnRzKVxuICBiYWNrZ3JvdW5kLW9yaWdpbjogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtc2l6ZSgpXG4gIHZlbmRvcignYmFja2dyb3VuZC1zaXplJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2Zvcm0oKVxuICB2ZW5kb3IoJ3RyYW5zZm9ybScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG50cmFuc2Zvcm0tb3JpZ2luKClcbiAgICB2ZW5kb3IoJ3RyYW5zZm9ybS1vcmlnaW4nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm0tc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybS1zdHlsZSgpXG4gIHZlbmRvcigndHJhbnNmb3JtLXN0eWxlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYm9yZGVyLWltYWdlXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3JkZXItaW1hZ2UoKVxuICB2ZW5kb3IoJ2JvcmRlci1pbWFnZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tcHJvcGVydHlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tcHJvcGVydHkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tcHJvcGVydHknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLWR1cmF0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZGVsYXlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZmFjZS12aXNpYmlsaXR5KClcbiAgdmVuZG9yKCdiYWNrZmFjZS12aXNpYmlsaXR5JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmVcIiBzdXBwb3J0LlxuICovXG5cbnBlcnNwZWN0aXZlKClcbiAgaWYgbWl4aW5cbiAgICB2ZW5kb3IoJ3BlcnNwZWN0aXZlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuICBlbHNlXG4gICAgJ3BlcnNwZWN0aXZlKCVzKScgJSBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcInBlcnNwZWN0aXZlLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUtb3JpZ2luKClcbiAgdmVuZG9yKCdwZXJzcGVjdGl2ZS1vcmlnaW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBPcGFjaXR5IHdpdGggY29uZGl0aW9uYWwgSUUgc3VwcG9ydC5cbiAqL1xuXG5vcGFjaXR5KG4sIGFyZ3MuLi4pXG4gIG9wYWNpdHk6IG4gYXJnc1xuICBpZiBzdXBwb3J0LWZvci1pZVxuICAgIGlmIG4gPT0gaW5oZXJpdCBvciBuID09IGluaXRpYWxcbiAgICAgIC1tcy1maWx0ZXI6IG4gYXJnc1xuICAgICAgZmlsdGVyOiBuIGFyZ3NcbiAgICBlbHNlXG4gICAgICB2YWwgPSByb3VuZChuICogMTAwKVxuICAgICAgaWYgdmFsID09IDEwMFxuICAgICAgICAtbXMtZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgICAgZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgLW1zLWZpbHRlcjogJ1wicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9JXMpXCInICUgdmFsIGFyZ3NcbiAgICAgICAgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0lcyknICUgdmFsIGFyZ3NcblxuLypcbiAqIFZlbmRvciBcInRleHQtc2l6ZS1hZGp1c3RcIlxuICovXG5cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBBbGlhcyB0aGUgXCJ3aGl0ZS1zcGFjZVwiIHByb3BlcnR5LlxuICovXG5cbndoaXRlc3BhY2UoKVxuICB3aGl0ZS1zcGFjZTogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2l6aW5nXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2l6aW5nKClcbiAgdmVuZG9yKCdib3gtc2l6aW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LW9yaWVudFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yaWVudCgpXG4gIHZlbmRvcignYm94LW9yaWVudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1mbGV4LWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtZmxleC1ncm91cCgpXG4gIHZlbmRvcignYm94LWZsZXgtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JkaW5hbC1ncm91cFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yZGluYWwtZ3JvdXAoKVxuICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtYWxpZ25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1hbGlnbigpXG4gIHZlbmRvcignYm94LWFsaWduJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LXBhY2tcIiBzdXBwb3J0LlxuICovXG5cbmJveC1wYWNrKClcbiAgdmVuZG9yKCdib3gtcGFjaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uJywgYXJndW1lbnRzKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tbmFtZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLW5hbWUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1uYW1lJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWRlbGF5KClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZGlyZWN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGlyZWN0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGlyZWN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tcGxheS1zdGF0ZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXBsYXktc3RhdGUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWZpbGwtbW9kZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWZpbGwtbW9kZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImh5cGhlbnNcIiBzdXBwb3J0LlxuICovXG5cbmh5cGhlbnMoKVxuICB2ZW5kb3IoJ2h5cGhlbnMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhcHBlYXJhbmNlXCIgc3VwcG9ydC5cbiAqL1xuXG5hcHBlYXJhbmNlKClcbiAgdmVuZG9yKCdhcHBlYXJhbmNlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidGFiLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbnRhYi1zaXplKClcbiAgdmVuZG9yKCd0YWItc2l6ZScsIGFyZ3VtZW50cywgb25seTogbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJvdmVyZmxvdy1zY3JvbGxpbmdcIiBzdXBwb3J0LlxuICovXG5cbm92ZXJmbG93LXNjcm9sbGluZygpXG4gIHZlbmRvcignb3ZlcmZsb3ctc2Nyb2xsaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LW92ZXJmbG93XCIgc3VwcG9ydCwgLCAtby0gZm9yIG9wZXJhIDkuKiAtIDEwLipcbiAqL1xuXG50ZXh0LW92ZXJmbG93KClcbiAgdmVuZG9yKCd0ZXh0LW92ZXJmbG93JywgYXJndW1lbnRzLCBvbmx5OiBvZmZpY2lhbCBvKVxuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiIHN1cHBvcnQuXG4gKi9cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIHdlYmtpdCBtcylcblxuLypcbiAqIFZlbmRvciBcImZvbnQtc21vb3RoaW5nXCIgc3VwcG9ydCwgd2Via2l0IG9ubHkuXG4gKi9cbmZvbnQtc21vb3RoaW5nKClcbiAgdmVuZG9yKCdmb250LXNtb290aGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxuXG5cbi8qKlxuICogVmVuZG9yIGlucHV0LXBsYWNlaG9sZGVyL3BsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgICAvLyBEZWZhdWx0IHN5bnRheFxuICogICAgYm9keVxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXG4gKlxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciByZWQsKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cbiAqICAgIGdyZWVuLXBsYWNlaG9sZGVyKClcbiAqICAgICAgY29sb3IgZ3JlZW5cbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxuICogICAgICBwbGFjZWhvbGRlcihncmVlbi1wbGFjZWhvbGRlcilcbiAqXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcbiAqICAgIHRleHRhcmVhXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxuICovXG5wbGFjZWhvbGRlcigpXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxuICAgICAgZm9yIHBhaXIgaW4gYXJndW1lbnRzXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgcGFpcigpXG4gICAgICAgIGVsc2UgaWYgcGFpciBpcyBub3QgbnVsbCAmJiBwYWlyWzBdIGlzIG5vdCBudWxsXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcblxuLypcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXG4gKi9cblxuYmFja2dyb3VuZCgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcblxuYmFja2dyb3VuZC1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcblxuY3Vyc29yKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcbiAgZWxzZVxuICAgIGN1cnNvciBhcmd1bWVudHNcblxubGlzdC1zdHlsZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcblxubGlzdC1zdHlsZS1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXRdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90aG91Z2h0cy8yMDA3LzA1LzAxL3Jlc2V0LXJlbG9hZGVkLylcblxuZ2xvYmFsLXJlc2V0KClcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGRcbiAgICByZXNldC1ib3gtbW9kZWwoKVxuICAgIHJlc2V0LWZvbnQoKVxuICBib2R5XG4gICAgcmVzZXQtYm9keSgpXG4gIG9sLCB1bFxuICAgIGxpc3Qtc3R5bGU6IG5vbmVcbiAgdGFibGVcbiAgICByZXNldC10YWJsZSgpXG4gIGNhcHRpb24sIHRoLCB0ZFxuICAgIHJlc2V0LXRhYmxlLWNlbGwoKVxuICBhIGltZ1xuICAgIGJvcmRlcjogbm9uZVxuXG5uZXN0ZWQtcmVzZXQoKVxuICBkaXYsIHNwYW4sIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLFxuICBwcmUsIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsXG4gIGxlZ2VuZCwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHJcbiAgICByZXNldC1ib3gtbW9kZWwoKVxuICAgIHJlc2V0LWZvbnQoKVxuICB0YWJsZVxuICAgIHJlc2V0LXRhYmxlKClcbiAgY2FwdGlvbiwgdGgsIHRkXG4gICAgcmVzZXQtdGFibGUtY2VsbCgpXG4gIGEgaW1nXG4gICAgYm9yZGVyOiBub25lXG5cbnJlc2V0LWJveC1tb2RlbCgpXG4gIG1hcmdpbjogMFxuICBwYWRkaW5nOiAwXG4gIGJvcmRlcjogMFxuICBvdXRsaW5lOiAwXG5cbnJlc2V0LWZvbnQoKVxuICBmb250LXdlaWdodDogaW5oZXJpdFxuICBmb250LXN0eWxlOiBpbmhlcml0XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XG4gIGZvbnQtc2l6ZTogMTAwJVxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmVcblxucmVzZXQtYm9keSgpXG4gIGxpbmUtaGVpZ2h0OiAxXG4gIGNvbG9yOiBibGFja1xuICBiYWNrZ3JvdW5kOiB3aGl0ZVxuXG5yZXNldC10YWJsZSgpXG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGVcbiAgYm9yZGVyLXNwYWNpbmc6IDBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZVxuXG5yZXNldC10YWJsZS1jZWxsKClcbiAgdGV4dC1hbGlnbjogbGVmdFxuICBmb250LXdlaWdodDogbm9ybWFsXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGVcblxucmVzZXQtaHRtbDUoKVxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLFxuICBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdixcbiAgc2VjdGlvbiwgc3VtbWFyeSwgbWFpblxuICAgIHJlc2V0LWJveC1tb2RlbCgpXG4gICAgZGlzcGxheTogYmxvY2tcbiAgYXVkaW8sIGNhbnZhcywgdmlkZW9cbiAgICBkaXNwbGF5IGlubGluZS1ibG9ja1xuICAgICpkaXNwbGF5IGlubGluZVxuICAgICp6b29tIDFcbiAgYXVkaW86bm90KFtjb250cm9sc10pLFtoaWRkZW5dXG4gICAgZGlzcGxheSBub25lXG4iLCIvKlxuICogYm9yZGVyOiA8Y29sb3I+XG4gKiBib3JkZXI6IC4uLlxuICovXG5cbmJvcmRlcihjb2xvciwgYXJncy4uLilcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXG4gICAgYm9yZGVyOiAxcHggc29saWQgY29sb3IgYXJnc1xuICBlbHNlXG4gICAgYm9yZGVyOiBhcmd1bWVudHNcbiIsIi8qXG4gKiBWZW5kb3IgXCJkaXNwbGF5OiBmbGV4XCIgc3VwcG9ydCB3aXRoIGZhbGxiYWNrIHRvIG9ic29sZXRlIHZlcnNpb25zLlxuICovXG5cbmZsZXgtdmVyc2lvbiA/PSBib3ggZmxleFxuXG4vL1xuLy8gMS4gRGlzcGxheSB2YWx1ZXNcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4LWNvbnRhaW5lcnNcbi8vXG5kaXNwbGF5KHR5cGUsIGFyZ3MuLi4pXG4gIGlmIGZsZXggPT0gdHlwZSB8fCBpbmxpbmUtZmxleCA9PSB0eXBlXG4gICAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgICAgaWYgZmxleCA9PSB0eXBlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgICAgZWxzZVxuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoaW5saW5lLWJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpIC8vIG92ZXJ3cml0ZXMgb2xkIHdlYmtpdFxuICBlbHNlXG4gICAgZGlzcGxheTogYXJndW1lbnRzXG5cbi8qXG4gKiBOZXcgc3ludGF4IGZvciBicm93c2VycyBsaWtlIEdvb2dsZSBDaHJvbWUuXG4gKiBQbHVzIGEgdHJhbnNsYXRpb24gdG8gdGhlIG9sZCBzeW50YXgsIGlmIHBvc3NpYmxlLlxuICovXG5cblxuLy9cbi8vIDUuIE9yZGVyaW5nIGFuZCBPcmllbnRhdGlvblxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI29yZGVyaW5nLWFuZC1vcmllbnRhdGlvblxuLy9cbi1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBpZiByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCByZXZlcnNlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gICAgaWYgcm93ID09IGRpcmVjdGlvbiB8fCByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIGhvcml6b250YWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBjb2x1bW4gPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgdmVydGljYWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbi1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAvLyBXQVJOOiB3cmFwLXJldmVyc2UgZG9lcyBub3QgaGF2ZSBhIGJveCBlcXVpdmFsZW50LiBUaGlzIHdpbGwgcmVuZGVyIGluIGRpZmZlcmVudCBtYW5uZXJzXG4gICAgLy8gICAgb24gYm94IHZzLiBmbGV4IHZhbHVlcy5cbiAgICBpZiAnd3JhcCcgPT0gdmFsdWUgfHwgd3JhcC1yZXZlcnNlID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIG11bHRpcGxlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgbm93cmFwID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIHNpbmdsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuZmxleC1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC13cmFwKHZhbHVlKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXdyYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC1mbG93KClcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1sxXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzFdKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1mbG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxub3JkZXIoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IG1zKVxuICAgIHZlbmRvcignb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuXG4vL1xuLy8gNy4gRmxleGliaWxpdHlcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4aWJpbGl0eVxuLy9cbmZsZXgtZ3Jvdyhncm93dGgpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgZ3Jvd3RoKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1ncm93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtYmFzaXMoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1iYXNpcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LXNocmluaygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXNocmluaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4KGdyb3d0aClcblxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgc2hyaW5rID0gMVxuXG4gICAgaWYgbm9uZSA9PSBncm93dGggfHwgaW5pdGlhbCA9PSBncm93dGhcbiAgICAgIC8vIFdlbGwga25vd24gdmFsdWVzXG4gICAgICBzaHJpbmsgPSAwIGlmIG5vbmUgPT0gZ3Jvd3RoXG4gICAgICBncm93dGggPSAwXG4gICAgZWxzZSBpZiBpcy13aWR0aChncm93dGgpID09IHRydWVcbiAgICAgIC8vIEJhc2lzIGlzIGRlZmluZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxuICAgICAgZ3Jvd3RoID0gYXJndW1lbnRzWzFdIHx8IDBcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1syXSBpZiAzIDw9IGxlbmd0aChhcmd1bWVudHMpXG4gICAgZWxzZSBpZiBhcmd1bWVudHNbMV0gJiYgaXMtd2lkdGgoYXJndW1lbnRzWzFdKSA9PSBmYWxzZVxuICAgICAgLy8gR3Jvd3RoIGlzIGZpcnN0IGFuZCBzaHJpbmsgaXMgc2Vjb25kXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMV1cblxuICAgIC8vIFNpbmNlIHdlIGNhbid0IG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gZ3Jvd2luZyBhbmQgc2hyaW5raW5nIGluIHRoZSBib3ggbW9kZWwsIHRha2VcbiAgICAvLyB0aGUgb25lIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgZmxleGliaWxpdHkuXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIG1heChncm93dGgsIHNocmluayksIGlnbm9yZTogbXMpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxuLy8gY29udmVydHMgdGhlIGp1c3RpZmljYXRpb24gYWxpZ25tZW50XG4tY29udmVydC1qdXN0aWZ5KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2UgaWYgc3BhY2UtYXJvdW5kID09IGFsaWduXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGVcbiAgZWxzZSBpZiBzcGFjZS1iZXR3ZWVuID09IGFsaWduXG4gICAgcmV0dXJuIGp1c3RpZnlcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG4vL1xuLy8gOC4gQWxpZ25tZW50XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jYWxpZ25tZW50XG4vL1xuanVzdGlmeS1jb250ZW50KGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignanVzdGlmeS1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tY29udGVudChhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3IgYWRqdXN0bWVudCBoZXJlXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWxpbmUtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vLyBjb252ZXJ0cyBhbGlnbm1lbnQgZnJvbSAnZmxleCcgdG8gbm9ybWFsIHZhbHVlXG4tY29udmVydC1hbGlnbm1lbnQoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG5hbGlnbi1pdGVtcyhhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWl0ZW1zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLXNlbGYoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJyaWRpbmcgYWxpZ25tZW50IG9uIGluZGl2aWR1YWwgaXRlbXMuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdhbGlnbi1zZWxmJywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcbiAgICB2ZW5kb3IoJ2ZsZXgtaXRlbS1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuIiwiYmxhbmNvID0gd2hpdGVcclxubmVncm8gPSBibGFja1xyXG5yb2pvID0gI2RhMWEwMFxyXG5hbWFyaWxsbyA9ICNmZmVlMDBcclxuXHJcblxyXG5cclxuXHJcbi8vIG1peGluIHBhcmEgZnVlbnRlc1xyXG5ydXRhLWZ1ZW50ZSggYXJjaGl2byApXHJcbiAgcmV0dXJuIFwiLi4vZm9udHMvXCIgKyBhcmNoaXZvXHJcblxyXG5mdWVudGUoIG5vbWJyZSwgYXJjaGl2bywgcGVzbyA9IG5vcm1hbCwgZXN0aWxvID0gbm9ybWFsIClcclxuXHRAZm9udC1mYWNlXHJcblx0XHRmb250LWZhbWlseSBub21icmVcclxuXHRcdHNyYyB1cmwoIHJ1dGEtZnVlbnRlKCBhcmNoaXZvICsgXCIuZW90XCIgKSlcclxuXHRcdHNyYyB1cmwoIHJ1dGEtZnVlbnRlKCBhcmNoaXZvICsgXCIuZW90PyNpZWZpeFwiICkpIGZvcm1hdCggXCJlbWJlZGRlZC1vcGVudHlwZVwiICksXHJcblx0XHRcdHVybCggcnV0YS1mdWVudGUoIGFyY2hpdm8gKyBcIi53b2ZmXCIgKSkgZm9ybWF0KFwid29mZlwiICksXHJcblx0XHRcdHVybCggcnV0YS1mdWVudGUoIGFyY2hpdm8gKyBcIi50dGZcIiApKSBmb3JtYXQoXCJ0cnVldHlwZVwiICksXHJcblx0XHRcdHVybCggcnV0YS1mdWVudGUoIGFyY2hpdm8gKyBcIi5zdmcjXCIgKyBub21icmUgKSkgZm9ybWF0KCBcInN2Z1wiIClcclxuXHRcdGZvbnQtd2VpZ2h0IHBlc29cclxuXHRcdGZvbnQtc3R5bGUgZXN0aWxvXHJcblxyXG5cdEBtZWRpYSBzY3JlZW4gYW5kICggLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAwIClcclxuXHRcdEBmb250LWZhY2VcclxuXHRcdFx0Zm9udC1mYW1pbHkgbm9tYnJlXHJcblx0XHRcdHNyYyB1cmwoZm9udC11cmwoYXJjaGl2byArIFwiLnN2ZyNcIisgZmFtaWx5KSkgZm9ybWF0KFwic3ZnXCIpXHJcblxyXG5cclxuLy8gbWVkaWEgUXVlcmllc1xyXG5hbmNoby1tb3ZpbCA9IDY0MHB4XHJcbmFuY2hvLWVzY3JpdG9yaW8gPSA3NjhweFxyXG5cclxuZW5fcGFudGFsbGEgPSBcIm9ubHkgc2NyZWVuXCJcclxubWluaW1vID0gXCJtaW4td2lkdGg6IFwiXHJcbm1heGltbyA9IFwibWF4LXdpZHRoOiBcIlxyXG5cclxuXHJcbm1lZGlhX3F1ZXJpZXMgPSB7XHJcbiAgbW92aWwgIDogZW5fcGFudGFsbGEgKyBcIiBhbmQgKFwiICsgbWF4aW1vICsgIGFuY2hvLW1vdmlsICsgXCIpXCIsXHJcbiAgdGFjdGlsICA6IGVuX3BhbnRhbGxhICsgXCIgYW5kIChcIiArIG1pbmltbyArICBhbmNoby1tb3ZpbCArIFwiKVwiLFxyXG4gIGVzY3JpdG9yaW8gOiBlbl9wYW50YWxsYSArIFwiIGFuZCAoXCIgKyBtaW5pbW8gKyAgYW5jaG8tZXNjcml0b3JpbyArIFwiKVwiLFxyXG59XHJcblxyXG5tZWRpYV9xdWVyaWVzMiA9IHtcclxuICBtb3ZpbCAgOiBlbl9wYW50YWxsYSArIFwiIGFuZCAoXCIgKyBtYXhpbW8gKyAgYW5jaG8tbW92aWwgKyBcIilcIixcclxuICB0YWN0aWwgIDogZW5fcGFudGFsbGEgKyBcIiBhbmQgKFwiICsgbWF4aW1vICsgIGFuY2hvLW1vdmlsICsgXCIpXCIsXHJcbiAgZXNjcml0b3JpbyA6IGVuX3BhbnRhbGxhICsgXCIgYW5kIChcIiArIG1heGltbyArICBhbmNoby1lc2NyaXRvcmlvICsgXCIpXCIsXHJcbn1cclxuXHJcbmRlc2RlKCBtZWRpZGFzIClcclxuXHRjb25kaWNpb25lcyA9ICgpXHJcblx0Zm9yIG1lZGlkYSBpbiBtZWRpZGFzXHJcblx0XHRwdXNoKCBjb25kaWNpb25lcywgbWVkaWFfcXVlcmllc1sgbWVkaWRhIF0pXHJcblx0Y29uZGl0aW9ucyA9IGpvaW4oIFwiLCBcIiwgY29uZGljaW9uZXMgKVxyXG5cdEBtZWRpYSBjb25kaWNpb25lc1xyXG5cdFx0e2Jsb2NrfVxyXG5cclxuaGFzdGEoIG1lZGlkYXMgKVxyXG5cdGNvbmRpY2lvbmVzID0gKClcclxuXHRmb3IgbWVkaWRhIGluIG1lZGlkYXNcclxuXHRcdHB1c2goIGNvbmRpY2lvbmVzLCBtZWRpYV9xdWVyaWVzMlsgbWVkaWRhIF0pXHJcblx0Y29uZGl0aW9ucyA9IGpvaW4oIFwiLCBcIiwgY29uZGljaW9uZXMgKVxyXG5cdEBtZWRpYSBjb25kaWNpb25lc1xyXG5cdFx0e2Jsb2NrfVxyXG5cclxuLyogcGVuZGllbnRlICovXHJcbnNvbWJyYSggYW5ndWxvLCBkaXN0YW5jaWEsIGV4dGVuc2lvbiwgY29sb3IgKVxyXG5cdGR4ID0gZGlzdGFuY2lhICogY29zKCBhbmd1bG8gKVxyXG5cdGR5ID0gZGlzdGFuY2lhICogc2luKCBhbmd1bG8gKVxyXG5cdGJveC1zaGFkb3cgKHJvdW5kKGR4KSlweCAocm91bmQoZHkpKXB4IGV4dGVuc2lvbiBjb2xvclxyXG5cclxuIiwiQHJlcXVpcmUgXCJiYXNlL3V0aWxlc1wiXHJcbkByZXF1aXJlIFwibmliXCJcclxuQHJlcXVpcmUgXCJhbmltYXRpb25zXCJcclxuXHJcblxyXG5nbG9iYWwtcmVzZXQoKVxyXG5yZXNldC1odG1sNSgpXHJcblxyXG5odG1sICpcclxuXHJcblx0Ly9iYWNrZ3JvdW5kLWNvbG9yIHJnYmEoIDAsIDAsIDAsIDAuMSApXHJcblx0Ly9vdXRsaW5lIDFweCBzb2xpZCByZ2JhKCAyNTUsIDI1NSwgMCwgMC4xIClcclxuXHJcblx0Jjpob3ZlclxyXG5cdFx0Ly9vdXRsaW5lIDFweCBzb2xpZCByZ2JhKCAyNTUsIDAsIDI1NSwgMC41IClcclxuXHJcbmZ1ZW50ZSggXCJOb3RvU2Fuc1wiLCBcIk5vdG9TYW5zLVJlZ3VsYXJcIiApXHJcbmZ1ZW50ZSggXCJOb3RvU2Fuc1wiLCBcIk5vdG9TYW5zLUJvbGRcIiwgYm9sZCApXHJcblxyXG5mdWVudGUoIFwiVGl0aWxsaXVtXCIsIFwiVGl0aWxsaXVtLVNlbWlib2xkXCIgKVxyXG5mdWVudGUoIFwiVGl0aWxsaXVtXCIsIFwiVGl0aWxsaXVtLUJvbGRcIiwgYm9sZCApXHJcblxyXG5mdWVudGUoIFwiSGVsdmV0aWNhXCIsIFwiSGVsdmV0aWNhLVJlZ3VsYXJcIiApXHJcbmZ1ZW50ZSggXCJIZWx2ZXRpY2FcIiwgXCJIZWx2ZXRpY2EtQm9sZFwiLCBib2xkIClcclxuXHJcbmZ1ZW50ZSggXCJNeXJpYWRQcm9cIiwgXCJNeXJpYWRQcm8tQm9sZFwiIClcclxuXHJcblxyXG5ib2R5XHJcblx0bWluLWhlaWdodCAxMDB2aFxyXG5cdG1hcmdpbiAwXHJcblx0cGFkZGluZyAwXHJcblx0Zm9udC1mYW1pbHkgXCJOb3RvU2Fuc1wiXHJcblx0Y29sb3IgIzNhM2EzYVxyXG5cclxuXHRwXHJcblx0XHRmb250LXNpemUgMS4wNXJlbVxyXG5cdFx0bGluZS1oZWlnaHQgbm9ybWFsXHJcblx0XHQrZGVzZGUoIGVzY3JpdG9yaW8gKVxyXG5cdFx0XHRmb250LXNpemUgKDE5IC8gMTYpcmVtXHJcblxyXG5cclxuaW1nXHJcblx0bWF4LXdpZHRoOiAxMDAlO1xyXG5cclxuLmNvbnRlbmVkb3JcclxuXHRtYXgtd2lkdGggMTIwMHB4XHJcblx0bWFyZ2luIDAgYXV0b1xyXG5cdGRpc3BsYXkgYmxvY2tcclxuXHRib3gtc2l6aW5nIGJvcmRlci1ib3hcclxuXHRcclxuXHRcdFxyXG4ucGFnaW5hXHJcblx0YmFja2dyb3VuZCB1cmwoJy4uL2ltZy9iZy1jYXJyby15LW1vdG8uanBnJykgbm8tcmVwZWF0XHJcblx0YmFja2dyb3VuZC1zaXplIGNvdmVyXHJcblx0YmFja2dyb3VuZC1wb3NpdGlvbiBib3R0b20gY2VudGVyXHJcblx0bWluLWhlaWdodCAxMDB2aFxyXG5cdGRpc3BsYXkgZmxleFxyXG5cdGZsZXgtZGlyZWN0aW9uIGNvbHVtblxyXG5cdGFsaWduLWl0ZW1zIHN0cmV0Y2hcclxuXHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0YmFja2dyb3VuZCB1cmwoJy4uL2ltZy9iZy1jYXJyby15LW1vdG8tcmVzcC5qcGcnKSBuby1yZXBlYXRcclxuXHRcdGJhY2tncm91bmQtc2l6ZSBjb250YWluXHJcblx0XHRkaXNwbGF5IGluaGVyaXRcclxuXHRcdG1pbi1oZWlnaHQgYXV0b1xyXG5cdFx0XHJcbi8vZW5jYWJlemFkb3NcclxuI2VuY2FiZXphZG9cclxuXHRwb3NpdGlvbiByZWxhdGl2ZVxyXG5cdHotaW5kZXggMVxyXG5cdGJhY2tncm91bmQgcm9qb1xyXG5cdHBhZGRpbmcgMXB4IDEwcHhcclxuXHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0cGFkZGluZyAxMnB4IDEwcHhcclxuXHQuY29udGVuZWRvclxyXG5cdFx0ZGlzcGxheSBmbGV4XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQgc3BhY2UtYmV0d2VlblxyXG5cdFx0YWxpZ24taXRlbXMgY2VudGVyXHJcblx0XHRhXHJcblx0XHRcdHRleHQtZGVjb3JhdGlvbiBub25lXHJcblx0XHRcdGNvbG9yIGJsYW5jb1xyXG5cdFx0XHJcblx0LnRpdHVsb1xyXG5cdFx0cG9zaXRpb24gcmVsYXRpdmVcclxuXHRcdHotaW5kZXggOTk5XHJcblx0XHRtYXJnaW4gMFxyXG5cdFx0cGFkZGluZyA1cHggMFxyXG5cdFx0ZGlzcGxheSBpbmxpbmUtYmxvY2tcclxuXHRcdHZlcnRpY2FsLWFsaWduIG1pZGRsZVxyXG5cdFx0XHJcblx0LmxlbWFcclxuXHRcdGRpc3BsYXkgaW5saW5lLWJsb2NrXHJcblx0XHR2ZXJ0aWNhbC1hbGlnbiBtaWRkbGVcclxuXHRcdGJvcmRlci1sZWZ0IGJsYW5jbyAxcHggc29saWRcclxuXHRcdHBhZGRpbmcgMTBweCAwIDEwcHggNjVweFxyXG5cdFx0bWFyZ2luLWxlZnQgNTRweFxyXG5cdFx0Zm9udC1zaXplIDEzcHhcclxuXHRcdGNvbG9yIGJsYW5jb1xyXG5cdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0ZGlzcGxheSBub25lXHJcblx0XHRzcGFuXHJcblx0XHRcdGZvbnQtd2VpZ2h0IGJvbGRcclxuXHRcdFxyXG5cdC5sb2dvXHJcblx0XHRkaXNwbGF5IGJsb2NrXHJcblx0XHRtYXgtd2lkdGggMTM1cHhcclxuXHRcdCtkZXNkZSggZXNjcml0b3JpbyApXHJcblx0XHRcdG1heC13aWR0aCBub25lXHJcblx0Lm1vdG8teS1jYXJyb1xyXG5cdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0aW1nXHJcblx0XHRcdFx0d2lkdGggODAlXHJcbi8vY3VlcnBvXHJcbiNjdWVycG9cclxuXHRmbGV4IDEgMCBhdXRvXHJcblx0ZGlzcGxheSBmbGV4XHJcblx0YWxpZ24taXRlbXMgc3RyZXRjaFxyXG5cdC5jb250ZW5lZG9yXHJcblx0XHRkaXNwbGF5IGZsZXhcclxuXHRcdGFsaWduLWl0ZW1zIGNlbnRlclxyXG5cdFx0YWxpZ24tY29udGVudCBjZW50ZXJcclxuXHRcdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRcdGRpc3BsYXkgYmxvY2tcclxuXHJcbi8vYm90b25lc1xyXG4uYnRuMVxyXG5cdGJhY2tncm91bmQgcmVkMVxyXG5cdGNvbG9yIHdoaXRlXHJcblx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcclxuXHRib3JkZXItcmFkaXVzIDIwcHhcclxuXHRwYWRkaW5nIDVweCAzNXB4IDhweCAyMHB4XHJcblx0bGV0dGVyLXNwYWNpbmcgMC4xcmVtXHJcblx0cG9zaXRpb24gcmVsYXRpdmVcclxuXHRmb250LXNpemUgKDE3LjQyIC8gMTYpcmVtXHJcblx0Zm9udC13ZWlnaHQgYm9sZFxyXG5cdHRyYW5zaXRpb24gYWxsIC40c1xyXG5cdCY6YWZ0ZXJcclxuXHRcdGNvbnRlbnQgJydcclxuXHRcdGFic29sdXRlIHRvcCAtNHB4IHJpZ2h0IC0xMHB4XHJcblx0XHRkaXNwbGF5IGJsb2NrXHJcblx0XHR3aWR0aCA0MHB4XHJcblx0XHRoZWlnaHQgNDBweFxyXG5cdFx0YmFja2dyb3VuZCB1cmwoJy4uL2ltZy9pY29ucy9idG4tYXJyb3cucG5nJykgbm8tcmVwZWF0XHJcblx0Jjpob3ZlclxyXG5cdFx0YmFja2dyb3VuZCByZWQ0XHJcblx0XHRwYWRkaW5nIDVweCA0NXB4IDhweCAzMHB4XHJcblxyXG4udGl0dWxvLWhcclxuXHRmb250LWZhbWlseSAnVGl0aWxsaXVtJ1xyXG5cdGZvbnQtd2VpZ2h0IGJvbGRcclxuXHRjb2xvciBibGFuY29cclxuXHRmbGV4IDIgMSBhdXRvXHJcblx0YWxpZ24tc2VsZiBmbGV4LXN0YXJ0XHJcblx0ei1pbmRleCAxXHJcblx0cGFkZGluZyAycmVtXHJcblx0bWluLWhlaWdodCBhdXRvXHJcbiAgICBcclxuXHRoMlxyXG5cdFx0Zm9udC1zaXplICg1OS40NyAvIDE2KXJlbVxyXG5cdFx0cGFkZGluZy1ib3R0b20gNHB4XHJcblx0XHRib3JkZXItYm90dG9tIDVweCBzb2xpZCBibGFuY29cclxuXHRcdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRcdGZvbnQtc2l6ZSAoMzYuMDEgLyAxNilyZW1cclxuXHRcdFx0Ym9yZGVyLWJvdHRvbSAzcHggc29saWQgYmxhbmNvXHJcblx0XHRcdGRpc3BsYXkgaW5saW5lLWJsb2NrXHJcblx0aDNcclxuXHRcdG1hcmdpbi10b3AgMTBweFxyXG5cdFx0Zm9udC1zaXplICgyNCAvIDE2KXJlbVxyXG5cdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0Zm9udC1zaXplICgxNC41MyAvIDE2KXJlbVxyXG5cclxuLmJlbmVmaWNpb1xyXG5cdG1hcmdpbiA2MHB4IDQwcHggMCA5MHB4XHJcblx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdG1hcmdpbiAxNjBweCA0MHB4IDAgNDBweFxyXG5cdGg0XHJcblx0XHRmb250LXdlaWdodCBub3JtYWxcclxuXHRcdGZvbnQtc2l6ZSAoMjQgLyAxNilyZW1cclxuXHRcdGNvbG9yIGJsYW5jb1xyXG5cdFx0Ym9yZGVyLWJvdHRvbSAxcHggc29saWQgYmxhbmNvXHJcblx0XHRkaXNwbGF5IGlubGluZS1ibG9ja1xyXG5cdFx0bWFyZ2luLWxlZnQgNTBweFxyXG5cdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0Zm9udC1zaXplIDFyZW1cclxuXHRcdFx0bWFyZ2luLWxlZnQgMFxyXG5cdHVsXHJcblx0XHRsaVxyXG5cdFx0XHRmb250LXNpemUgKDE1IC8gMTYpcmVtXHJcblx0XHRcdGNvbG9yIGJsYW5jb1xyXG5cdFx0XHRtYXJnaW4gMjBweCAwXHJcblx0XHRcdHBhZGRpbmcgM3B4IDAgMCA1MHB4XHJcblx0XHRcdGxpbmUtaGVpZ2h0IDI0cHhcclxuXHRcdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0XHRtYXJnaW4gMTBweCAwXHJcblx0XHRcdFx0bGluZS1oZWlnaHQgMjBweFxyXG5cdFx0XHRcdG1pbi1oZWlnaHQgNDBweFxyXG5cdFx0XHQucmVzYWx0XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQgYm9sZFxyXG5cdFx0XHRcdGZvbnQtc2l6ZSAoMTkgLyAxNilyZW1cclxuXHRcdFx0XHRkaXNwbGF5IGJsb2NrXHJcblx0XHRcdFx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZSAxNHB4XHJcblx0XHRcdFx0XHRkaXNwbGF5IGlubGluZS1ibG9ja1xyXG5cdFx0XHQucHJlY2lvXHJcblx0XHRcdFx0ZGlzcGxheSBibG9ja1xyXG5cdFx0XHRcdHRleHQtYWxpZ24gcmlnaHRcclxuXHRcdFx0XHRmb250LXNpemUgMTJweFxyXG5cdFx0XHRcdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRcdFx0XHRkaXNwbGF5IGlubGluZS1ibG9ja1xyXG5cdFx0XHRcdC5hbnRlc1xyXG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIGxpbmUtdGhyb3VnaFxyXG5cdFx0XHRcdFx0XHJcblx0XHQuaWMxXHJcblx0XHRcdGJhY2tncm91bmQgdXJsKCcuLi9pbWcvaWNvXzEucG5nJykgbm8tcmVwZWF0XHJcblx0XHQuaWMyXHJcblx0XHRcdGJhY2tncm91bmQgdXJsKCcuLi9pbWcvaWNvXzIucG5nJykgbm8tcmVwZWF0XHJcblx0XHQuaWMzXHJcblx0XHRcdGJhY2tncm91bmQgdXJsKCcuLi9pbWcvaWNvXzMucG5nJykgbm8tcmVwZWF0XHJcblx0XHQuaWMxXHJcblx0XHQuaWMyXHJcblx0XHQuaWMzXHJcblx0XHRcdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRcdFx0YmFja2dyb3VuZC1zaXplIDEyJVxyXG4vLyBSRVNQXHJcbi5vY3VsdFxyXG5cdGRpc3BsYXkgbm9uZVxyXG5cdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRkaXNwbGF5IGluaGVyaXRcclxuLmNvbnRpbnVcclxuXHRkaXNwbGF5IGluaGVyaXRcclxuXHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0ZGlzcGxheSBub25lXHJcbi50aXRsZS1yZXNwXHJcblx0ZGlzcGxheSBub25lXHJcblx0YmFja2dyb3VuZCBsaW5lYXItZ3JhZGllbnQoIHRvcCwgI2ZjYzIwMSAwJSwgI2ZlZmUwMCAxMDAlKVxyXG5cdGNvbG9yIHJvam9cclxuXHR0ZXh0LWFsaWduIGNlbnRlclxyXG5cdGZvbnQtc2l6ZSAoMjQgLyAxNilyZW1cclxuXHRmb250LWZhbWlseSAnTXlyaWFkUHJvJ1xyXG5cdGZvbnQtd2VpZ2h0IGJvbGRcclxuXHRwYWRkaW5nIDE3cHggMFxyXG5cdGxldHRlci1zcGFjaW5nIC0xcHhcclxuXHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0ZGlzcGxheSBpbmhlcml0XHJcblx0YVxyXG5cdFx0Y29sb3Igcm9qb1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcclxuXHRcclxuXHJcbi5mb3JtdWxhcmlvXHJcblx0Zm9udC1mYW1pbHkgJ0hlbHZldGljYSdcclxuXHRiYWNrZ3JvdW5kIHJvam9cclxuXHRjb2xvciBibGFuY29cclxuXHRtYXgtd2lkdGggMzI3cHhcclxuXHRib3gtc2l6aW5nIGJvcmRlci1ib3hcclxuXHRwYWRkaW5nIDIwcHggMzVweFxyXG5cdGJvcmRlci1yYWRpdXMgNnB4XHJcblx0bWFyZ2luLWxlZnQgMjBweFxyXG5cdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRtYXJnaW4gMFxyXG5cdFx0bWF4LXdpZHRoIDEwMCVcclxuXHRcdGJvcmRlci1yYWRpdXMgMFxyXG5cdHBcclxuXHRcdGZvbnQtc2l6ZSAxNHB4XHJcblx0aDNcclxuXHRcdGZvbnQtc2l6ZSAoMjQgLyAxNilyZW1cclxuXHRcdG1hcmdpbi1ib3R0b20gMTBweFxyXG5cdFx0bGV0dGVyLXNwYWNpbmcgLTAuM3B4XHJcblx0XHRmb250LWZhbWlseSAnTXlyaWFkUHJvJ1xyXG5cdFx0XHJcblx0LmhlYWQtZlxyXG5cdFx0Ym9yZGVyLWJvdHRvbSAjZTY1ZjRkIDFweCBzb2xpZFxyXG5cdFx0cGFkZGluZy1ib3R0b20gMTNweFxyXG5cdFx0cFxyXG5cdFx0XHRmb250LXNpemUgMXJlbVxyXG5cdFx0XHRsaW5lLWhlaWdodCBub3JtYWxcclxuXHQuZm9ybVxyXG5cdFx0bWFyZ2luLXRvcCAyMHB4XHJcblx0XHRzZWxlY3RcclxuXHRcdFx0ZGlzcGxheSBibG9ja1xyXG5cdFx0XHRcclxuXHRcdC5jYW1wXHJcblx0XHRcdGJveC1zaXppbmcgYm9yZGVyLWJveFxyXG5cdFx0XHRwYWRkaW5nIDZweFxyXG5cdFx0XHRib3JkZXIgbm9uZVxyXG5cdFx0XHRib3JkZXItcmFkaXVzIDNweFxyXG5cdFx0XHRtYXJnaW4gN3B4IDBcclxuXHRcdC5jYW1wMVxyXG5cdFx0XHRib3gtc2l6aW5nIGJvcmRlci1ib3hcclxuXHRcdFx0bWFyZ2luIDAuMnJlbVxyXG5cdFx0XHR3aWR0aCA5OCVcclxuXHRcdFx0XHJcblx0XHQuZW52aWFyXHJcblx0XHRcdGJvcmRlciAwXHJcblx0XHRcdGN1cnNvciBwb2ludGVyXHJcblx0XHRcdGRpc3BsYXkgaW5saW5lLWJsb2NrXHJcblx0XHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KCB0b3AsICNmY2MyMDEgMCUsICNmZWZlMDAgMTAwJSlcclxuXHRcdFx0Y29sb3Igcm9qb1xyXG5cdFx0XHRwYWRkaW5nIDhweCAzMHB4XHJcblx0XHRcdGJvcmRlci1yYWRpdXMgNHB4XHJcblx0XHRcdGZvbnQtZmFtaWx5ICdNeXJpYWRQcm8nXHJcblx0XHRcdGZvbnQtd2VpZ2h0IGJvbGRcclxuXHRcdFx0bWFyZ2luIDIwcHggYXV0byAwIGF1dG9cclxuXHRcdFx0Zm9udC1zaXplICgxOS4zNyAvIDE2KXJlbVxyXG5cdFx0XHRsZXR0ZXItc3BhY2luZyAtMXB4XHJcblx0XHRcdCY6aG92ZXJcclxuXHRcdFx0XHRiYWNrZ3JvdW5kIGFtYXJpbGxvMlxyXG5cdFx0LnR3b1xyXG5cdFx0XHRkaXNwbGF5IGZsZXhcclxuXHRcdFx0ZmxleC1kaXJlY3Rpb24gcm93XHJcblx0XHRcdGFsaWduLWNvbnRlbnQgc3RyZXRjaFxyXG5cdFx0XHRhbGlnbi1pdGVtcyBjZW50ZXJcclxuXHRcdFx0c2VsZWN0XHJcblx0XHRcdFx0d2lkdGggMTAwJVx0XHJcblx0XHRcdFx0bWFyZ2luIDAuMnJlbVxyXG5cdFx0XHQubnVtYlxyXG5cdFx0XHRcdHdpZHRoIDEwMHB4XHJcblx0XHRwXHJcblx0XHRcdG1hcmdpbiAxMnB4IDBcclxuXHQuYWNlcHRvXHJcblx0XHRmb250LXNpemUgKDEyLjI3IC8gMTYpcmVtXHJcblx0XHRmb250LWZhbWlseSAnTm90b1NhbnMnXHJcblx0XHRsZXR0ZXItc3BhY2luZyAtMC41cHhcclxuXHRcdFxyXG5cdFx0YVxyXG5cdFx0XHRjb2xvciBibGFuY29cclxuXHRcdHNwYW5cclxuXHRcdFx0Zm9udC13ZWlnaHQgYm9sZFxyXG5cdFx0XHR0ZXh0LWRlY29yYXRpb24gdW5kZXJsaW5lXHJcblx0XHQuY29udHJvbFxyXG5cdFx0XHRmbG9hdCBsZWZ0XHJcbi8vIHBpZVxyXG4jcGllXHJcblx0YmFja2dyb3VuZC1jb2xvciByb2pvXHJcblx0cGFkZGluZyAwLjZyZW0gMCAxcmVtXHJcblx0K2hhc3RhKCBlc2NyaXRvcmlvIClcclxuXHRcdGRpc3BsYXkgZmxleFxyXG5cdFx0ZmxleC1kaXJlY3Rpb24gY29sdW1uLXJldmVyc2VcclxuXHRcdGJvcmRlci10b3AgMTBweCBzb2xpZCBuZWdyb1xyXG5cdC5jb250ZW5lZG9yXHJcblx0XHR0ZXh0LWFsaWduIGxlZnRcclxuXHRcdGRpc3BsYXkgZmxleFxyXG5cdFx0anVzdGlmeS1jb250ZW50IHNwYWNlLWJldHdlZW5cclxuXHRcdHBhZGRpbmcgMFxyXG5cdFx0XHJcblx0XHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0XHRkaXNwbGF5IGJsb2NrXHJcblx0XHRcdHRleHQtYWxpZ24gY2VudGVyXHJcblx0XHRwXHJcblx0XHRcdGNvbG9yIHdoaXRlXHJcblx0XHRcdGZvbnQtc2l6ZSAoMTMuNzYgLyAxNilyZW1cclxuXHRcdFxyXG5cdFx0LmNvcHlcclxuXHRcdFx0d2lkdGggMTAwJVxyXG5cdFx0XHRjb2xvciBuZWdyb1xyXG5cdFx0XHRmb250LXNpemU6IDAuOHJlbTtcclxuXHRcdFx0K2Rlc2RlKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0XHR3aWR0aCBhdXRvXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0XHQuYXRlbmNpb25cclxuXHRcdFx0XHJcblx0XHRcdHRleHQtYWxpZ24gcmlnaHRcclxuXHRcdFx0Y29sb3IgYmxhbmNvXHJcblx0XHRcdCtoYXN0YSggZXNjcml0b3JpbyApXHJcblx0XHRcdFx0dGV4dC1hbGlnbiBjZW50ZXJcclxuXHRcdFx0XHRtYXJnaW4gMTBweCAwIDIwcHggMFxyXG5cdFx0XHRwXHJcblx0XHRcdFx0ZGlzcGxheSBibG9ja1xyXG5cdFx0XHRcdGZvbnQtc2l6ZSAxMXB4XHJcblx0XHRcdFx0bWFyZ2luIDAgMCA0cHggMFxyXG5cdFx0LmVubGFjZXNcclxuXHRcdFx0ZmxvYXQgbm9uZVxyXG5cdFx0XHRmb250LXNpemUgMTBweFxyXG5cdFx0XHRcclxuXHRcdFx0K2Rlc2RlKCBlc2NyaXRvcmlvIClcclxuXHRcdFx0XHRkaXNwbGF5IGluaGVyaXRcclxuXHRcdFx0XHRmbG9hdCByaWdodFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRhXHJcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcclxuXHRcdFx0XHRvcGFjaXR5IDFcclxuXHRcdFx0XHRmb250LXNpemUgMTBweFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdGNvbG9yIGJsYW5jb1xyXG5cdFx0XHRcdHRyYW5zaXRpb24gYWxsIC40c1xyXG5cdFx0XHRcdCY6aG92ZXJcclxuXHRcdFx0XHRcdG9wYWNpdHkgMC41XHJcblx0XHQuc29jaWFsLXJlc3BcclxuXHRcdFx0ZGlzcGxheSBpbmhlcml0XHJcblx0XHRcdHRleHQtYWxpZ24gY2VudGVyXHJcblx0XHRcdG1hcmdpbi1ib3R0b20gNXB4XHJcblx0XHRcdCtkZXNkZSggZXNjcml0b3JpbyApXHJcblx0XHRcdFx0ZGlzcGxheSBub25lXHJcblx0XHRcdFxyXG5cdFx0XHRhXHJcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcclxuI3R5Y1xyXG5cdGNvbG9yIGJsYW5jb1xyXG5cdGZvbnQtc2l6ZSAxMnB4XHJcblx0bWFyZ2luIDFyZW0gYXV0b1xyXG5cdG1heC13aWR0aCAxMjMwcHhcclxuXHQraGFzdGEoIGVzY3JpdG9yaW8gKVxyXG5cdFx0d2lkdGggOTAlXHJcblx0XHRtYXJnaW4gMCBhdXRvIDIwcHggYXV0b1xyXG5cdHBcclxuXHRcdGZvbnQtc2l6ZSAxMnB4XHJcblx0YVxyXG5cdFx0Y29sb3IgYmxhbmNvXHJcbiIsImNhbGxlZC1mcm9tID0gKClcblxudmVuZG9ycyA9IG1veiB3ZWJraXQgbyBtcyBvZmZpY2lhbFxuXG4vLyBzdHJpbmdpZnkgdGhlIGdpdmVuIGFyZ1xuXG4tc3RyaW5nKGFyZylcbiAgdHlwZShhcmcpICsgJyAnICsgYXJnXG5cbi8vIHJlcXVpcmUgYSBjb2xvclxuXG5yZXF1aXJlLWNvbG9yKGNvbG9yKVxuICB1bmxlc3MgY29sb3IgaXMgYSAnY29sb3InXG4gICAgZXJyb3IoJ1JHQiBvciBIU0wgdmFsdWUgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKGNvbG9yKSlcblxuLy8gcmVxdWlyZSBhIHVuaXRcblxucmVxdWlyZS11bml0KG4pXG4gIHVubGVzcyBuIGlzIGEgJ3VuaXQnXG4gICAgZXJyb3IoJ3VuaXQgZXhwZWN0ZWQsIGdvdCBhICcgKyAtc3RyaW5nKG4pKVxuXG4vLyByZXF1aXJlIGEgc3RyaW5nXG5cbnJlcXVpcmUtc3RyaW5nKHN0cilcbiAgdW5sZXNzIHN0ciBpcyBhICdzdHJpbmcnIG9yIHN0ciBpcyBhICdpZGVudCdcbiAgICBlcnJvcignc3RyaW5nIGV4cGVjdGVkLCBnb3QgYSAnICsgLXN0cmluZyhzdHIpKVxuXG4vLyBNYXRoIGZ1bmN0aW9uc1xuXG5hYnMobikgeyBtYXRoKG4sICdhYnMnKSB9XG5taW4oYSwgYikgeyBhIDwgYiA/IGEgOiBiIH1cbm1heChhLCBiKSB7IGEgPiBiID8gYSA6IGIgfVxuXG4vLyBUcmlnb25vbWV0cmljc1xuUEkgPSAtbWF0aC1wcm9wKCdQSScpXG5cbnJhZGlhbnMtdG8tZGVncmVlcyhhbmdsZSlcbiAgYW5nbGUgKiAoMTgwIC8gUEkpXG5cbmRlZ3JlZXMtdG8tcmFkaWFucyhhbmdsZSlcbiAgdW5pdChhbmdsZSAqIChQSSAvIDE4MCksJycpXG5cbnNpbihuKVxuICBuID0gZGVncmVlcy10by1yYWRpYW5zKG4pIGlmIHVuaXQobikgPT0gJ2RlZydcbiAgcm91bmQobWF0aChuLCAnc2luJyksIDkpXG5cbmNvcyhuKVxuICBuID0gZGVncmVlcy10by1yYWRpYW5zKG4pIGlmIHVuaXQobikgPT0gJ2RlZydcbiAgcm91bmQobWF0aChuLCAnY29zJyksIDkpXG5cbi8vIFJvdW5kaW5nIE1hdGggZnVuY3Rpb25zXG5cbmNlaWwobiwgcHJlY2lzaW9uID0gMClcbiAgbXVsdGlwbGllciA9IDEwICoqIHByZWNpc2lvblxuICBtYXRoKG4gKiBtdWx0aXBsaWVyLCAnY2VpbCcpIC8gbXVsdGlwbGllclxuXG5mbG9vcihuLCBwcmVjaXNpb24gPSAwKVxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXG4gIG1hdGgobiAqIG11bHRpcGxpZXIsICdmbG9vcicpIC8gbXVsdGlwbGllclxuXG5yb3VuZChuLCBwcmVjaXNpb24gPSAwKVxuICBtdWx0aXBsaWVyID0gMTAgKiogcHJlY2lzaW9uXG4gIG1hdGgobiAqIG11bHRpcGxpZXIsICdyb3VuZCcpIC8gbXVsdGlwbGllclxuXG4vLyByZXR1cm4gdGhlIHN1bSBvZiB0aGUgZ2l2ZW4gbnVtYmVyc1xuXG5zdW0obnVtcylcbiAgc3VtID0gMFxuICBzdW0gKz0gbiBmb3IgbiBpbiBudW1zXG5cbi8vIHJldHVybiB0aGUgYXZlcmFnZSBvZiB0aGUgZ2l2ZW4gbnVtYmVyc1xuXG5hdmcobnVtcylcbiAgc3VtKG51bXMpIC8gbGVuZ3RoKG51bXMpXG5cbi8vIHJldHVybiBhIHVuaXRsZXNzIG51bWJlciwgb3IgcGFzcyB0aHJvdWdoXG5cbnJlbW92ZS11bml0KG4pXG4gIGlmIHR5cGVvZihuKSBpcyBcInVuaXRcIlxuICAgIHVuaXQobiwgXCJcIilcbiAgZWxzZVxuICAgIG5cblxuLy8gY29udmVydCBhIHBlcmNlbnQgdG8gYSBkZWNpbWFsLCBvciBwYXNzIHRocm91Z2hcblxucGVyY2VudC10by1kZWNpbWFsKG4pXG4gIGlmIHVuaXQobikgaXMgXCIlXCJcbiAgICByZW1vdmUtdW5pdChuKSAvIDEwMFxuICBlbHNlXG4gICAgblxuXG4vLyBjaGVjayBpZiBuIGlzIGFuIG9kZCBudW1iZXJcblxub2RkKG4pXG4gIDEgPT0gbiAlIDJcblxuLy8gY2hlY2sgaWYgbiBpcyBhbiBldmVuIG51bWJlclxuXG5ldmVuKG4pXG4gIDAgPT0gbiAlIDJcblxuLy8gY2hlY2sgaWYgY29sb3IgaXMgbGlnaHRcblxubGlnaHQoY29sb3IpXG4gIGxpZ2h0bmVzcyhjb2xvcikgPj0gNTAlXG5cbi8vIGNoZWNrIGlmIGNvbG9yIGlzIGRhcmtcblxuZGFyayhjb2xvcilcbiAgbGlnaHRuZXNzKGNvbG9yKSA8IDUwJVxuXG4vLyBkZXNhdHVyYXRlIGNvbG9yIGJ5IGFtb3VudFxuXG5kZXNhdHVyYXRlKGNvbG9yLCBhbW91bnQpXG4gIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCAtIGFtb3VudClcblxuLy8gc2F0dXJhdGUgY29sb3IgYnkgYW1vdW50XG5cbnNhdHVyYXRlKGNvbG9yID0gJycsIGFtb3VudCA9IDEwMCUpXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGFkanVzdChjb2xvciwgJ3NhdHVyYXRpb24nLCBhbW91bnQpXG4gIGVsc2VcbiAgICB1bnF1b3RlKCBcInNhdHVyYXRlKFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIGRhcmtlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XG5cbmRhcmtlbihjb2xvciwgYW1vdW50KVxuICBhZGp1c3QoY29sb3IsICdsaWdodG5lc3MnLCAtIGFtb3VudClcblxuLy8gbGlnaHRlbiBieSB0aGUgZ2l2ZW4gYW1vdW50XG5cbmxpZ2h0ZW4oY29sb3IsIGFtb3VudClcbiAgYWRqdXN0KGNvbG9yLCAnbGlnaHRuZXNzJywgYW1vdW50KVxuXG4vLyBkZWNyZWFzZSBvcGFjaXR5IGJ5IGFtb3VudFxuXG5mYWRlLW91dChjb2xvciwgYW1vdW50KVxuICBjb2xvciAtIHJnYmEoYmxhY2ssIHBlcmNlbnQtdG8tZGVjaW1hbChhbW91bnQpKVxuXG4vLyBpbmNyZWFzZSBvcGFjaXR5IGJ5IGFtb3VudFxuXG5mYWRlLWluKGNvbG9yLCBhbW91bnQpXG4gIGNvbG9yICsgcmdiYShibGFjaywgcGVyY2VudC10by1kZWNpbWFsKGFtb3VudCkpXG5cbi8vIHNwaW4gaHVlIGJ5IGEgZ2l2ZW4gYW1vdW50XG5cbnNwaW4oY29sb3IsIGFtb3VudClcbiAgY29sb3IgKyB1bml0KGFtb3VudCwgZGVnKVxuXG4vLyBtaXggdHdvIGNvbG9ycyBieSBhIGdpdmVuIGFtb3VudFxuXG5taXgoY29sb3IxLCBjb2xvcjIsIHdlaWdodCA9IDUwJSlcbiAgdW5sZXNzIHdlaWdodCBpbiAwLi4xMDBcbiAgICBlcnJvcihcIldlaWdodCBtdXN0IGJlIGJldHdlZW4gMCUgYW5kIDEwMCVcIilcblxuICBpZiBsZW5ndGgoY29sb3IxKSA9PSAyXG4gICAgd2VpZ2h0ID0gY29sb3IxWzBdXG4gICAgY29sb3IxID0gY29sb3IxWzFdXG5cbiAgZWxzZSBpZiBsZW5ndGgoY29sb3IyKSA9PSAyXG4gICAgd2VpZ2h0ID0gMTAwIC0gY29sb3IyWzBdXG4gICAgY29sb3IyID0gY29sb3IyWzFdXG5cbiAgcmVxdWlyZS1jb2xvcihjb2xvcjEpXG4gIHJlcXVpcmUtY29sb3IoY29sb3IyKVxuXG4gIHAgPSB1bml0KHdlaWdodCAvIDEwMCwgJycpXG4gIHcgPSBwICogMiAtIDFcblxuICBhID0gYWxwaGEoY29sb3IxKSAtIGFscGhhKGNvbG9yMilcblxuICB3MSA9ICgoKHcgKiBhID09IC0xKSA/IHcgOiAodyArIGEpIC8gKDEgKyB3ICogYSkpICsgMSkgLyAyXG4gIHcyID0gMSAtIHcxXG5cbiAgY2hhbm5lbHMgPSAocmVkKGNvbG9yMSkgcmVkKGNvbG9yMikpIChncmVlbihjb2xvcjEpIGdyZWVuKGNvbG9yMikpIChibHVlKGNvbG9yMSkgYmx1ZShjb2xvcjIpKVxuICByZ2IgPSAoKVxuXG4gIGZvciBwYWlyIGluIGNoYW5uZWxzXG4gICAgcHVzaChyZ2IsIGZsb29yKHBhaXJbMF0gKiB3MSArIHBhaXJbMV0gKiB3MikpXG5cbiAgYTEgPSBhbHBoYShjb2xvcjEpICogcFxuICBhMiA9IGFscGhhKGNvbG9yMikgKiAoMSAtIHApXG4gIGFscGhhID0gYTEgKyBhMlxuXG4gIHJnYmEocmdiWzBdLCByZ2JbMV0sIHJnYlsyXSwgYWxwaGEpXG5cbi8vIGludmVydCBjb2xvcnMsIGxlYXZlIGFscGhhIGludGFjdFxuXG5pbnZlcnQoY29sb3IgPSAnJylcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXG4gICAgcmdiYSgjZmZmIC0gY29sb3IsIGFscGhhKGNvbG9yKSlcbiAgZWxzZVxuICAgIHVucXVvdGUoIFwiaW52ZXJ0KFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIGdpdmUgY29tcGxlbWVudCBvZiB0aGUgZ2l2ZW4gY29sb3JcblxuY29tcGxlbWVudCggY29sb3IgKVxuICBzcGluKCBjb2xvciwgMTgwIClcblxuLy8gZ2l2ZSBncmF5c2NhbGUgb2YgdGhlIGdpdmVuIGNvbG9yXG5cbmdyYXlzY2FsZSggY29sb3IgPSAnJyApXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGRlc2F0dXJhdGUoIGNvbG9yLCAxMDAlIClcbiAgZWxzZVxuICAgIHVucXVvdGUoIFwiZ3JheXNjYWxlKFwiICsgY29sb3IgKyBcIilcIiApXG5cbi8vIG1peCB0aGUgZ2l2ZW4gY29sb3Igd2l0aCB3aGl0ZVxuXG50aW50KCBjb2xvciwgcGVyY2VudCApXG4gIG1peCggd2hpdGUsIGNvbG9yLCBwZXJjZW50IClcblxuLy8gbWl4IHRoZSBnaXZlbiBjb2xvciB3aXRoIGJsYWNrXG5cbnNoYWRlKCBjb2xvciwgcGVyY2VudCApXG4gIG1peCggYmxhY2ssIGNvbG9yLCBwZXJjZW50IClcblxuLy8gcmV0dXJuIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBnaXZlbiBleHByXG5cbmxhc3QoZXhwcilcbiAgZXhwcltsZW5ndGgoZXhwcikgLSAxXVxuXG4vLyByZXR1cm4ga2V5cyBpbiB0aGUgZ2l2ZW4gcGFpcnMgb3Igb2JqZWN0XG5cbmtleXMocGFpcnMpXG4gIHJldCA9ICgpXG4gIGlmIHR5cGUocGFpcnMpID09ICdvYmplY3QnXG4gICAgZm9yIGtleSBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIGtleSlcbiAgZWxzZVxuICAgIGZvciBwYWlyIGluIHBhaXJzXG4gICAgICBwdXNoKHJldCwgcGFpclswXSk7XG4gIHJldFxuXG4vLyByZXR1cm4gdmFsdWVzIGluIHRoZSBnaXZlbiBwYWlycyBvciBvYmplY3RcblxudmFsdWVzKHBhaXJzKVxuICByZXQgPSAoKVxuICBpZiB0eXBlKHBhaXJzKSA9PSAnb2JqZWN0J1xuICAgIGZvciBrZXksIHZhbCBpbiBwYWlyc1xuICAgICAgcHVzaChyZXQsIHZhbClcbiAgZWxzZVxuICAgIGZvciBwYWlyIGluIHBhaXJzXG4gICAgICBwdXNoKHJldCwgcGFpclsxXSk7XG4gIHJldFxuXG4vLyBqb2luIHZhbHVlcyB3aXRoIHRoZSBnaXZlbiBkZWxpbWl0ZXJcblxuam9pbihkZWxpbSwgdmFscy4uLilcbiAgYnVmID0gJydcbiAgdmFscyA9IHZhbHNbMF0gaWYgbGVuZ3RoKHZhbHMpID09IDFcbiAgZm9yIHZhbCwgaSBpbiB2YWxzXG4gICAgYnVmICs9IGkgPyBkZWxpbSArIHZhbCA6IHZhbFxuXG4vLyBhZGQgYSBDU1MgcnVsZSB0byB0aGUgY29udGFpbmluZyBibG9ja1xuXG4vLyAtIFRoaXMgZGVmaW5pdGlvbiBhbGxvd3MgYWRkLXByb3BlcnR5IHRvIGJlIHVzZWQgYXMgYSBtaXhpblxuLy8gLSBJdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGludGVycG9sYXRpb24gYnV0IGFsbG93cyB1c2Vyc1xuLy8gICB0byBvcHQgZm9yIGEgZnVuY3Rpb25hbCBzdHlsZVxuXG5hZGQtcHJvcGVydHktZnVuY3Rpb24gPSBhZGQtcHJvcGVydHlcbmFkZC1wcm9wZXJ0eShuYW1lLCBleHByKVxuICBpZiBtaXhpblxuICAgIHtuYW1lfSBleHByXG4gIGVsc2VcbiAgICBhZGQtcHJvcGVydHktZnVuY3Rpb24obmFtZSwgZXhwcilcblxucHJlZml4LWNsYXNzZXMocHJlZml4KVxuICAtcHJlZml4LWNsYXNzZXMocHJlZml4LCBibG9jaylcblxuLy8gQ2FjaGluZyBtaXhpbiwgdXNlIGluc2lkZSB5b3VyIGZ1bmN0aW9ucyB0byBlbmFibGUgY2FjaGluZyBieSBleHRlbmRpbmcuXG5cbiRzdHlsdXNfbWl4aW5fY2FjaGUgPSB7fVxuY2FjaGUoKVxuICAka2V5ID0gKGN1cnJlbnQtbWVkaWEoKSBvciAnbm8tbWVkaWEnKSArICdfXycgKyBjYWxsZWQtZnJvbVswXSArICdfXycgKyBhcmd1bWVudHNcbiAgaWYgJGtleSBpbiAkc3R5bHVzX21peGluX2NhY2hlXG4gICAgQGV4dGVuZCB7XCIkY2FjaGVfcGxhY2Vob2xkZXJfZm9yX1wiICsgJHN0eWx1c19taXhpbl9jYWNoZVska2V5XX1cbiAgZWxzZSBpZiAnY2FjaGUnIGluIGNhbGxlZC1mcm9tXG4gICAge2Jsb2NrfVxuICBlbHNlXG4gICAgJGlkID0gbGVuZ3RoKCRzdHlsdXNfbWl4aW5fY2FjaGUpXG5cbiAgICAmLFxuICAgIC8kY2FjaGVfcGxhY2Vob2xkZXJfZm9yX3skaWR9XG4gICAgICAkc3R5bHVzX21peGluX2NhY2hlWyRrZXldID0gJGlkXG4gICAgICB7YmxvY2t9XG5cbi8vIFBlcmNlbnRhZ2UgZnVuY3Rpb24gdG8gY29udmVydCBhIG51bWJlciwgZS5nLiBcIi40NVwiLCBpbnRvIGEgcGVyY2VudGFnZSwgZS5nLiBcIjQ1JVwiXG5cbnBlcmNlbnRhZ2UobnVtKVxuICByZXR1cm4gdW5pdChudW0gKiAxMDAsICclJylcblxuLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgYSBgdmFsdWVgIHdpdGhpbiBhIGBsaXN0YFxuXG5pbmRleChsaXN0LCB2YWx1ZSlcbiAgZm9yIHZhbCwgaSBpbiBsaXN0XG4gICAgcmV0dXJuIGkgaWYgdmFsID09IHZhbHVlXG4iLCIvKlxuICogSGVscGVyIGZvciBib3JkZXItcmFkaXVzKCkuXG4gKi9cblxuLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICBpZiBsZW5ndGgocG9zKSA9PSAzXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPHRvcCB8IGJvdHRvbT4gPGxlZnQgfCByaWdodD4gPG4+XG4gICAgeSA9IHBvc1swXVxuICAgIHggPSBwb3NbMV1cbiAgICAvLyBXZSBkb24ndCB1c2UgdmVuZG9yIGZvciBib2Rlci1yYWRpdXMgYW55bW9yZVxuICAgIC8vIHZlbmRvcignYm9yZGVyLXJhZGl1cy0lcyVzJyAlIHBvcywgcG9zWzJdLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG4gICAgeydib3JkZXItJXMtJXMtcmFkaXVzJyAlIHBvc306IHBvc1syXSBpbXBvcnRhbmNlXG4gIGVsc2UgaWYgcG9zWzBdIGluICh0b3AgYm90dG9tKVxuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBib3R0b20+IDxuPlxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvc1swXSBsZWZ0IHBvc1sxXSwgaW1wb3J0YW5jZSlcbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gcmlnaHQgcG9zWzFdLCBpbXBvcnRhbmNlKVxuICBlbHNlIGlmIHBvc1swXSBpbiAobGVmdCByaWdodClcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8bGVmdCB8IHJpZ2h0PiA8bj5cbiAgICB1bnNoaWZ0KHBvcywgdG9wKTtcbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gICAgcG9zWzBdID0gYm90dG9tXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuXG4vKlxuICogYm9yZGVyLXJhZGl1cyBzdXBwb3J0aW5nIGF1Z21lbnRlZCBiZWhhdmlvci5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICBib3JkZXItcmFkaXVzOiAycHggNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgNXB4IGJvdHRvbSAxMHB4XG4gKiAgICBib3JkZXItcmFkaXVzOiBsZWZ0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4IGJvdHRvbSByaWdodCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDEwcHgsIGJvdHRvbSByaWdodCA1cHhcbiAqXG4gKi9cblxuYm9yZGVyLXJhZGl1cygpXG4gIHBvcyA9ICgpXG4gIGF1Z21lbnRlZCA9IGZhbHNlXG4gIGltcG9ydGFuY2UgPSBhcmd1bWVudHNbbGVuZ3RoKGFyZ3VtZW50cykgLSAxXSA9PSAhaW1wb3J0YW50ID8gIWltcG9ydGFudCA6IHVucXVvdGUoJycpXG5cbiAgZm9yIGFyZ3MgaW4gYXJndW1lbnRzXG4gICAgZm9yIGFyZyBpbiBhcmdzXG4gICAgICBpZiBhcmcgaXMgYSAnaWRlbnQnXG4gICAgICAgIGFwcGVuZChwb3MsIGFyZylcbiAgICAgICAgYXVnbWVudGVkID0gdHJ1ZVxuICAgICAgZWxzZVxuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXG4gICAgICAgIGlmIGF1Z21lbnRlZFxuICAgICAgICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgICAgICAgICBwb3MgPSAoKVxuICBib3JkZXItcmFkaXVzIHBvcyB1bmxlc3MgYXVnbWVudGVkXG4iLCIvLyBoZWxwZXJcblxuLXBvcyh0eXBlLCBhcmdzKVxuICBpID0gMFxuICBwb3NpdGlvbjogdW5xdW90ZSh0eXBlKVxuICBmb3IgaiBpbiAoMS4uNClcbiAgICBpZiBsZW5ndGgoYXJncykgPiBpXG4gICAgICB7YXJnc1tpXX06IGFyZ3NbaSArIDFdIGlzIGEgJ3VuaXQnID8gYXJnc1tpICs9IDFdIDogMFxuICAgIGkgKz0gMVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIGZpeGVkOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIGZpeGVkOiB0b3AgbGVmdFxuICogICAgIGZpeGVkOiB0b3AgNXB4IGxlZnRcbiAqICAgICBmaXhlZDogdG9wIGxlZnQgNXB4XG4gKiAgICAgZml4ZWQ6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxuZml4ZWQoKVxuICAtcG9zKCdmaXhlZCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBhYnNvbHV0ZTogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBhYnNvbHV0ZTogdG9wIGxlZnRcbiAqICAgICBhYnNvbHV0ZTogdG9wIDVweCBsZWZ0XG4gKiAgICAgYWJzb2x1dGU6IHRvcCBsZWZ0IDVweFxuICogICAgIGFic29sdXRlOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbmFic29sdXRlKClcbiAgLXBvcygnYWJzb2x1dGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgcmVsYXRpdmU6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVsYXRpdmU6IHRvcCBsZWZ0XG4gKiAgICAgcmVsYXRpdmU6IHRvcCA1cHggbGVmdFxuICogICAgIHJlbGF0aXZlOiB0b3AgbGVmdCA1cHhcbiAqICAgICByZWxhdGl2ZTogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5yZWxhdGl2ZSgpXG4gIC1wb3MoJ3JlbGF0aXZlJywgYXJndW1lbnRzKVxuIl19 */
