@charset "UTF-8";
/**
 Colors
 */
/**
 Font weights
 */
/**
 Borders
 */
/*
 *  get-spacer function
 *  Used to access spacer variable values for usage outside of margins and paddings (i.e. top, left, right, bottom)
 *  Usage: get-spacer($size, $bp);
 *  Example: get-spacer(mini, xs);
 *  Params: $size - spacer size needed
 *          $bp - breakpoint for spacer value
 *  Requires: $spacings and $breakpoints variables
 */
/*
 *  Breakpoints generator mixin
 *  Usage: bp($width) {@content;};
 *  Example: bp(xs) {...};
 *  Params: $width - corresponds to label of desired breakpoint from breakpoints var list
 *          @content - block with code to be included in the breakpoint
 *  Requires: $breakpoints variables
 */
/*
 *  Margin generator mixin
 *  Usage: margin($size, $sides);
 *  Example: margin(huge, top bottom left);
 *  Params: $size - corresponds to label of desired margin from margin var list
 *          $sides - single value or list with desired sides to apply margin to
 *  Requires: $margin and $breakpoints variables
 */
/*
 *  Padding generator mixin
 *  Used to fake margins when margin is not possible
 *  Usage: padding($size, $sides);
 *  Example: padding(huge, top bottom left);
 *  Params: $size - corresponds to label of desired margin from margin var list
 *          $sides - single value or list with desired sides to apply padding to
 *  Requires: $margin and $breakpoints variables
 */
/*
 *  Text styles mixin
 *  Usage: text($type);
 *  Example: text(p2);
 *  Params: $type - corresponds to label of desired text from fonts var list
 *  Requires: $fonts and $breakpoints variables
 */
/*
 *  font-awesome mixin
 *  Usage: font-awesome($unicode, $pseudo) {@content;};
 *  Example: font-awesome(f06a, before) {...};
 *  Params: $unicode - defines the font awesome icon
 *          $pseudo - defines after or before pseudo classes
 *  Requires: font awesome implemented
 */
