.tag.malibu {
  background-color: #4fc3f7;
}
.tag.sky_blue {
  background-color: #03a9f4;
}
.tag.blue {
  background-color: #304ffe;
}
.tag.orange {
  background-color: #ff9800;
}
.tag.yellow {
  background-color: #ffca28;
}
.tag.tomato {
  background-color: #e53935;
}
.tag.royal {
  background-color: #880e4f;
}
.tag.bilbao {
  background-color: #558b2f;
}
.tag.cornflower {
  background-color: #8c9eff;
}
.tag.light_sky {
  background-color: #90caf9;
}
.tag.indigo {
  background-color: #6a1b9a;
}
.tag.dark_indigo {
  background-color: #4a148c;
}
.tag.scooter {
  background-color: #00838f;
}
.tag.atoll {
  background-color: #006064;
}
.tag.gorse {
  background-color: #ffea00;
}
.tag.bean {
  background-color: #3e2723;
}
.tag.hemp {
  background-color: #a1887f;
}
.slice.related-products {
  background: #f3f3f3;
  padding: 20px 0 20px 0;
}
@media only screen and (max-width: 1280px) {
  .slice.related-products .courses {
    max-width: 92%;
  }
}
.slice.related-products .courses .course:hover {
  padding-bottom: 10px;
}
.slice.related-products .courses .course:hover .course-i {
  border-color: #e1e1e1;
  box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.2);
}
.slice.related-products .courses .course:hover .course-i .button-w {
  display: block;
}
.slice.related-products .courses .course {
  display: none;
  width: calc(99.9% * 1/5 - (30px - 30px * 1/5));
  padding-bottom: 43px;
}
.slice.related-products .courses .course:nth-child(1n) {
  float: left;
  margin-right: 30px;
  clear: none;
}
.slice.related-products .courses .course:last-child {
  margin-right: 0;
}
.slice.related-products .courses .course:nth-child(5n) {
  margin-right: 0;
  float: right;
}
.slice.related-products .courses .course:nth-child(5n + 1) {
  clear: both;
}
.slice.related-products .courses .course:first-child,
.slice.related-products .courses .course:nth-child(2),
.slice.related-products .courses .course:nth-child(3),
.slice.related-products .courses .course:nth-child(4),
.slice.related-products .courses .course:nth-child(5) {
  display: block;
}
@media only screen and (max-width: 1200px) {
  .slice.related-products .courses .course {
    width: calc(99.9% * 1/4 - (30px - 30px * 1/4));
  }
  .slice.related-products .courses .course:nth-child(1n) {
    float: left;
    margin-right: 30px;
    clear: none;
  }
  .slice.related-products .courses .course:last-child {
    margin-right: 0;
  }
  .slice.related-products .courses .course:nth-child(4n) {
    margin-right: 0;
    float: right;
  }
  .slice.related-products .courses .course:nth-child(4n + 1) {
    clear: both;
  }
  .slice.related-products .courses .course:nth-child(5) {
    display: none;
  }
}
@media only screen and (max-width: 1020px) {
  .slice.related-products .courses .course {
    width: calc(99.9% * 1/3 - (30px - 30px * 1/3));
  }
  .slice.related-products .courses .course:nth-child(1n) {
    float: left;
    margin-right: 30px;
    clear: none;
  }
  .slice.related-products .courses .course:last-child {
    margin-right: 0;
  }
  .slice.related-products .courses .course:nth-child(3n) {
    margin-right: 0;
    float: right;
  }
  .slice.related-products .courses .course:nth-child(3n + 1) {
    clear: both;
  }
  .slice.related-products .courses .course:nth-child(4) {
    display: none;
  }
}
@media only screen and (max-width: 800px) {
  .slice.related-products .courses .course {
    width: calc(99.9% * 1/2 - (30px - 30px * 1/2));
  }
  .slice.related-products .courses .course:nth-child(1n) {
    float: left;
    margin-right: 30px;
    clear: none;
  }
  .slice.related-products .courses .course:last-child {
    margin-right: 0;
  }
  .slice.related-products .courses .course:nth-child(2n) {
    margin-right: 0;
    float: right;
  }
  .slice.related-products .courses .course:nth-child(2n + 1) {
    clear: both;
  }
  .slice.related-products .courses .course:nth-child(3) {
    display: none;
  }
}
@media only screen and (max-width: 520px) {
  .slice.related-products .courses .course {
    width: calc(99.9% * 1/1 - (30px - 30px * 1/1));
  }
  .slice.related-products .courses .course:nth-child(1n) {
    float: left;
    margin-right: 30px;
    clear: none;
  }
  .slice.related-products .courses .course:last-child {
    margin-right: 0;
  }
  .slice.related-products .courses .course:nth-child(1n) {
    margin-right: 0;
    float: right;
  }
  .slice.related-products .courses .course:nth-child(1n + 1) {
    clear: both;
  }
  .slice.related-products .courses .course:nth-child(2) {
    display: none;
  }
}
.slice.related-products .courses .course .course-i {
  background: #fff;
  padding: 10px;
  margin: 0 5px 5px;
}
.slice.related-products .courses .course .course-i .tags .tag.black-text {
  color: #292929;
}
.slice.related-products .courses .course .course-i .tags .tag {
  text-transform: uppercase;
  display: inline-block;
  color: #fff;
  font-size: 11px;
  font-weight: bold;
  padding: 5px 12px;
}
.slice.related-products .courses .course .course-i .img-w .img-tags {
  position: relative;
}
.slice.related-products .courses .course .course-i .img-w .img-tags .tag.promo {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
  width: 54px;
  height: 50px;
  padding: 0;
  left: auto;
  right: 0;
  font-size: 16px;
}
.slice.related-products .courses .course .course-i .img-w .img-tags .tag {
  position: absolute;
  top: 0;
  left: 0;
}
.slice.related-products .courses .course .course-i .img-w .img-tags .tag:nth-child(2) {
  top: 30px;
}
.slice.related-products .courses .course .course-i .img-w .img-tags img {
  width: 100%;
  height: auto;
}
.slice.related-products .courses .course .course-i .tags-title {
  height: 130px;
}
.slice.related-products .courses .course .course-i .tags-title .bottom-tags {
  text-align: center;
}
.slice.related-products .courses .course .course-i .tags-title .bottom-tags .tag {
  margin-top: 5px;
}
.slice.related-products .courses .course .course-i .tags-title .title {
  margin-top: 5px;
  text-align: center;
  font-size: 11.9px;
}
.slice.related-products .courses .course .course-i .price-w {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-pack: end;
      justify-content: flex-end;
  height: 70px;
}
.slice.related-products .courses .course .course-i .price-w .price {
  color: #3799db;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  margin-bottom: 0;
}
.slice.related-products .courses .course .course-i .price-w .price del {
  color: #b3b3b3;
  font-weight: normal;
  font-size: 12px;
}
.slice.related-products .courses .course .course-i .footer-card {
  text-align: center;
  font-size: 11.9px;
  margin-bottom: 15px;
}
.slice.related-products .courses .course .course-i .button-w .btn {
  padding-left: 0;
  padding-right: 0;
}
@media only screen and (min-width: 1020px) {
  .slice.related-products .courses .course .course-i .button-w {
    display: none;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlbGF0ZWRfcHJvZHVjdHMuc3R5bCIsInJlbGF0ZWRfcHJvZHVjdHMuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3J1cHR1cmUvcnVwdHVyZS9pbmRleC5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFCSTtFQUNJLDBCQUFBO0NDcEJQO0FEbUJHO0VBQ0ksMEJBQUE7Q0NqQlA7QURnQkc7RUFDSSwwQkFBQTtDQ2RQO0FEYUc7RUFDSSwwQkFBQTtDQ1hQO0FEVUc7RUFDSSwwQkFBQTtDQ1JQO0FET0c7RUFDSSwwQkFBQTtDQ0xQO0FESUc7RUFDSSwwQkFBQTtDQ0ZQO0FEQ0c7RUFDSSwwQkFBQTtDQ0NQO0FERkc7RUFDSSwwQkFBQTtDQ0lQO0FETEc7RUFDSSwwQkFBQTtDQ09QO0FEUkc7RUFDSSwwQkFBQTtDQ1VQO0FEWEc7RUFDSSwwQkFBQTtDQ2FQO0FEZEc7RUFDSSwwQkFBQTtDQ2dCUDtBRGpCRztFQUNJLDBCQUFBO0NDbUJQO0FEcEJHO0VBQ0ksMEJBQUE7Q0NzQlA7QUR2Qkc7RUFDSSwwQkFBQTtDQ3lCUDtBRDFCRztFQUNJLDBCQUFBO0NDNEJQO0FEMUJEO0VBQ0ksb0JBQUE7RUFDQSx1QkFBQTtDQzRCSDtBQ3lGVTtFQUFBO0lGbEhDLGVBQUE7R0M2QlQ7Q0FDRjtBRDdCTztFQUNJLHFCQUFBO0NDK0JYO0FEOUJXO0VBQ0ksc0JBQUE7RUFDQSw0Q0FBQTtDQ2dDZjtBRC9CZTtFQUNJLGVBQUE7Q0NpQ25CO0FEaENPO0VBQ0ksY0FBQTtFQUNBLCtDQUFBO0VBQ0EscUJBQUE7Q0NrQ1g7QURyQ087RUFFSSxZQUFBO0VBQUEsbUJBQUE7RUFBQSxZQUFBO0NDbUNYO0FEckNPO0VBRUksZ0JBQUE7Q0NtQ1g7QURyQ087RUFFSSxnQkFBQTtFQUFBLGFBQUE7Q0NtQ1g7QURyQ087RUFFSSxZQUFBO0NDbUNYO0FEakNXOzs7OztFQUtJLGVBQUE7Q0NtQ2Y7QUM4RFU7RUFBQTtJRi9GSywrQ0FBQTtHQ3FDYjtFQzBEUTtJRi9GSyxZQUFBO0lBQUEsbUJBQUE7SUFBQSxZQUFBO0dDcUNiO0VDMERRO0lGL0ZLLGdCQUFBO0dDcUNiO0VDMERRO0lGL0ZLLGdCQUFBO0lBQUEsYUFBQTtHQ3FDYjtFQzBEUTtJRi9GSyxZQUFBO0dDcUNiO0VEcENhO0lBQ0ksY0FBQTtHQ3NDakI7Q0FDRjtBQ3NEVTtFQUFBO0lGM0ZLLCtDQUFBO0dDeUNiO0VDa0RRO0lGM0ZLLFlBQUE7SUFBQSxtQkFBQTtJQUFBLFlBQUE7R0N5Q2I7RUNrRFE7SUYzRkssZ0JBQUE7R0N5Q2I7RUNrRFE7SUYzRkssZ0JBQUE7SUFBQSxhQUFBO0dDeUNiO0VDa0RRO0lGM0ZLLFlBQUE7R0N5Q2I7RUR4Q2E7SUFDSSxjQUFBO0dDMENqQjtDQUNGO0FDOENVO0VBQUE7SUZ2RkssK0NBQUE7R0M2Q2I7RUMwQ1E7SUZ2RkssWUFBQTtJQUFBLG1CQUFBO0lBQUEsWUFBQTtHQzZDYjtFQzBDUTtJRnZGSyxnQkFBQTtHQzZDYjtFQzBDUTtJRnZGSyxnQkFBQTtJQUFBLGFBQUE7R0M2Q2I7RUMwQ1E7SUZ2RkssWUFBQTtHQzZDYjtFRDVDYTtJQUNJLGNBQUE7R0M4Q2pCO0NBQ0Y7QUNzQ1U7RUFBQTtJRm5GSywrQ0FBQTtHQ2lEYjtFQ2tDUTtJRm5GSyxZQUFBO0lBQUEsbUJBQUE7SUFBQSxZQUFBO0dDaURiO0VDa0NRO0lGbkZLLGdCQUFBO0dDaURiO0VDa0NRO0lGbkZLLGdCQUFBO0lBQUEsYUFBQTtHQ2lEYjtFQ2tDUTtJRm5GSyxZQUFBO0dDaURiO0VEaERhO0lBQ0ksY0FBQTtHQ2tEakI7Q0FDRjtBRGxEVztFQUNJLGlCQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0NDb0RmO0FEbERtQjtFQUNJLGVBQUE7Q0NvRHZCO0FEbkRtQjtFQUNJLDBCQUFBO0VBQ0Esc0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0NDcUR2QjtBRG5EbUI7RUFDSSxtQkFBQTtDQ3FEdkI7QURwRHVCO0VBQ0kscUJBQUE7RUFBQSxjQUFBO0VBQ0EsdUJBQUE7TUFBQSxvQkFBQTtFQUNBLHNCQUFBO01BQUEsd0JBQUE7RUFDQSxZQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxXQUFBO0VBQ0EsU0FBQTtFQUNBLGdCQUFBO0NDc0QzQjtBRHJEdUI7RUFDSSxtQkFBQTtFQUNBLE9BQUE7RUFDQSxRQUFBO0NDdUQzQjtBRHREMkI7RUFDSSxVQUFBO0NDd0QvQjtBRHZEdUI7RUFDSSxZQUFBO0VBQ0EsYUFBQTtDQ3lEM0I7QUR4RGU7RUFDSSxjQUFBO0NDMERuQjtBRHpEbUI7RUFDSSxtQkFBQTtDQzJEdkI7QUQxRHVCO0VBQ0ksZ0JBQUE7Q0M0RDNCO0FEM0RtQjtFQUNJLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtDQzZEdkI7QUQ1RGU7RUFDSSxxQkFBQTtFQUFBLGNBQUE7RUFDQSwyQkFBQTtNQUFBLHVCQUFBO0VBQ0EsbUJBQUE7TUFBQSwwQkFBQTtFQUNBLGFBQUE7Q0M4RG5CO0FEN0RtQjtFQUNJLGVBQUE7RUFDQSxtQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtDQytEdkI7QUQ5RG1CO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7Q0NnRXZCO0FEL0RlO0VBQ0ksbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0NDaUVuQjtBRC9EbUI7RUFDSSxnQkFBQTtFQUNBLGlCQUFBO0NDaUV2QjtBQ3JEVTtFQUFBO0lGVmEsY0FBQTtHQ21FckI7Q0FDRiIsImZpbGUiOiJyZWxhdGVkX3Byb2R1Y3RzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgXCIuLi9nbG9iYWwvX19fdmFyaWFibGVzXCJcblxudGFnX2NvbG9ycyA9ICdtYWxpYnUnICM0RkMzRjcsXG4gICAgICAgICAgICAgJ3NreV9ibHVlJyAjMDNBOUY0LFxuICAgICAgICAgICAgICdibHVlJyAjMzA0RkZFLFxuICAgICAgICAgICAgICdvcmFuZ2UnICNGRjk4MDAsXG4gICAgICAgICAgICAgJ3llbGxvdycgI0ZGQ0EyOCxcbiAgICAgICAgICAgICAndG9tYXRvJyAjRTUzOTM1LFxuICAgICAgICAgICAgICdyb3lhbCcgIzg4MEU0RixcbiAgICAgICAgICAgICAnYmlsYmFvJyAjNTU4QjJGLFxuICAgICAgICAgICAgICdjb3JuZmxvd2VyJyAjOEM5RUZGLFxuICAgICAgICAgICAgICdsaWdodF9za3knICM5MENBRjksXG4gICAgICAgICAgICAgJ2luZGlnbycgIzZBMUI5QSxcbiAgICAgICAgICAgICAnZGFya19pbmRpZ28nICM0QTE0OEMsXG4gICAgICAgICAgICAgJ3Njb290ZXInICMwMDgzOEYsXG4gICAgICAgICAgICAgJ2F0b2xsJyAjMDA2MDY0LFxuICAgICAgICAgICAgICdnb3JzZScgI0ZGRUEwMCxcbiAgICAgICAgICAgICAnYmVhbicgIzNFMjcyMyxcbiAgICAgICAgICAgICAnaGVtcCcgI0ExODg3RlxuXG5mb3IgdGFnX2NvbG9yIGluIHRhZ19jb2xvcnNcbiAgICAudGFnLnt0YWdfY29sb3JbMF19XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRhZ19jb2xvclsxXVxuXG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0c1xuICAgIGJhY2tncm91bmQgY2luemFcbiAgICBwYWRkaW5nIDIwcHggMCAyMHB4IDBcbiAgICAuY291cnNlc1xuICAgICAgICArYmVsb3coMTI4MHB4KVxuICAgICAgICAgICAgbWF4LXdpZHRoOiA5MiVcbiAgICAgICAgLmNvdXJzZTpob3ZlclxuICAgICAgICAgICAgcGFkZGluZy1ib3R0b20gMTBweFxuICAgICAgICAgICAgLmNvdXJzZS1pXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTFlMWUxXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4yKVxuICAgICAgICAgICAgICAgIC5idXR0b24td1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGJsb2NrXG4gICAgICAgIC5jb3Vyc2VcbiAgICAgICAgICAgIGRpc3BsYXkgbm9uZVxuICAgICAgICAgICAgbG9zdC1jb2x1bW4gMS81IDVcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tIDQzcHhcbiAgICAgICAgICAgICY6Zmlyc3QtY2hpbGRcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDIpXG4gICAgICAgICAgICAmOm50aC1jaGlsZCgzKVxuICAgICAgICAgICAgJjpudGgtY2hpbGQoNClcbiAgICAgICAgICAgICY6bnRoLWNoaWxkKDUpXG4gICAgICAgICAgICAgICAgZGlzcGxheSBibG9ja1xuICAgICAgICAgICAgK2JlbG93KDEyMDBweClcbiAgICAgICAgICAgICAgICBsb3N0LWNvbHVtbiAxLzQgNFxuICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKDUpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgbm9uZVxuICAgICAgICAgICAgK2JlbG93KDEwMjBweClcbiAgICAgICAgICAgICAgICBsb3N0LWNvbHVtbiAxLzMgM1xuICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKDQpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgbm9uZVxuICAgICAgICAgICAgK2JlbG93KDgwMHB4KVxuICAgICAgICAgICAgICAgIGxvc3QtY29sdW1uIDEvMiAyXG4gICAgICAgICAgICAgICAgJjpudGgtY2hpbGQoMylcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBub25lXG4gICAgICAgICAgICArYmVsb3coNTIwcHgpXG4gICAgICAgICAgICAgICAgbG9zdC1jb2x1bW4gMS8xIDFcbiAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCgyKVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IG5vbmVcbiAgICAgICAgICAgIC5jb3Vyc2UtaVxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAgICAgICAgICAgICAgcGFkZGluZyAxMHB4XG4gICAgICAgICAgICAgICAgbWFyZ2luIDAgNXB4IDVweFxuICAgICAgICAgICAgICAgIC50YWdzXG4gICAgICAgICAgICAgICAgICAgIC50YWcuYmxhY2stdGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgdGV4dHNcbiAgICAgICAgICAgICAgICAgICAgLnRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm0gdXBwZXJjYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGlubGluZS1ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igd2hpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZSAxMXB4XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodCBib2xkXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nIDVweCAxMnB4XG4gICAgICAgICAgICAgICAgLmltZy13XG4gICAgICAgICAgICAgICAgICAgIC5pbWctdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gcmVsYXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIC50YWcucHJvbW9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50IGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIDU0cHhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgNTBweFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgYXV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMTZweFxuICAgICAgICAgICAgICAgICAgICAgICAgLnRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIGFic29sdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmOm50aC1jaGlsZCgyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AgMzBweFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggMTAwJVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCBhdXRvXG4gICAgICAgICAgICAgICAgLnRhZ3MtdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IDEzMHB4XG4gICAgICAgICAgICAgICAgICAgIC5ib3R0b20tdGFnc1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIC50YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wIDVweFxuICAgICAgICAgICAgICAgICAgICAudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3AgNXB4XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplIDExLjlweFxuICAgICAgICAgICAgICAgIC5wcmljZS13XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgZmxleFxuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudCBmbGV4LWVuZFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgNzBweFxuICAgICAgICAgICAgICAgICAgICAucHJpY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yICMzNzk5REJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ24gY2VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMjBweFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQgYm9sZFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbSAwXG4gICAgICAgICAgICAgICAgICAgIC5wcmljZSBkZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIHRleHRzMiArIDUwJVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQgbm9ybWFsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMTJweFxuICAgICAgICAgICAgICAgIC5mb290ZXItY2FyZFxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMTEuOXB4XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b20gMTVweFxuICAgICAgICAgICAgICAgIC5idXR0b24td1xuICAgICAgICAgICAgICAgICAgICAuYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQgMFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMFxuICAgICAgICAgICAgICAgICAgICArYWJvdmUoMTAyMHB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBub25lXG4iLCIudGFnLm1hbGlidSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0ZmMzZjc7XG59XG4udGFnLnNreV9ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzYTlmNDtcbn1cbi50YWcuYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMDRmZmU7XG59XG4udGFnLm9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjk4MDA7XG59XG4udGFnLnllbGxvdyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmNhMjg7XG59XG4udGFnLnRvbWF0byB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTM5MzU7XG59XG4udGFnLnJveWFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg4MGU0Zjtcbn1cbi50YWcuYmlsYmFvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzU1OGIyZjtcbn1cbi50YWcuY29ybmZsb3dlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4YzllZmY7XG59XG4udGFnLmxpZ2h0X3NreSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MGNhZjk7XG59XG4udGFnLmluZGlnbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2YTFiOWE7XG59XG4udGFnLmRhcmtfaW5kaWdvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhMTQ4Yztcbn1cbi50YWcuc2Nvb3RlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDgzOGY7XG59XG4udGFnLmF0b2xsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjA2NDtcbn1cbi50YWcuZ29yc2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYTAwO1xufVxuLnRhZy5iZWFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzNlMjcyMztcbn1cbi50YWcuaGVtcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNhMTg4N2Y7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyB7XG4gIGJhY2tncm91bmQ6ICNmM2YzZjM7XG4gIHBhZGRpbmc6IDIwcHggMCAyMHB4IDA7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyODBweCkge1xuICAuc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyB7XG4gICAgbWF4LXdpZHRoOiA5MiU7XG4gIH1cbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6aG92ZXIge1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6aG92ZXIgLmNvdXJzZS1pIHtcbiAgYm9yZGVyLWNvbG9yOiAjZTFlMWUxO1xuICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAwcHggcmdiYSgwLDAsMCwwLjIpO1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZTpob3ZlciAuY291cnNlLWkgLmJ1dHRvbi13IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgbG9zdC1jb2x1bW46IDEvNSA1O1xuICBwYWRkaW5nLWJvdHRvbTogNDNweDtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6Zmlyc3QtY2hpbGQsXG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlOm50aC1jaGlsZCgyKSxcbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6bnRoLWNoaWxkKDMpLFxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZTpudGgtY2hpbGQoNCksXG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlOm50aC1jaGlsZCg1KSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSB7XG4gICAgbG9zdC1jb2x1bW46IDEvNCA0O1xuICB9XG4gIC5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6bnRoLWNoaWxkKDUpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjBweCkge1xuICAuc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIHtcbiAgICBsb3N0LWNvbHVtbjogMS8zIDM7XG4gIH1cbiAgLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZTpudGgtY2hpbGQoNCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIHtcbiAgLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSB7XG4gICAgbG9zdC1jb2x1bW46IDEvMiAyO1xuICB9XG4gIC5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2U6bnRoLWNoaWxkKDMpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDUyMHB4KSB7XG4gIC5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2Uge1xuICAgIGxvc3QtY29sdW1uOiAxLzEgMTtcbiAgfVxuICAuc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlOm50aC1jaGlsZCgyKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBwYWRkaW5nOiAxMHB4O1xuICBtYXJnaW46IDAgNXB4IDVweDtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC50YWdzIC50YWcuYmxhY2stdGV4dCB7XG4gIGNvbG9yOiAjMjkyOTI5O1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnRhZ3MgLnRhZyB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6ICNmZmY7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6IDVweCAxMnB4O1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLmltZy13IC5pbWctdGFncyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC5pbWctdyAuaW1nLXRhZ3MgLnRhZy5wcm9tbyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogNTRweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBwYWRkaW5nOiAwO1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogMDtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLmltZy13IC5pbWctdGFncyAudGFnIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuaW1nLXcgLmltZy10YWdzIC50YWc6bnRoLWNoaWxkKDIpIHtcbiAgdG9wOiAzMHB4O1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLmltZy13IC5pbWctdGFncyBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnRhZ3MtdGl0bGUge1xuICBoZWlnaHQ6IDEzMHB4O1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnRhZ3MtdGl0bGUgLmJvdHRvbS10YWdzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnNsaWNlLnJlbGF0ZWQtcHJvZHVjdHMgLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnRhZ3MtdGl0bGUgLmJvdHRvbS10YWdzIC50YWcge1xuICBtYXJnaW4tdG9wOiA1cHg7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAudGFncy10aXRsZSAudGl0bGUge1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMS45cHg7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAucHJpY2UtdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGhlaWdodDogNzBweDtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC5wcmljZS13IC5wcmljZSB7XG4gIGNvbG9yOiAjMzc5OWRiO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAucHJpY2UtdyAucHJpY2UgZGVsIHtcbiAgY29sb3I6ICNiM2IzYjM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cbi5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC5mb290ZXItY2FyZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMS45cHg7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4uc2xpY2UucmVsYXRlZC1wcm9kdWN0cyAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuYnV0dG9uLXcgLmJ0biB7XG4gIHBhZGRpbmctbGVmdDogMDtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyMHB4KSB7XG4gIC5zbGljZS5yZWxhdGVkLXByb2R1Y3RzIC5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC5idXR0b24tdyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuIiwiYmFzZS1mb250LXNpemUgPz0gMTZweFxucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMgPz0gZmFsc2VcblxucnVwdHVyZSA9IHtcbiAgcmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXM6IHJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzXG4gIG1vYmlsZS1jdXRvZmY6IDQwMHB4XG4gIGRlc2t0b3AtY3V0b2ZmOiAxMDUwcHhcbiAgaGQtY3V0b2ZmOiAxODAwcHhcbiAgZW5hYmxlLWVtLWJyZWFrcG9pbnRzOiBmYWxzZVxuICBiYXNlLWZvbnQtc2l6ZTogYmFzZS1mb250LXNpemVcbiAgYW50aS1vdmVybGFwOiBmYWxzZVxuICBkZW5zaXR5LXF1ZXJpZXM6ICdkcHB4JyAnd2Via2l0JyAnbW96JyAnZHBpJ1xuICByZXRpbmEtZGVuc2l0eTogMS41XG4gIHVzZS1kZXZpY2Utd2lkdGg6IGZhbHNlXG59XG5ydXB0dXJlLnNjYWxlID0gMCAocnVwdHVyZS5tb2JpbGUtY3V0b2ZmKSA2MDBweCA4MDBweCAocnVwdHVyZS5kZXNrdG9wLWN1dG9mZikgKHJ1cHR1cmUuaGQtY3V0b2ZmKVxucnVwdHVyZS5zY2FsZS1uYW1lcyA9ICd4cycgJ3MnICdtJyAnbCcgJ3hsJyAnaGQnXG5cbi1pcy1zdHJpbmcodmFsKVxuICBpZiB0eXBlb2YodmFsKSBpcyBub3QgJ3VuaXQnXG4gICAgaWYgdmFsIGlzIGEgJ3N0cmluZycgb3IgdmFsIGlzIGEgJ2lkZW50J1xuICAgICAgdHJ1ZVxuICAgIGVsc2VcbiAgICAgIGZhbHNlXG4gIGVsc2VcbiAgICBmYWxzZVxuXG4tZ2V0LXNjYWxlLW51bWJlcihzY2FsZS1uYW1lKVxuICBmb3IgbGlzdC1pdGVtLCBpIGluIHJ1cHR1cmUuc2NhbGUtbmFtZXNcbiAgICBpZiBsaXN0LWl0ZW0gaXMgc2NhbGUtbmFtZVxuICAgICAgcmV0dXJuIGkgKyAxXG4gIHJldHVybiBmYWxzZVxuXG4tY29udmVydC10byh0by11bml0LCB2YWx1ZSwgY29udGV4dCA9IHJ1cHR1cmUuYmFzZS1mb250LXNpemUpXG4gIGZyb20tdW5pdCA9IHVuaXQodmFsdWUpXG4gIHJldHVybiB2YWx1ZSBpZiB0by11bml0IGlzIGZyb20tdW5pdFxuICBpZiB0by11bml0IGluICgnZW0nICdyZW0nKVxuICAgIHJldHVybiB2YWx1ZSBpZiBmcm9tLXVuaXQgaW4gKCdlbScgJ3JlbScpXG4gICAgcmV0dXJuIHVuaXQoKHZhbHVlIC8gY29udGV4dCksIHRvLXVuaXQpXG4gIGlmIHRvLXVuaXQgaXMgJ3B4J1xuICAgIHJldHVybiB1bml0KCh2YWx1ZSAqIGNvbnRleHQpLCAncHgnKVxuXG4tb24tc2NhbGUobilcbiAgcmV0dXJuIHVuaXQobikgaXMgJydcblxuLWxhcmdlci10aGFuLXNjYWxlKG4pXG4gIHJldHVybiAobiA+IChsZW5ndGgocnVwdHVyZS5zY2FsZSkgLSAxKSkgYW5kIC1vbi1zY2FsZShuKVxuXG4taXMtemVybyhuKVxuICByZXR1cm4gbiBpcyAwXG5cbi1vdmVybGFwLXNoaWZ0KGFudGktb3ZlcmxhcCwgbilcbiAgc2hpZnQtdW5pdCA9IHVuaXQobilcbiAgYW50aS1vdmVybGFwID0gMHB4IHVubGVzcyBhbnRpLW92ZXJsYXBcbiAgYW50aS1vdmVybGFwID0gMXB4IGlmIGFudGktb3ZlcmxhcCBpcyB0cnVlXG4gIGlmIGxlbmd0aChhbnRpLW92ZXJsYXApIGlzIDFcbiAgICByZXR1cm4gLWNvbnZlcnQtdG8oc2hpZnQtdW5pdCwgYW50aS1vdmVybGFwKVxuICBmb3IgdmFsIGluIGFudGktb3ZlcmxhcFxuICAgIHJldHVybiB2YWwgaWYgdW5pdCh2YWwpIGlzIHNoaWZ0LXVuaXRcblxuLWFkanVzdC1vdmVybGFwKGFudGktb3ZlcmxhcCwgbiwgc2lkZSA9ICdtaW4nKVxuICAtc2hpZnQgPSAtb3ZlcmxhcC1zaGlmdChhbnRpLW92ZXJsYXAsIG4pXG4gIGlmIChzaWRlIGlzICdtaW4nIGFuZCAtc2hpZnQgPiAwKSBvciAoc2lkZSBpcyAnbWF4JyBhbmQgLXNoaWZ0IDwgMClcbiAgICBuID0gbiArIC1zaGlmdFxuICByZXR1cm4gblxuXG4taXMtcG9zaXRpdmUobilcbiAgcmV0dXJuIG4gPj0gMFxuXG4tZGVuc2l0eS1xdWVyaWVzKGRlbnNpdHkpXG4gIGlmIHR5cGVvZihkZW5zaXR5KSBpcyBub3QgJ3VuaXQnXG4gICAgaWYgbm90IC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgIGRlbnNpdHkgPSAnJXMnICUgZGVuc2l0eVxuICBkZW5zaXR5ID0gcnVwdHVyZS5yZXRpbmEtZGVuc2l0eSBpZiBkZW5zaXR5IGlzICdyZXRpbmEnXG4gIHF1ZXJpZXMgPSAoKVxuICBmb3IgcXVlcnkgaW4gcnVwdHVyZS5kZW5zaXR5LXF1ZXJpZXNcbiAgICBpZiBxdWVyeSBpcyAnd2Via2l0J1xuICAgICAgcHVzaChxdWVyaWVzLCAnKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJXMpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdtb3onXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAlcyknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ28nXG4gICAgICBwdXNoKHF1ZXJpZXMsICcoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogJXMvMSknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ3JhdGlvJ1xuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnZHBpJ1xuICAgICAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgICBkZW5zaXR5PWNvbnZlcnQoZGVuc2l0eSlcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tcmVzb2x1dGlvbjogJXNkcGkpJyAlIChyb3VuZChkZW5zaXR5ICogOTYsIDEpKSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdkcHB4J1xuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi1yZXNvbHV0aW9uOiAlc2RwcHgpJyAlIChkZW5zaXR5KSlcbiAgcmV0dXJuIHF1ZXJpZXNcblxuY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBjbGFzcylcbiAgL3snJyArIGNsYXNzICsgJyAnICsgc2VsZWN0ZWR9XG4gICAge2Jsb2NrfVxuXG4vLyArYmV0d2VlbihtaW4sIG1heClcbi8vIHVzYWdlIChzY2FsZSBjYW4gYmUgbWl4ZWQgd2l0aCBjdXN0b20gdmFsdWVzKTpcbi8vICAgLSArYmV0d2VlbigxLCAzKSBzY2FsZTpzY2FsZVxuLy8gICAtICtiZXR3ZWVuKDAsIDMpIDAgd2lkdGg6c2NhbGVcbi8vICAgLSArYmV0d2VlbigyMDBweCwgNTAwcHgpIGN1c3RvbTpjdXN0b21cbi8vICAgLSArYmV0d2VlbigwLCAzMDBweCkgMCB3aWR0aDpjdXN0b21cbi8vICAgLSArYmV0d2VlbigxLCAzMDBweCkgc2NhbGU6Y3VzdG9tXG4vLyAgIC0gK2JldHdlZW4oMjAwcHgsIDQpIGN1c3RvbTpzY2FsZVxuXG5iZXR3ZWVuKG1pbiwgbWF4LCBhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcblxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gIGlmIC1pcy1zdHJpbmcobWluKVxuICAgIG1pbiA9IC1nZXQtc2NhbGUtbnVtYmVyKG1pbilcbiAgaWYgLWlzLXN0cmluZyhtYXgpXG4gICAgbWF4ID0gLWdldC1zY2FsZS1udW1iZXIobWF4KVxuXG4gIC1taW4gPSBydXB0dXJlLnNjYWxlW21pbiAtIDFdIHVubGVzcyAtaXMtemVybyhtaW4pIG9yIChub3QgLW9uLXNjYWxlKG1pbikpXG4gIC1tYXggPSBydXB0dXJlLnNjYWxlW21heF0gdW5sZXNzIG5vdCAtb24tc2NhbGUobWF4KVxuICAtbWluID89IG1pblxuICAtbWF4ID89IG1heFxuXG4gIGlmIChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGlmIG5vdCAoZGVuc2l0eSBvciAtbWF4IG9yIG9yaWVudGF0aW9uKVxuICAgICAge2Jsb2NrfVxuICBlbHNlXG4gICAgY29uZGl0aW9uID0gJ29ubHkgc2NyZWVuJ1xuICAgIHVzZS1kZXZpY2Utd2lkdGggPSB1c2UtZGV2aWNlLXdpZHRoID8gJ2RldmljZS0nIDogJydcbiAgICB1bmxlc3MgLW1pbiBpcyAwXG4gICAgICAtbWluID0gLWNvbnZlcnQtdG8oJ2VtJywgLW1pbikgaWYgcnVwdHVyZS5lbmFibGUtZW0tYnJlYWtwb2ludHNcbiAgICAgIC1taW4gPSAtYWRqdXN0LW92ZXJsYXAoYW50aS1vdmVybGFwLCAtbWluLCBzaWRlOiAnbWluJylcbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChtaW4tJyArIHVzZS1kZXZpY2Utd2lkdGggKyAnd2lkdGg6ICVzKScgJSAoLW1pbilcbiAgICB1bmxlc3MgLWxhcmdlci10aGFuLXNjYWxlKG1heClcbiAgICAgIC1tYXggPSAtY29udmVydC10bygnZW0nLCAtbWF4KSBpZiBydXB0dXJlLmVuYWJsZS1lbS1icmVha3BvaW50c1xuICAgICAgLW1heCA9IC1hZGp1c3Qtb3ZlcmxhcChhbnRpLW92ZXJsYXAsIC1tYXgsIHNpZGU6ICdtYXgnKVxuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG1heC0nICsgdXNlLWRldmljZS13aWR0aCArICd3aWR0aDogJXMpJyAlICgtbWF4KVxuICAgIGlmIG9yaWVudGF0aW9uXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAob3JpZW50YXRpb246ICVzKScgJSAob3JpZW50YXRpb24pXG4gICAgaWYgZGVuc2l0eVxuICAgICAgY29uZGl0aW9ucyA9ICgpXG4gICAgICBmb3IgcXVlcnkgaW4gLWRlbnNpdHktcXVlcmllcyhkZW5zaXR5KVxuICAgICAgICBwdXNoKGNvbmRpdGlvbnMsIGNvbmRpdGlvbiArICcgYW5kICVzJyAlIChxdWVyeSkpXG4gICAgICBjb25kaXRpb24gPSBqb2luKCcsICcsIGNvbmRpdGlvbnMpXG4gICAgQG1lZGlhIGNvbmRpdGlvblxuICAgICAge2Jsb2NrfVxuICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICtjcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAge2Jsb2NrfVxuXG5hdChzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmV0d2VlbihzY2FsZS1wb2ludCwgc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuZnJvbS13aWR0aChzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmV0d2VlbihzY2FsZS1wb2ludCwgbGVuZ3RoKHJ1cHR1cmUuc2NhbGUpLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmFib3ZlID0gZnJvbS13aWR0aFxuXG50by13aWR0aChzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmV0d2VlbigxLCBzY2FsZS1wb2ludCwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5iZWxvdyA9IHRvLXdpZHRoXG5cbm1vYmlsZShhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZWxvdyhydXB0dXJlLm1vYmlsZS1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxudGFibGV0KGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4ocnVwdHVyZS5tb2JpbGUtY3V0b2ZmLCBydXB0dXJlLmRlc2t0b3AtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmRlc2t0b3AoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYWJvdmUocnVwdHVyZS5kZXNrdG9wLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5oZChhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICthYm92ZShydXB0dXJlLmhkLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5kZW5zaXR5KGRlbnNpdHksIG9yaWVudGF0aW9uID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBzZWxlY3RlZCA9IHNlbGVjdG9yKClcbiAgaWYgbm90IChydXB0dXJlLnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzKVxuICAgIGNvbmRpdGlvbnMgPSAoKVxuICAgIGZvciBxdWVyeSBpbiAtZGVuc2l0eS1xdWVyaWVzKGRlbnNpdHkpXG4gICAgICBjb25kaXRpb24gPSAnb25seSBzY3JlZW4gYW5kICVzJyAlIChxdWVyeSlcbiAgICAgIGlmIG9yaWVudGF0aW9uXG4gICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChvcmllbnRhdGlvbjogJXMpJyAlIChvcmllbnRhdGlvbilcbiAgICAgIHB1c2goY29uZGl0aW9ucywgY29uZGl0aW9uKVxuICAgIGNvbmRpdGlvbiA9IGpvaW4oJywgJywgY29uZGl0aW9ucylcbiAgICBAbWVkaWEgY29uZGl0aW9uXG4gICAgICB7YmxvY2t9XG4gICAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICAgICtjcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICB7YmxvY2t9XG5cbnBpeGVsLXJhdGlvID0gZGVuc2l0eVxuXG5yZXRpbmEob3JpZW50YXRpb24gPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gICtkZW5zaXR5KCdyZXRpbmEnLCBvcmllbnRhdGlvbiwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5sYW5kc2NhcGUoZGVuc2l0eSA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG4gIGlmIG5vdCAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICAgIGlmIGRlbnNpdHlcbiAgICAgICtwaXhlbC1yYXRpbyhkZW5zaXR5LCBvcmllbnRhdGlvbjogbGFuZHNjYXBlLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAge2Jsb2NrfVxuICAgIGVsc2VcbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXG4gICAgICAgIHtibG9ja31cbiAgICAgIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgICAgICtjcmVhdGUtZmFsbGJhY2stY2xhc3Moc2VsZWN0ZWQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICAgIHtibG9ja31cblxucG9ydHJhaXQoZGVuc2l0eSA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG4gIGlmIG5vdCAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICAgIGlmIGRlbnNpdHlcbiAgICAgICtwaXhlbC1yYXRpbyhkZW5zaXR5LCBvcmllbnRhdGlvbjogcG9ydHJhaXQsIGZhbGxiYWNrLWNsYXNzKVxuICAgICAgICB7YmxvY2t9XG4gICAgZWxzZVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KVxuICAgICAgICB7YmxvY2t9XG4gICAgICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAgICB7YmxvY2t9XG4iXX0= */