.paragraph-text {
  font-family: "Arial";
  letter-spacing: em;
  /* RTE OUTPUT */ }
  @media screen and (min-width: 0px) {
    .paragraph-text {
      font-size: 16px;
      line-height: 30px; } }
  @media screen and (min-width: 421px) {
    .paragraph-text {
      font-size: 16px;
      line-height: 30px; } }
  @media screen and (min-width: 701px) {
    .paragraph-text {
      font-size: 16px;
      line-height: 30px; } }
  @media screen and (min-width: 1001px) {
    .paragraph-text {
      font-size: 16px;
      line-height: 30px; } }
  @media screen and (min-width: 1301px) {
    .paragraph-text {
      font-size: 16px;
      line-height: 30px; } }
  .paragraph-text h2 {
    font-family: "Arial";
    letter-spacing: em;
    margin-top: 10px;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text h2 {
        font-size: 35px;
        line-height: 45px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text h2 {
        font-size: 35px;
        line-height: 45px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h2 {
        font-size: 35px;
        line-height: 45px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h2 {
        font-size: 35px;
        line-height: 45px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text h2 {
        font-size: 35px;
        line-height: 45px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h2 {
        margin-top: 15px;
        margin-bottom: 15px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h2 {
        margin-top: 20px;
        margin-bottom: 20px; } }
  .paragraph-text h3 {
    font-family: "Arial";
    letter-spacing: em;
    margin-top: 10px;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text h3 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text h3 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h3 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h3 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text h3 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h3 {
        margin-top: 15px;
        margin-bottom: 15px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h3 {
        margin-top: 20px;
        margin-bottom: 20px; } }
  .paragraph-text h4 {
    font-family: "Arial";
    letter-spacing: em;
    margin-top: 10px;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text h4 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text h4 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h4 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h4 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text h4 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h4 {
        margin-top: 15px;
        margin-bottom: 15px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h4 {
        margin-top: 20px;
        margin-bottom: 20px; } }
  .paragraph-text h5 {
    font-family: "Arial";
    letter-spacing: em;
    margin-top: 10px;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text h5 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text h5 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h5 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h5 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text h5 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h5 {
        margin-top: 15px;
        margin-bottom: 15px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h5 {
        margin-top: 20px;
        margin-bottom: 20px; } }
  .paragraph-text h6 {
    font-family: "Arial";
    letter-spacing: em;
    margin-top: 10px;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text h6 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text h6 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h6 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h6 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text h6 {
        font-size: 20px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text h6 {
        margin-top: 15px;
        margin-bottom: 15px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text h6 {
        margin-top: 20px;
        margin-bottom: 20px; } }
  .paragraph-text p {
    font-family: "Arial";
    letter-spacing: em;
    margin-bottom: 10px; }
    @media screen and (min-width: 0px) {
      .paragraph-text p {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text p {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text p {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text p {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text p {
        font-size: 16px;
        line-height: 30px; } }
  .paragraph-text a {
    font-family: "Arial";
    letter-spacing: em; }
    @media screen and (min-width: 0px) {
      .paragraph-text a {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 421px) {
      .paragraph-text a {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 701px) {
      .paragraph-text a {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 1001px) {
      .paragraph-text a {
        font-size: 16px;
        line-height: 30px; } }
    @media screen and (min-width: 1301px) {
      .paragraph-text a {
        font-size: 16px;
        line-height: 30px; } }
  .paragraph-text ul {
    list-style: square inside; }
  .paragraph-text ol {
    list-style: decimal inside; }
  .paragraph-text blockquote {
    position: relative;
    text-align: center; }
    .paragraph-text blockquote:before, .paragraph-text blockquote:after {
      position: absolute;
      left: 50%;
      font-size: 45px;
      line-height: 20px;
      color: #07364a; }
      @media only screen and (min-width: 701px) {
        .paragraph-text blockquote:before, .paragraph-text blockquote:after {
          font-size: 70px;
          line-height: 30px; } }
    .paragraph-text blockquote:before {
      content: '„';
      -webkit-transform: translateY(-200%) translateX(-50%);
              transform: translateY(-200%) translateX(-50%);
      top: 0; }
    .paragraph-text blockquote:after {
      content: '“';
      -webkit-transform: translateY(175%) translateX(-50%);
              transform: translateY(175%) translateX(-50%);
      bottom: 0; }
    .paragraph-text blockquote p {
      font-family: "Arial";
      letter-spacing: em; }
      @media screen and (min-width: 0px) {
        .paragraph-text blockquote p {
          font-size: 20px;
          line-height: 30px; } }
      @media screen and (min-width: 421px) {
        .paragraph-text blockquote p {
          font-size: 20px;
          line-height: 30px; } }
      @media screen and (min-width: 701px) {
        .paragraph-text blockquote p {
          font-size: 20px;
          line-height: 30px; } }
      @media screen and (min-width: 1001px) {
        .paragraph-text blockquote p {
          font-size: 20px;
          line-height: 30px; } }
      @media screen and (min-width: 1301px) {
        .paragraph-text blockquote p {
          font-size: 20px;
          line-height: 30px; } }
  .paragraph-text strong {
    font-weight: 700; }
  .paragraph-text em {
    font-style: italic; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcmFncmFwaHMvdGV4dC5jc3MiLCJzZXR0aW5ncy9fdmFyaWFibGVzLnNjc3MiLCJmdW5jdGlvbnMvX2dldC1zcGFjZXIuc2NzcyIsIm1peGlucy9fYnAuc2NzcyIsIm1peGlucy9fbWFyZ2luLnNjc3MiLCJtaXhpbnMvX3BhZGRpbmcuc2NzcyIsIm1peGlucy9fdGV4dC5zY3NzIiwibWl4aW5zL19mb250LWF3ZXNvbWUuc2NzcyIsInBhcmFncmFwaHMvdGV4dC5zY3NzIiwic2V0dGluZ3MvX2dlbmVyYXRlZC12YXJpYWJsZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUNLakI7O0dBRUc7QUF5Qkg7O0dBRUc7QUFLSDs7R0FFRztBQ3pDSDs7Ozs7Ozs7R0FRRztBQ1JIOzs7Ozs7O0dBT0c7QUNQSDs7Ozs7OztHQU9HO0FDUEg7Ozs7Ozs7O0dBUUc7QUNSSDs7Ozs7O0dBTUc7QUNOSDs7Ozs7OztHQU9HO0FDTEg7RUZvQlEscUJHT3VCO0VITnZCLG1CRzRDeUI7RUQ5RDdCLGdCQUFnQixFQTBFbkI7RUY5RFc7SUVmWjtNRmdCZ0IsZ0JHOENVO01IN0NWLGtCRzhDWSxFRGMzQixFQUFBO0VGOURXO0lFZlo7TUZnQmdCLGdCRzhDZTtNSDdDZixrQkc4Q2lCLEVEY2hDLEVBQUE7RUY5RFc7SUVmWjtNRmdCZ0IsZ0JHOENvQjtNSDdDcEIsa0JHOENzQixFRGNyQyxFQUFBO0VGOURXO0lFZlo7TUZnQmdCLGdCRzhDeUI7TUg3Q3pCLGtCRzhDMkIsRURjMUMsRUFBQTtFRjlEVztJRWZaO01GZ0JnQixnQkc4QzhCO01IN0M5QixrQkc4Q2dDLEVEYy9DLEVBQUE7RUE3RUQ7SUZvQlEscUJHS3dCO0lISnhCLG1CR29CeUI7SUw5QnJCLGlCS01PO0lMTlAsb0JLTU8sRURWZDtJRlFPO01FZlo7UUZnQmdCLGdCR3NCVTtRSHJCVixrQkdzQlksRURoQ3ZCLEVBQUE7SUZRTztNRWZaO1FGZ0JnQixnQkdzQmU7UUhyQmYsa0JHc0JpQixFRGhDNUIsRUFBQTtJRlFPO01FZlo7UUZnQmdCLGdCR3NCb0I7UUhyQnBCLGtCR3NCc0IsRURoQ2pDLEVBQUE7SUZRTztNRWZaO1FGZ0JnQixnQkdzQnlCO1FIckJ6QixrQkdzQjJCLEVEaEN0QyxFQUFBO0lGUU87TUVmWjtRRmdCZ0IsZ0JHc0I4QjtRSHJCOUIsa0JHc0JnQyxFRGhDM0MsRUFBQTtJSitCZTtNSXRDcEI7UUpXWSxpQktNaUI7UUxOakIsb0JLTWlCLEVEVnhCLEVBQUE7SUorQmU7TUl0Q3BCO1FKV1ksaUJLTXNCO1FMTnRCLG9CS01zQixFRFY3QixFQUFBO0VBUEw7SUZvQlEscUJHS3dCO0lISnhCLG1CRzBCeUI7SUxwQ3JCLGlCS01PO0lMTlAsb0JLTU8sRUROZDtJRklPO01FZlo7UUZnQmdCLGdCRzRCVTtRSDNCVixrQkc0QlksRURsQ3ZCLEVBQUE7SUZJTztNRWZaO1FGZ0JnQixnQkc0QmU7UUgzQmYsa0JHNEJpQixFRGxDNUIsRUFBQTtJRklPO01FZlo7UUZnQmdCLGdCRzRCb0I7UUgzQnBCLGtCRzRCc0IsRURsQ2pDLEVBQUE7SUZJTztNRWZaO1FGZ0JnQixnQkc0QnlCO1FIM0J6QixrQkc0QjJCLEVEbEN0QyxFQUFBO0lGSU87TUVmWjtRRmdCZ0IsZ0JHNEI4QjtRSDNCOUIsa0JHNEJnQyxFRGxDM0MsRUFBQTtJSjJCZTtNSXRDcEI7UUpXWSxpQktNaUI7UUxOakIsb0JLTWlCLEVETnhCLEVBQUE7SUoyQmU7TUl0Q3BCO1FKV1ksaUJLTXNCO1FMTnRCLG9CS01zQixFRE43QixFQUFBO0VBWEw7SUZvQlEscUJHS3dCO0lISnhCLG1CRzBCeUI7SUxwQ3JCLGlCS01PO0lMTlAsb0JLTU8sRURGZDtJRkFPO01FZlo7UUZnQmdCLGdCRzRCVTtRSDNCVixrQkc0QlksRUQ5QnZCLEVBQUE7SUZBTztNRWZaO1FGZ0JnQixnQkc0QmU7UUgzQmYsa0JHNEJpQixFRDlCNUIsRUFBQTtJRkFPO01FZlo7UUZnQmdCLGdCRzRCb0I7UUgzQnBCLGtCRzRCc0IsRUQ5QmpDLEVBQUE7SUZBTztNRWZaO1FGZ0JnQixnQkc0QnlCO1FIM0J6QixrQkc0QjJCLEVEOUJ0QyxFQUFBO0lGQU87TUVmWjtRRmdCZ0IsZ0JHNEI4QjtRSDNCOUIsa0JHNEJnQyxFRDlCM0MsRUFBQTtJSnVCZTtNSXRDcEI7UUpXWSxpQktNaUI7UUxOakIsb0JLTWlCLEVERnhCLEVBQUE7SUp1QmU7TUl0Q3BCO1FKV1ksaUJLTXNCO1FMTnRCLG9CS01zQixFREY3QixFQUFBO0VBZkw7SUZvQlEscUJHS3dCO0lISnhCLG1CRzBCeUI7SUxwQ3JCLGlCS01PO0lMTlAsb0JLTU8sRURFZDtJRkpPO01FZlo7UUZnQmdCLGdCRzRCVTtRSDNCVixrQkc0QlksRUQxQnZCLEVBQUE7SUZKTztNRWZaO1FGZ0JnQixnQkc0QmU7UUgzQmYsa0JHNEJpQixFRDFCNUIsRUFBQTtJRkpPO01FZlo7UUZnQmdCLGdCRzRCb0I7UUgzQnBCLGtCRzRCc0IsRUQxQmpDLEVBQUE7SUZKTztNRWZaO1FGZ0JnQixnQkc0QnlCO1FIM0J6QixrQkc0QjJCLEVEMUJ0QyxFQUFBO0lGSk87TUVmWjtRRmdCZ0IsZ0JHNEI4QjtRSDNCOUIsa0JHNEJnQyxFRDFCM0MsRUFBQTtJSm1CZTtNSXRDcEI7UUpXWSxpQktNaUI7UUxOakIsb0JLTWlCLEVERXhCLEVBQUE7SUptQmU7TUl0Q3BCO1FKV1ksaUJLTXNCO1FMTnRCLG9CS01zQixFREU3QixFQUFBO0VBbkJMO0lGb0JRLHFCR0t3QjtJSEp4QixtQkcwQnlCO0lMcENyQixpQktNTztJTE5QLG9CS01PLEVETWQ7SUZSTztNRWZaO1FGZ0JnQixnQkc0QlU7UUgzQlYsa0JHNEJZLEVEdEJ2QixFQUFBO0lGUk87TUVmWjtRRmdCZ0IsZ0JHNEJlO1FIM0JmLGtCRzRCaUIsRUR0QjVCLEVBQUE7SUZSTztNRWZaO1FGZ0JnQixnQkc0Qm9CO1FIM0JwQixrQkc0QnNCLEVEdEJqQyxFQUFBO0lGUk87TUVmWjtRRmdCZ0IsZ0JHNEJ5QjtRSDNCekIsa0JHNEIyQixFRHRCdEMsRUFBQTtJRlJPO01FZlo7UUZnQmdCLGdCRzRCOEI7UUgzQjlCLGtCRzRCZ0MsRUR0QjNDLEVBQUE7SUplZTtNSXRDcEI7UUpXWSxpQktNaUI7UUxOakIsb0JLTWlCLEVETXhCLEVBQUE7SUplZTtNSXRDcEI7UUpXWSxpQktNc0I7UUxOdEIsb0JLTXNCLEVETTdCLEVBQUE7RUF2Qkw7SUZvQlEscUJHT3VCO0lITnZCLG1CRzRDeUI7SUx0RHJCLG9CS0tZLEVEV25CO0lGWk87TUVmWjtRRmdCZ0IsZ0JHOENVO1FIN0NWLGtCRzhDWSxFRHBDdkIsRUFBQTtJRlpPO01FZlo7UUZnQmdCLGdCRzhDZTtRSDdDZixrQkc4Q2lCLEVEcEM1QixFQUFBO0lGWk87TUVmWjtRRmdCZ0IsZ0JHOENvQjtRSDdDcEIsa0JHOENzQixFRHBDakMsRUFBQTtJRlpPO01FZlo7UUZnQmdCLGdCRzhDeUI7UUg3Q3pCLGtCRzhDMkIsRURwQ3RDLEVBQUE7SUZaTztNRWZaO1FGZ0JnQixnQkc4QzhCO1FIN0M5QixrQkc4Q2dDLEVEcEMzQyxFQUFBO0VBM0JMO0lGb0JRLHFCR0t3QjtJSEp4QixtQkdnQ3lCLEVEdkI1QjtJRmZPO01FZlo7UUZnQmdCLGdCR2tDVTtRSGpDVixrQkdrQ1ksRURyQnZCLEVBQUE7SUZmTztNRWZaO1FGZ0JnQixnQkdrQ2U7UUhqQ2Ysa0JHa0NpQixFRHJCNUIsRUFBQTtJRmZPO01FZlo7UUZnQmdCLGdCR2tDb0I7UUhqQ3BCLGtCR2tDc0IsRURyQmpDLEVBQUE7SUZmTztNRWZaO1FGZ0JnQixnQkdrQ3lCO1FIakN6QixrQkdrQzJCLEVEckJ0QyxFQUFBO0lGZk87TUVmWjtRRmdCZ0IsZ0JHa0M4QjtRSGpDOUIsa0JHa0NnQyxFRHJCM0MsRUFBQTtFQTlCTDtJQWdDUSwwQkFBeUIsRUFDNUI7RUFqQ0w7SUFtQ1EsMkJBQTBCLEVBQzdCO0VBcENMO0lBc0NRLG1CQUFrQjtJQUNsQixtQkFBa0IsRUErQnJCO0lBdEVMO01BMkNZLG1CQUFrQjtNQUNsQixVQUFTO01BQ1QsZ0JBQWU7TUFDZixrQkFBaUI7TUFDakIsZUM1Q2EsRURrRGhCO01MM0NEO1FLVlI7VUFrRGdCLGdCQUFlO1VBQ2Ysa0JBQWlCLEVBRXhCLEVBQUE7SUFyRFQ7TUF3RFksYUFBUztNQUNULHNEQUE2QztjQUE3Qyw4Q0FBNkM7TUFDN0MsT0FBTSxFQUNUO0lBM0RUO01BOERZLGFBQVM7TUFDVCxxREFBNEM7Y0FBNUMsNkNBQTRDO01BQzVDLFVBQVMsRUFDWjtJQWpFVDtNRm9CUSxxQkdLd0I7TUhKeEIsbUJHMEJ5QixFRHNCeEI7TUZ0REc7UUVmWjtVRmdCZ0IsZ0JHNEJVO1VIM0JWLGtCRzRCWSxFRHdCbkIsRUFBQTtNRnRERztRRWZaO1VGZ0JnQixnQkc0QmU7VUgzQmYsa0JHNEJpQixFRHdCeEIsRUFBQTtNRnRERztRRWZaO1VGZ0JnQixnQkc0Qm9CO1VIM0JwQixrQkc0QnNCLEVEd0I3QixFQUFBO01GdERHO1FFZlo7VUZnQmdCLGdCRzRCeUI7VUgzQnpCLGtCRzRCMkIsRUR3QmxDLEVBQUE7TUZ0REc7UUVmWjtVRmdCZ0IsZ0JHNEI4QjtVSDNCOUIsa0JHNEJnQyxFRHdCdkMsRUFBQTtFQXJFVDtJQXdFUSxpQlByQ2MsRU9zQ2pCO0VBekVMO0lBMkVRLG1CQUFrQixFQUNyQiIsImZpbGUiOiJwYXJhZ3JhcGhzL3RleHQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyoqXG4gQ29sb3JzXG4gKi9cbi8qKlxuIEZvbnQgd2VpZ2h0c1xuICovXG4vKipcbiBCb3JkZXJzXG4gKi9cbi8qXG4gKiAgZ2V0LXNwYWNlciBmdW5jdGlvblxuICogIFVzZWQgdG8gYWNjZXNzIHNwYWNlciB2YXJpYWJsZSB2YWx1ZXMgZm9yIHVzYWdlIG91dHNpZGUgb2YgbWFyZ2lucyBhbmQgcGFkZGluZ3MgKGkuZS4gdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tKVxuICogIFVzYWdlOiBnZXQtc3BhY2VyKCRzaXplLCAkYnApO1xuICogIEV4YW1wbGU6IGdldC1zcGFjZXIobWluaSwgeHMpO1xuICogIFBhcmFtczogJHNpemUgLSBzcGFjZXIgc2l6ZSBuZWVkZWRcbiAqICAgICAgICAgICRicCAtIGJyZWFrcG9pbnQgZm9yIHNwYWNlciB2YWx1ZVxuICogIFJlcXVpcmVzOiAkc3BhY2luZ3MgYW5kICRicmVha3BvaW50cyB2YXJpYWJsZXNcbiAqL1xuLypcbiAqICBCcmVha3BvaW50cyBnZW5lcmF0b3IgbWl4aW5cbiAqICBVc2FnZTogYnAoJHdpZHRoKSB7QGNvbnRlbnQ7fTtcbiAqICBFeGFtcGxlOiBicCh4cykgey4uLn07XG4gKiAgUGFyYW1zOiAkd2lkdGggLSBjb3JyZXNwb25kcyB0byBsYWJlbCBvZiBkZXNpcmVkIGJyZWFrcG9pbnQgZnJvbSBicmVha3BvaW50cyB2YXIgbGlzdFxuICogICAgICAgICAgQGNvbnRlbnQgLSBibG9jayB3aXRoIGNvZGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGJyZWFrcG9pbnRcbiAqICBSZXF1aXJlczogJGJyZWFrcG9pbnRzIHZhcmlhYmxlc1xuICovXG4vKlxuICogIE1hcmdpbiBnZW5lcmF0b3IgbWl4aW5cbiAqICBVc2FnZTogbWFyZ2luKCRzaXplLCAkc2lkZXMpO1xuICogIEV4YW1wbGU6IG1hcmdpbihodWdlLCB0b3AgYm90dG9tIGxlZnQpO1xuICogIFBhcmFtczogJHNpemUgLSBjb3JyZXNwb25kcyB0byBsYWJlbCBvZiBkZXNpcmVkIG1hcmdpbiBmcm9tIG1hcmdpbiB2YXIgbGlzdFxuICogICAgICAgICAgJHNpZGVzIC0gc2luZ2xlIHZhbHVlIG9yIGxpc3Qgd2l0aCBkZXNpcmVkIHNpZGVzIHRvIGFwcGx5IG1hcmdpbiB0b1xuICogIFJlcXVpcmVzOiAkbWFyZ2luIGFuZCAkYnJlYWtwb2ludHMgdmFyaWFibGVzXG4gKi9cbi8qXG4gKiAgUGFkZGluZyBnZW5lcmF0b3IgbWl4aW5cbiAqICBVc2VkIHRvIGZha2UgbWFyZ2lucyB3aGVuIG1hcmdpbiBpcyBub3QgcG9zc2libGVcbiAqICBVc2FnZTogcGFkZGluZygkc2l6ZSwgJHNpZGVzKTtcbiAqICBFeGFtcGxlOiBwYWRkaW5nKGh1Z2UsIHRvcCBib3R0b20gbGVmdCk7XG4gKiAgUGFyYW1zOiAkc2l6ZSAtIGNvcnJlc3BvbmRzIHRvIGxhYmVsIG9mIGRlc2lyZWQgbWFyZ2luIGZyb20gbWFyZ2luIHZhciBsaXN0XG4gKiAgICAgICAgICAkc2lkZXMgLSBzaW5nbGUgdmFsdWUgb3IgbGlzdCB3aXRoIGRlc2lyZWQgc2lkZXMgdG8gYXBwbHkgcGFkZGluZyB0b1xuICogIFJlcXVpcmVzOiAkbWFyZ2luIGFuZCAkYnJlYWtwb2ludHMgdmFyaWFibGVzXG4gKi9cbi8qXG4gKiAgVGV4dCBzdHlsZXMgbWl4aW5cbiAqICBVc2FnZTogdGV4dCgkdHlwZSk7XG4gKiAgRXhhbXBsZTogdGV4dChwMik7XG4gKiAgUGFyYW1zOiAkdHlwZSAtIGNvcnJlc3BvbmRzIHRvIGxhYmVsIG9mIGRlc2lyZWQgdGV4dCBmcm9tIGZvbnRzIHZhciBsaXN0XG4gKiAgUmVxdWlyZXM6ICRmb250cyBhbmQgJGJyZWFrcG9pbnRzIHZhcmlhYmxlc1xuICovXG4vKlxuICogIGZvbnQtYXdlc29tZSBtaXhpblxuICogIFVzYWdlOiBmb250LWF3ZXNvbWUoJHVuaWNvZGUsICRwc2V1ZG8pIHtAY29udGVudDt9O1xuICogIEV4YW1wbGU6IGZvbnQtYXdlc29tZShmMDZhLCBiZWZvcmUpIHsuLi59O1xuICogIFBhcmFtczogJHVuaWNvZGUgLSBkZWZpbmVzIHRoZSBmb250IGF3ZXNvbWUgaWNvblxuICogICAgICAgICAgJHBzZXVkbyAtIGRlZmluZXMgYWZ0ZXIgb3IgYmVmb3JlIHBzZXVkbyBjbGFzc2VzXG4gKiAgUmVxdWlyZXM6IGZvbnQgYXdlc29tZSBpbXBsZW1lbnRlZFxuICovXG4ucGFyYWdyYXBoLXRleHQge1xuICBmb250LWZhbWlseTogXCJBcmlhbFwiO1xuICBsZXR0ZXItc3BhY2luZzogZW07XG4gIC8qIFJURSBPVVRQVVQgKi8gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwcHgpIHtcbiAgICAucGFyYWdyYXBoLXRleHQge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MjFweCkge1xuICAgIC5wYXJhZ3JhcGgtdGV4dCB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgLnBhcmFncmFwaC10ZXh0IHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMXB4KSB7XG4gICAgLnBhcmFncmFwaC10ZXh0IHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTMwMXB4KSB7XG4gICAgLnBhcmFncmFwaC10ZXh0IHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgLnBhcmFncmFwaC10ZXh0IGgyIHtcbiAgICBmb250LWZhbWlseTogXCJBcmlhbFwiO1xuICAgIGxldHRlci1zcGFjaW5nOiBlbTtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQ1cHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDIge1xuICAgICAgICBmb250LXNpemU6IDM1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0NXB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAzNXB4O1xuICAgICAgICBsaW5lLWhlaWdodDogNDVweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDIge1xuICAgICAgICBmb250LXNpemU6IDM1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiA0NXB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQ1cHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDIge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7IH0gfVxuICAucGFyYWdyYXBoLXRleHQgaDMge1xuICAgIGZvbnQtZmFtaWx5OiBcIkFyaWFsXCI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IGVtO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDBweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDIxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDMge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEzMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoMyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGgzIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsgfSB9XG4gIC5wYXJhZ3JhcGgtdGV4dCBoNCB7XG4gICAgZm9udC1mYW1pbHk6IFwiQXJpYWxcIjtcbiAgICBsZXR0ZXItc3BhY2luZzogZW07XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDQge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MjFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTMwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDQge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDQge1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OyB9IH1cbiAgLnBhcmFncmFwaC10ZXh0IGg1IHtcbiAgICBmb250LWZhbWlseTogXCJBcmlhbFwiO1xuICAgIGxldHRlci1zcGFjaW5nOiBlbTtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDUge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg1IHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDUge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDUge1xuICAgICAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7IH0gfVxuICAucGFyYWdyYXBoLXRleHQgaDYge1xuICAgIGZvbnQtZmFtaWx5OiBcIkFyaWFsXCI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IGVtO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDBweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDIxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgaDYge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEzMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBoNiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGg2IHtcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsgfSB9XG4gIC5wYXJhZ3JhcGgtdGV4dCBwIHtcbiAgICBmb250LWZhbWlseTogXCJBcmlhbFwiO1xuICAgIGxldHRlci1zcGFjaW5nOiBlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IHAge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMzAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gIC5wYXJhZ3JhcGgtdGV4dCBhIHtcbiAgICBmb250LWZhbWlseTogXCJBcmlhbFwiO1xuICAgIGxldHRlci1zcGFjaW5nOiBlbTsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDBweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGEge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MjFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGEge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MDFweCkge1xuICAgICAgLnBhcmFncmFwaC10ZXh0IGEge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgIC5wYXJhZ3JhcGgtdGV4dCBhIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTMwMXB4KSB7XG4gICAgICAucGFyYWdyYXBoLXRleHQgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAucGFyYWdyYXBoLXRleHQgdWwge1xuICAgIGxpc3Qtc3R5bGU6IHNxdWFyZSBpbnNpZGU7IH1cbiAgLnBhcmFncmFwaC10ZXh0IG9sIHtcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsIGluc2lkZTsgfVxuICAucGFyYWdyYXBoLXRleHQgYmxvY2txdW90ZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuICAgIC5wYXJhZ3JhcGgtdGV4dCBibG9ja3F1b3RlOmJlZm9yZSwgLnBhcmFncmFwaC10ZXh0IGJsb2NrcXVvdGU6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgZm9udC1zaXplOiA0NXB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgICBjb2xvcjogIzA3MzY0YTsgfVxuICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3MDFweCkge1xuICAgICAgICAucGFyYWdyYXBoLXRleHQgYmxvY2txdW90ZTpiZWZvcmUsIC5wYXJhZ3JhcGgtdGV4dCBibG9ja3F1b3RlOmFmdGVyIHtcbiAgICAgICAgICBmb250LXNpemU6IDcwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgIC5wYXJhZ3JhcGgtdGV4dCBibG9ja3F1b3RlOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAn4oCeJztcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIHRvcDogMDsgfVxuICAgIC5wYXJhZ3JhcGgtdGV4dCBibG9ja3F1b3RlOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICfigJwnO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE3NSUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICBib3R0b206IDA7IH1cbiAgICAucGFyYWdyYXBoLXRleHQgYmxvY2txdW90ZSBwIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcIkFyaWFsXCI7XG4gICAgICBsZXR0ZXItc3BhY2luZzogZW07IH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDBweCkge1xuICAgICAgICAucGFyYWdyYXBoLXRleHQgYmxvY2txdW90ZSBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDIxcHgpIHtcbiAgICAgICAgLnBhcmFncmFwaC10ZXh0IGJsb2NrcXVvdGUgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDcwMXB4KSB7XG4gICAgICAgIC5wYXJhZ3JhcGgtdGV4dCBibG9ja3F1b3RlIHAge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDsgfSB9XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDAxcHgpIHtcbiAgICAgICAgLnBhcmFncmFwaC10ZXh0IGJsb2NrcXVvdGUgcCB7XG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4OyB9IH1cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEzMDFweCkge1xuICAgICAgICAucGFyYWdyYXBoLXRleHQgYmxvY2txdW90ZSBwIHtcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7IH0gfVxuICAucGFyYWdyYXBoLXRleHQgc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogNzAwOyB9XG4gIC5wYXJhZ3JhcGgtdGV4dCBlbSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljOyB9XG4iLCIvLyB0cmlvIEdyaWQgc3BlY2lmaWMgdmFyaWFibGVzXG5cbiRncmlkLWNvbHVtbnM6IDEyO1xuJGdyaWQtZ3V0dGVyOiAzLjUlO1xuXG4vKipcbiBDb2xvcnNcbiAqL1xuJGNvbG9yLXByaW1hcnk6ICRjb2xvci1ibHVlLWRhcms7XG4kY29sb3Itc2Vjb25kYXJ5OiAkY29sb3ItYmx1ZS1saWdodDtcbiRjb2xvci10ZXh0OiAkY29sb3ItYmxhY2s7XG4kY29sb3ItdGV4dC1saWdodDogJGNvbG9yLWJsYWNrO1xuJGNvbG9yLWJnOiAkY29sb3Itd2hpdGU7XG5cbiRjb2xvci10ZXh0LWRhcms6ICM0NDQ7XG4kY29sb3ItdGV4dC1saWdodGVyOiAjRjZGNkY2O1xuXG4kY29sb3ItZXJyb3I6ICNFRjNBM0M7XG4kY29sb3Itc3VjY2VzczogIzNBQjE0RTtcbiRjb2xvci1pbmZvOiAjMUY3RkQ2O1xuXG4kY29sb3ItZ3JleS1saWdodGVyOiAjZjNmM2YzO1xuJGNvbG9yLWdyZXktbGlnaHQ6ICNlZWU7XG4kY29sb3ItZ3JleTogI2NjYztcbiRjb2xvci1ncmV5LWRhcms6ICNhYWE7XG5cbiRjb2xvci1ib3JkZXItbGlnaHQ6ICRjb2xvci1ncmV5LWxpZ2h0O1xuJGNvbG9yLWJvcmRlcjogJGNvbG9yLWdyZXk7XG4kY29sb3ItYm9yZGVyLWRhcms6ICRjb2xvci1ncmV5LWRhcms7XG5cbiRjb2xvci1ib3JkZXItbGlnaHRlcjogcmdiYSgyNTUsMjU1LDI1NSwgLjEpO1xuXG4vKipcbiBGb250IHdlaWdodHNcbiAqL1xuJGZvbnQtd2VpZ2h0LWxpZ2h0OiAzMDA7XG4kZm9udC13ZWlnaHQtbm9ybWFsOiA0MDA7XG4kZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuXG4vKipcbiBCb3JkZXJzXG4gKi9cbiRib3JkZXItcmFkaXVzOiAzcHg7IiwiLypcbiAqICBnZXQtc3BhY2VyIGZ1bmN0aW9uXG4gKiAgVXNlZCB0byBhY2Nlc3Mgc3BhY2VyIHZhcmlhYmxlIHZhbHVlcyBmb3IgdXNhZ2Ugb3V0c2lkZSBvZiBtYXJnaW5zIGFuZCBwYWRkaW5ncyAoaS5lLiB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20pXG4gKiAgVXNhZ2U6IGdldC1zcGFjZXIoJHNpemUsICRicCk7XG4gKiAgRXhhbXBsZTogZ2V0LXNwYWNlcihtaW5pLCB4cyk7XG4gKiAgUGFyYW1zOiAkc2l6ZSAtIHNwYWNlciBzaXplIG5lZWRlZFxuICogICAgICAgICAgJGJwIC0gYnJlYWtwb2ludCBmb3Igc3BhY2VyIHZhbHVlXG4gKiAgUmVxdWlyZXM6ICRzcGFjaW5ncyBhbmQgJGJyZWFrcG9pbnRzIHZhcmlhYmxlc1xuICovXG5AZnVuY3Rpb24gZ2V0LXNwYWNlcigkc2l6ZTogbWluaSwgJGJwOiB4cykge1xuICAgIEBpZiBtYXBfaGFzX2tleSgkYnJlYWtwb2ludHMsICRicCkgYW5kIG1hcF9oYXNfa2V5KCRzcGFjaW5ncywgJHNpemUpIHtcbiAgICAgICAgJGJyZWFrcG9pbnQ6IG51bGw7XG4gICAgICAgICRicEluZGV4OiAxO1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsIGluICRicmVha3BvaW50cyB7XG4gICAgICAgICAgICBAaWYgKCRrZXkgPT0gJGJwKSB7XG4gICAgICAgICAgICAgICAgJGJyZWFrcG9pbnQ6ICRicEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGJwSW5kZXg6ICRicEluZGV4KzE7XG4gICAgICAgIH1cbiAgICAgICAgJG1hcmdpbjogbWFwX2dldCgkc3BhY2luZ3MsICRzaXplKTtcbiAgICAgICAgQGZvciAkeiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJG1hcmdpbikge1xuICAgICAgICAgICAgJG1hcmc6IG50aCgkbWFyZ2luLCAkeik7XG4gICAgICAgICAgICBAaWYgKCR6ID09ICRicmVha3BvaW50KSB7XG4gICAgICAgICAgICAgICAgQHJldHVybiAkbWFyZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAZGVidWcgJ0Z1bmN0aW9uIGdldC1zcGFjZXIoKSBmYWlsZWQnXG4gICAgfVxufSIsIi8qXG4gKiAgQnJlYWtwb2ludHMgZ2VuZXJhdG9yIG1peGluXG4gKiAgVXNhZ2U6IGJwKCR3aWR0aCkge0Bjb250ZW50O307XG4gKiAgRXhhbXBsZTogYnAoeHMpIHsuLi59O1xuICogIFBhcmFtczogJHdpZHRoIC0gY29ycmVzcG9uZHMgdG8gbGFiZWwgb2YgZGVzaXJlZCBicmVha3BvaW50IGZyb20gYnJlYWtwb2ludHMgdmFyIGxpc3RcbiAqICAgICAgICAgIEBjb250ZW50IC0gYmxvY2sgd2l0aCBjb2RlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBicmVha3BvaW50XG4gKiAgUmVxdWlyZXM6ICRicmVha3BvaW50cyB2YXJpYWJsZXNcbiAqL1xuQG1peGluIGJwKCR3aWR0aCkge1xuICAgIEBpZiBtYXBfaGFzX2tleSgkYnJlYWtwb2ludHMsICR3aWR0aCkge1xuICAgICAgICAkc2l6ZTogbWFwX2dldChtYXBfZ2V0KCRicmVha3BvaW50cywgJHdpZHRoKSwgc2l6ZSk7XG4gICAgICAgICR0eXBlOiBtYXBfZ2V0KG1hcF9nZXQoJGJyZWFrcG9pbnRzLCAkd2lkdGgpLCBkaXIpO1xuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgjeyR0eXBlfS13aWR0aDogJHNpemUpIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBkZWJ1ZyAnTWl4aW4gYnAoKSBmYWlsZWQnXG4gICAgfVxufVxuXG5AbWl4aW4gYnAtYmV0d2VlbigkZmlyc3RXaWR0aCwgJHNlY29uZFdpZHRoKSB7XG4gICAgQGlmIChtYXBfaGFzX2tleSgkYnJlYWtwb2ludHMsICRmaXJzdFdpZHRoKSAmJiBtYXBfaGFzX2tleSgkYnJlYWtwb2ludHMsICRzZWNvbmRXaWR0aCkpIHtcbiAgICAgICAgJGZpcnN0U2l6ZTogbWFwX2dldChtYXBfZ2V0KCRicmVha3BvaW50cywgJGZpcnN0V2lkdGgpLCBzaXplKTtcbiAgICAgICAgJHNlY29uZFNpemU6IG1hcF9nZXQobWFwX2dldCgkYnJlYWtwb2ludHMsICRzZWNvbmRXaWR0aCksIHNpemUpO1xuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRmaXJzdFNpemUpIGFuZCAobWF4LXdpZHRoOiAjeyRzZWNvbmRTaXplIC0gMXB4fSkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGRlYnVnICdNaXhpbiBicCgpIGZhaWxlZCdcbiAgICB9XG59IiwiLypcbiAqICBNYXJnaW4gZ2VuZXJhdG9yIG1peGluXG4gKiAgVXNhZ2U6IG1hcmdpbigkc2l6ZSwgJHNpZGVzKTtcbiAqICBFeGFtcGxlOiBtYXJnaW4oaHVnZSwgdG9wIGJvdHRvbSBsZWZ0KTtcbiAqICBQYXJhbXM6ICRzaXplIC0gY29ycmVzcG9uZHMgdG8gbGFiZWwgb2YgZGVzaXJlZCBtYXJnaW4gZnJvbSBtYXJnaW4gdmFyIGxpc3RcbiAqICAgICAgICAgICRzaWRlcyAtIHNpbmdsZSB2YWx1ZSBvciBsaXN0IHdpdGggZGVzaXJlZCBzaWRlcyB0byBhcHBseSBtYXJnaW4gdG9cbiAqICBSZXF1aXJlczogJG1hcmdpbiBhbmQgJGJyZWFrcG9pbnRzIHZhcmlhYmxlc1xuICovXG5AbWl4aW4gX21hcmdpbigkc2lkZXMsICR2YWx1ZSl7XG4gICAgQGlmICRzaWRlcyA9PSBudWxsIHtcbiAgICAgICAgbWFyZ2luOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBlYWNoICRzaWRlIGluICRzaWRlcyB7XG4gICAgICAgICAgICBtYXJnaW4tI3skc2lkZX06ICR2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1peGluIG1hcmdpbigkc2l6ZSwgJHNpZGVzOiBudWxsKSB7XG4gICAgQGlmIG1hcF9oYXNfa2V5KCRzcGFjaW5ncywgJHNpemUpIHtcbiAgICAgICAgJG1hcmdpbjogbWFwX2dldCgkc3BhY2luZ3MsICRzaXplKTtcbiAgICAgICAgQGZvciAkeiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJG1hcmdpbikge1xuICAgICAgICAgICAgJGRpcjogbWFwX2dldChudGgobnRoKCRicmVha3BvaW50cywgJHopLCAyKSwgZGlyKTtcbiAgICAgICAgICAgICRzaXplOiBtYXBfZ2V0KG50aChudGgoJGJyZWFrcG9pbnRzLCAkeiksIDIpLCBzaXplKTtcbiAgICAgICAgICAgICR2YWx1ZTogbnRoKCRtYXJnaW4sICR6KTtcbiAgICAgICAgICAgICRza2lwOiBmYWxzZTtcblxuICAgICAgICAgICAgQGlmKCR6ID4gMSl7XG4gICAgICAgICAgICAgICAgJHByZXZpb3VzU2l6ZTogbWFwX2dldChudGgobnRoKCRicmVha3BvaW50cywgJHogLSAxKSwgMiksIHNpemUpO1xuICAgICAgICAgICAgICAgICRwcmV2aW91c1NpemVWYWx1ZTogbnRoKCRtYXJnaW4sICR6IC0gMSk7XG5cbiAgICAgICAgICAgICAgICBAaWYoJHByZXZpb3VzU2l6ZVZhbHVlID09ICR2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgICRza2lwOiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKCRza2lwID09IGZhbHNlKXtcbiAgICAgICAgICAgICAgICBAaWYoJHNpemUgPT0gMHB4KXtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgX21hcmdpbigkc2lkZXMsICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kICgjeyRkaXJ9LXdpZHRoOiAkc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgX21hcmdpbigkc2lkZXMsICR2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGRlYnVnICdNaXhpbiBtYXJnaW4oKSBmYWlsZWQnXG4gICAgfVxufSIsIi8qXG4gKiAgUGFkZGluZyBnZW5lcmF0b3IgbWl4aW5cbiAqICBVc2VkIHRvIGZha2UgbWFyZ2lucyB3aGVuIG1hcmdpbiBpcyBub3QgcG9zc2libGVcbiAqICBVc2FnZTogcGFkZGluZygkc2l6ZSwgJHNpZGVzKTtcbiAqICBFeGFtcGxlOiBwYWRkaW5nKGh1Z2UsIHRvcCBib3R0b20gbGVmdCk7XG4gKiAgUGFyYW1zOiAkc2l6ZSAtIGNvcnJlc3BvbmRzIHRvIGxhYmVsIG9mIGRlc2lyZWQgbWFyZ2luIGZyb20gbWFyZ2luIHZhciBsaXN0XG4gKiAgICAgICAgICAkc2lkZXMgLSBzaW5nbGUgdmFsdWUgb3IgbGlzdCB3aXRoIGRlc2lyZWQgc2lkZXMgdG8gYXBwbHkgcGFkZGluZyB0b1xuICogIFJlcXVpcmVzOiAkbWFyZ2luIGFuZCAkYnJlYWtwb2ludHMgdmFyaWFibGVzXG4gKi9cblxuQG1peGluIF9wYWRkaW5nKCRzaWRlcywgJHZhbHVlKXtcbiAgICBAaWYgJHNpZGVzID09IG51bGwge1xuICAgICAgICBwYWRkaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEBlYWNoICRzaWRlIGluICRzaWRlcyB7XG4gICAgICAgICAgICBwYWRkaW5nLSN7JHNpZGV9OiAkdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBwYWRkaW5nKCRzaXplLCAkc2lkZXM6IG51bGwpIHtcbiAgICBAaWYgbWFwX2hhc19rZXkoJHNwYWNpbmdzLCAkc2l6ZSkge1xuICAgICAgICAkcGFkZGluZzogbWFwX2dldCgkc3BhY2luZ3MsICRzaXplKTtcbiAgICAgICAgQGZvciAkeiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHBhZGRpbmcpIHtcbiAgICAgICAgICAgICRkaXI6IG1hcF9nZXQobnRoKG50aCgkYnJlYWtwb2ludHMsICR6KSwgMiksIGRpcik7XG4gICAgICAgICAgICAkc2l6ZTogbWFwX2dldChudGgobnRoKCRicmVha3BvaW50cywgJHopLCAyKSwgc2l6ZSk7XG4gICAgICAgICAgICAkdmFsdWU6IG50aCgkcGFkZGluZywgJHopO1xuICAgICAgICAgICAgJHNraXA6IGZhbHNlO1xuXG4gICAgICAgICAgICBAaWYoJHogPiAxKXtcbiAgICAgICAgICAgICAgICAkcHJldmlvdXNTaXplOiBtYXBfZ2V0KG50aChudGgoJGJyZWFrcG9pbnRzLCAkeiAtIDEpLCAyKSwgc2l6ZSk7XG4gICAgICAgICAgICAgICAgJHByZXZpb3VzU2l6ZVZhbHVlOiBudGgoJHBhZGRpbmcsICR6IC0gMSk7XG5cbiAgICAgICAgICAgICAgICBAaWYoJHByZXZpb3VzU2l6ZVZhbHVlID09ICR2YWx1ZSl7XG4gICAgICAgICAgICAgICAgICAgICRza2lwOiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmKCRza2lwID09IGZhbHNlKXtcbiAgICAgICAgICAgICAgICBAaWYoJHNpemUgPT0gMHB4KXtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgX3BhZGRpbmcoJHNpZGVzLCAkdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoI3skZGlyfS13aWR0aDogJHNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpbmNsdWRlIF9wYWRkaW5nKCRzaWRlcywgJHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAZGVidWcgJ01peGluIHBhZGRpbmcoKSBmYWlsZWQnXG4gICAgfVxufSIsIi8qXG4gKiAgVGV4dCBzdHlsZXMgbWl4aW5cbiAqICBVc2FnZTogdGV4dCgkdHlwZSk7XG4gKiAgRXhhbXBsZTogdGV4dChwMik7XG4gKiAgUGFyYW1zOiAkdHlwZSAtIGNvcnJlc3BvbmRzIHRvIGxhYmVsIG9mIGRlc2lyZWQgdGV4dCBmcm9tIGZvbnRzIHZhciBsaXN0XG4gKiAgUmVxdWlyZXM6ICRmb250cyBhbmQgJGJyZWFrcG9pbnRzIHZhcmlhYmxlc1xuICovXG5AbWl4aW4gdGV4dCgkdHlwZSkge1xuICAgIEBpZiBtYXBfaGFzX2tleSgkZm9udHMsICR0eXBlKSB7XG4gICAgICAgICR0ZXh0OiBtYXBfZ2V0KCRmb250cywgJHR5cGUpO1xuICAgICAgICAkZi1zaXplOiBtYXBfZ2V0KCR0ZXh0LCBzaXplKTtcbiAgICAgICAgJGwtaGVpZ2h0OiBtYXBfZ2V0KCR0ZXh0LCBoZWlnaHQpO1xuICAgICAgICAkZi1mYW1pbHk6IG1hcF9nZXQoJHRleHQsIGZhbWlseSk7XG4gICAgICAgICRmLWxldHRlcnNwYWNpbmc6IG1hcF9nZXQoJHRleHQsIGxldHRlcnNwYWNpbmcpO1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkYnJlYWtwb2ludHMpIHtcbiAgICAgICAgICAgICRkaXI6IG1hcF9nZXQobnRoKG50aCgkYnJlYWtwb2ludHMsICRpKSwgMiksIGRpcik7XG4gICAgICAgICAgICAkc2l6ZTogbWFwX2dldChudGgobnRoKCRicmVha3BvaW50cywgJGkpLCAyKSwgc2l6ZSk7XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAoI3skZGlyfS13aWR0aDogJHNpemUpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IG50aCgkZi1zaXplLCAkaSk7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IG50aCgkbC1oZWlnaHQsICRpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb250LWZhbWlseTogJGYtZmFtaWx5O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogJGYtbGV0dGVyc3BhY2luZztcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGRlYnVnICdNaXhpbiB0ZXh0KCkgZmFpbGVkJ1xuICAgIH1cbn0iLCIvKlxuICogIGZvbnQtYXdlc29tZSBtaXhpblxuICogIFVzYWdlOiBmb250LWF3ZXNvbWUoJHVuaWNvZGUsICRwc2V1ZG8pIHtAY29udGVudDt9O1xuICogIEV4YW1wbGU6IGZvbnQtYXdlc29tZShmMDZhLCBiZWZvcmUpIHsuLi59O1xuICogIFBhcmFtczogJHVuaWNvZGUgLSBkZWZpbmVzIHRoZSBmb250IGF3ZXNvbWUgaWNvblxuICogICAgICAgICAgJHBzZXVkbyAtIGRlZmluZXMgYWZ0ZXIgb3IgYmVmb3JlIHBzZXVkbyBjbGFzc2VzXG4gKiAgUmVxdWlyZXM6IGZvbnQgYXdlc29tZSBpbXBsZW1lbnRlZFxuICovXG5AZnVuY3Rpb24gdW5pY29kZSgkc3RyKSB7XG4gICAgQHJldHVybiB1bnF1b3RlKFwiXFxcIlwiKSt1bnF1b3RlKHN0ci1pbnNlcnQoJHN0ciwgXCJcXFxcXCIsIDEpKSt1bnF1b3RlKFwiXFxcIlwiKTtcbn1cblxuQG1peGluIGZvbnQtYXdlc29tZSgkdW5pY29kZTogJ2YwNmEnLCAkcHNldWRvOiBiZWZvcmUpIHtcbiAgICAmOiN7JHBzZXVkb30ge1xuICAgICAgICBmb250LWZhbWlseTogXCJGb250QXdlc29tZVwiLCBcInNhbnMtc2VyaWZcIjtcbiAgICAgICAgY29udGVudDogdW5pY29kZSgkdW5pY29kZSk7XG4gICAgICAgIEBjb250ZW50O1xuICAgIH1cbn0iLCJAaW1wb3J0IFwiLi4vX2Jhc2UtaW1wb3J0cy5zY3NzXCI7XG5cbi5wYXJhZ3JhcGgtdGV4dCB7XG4gICAgQGluY2x1ZGUgdGV4dChwMSk7XG5cbiAgICAvKiBSVEUgT1VUUFVUICovXG4gICAgaDIge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0KGgyKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKHNtYWxsLCB0b3AgYm90dG9tKTtcbiAgICB9XG4gICAgaDMge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0KGgzKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKHNtYWxsLCB0b3AgYm90dG9tKTtcbiAgICB9XG4gICAgaDQge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0KGgzKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKHNtYWxsLCB0b3AgYm90dG9tKTtcbiAgICB9XG4gICAgaDUge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0KGgzKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKHNtYWxsLCB0b3AgYm90dG9tKTtcbiAgICB9XG4gICAgaDYge1xuICAgICAgICBAaW5jbHVkZSB0ZXh0KGgzKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKHNtYWxsLCB0b3AgYm90dG9tKTtcbiAgICB9XG4gICAgcCB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQocDEpO1xuICAgICAgICBAaW5jbHVkZSBtYXJnaW4odmVyeS1zbWFsbCwgYm90dG9tKTtcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIEBpbmNsdWRlIHRleHQoYTEpO1xuICAgIH1cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IHNxdWFyZSBpbnNpZGU7XG4gICAgfVxuICAgIG9sIHtcbiAgICAgICAgbGlzdC1zdHlsZTogZGVjaW1hbCBpbnNpZGU7XG4gICAgfVxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAmOmJlZm9yZSxcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiA1MCU7XG4gICAgICAgICAgICBmb250LXNpemU6IDQ1cHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3ItYmx1ZS1kYXJrO1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBicChtKXtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDcwcHg7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAn4oCeJztcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJ+KAnCc7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTc1JSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgQGluY2x1ZGUgdGV4dChoMyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuICAgIH1cbiAgICBlbSB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICB9XG59IiwiLy8gQ29sb3JzXG4kY29sb3ItYmc6ICNmN2Y2ZjI7XG4kY29sb3ItYmxhY2s6ICMyNDI0MjY7XG4kY29sb3Itd2hpdGU6ICNmZmZmZmY7XG4kY29sb3ItYmx1ZS1saWdodDogIzBjNWM3ZjtcbiRjb2xvci1ibHVlLWRhcms6ICMwNzM2NGE7XG5cbi8vIEJyZWFrcG9pbnRzXG4kYnJlYWtwb2ludHM6IChcbiAgICAgICAgeHM6IChkaXI6IG1pbiwgc2l6ZTogMHB4KSxcbiAgICAgICAgczogKGRpcjogbWluLCBzaXplOiA0MjFweCksXG4gICAgICAgIG06IChkaXI6IG1pbiwgc2l6ZTogNzAxcHgpLFxuICAgICAgICBsOiAoZGlyOiBtaW4sIHNpemU6IDEwMDFweCksXG4gICAgICAgIHhsOiAoZGlyOiBtaW4sIHNpemU6IDEzMDFweCksXG4pO1xuXG4vLyBTcGFjaW5nc1xuJHNwYWNpbmdzOiAoXG4gICAgICAgIHZlcnktc21hbGw6IDEwcHggMTBweCAxMHB4IDEwcHggMTBweCxcbiAgICAgICAgc21hbGw6IDEwcHggMTBweCAxNXB4IDIwcHggMjBweCxcbiAgICAgICAgbWVkaXVtOiAxMHB4IDE1cHggMjBweCAyNXB4IDMwcHgsXG4gICAgICAgIGxhcmdlOiAyMHB4IDI1cHggMzBweCAzNXB4IDQwcHgsXG4gICAgICAgIHZlcnktbGFyZ2U6IDIwcHggMjVweCA0MHB4IDQ1cHggNTBweCxcbiAgICAgICAgaHVnZTogMzBweCAzNXB4IDYwcHggODBweCAxMDBweCxcbik7XG5cbi8vIEZvbnQgZmFtaWxpZXNcbiRmb250LWZhbWlseS1tYWluLWxpZ2h0OiAnQXJpYWwnO1xuJGZvbnQtZmFtaWx5LW1haW4tbWVkaXVtOiAnQXJpYWwnO1xuJGZvbnQtZmFtaWx5LW1haW4tYm9sZDogJ0FyaWFsJztcblxuLy8gRm9udHNcbiRmb250czogKFxuICAgICAgICBoMTogKFxuICAgICAgICAgICAgICAgIHNpemU6IDYwcHggNjBweCA2MHB4IDYwcHggNjBweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDcwcHggNzBweCA3MHB4IDcwcHggNzBweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWxpZ2h0LFxuICAgICAgICAgICAgICAgIGxldHRlcnNwYWNpbmc6IGVtLFxuICAgICAgICApLFxuICAgICAgICBoMjogKFxuICAgICAgICAgICAgICAgIHNpemU6IDM1cHggMzVweCAzNXB4IDM1cHggMzVweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQ1cHggNDVweCA0NXB4IDQ1cHggNDVweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWxpZ2h0LFxuICAgICAgICAgICAgICAgIGxldHRlcnNwYWNpbmc6IGVtLFxuICAgICAgICApLFxuICAgICAgICBoMzogKFxuICAgICAgICAgICAgICAgIHNpemU6IDIwcHggMjBweCAyMHB4IDIwcHggMjBweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHggMzBweCAzMHB4IDMwcHggMzBweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWxpZ2h0LFxuICAgICAgICAgICAgICAgIGxldHRlcnNwYWNpbmc6IGVtLFxuICAgICAgICApLFxuICAgICAgICBhMTogKFxuICAgICAgICAgICAgICAgIHNpemU6IDE2cHggMTZweCAxNnB4IDE2cHggMTZweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHggMzBweCAzMHB4IDMwcHggMzBweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWxpZ2h0LFxuICAgICAgICAgICAgICAgIGxldHRlcnNwYWNpbmc6IGVtLFxuICAgICAgICApLFxuICAgICAgICBhMjogKFxuICAgICAgICAgICAgICAgIHNpemU6IDE0cHggMTRweCAxNHB4IDE0cHggMTRweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHggMjBweCAyMHB4IDIwcHggMjBweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWxpZ2h0LFxuICAgICAgICAgICAgICAgIGxldHRlcnNwYWNpbmc6IGVtLFxuICAgICAgICApLFxuICAgICAgICBwMTogKFxuICAgICAgICAgICAgICAgIHNpemU6IDE2cHggMTZweCAxNnB4IDE2cHggMTZweCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHggMzBweCAzMHB4IDMwcHggMzBweCxcbiAgICAgICAgICAgICAgICBmYW1pbHk6ICRmb250LWZhbWlseS1tYWluLWJvbGQsXG4gICAgICAgICAgICAgICAgbGV0dGVyc3BhY2luZzogZW0sXG4gICAgICAgICksXG4gICAgICAgIHAyOiAoXG4gICAgICAgICAgICAgICAgc2l6ZTogMTRweCAxNHB4IDE0cHggMTRweCAxNHB4LFxuICAgICAgICAgICAgICAgIGhlaWdodDogMjBweCAyMHB4IDIwcHggMjBweCAyMHB4LFxuICAgICAgICAgICAgICAgIGZhbWlseTogJGZvbnQtZmFtaWx5LW1haW4tYm9sZCxcbiAgICAgICAgICAgICAgICBsZXR0ZXJzcGFjaW5nOiBlbSxcbiAgICAgICAgKSxcbik7XG5cbi8vIFRyYW5zaXRpb24gdGltaW5nc1xuJHRyYW5zaXRpb24tcmVndWxhcjogMC4ycztcbiR0cmFuc2l0aW9uLW1lZGl1bTogMC40cztcbiR0cmFuc2l0aW9uLWxvbmc6IDAuOHM7Il19 */
