footer.footer{background:#4a4a4a}footer.footer .inner-footer{margin:0 auto;padding:1.25rem 0}footer.footer .inner-footer .footer-menu ul{text-align:center}@media print,screen and (min-width:64em){footer.footer .inner-footer .footer-menu ul{max-width:25rem}}footer.footer .inner-footer .footer-menu ul li{display:inline-block}footer.footer .inner-footer .footer-menu ul li a{color:#fff}footer.footer .inner-footer .footer-menu .menu{display:block}@media print,screen and (min-width:64em){footer.footer .inner-footer .footer-menu .menu{display:-ms-flexbox;display:flex}}footer.footer .inner-footer .footer-menu .menu .active>a{background:none}footer.footer .inner-footer .footer-copyright{color:#fff;text-align:center}@media print,screen and (min-width:64em){footer.footer .inner-footer .footer-copyright{text-align:right;padding-right:1.25rem}}footer.footer .inner-footer .footer-copyright a{color:#fff;padding-top:.625rem;display:inline-block}.bump-pattern-up-light-grey{height:.375rem;width:100%;background-image:url(/wp-content/themes/eclipsecreative/dist/images/bump-up-light-grey.svg);background-repeat:repeat-x;margin-top:2.5rem}.recent-blog{background:#eaeaea;padding:.625rem 1.25rem 2.5rem}.recent-blog .intro{margin-bottom:20px}.recent-blog img{border-radius:.625rem;margin-bottom:.625rem}.recent-blog h3{margin-bottom:.5rem}.recent-blog h3 a{color:#4a4a4a}.bump-pattern-down-light-grey{height:.375rem;width:100%;background-image:url(/wp-content/themes/eclipsecreative/dist/images/bump-down-light-grey.svg);background-repeat:repeat-x;margin-bottom:2.5rem}.testimonial{margin:0 0 2.5rem;border:6px solid #015175;border-radius:.9375rem;padding:1.25rem}.testimonial .button{float:right}.page-template-about-page h3{font-size:1.375rem}.page-template-about-page h4{color:#0cbebc}.bump-pattern-up{height:.375rem;width:100%;background-image:url(/wp-content/themes/eclipsecreative/dist/images/bump-up.svg);background-repeat:repeat-x}.about-us{background:#4a4a4a;padding:3.75rem 0 3.125rem}.about-us h3,.about-us h4,.about-us p{color:#fff}.about-us .team-member{text-align:center}.bump-pattern-down{height:.375rem;width:100%;background-image:url(/wp-content/themes/eclipsecreative/dist/images/bump-down.svg);background-repeat:repeat-x}.team-member img{border-radius:1.25rem;-webkit-border-radius:1.25rem;border:6px solid #0cbebc;margin-bottom:.625rem}@media screen and (min-width:40em) and (max-width:63.99875em){.team-member .button{min-width:unset}}.our-services{background-image:url(/wp-content/themes/eclipsecreative/dist/images/pencils-tiny.jpg);background-repeat:no-repeat;background-position:100% 100%;padding:2.5rem 1.25rem;min-height:6.25rem}@media screen and (max-width:63.99875em){.our-services{min-height:31.25rem;background-size:60%}}.our-services h3{color:#015175;text-align:center}.our-services h4{color:#0cbebc}.our-services ol{list-style:none;counter-reset:a}.our-services ol li{margin-bottom:.625rem;counter-increment:a;position:relative;margin-left:1.25rem}.our-services ol li:before{color:#047e8f;font-weight:700;content:counter(a) ". ";border:2px solid #047e8f;border-radius:50%;-webkit-border-radius:50%;height:1.75rem;width:1.75rem;padding-left:.125rem;font-weight:600;margin-right:.625rem;text-align:center;position:absolute;left:-2.5rem}.pre-footer h3{font-weight:600}.pre-footer .contact-us{background:#015175}.pre-footer .contact-us .contact-us-inner{max-width:600px;margin-right:0;margin-left:auto;padding:1.25rem}.pre-footer .contact-us .contact-us-inner h3{text-align:center;color:#fff}.pre-footer .contact-us .contact-us-inner a,.pre-footer .contact-us .contact-us-inner p{color:#fff}@media screen and (max-width:63.99875em){.pre-footer .contact-us .contact-us-inner{margin-right:auto}}.pre-footer .contact-us .contact-us-inner .icon{height:3.4375rem;margin-bottom:.625rem;margin-right:1.875rem;display:inline-block}@media screen and (max-width:63.99875em){.pre-footer .contact-us .contact-us-inner .icon{float:right}}@media print,screen and (min-width:64em){.pre-footer .contact-us .contact-us-inner .icon{float:none}}.pre-footer .contact-us .contact-us-inner .icon img{position:relative;top:50%;transform:translateY(-50%)}.pre-footer .subscribe{background:#047e8f}.pre-footer .subscribe .subscribe-inner{max-width:600px;margin-left:0;margin-right:auto;padding:1.25rem}@media screen and (max-width:63.99875em){.pre-footer .subscribe .subscribe-inner{margin-left:auto}}.pre-footer .subscribe .subscribe-inner h3{color:#fff;text-align:center}@media print,screen and (min-width:40em){.pre-footer .subscribe .subscribe-inner h3{text-align:left}}.pre-footer .subscribe .subscribe-inner p{color:#fff}#mc_embed_signup form{padding:0}#mc_embed_signup form label{color:#fff}#mc_embed_signup input.button{width:auto;min-width:8.75rem}#mc_embed_signup .button{border:2px solid #fff;background-color:transparent;border-radius:1.25rem;font-weight:600;letter-spacing:0;height:auto}#mc_embed_signup .button:hover{background-color:#fff;color:#047e8f}#mc_embed_signup input.email{width:100%;border-radius:.3125rem;border:0}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vbi1jcml0aWNhbC9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwiY3JpdGljYWwvY29tbW9uL19jb2xvdXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwibm9uLWNyaXRpY2FsL3RlbXBsYXRlcy9fc2luZ2xlLnNjc3MiLCJub24tY3JpdGljYWwvdGVtcGxhdGVzL19vdXJfY2xpZW50cy5zY3NzIiwibm9uLWNyaXRpY2FsL3RlbXBsYXRlcy9fYWJvdXQuc2NzcyIsIm5vbi1jcml0aWNhbC90ZW1wbGF0ZXMvX2hvbWVfcGFnZS5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRpYWxzL19tYWlsY2hpbXAuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUNJLGtCQ1EwQixDRHNDN0IsQUEvQ0QsNEJBSVEsY0FBYyxBQUNkLGlCRXNGSyxDRjdDUixBQTlDTCw0Q0FZZ0IsaUJBQWtCLENBT3JCLEFHaUpQLHlDSHBLTiw0Q0FVb0IsZUU0RXFDLENGbkU1QyxDQUFBLEFBbkJiLCtDQWNvQixvQkFBcUIsQ0FJeEIsQUFsQmpCLGlEQWdCd0IsVUNkVCxDRGVNLEFBR1QsK0NBQ0ksYUFBYyxDQVNqQixBR3NJUCx5Q0hoSk0sK0NBR1Esb0JBQWEsQUFBYixZQUFhLENBT3BCLENBQUEsQUFKRyx5REFDSSxlQUFnQixDQUNuQixBQTVCakIsOENBa0NZLFdDaENHLEFEaUNILGlCQUFrQixDQVVyQixBR3VISCx5Q0hwS04sOENBcUNnQixpQkFBaUIsQUFDakIscUJFZ0R5QyxDRnpDaEQsQ0FBQSxBQUxHLGdEQUNJLFdDdkNELEFEd0NDLG9CRTRDeUMsQUYzQ3pDLG9CQUFxQixDQUN4QixBSTNDYiw0QkFDQyxlRm9Gd0QsQUVuRnhELFdBQVcsQUFDWCw0RkFBOEYsQUFDOUYsMkJB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QS9ESiwwQ0FpRUksVU5qSzBCLENNa0sxQixBQ2pMSCxzQkFFRyxTQUFVLENBSWIsQUFOQSw0QkFJSSxVUFd5QixDT1Z6QixBQUdMLDhCQUNDLFdBQVcsQUFDWCxpQk40RXdELENNM0V4RCxBQUVELHlCQUNDLHNCUHdCMkIsQU92QjNCLDZCQUE2QixBQUU3QixzQk5xRXdELEFNbkV4RCxnQkFBZ0IsQUFDaEIsaUJBQWlCLEFBQ2pCLFdBQVksQ0FTWixBQWpCRCwrQkFhRSxzQlBHOEIsQU9GOUIsYVBWMEIsQ09XMUIsQUFLRiw2QkFDQyxXQUFXLEFBRVgsdUJOa0R3RCxBTWpEeEQsUUFBUyxDQUNUIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEZvb3RlclxuXG5mb290ZXIuZm9vdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItbWFpbi1kYXJrLWdyZXk7XG4gICAgLmlubmVyLWZvb3RlciB7XG4gICAgICAgIC8vbWF4LXdpZHRoOiByZW0tY2FsYygxMjAwKTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIwIDApO1xuICAgICBcbiAgICAgICAgLmZvb3Rlci1tZW51IHtcbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoNDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubWVudSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5hY3RpdmU+YSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiLy8gQ29sb3Vyc1xuXG5cbi8vYmFzZVxuJHdoaXRlOiAjZmZmZmZmO1xuJGJsYWNrOiAjMDAwMDAwO1xuXG4vL21haW5cbiRjb2xvci1tYWluLXByaW1hcnk6ICMwNDdFOEY7IC8vZGFyayBncmVlblxuJGNvbG9yLW1haW4tc2Vjb25kYXJ5OiAjMDE1MTc1OyAvL2RhcmsgYmx1ZVxuJGNvbG9yLW1haW4tdGVydGlhcnk6ICMwQ0JFQkM7ICAvL2xpZ2h0IGdyZWVuXG4kY29sb3ItbWFpbi1kYXJrLWdyZXk6ICM0QTRBNEE7XG5cbi8vJG1lbnUtaWNvbi1jb2xvdXI6IHJnYigxODcsIDE4NywgMTg3KTtcblxuLy9mb250c1xuJGNvbG9yLWZvbnQtcHJpbWFyeTogIzRBNEE0QTsgLy9ncmV5XG4kY29sb3ItZm9udC1zZWNvbmRhcnk6ICNGRkZGRkY7XG4kY29sb3ItZm9udC10ZXJ0aWFyeTogIzBDQkVCQzsgIC8vbGlnaHQgZ3JlZW5cbiRjb2xvci1mb250LXF1aW5hcnk6ICMwNDdFOEY7IC8vZGFyayBncmVlblxuJGNvbG9yLWZvbnQtcXVhdGVybmFyeTogIzAxNTE3NTsgLy9kYXJrIGJsdWVcbiRjb2xvci1mb250LWJsYWNrOiAjMDAwMDAwO1xuXG5cbi8vYmFja2dyb3VuZHNcbiRjb2xvci1iYWNrZ3JvdW5kLXByaW1hcnk6ICMwNDdFOEY7XG4kY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnk6ICMwMTUxNzU7XG4kY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeTogIzBDQkVCQztcbiRjb2xvci1iYWNrZ3JvdW5kLWxpZ2h0LWJsdWU6ICNDREU1RTk7XG4kY29sb3ItYmFja2dyb3VuZC1kYXJrLWdyZXk6ICM0QTRBNEE7XG4kY29sb3ItYmFja2dyb3VuZC1saWdodC1ncmV5OiAjRUFFQUVBO1xuJGNvbG9yLWJhY2tncm91bmQtd2hpdGU6ICNmZmZmZmY7XG4kY29sb3ItYmFja2dyb3VuZC1ibHVlOiAjQkJFN0YyO1xuXG5cbi8vYm9yZGVyc1xuJGNvbG9yLWJvcmRlci1wcmltYXJ5OiAjMDQ3RThGO1xuJGNvbG9yLWJvcmRlci1zZWNvbmRhcnk6ICMwMTUxNzU7XG4kY29sb3ItYm9yZGVyLXRlcnRpYXJ5OiAjMENCRUJDO1xuJGNvbG9yLWJvcmRlci1xdWF0ZXJuYXJ5OiAjQ0RDQ0NEO1xuJGNvbG9yLWJvcmRlci13aGl0ZTogI2ZmZmZmZjtcbiRjb2xvci1ib3JkZXItYmxhY2s6ICMwMDAwMDA7XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlcyBieSBaVVJCXG4vLyBmb3VuZGF0aW9uLnp1cmIuY29tXG4vLyBMaWNlbnNlZCB1bmRlciBNSVQgT3BlbiBTb3VyY2VcblxuLy8vL1xuLy8vIEBncm91cCBmdW5jdGlvbnNcbi8vLy9cblxuJGdsb2JhbC1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vLyBSZW1vdmVzIHRoZSB1bml0IChlLmcuIHB4LCBlbSwgcmVtKSBmcm9tIGEgdmFsdWUsIHJldHVybmluZyB0aGUgbnVtYmVyIG9ubHkuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG51bSAtIE51bWJlciB0byBzdHJpcCB1bml0IGZyb20uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBUaGUgc2FtZSBudW1iZXIsIHNhbnMgdW5pdC5cbkBmdW5jdGlvbiBzdHJpcC11bml0KCRudW0pIHtcbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG59XG5cbi8vLyBDb252ZXJ0cyBvbmUgb3IgbW9yZSBwaXhlbCB2YWx1ZXMgaW50byBtYXRjaGluZyByZW0gdmFsdWVzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ8TGlzdH0gJHZhbHVlcyAtIE9uZSBvciBtb3JlIHZhbHVlcyB0byBjb252ZXJ0LiBCZSBzdXJlIHRvIHNlcGFyYXRlIHRoZW0gd2l0aCBzcGFjZXMgYW5kIG5vdCBjb21tYXMuIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgd3JhcCB0aGUgbGlzdCBpbiBwYXJlbnRoZXNlcy5cbi8vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgW251bGxdIC0gVGhlIGJhc2UgdmFsdWUgdG8gdXNlIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGByZW1gLiBJZiB5b3UncmUgdXNpbmcgRm91bmRhdGlvbiBvdXQgb2YgdGhlIGJveCwgdGhpcyBpcyAxNnB4LiBJZiB0aGlzIHBhcmFtZXRlciBpcyBgbnVsbGAsIHRoZSBmdW5jdGlvbiB3aWxsIHJlZmVyZW5jZSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZSBhcyB0aGUgYmFzZS5cbi8vL1xuLy8vIEByZXR1cm5zIHtMaXN0fSBBIGxpc3Qgb2YgY29udmVydGVkIHZhbHVlcy5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZTogbnVsbCkge1xuICAkcmVtLXZhbHVlczogKCk7XG4gICRjb3VudDogbGVuZ3RoKCR2YWx1ZXMpO1xuXG4gIC8vIElmIG5vIGJhc2UgaXMgZGVmaW5lZCwgZGVmZXIgdG8gdGhlIGdsb2JhbCBmb250IHNpemVcbiAgQGlmICRiYXNlID09IG51bGwge1xuICAgICRiYXNlOiAkZ2xvYmFsLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC8vIElmIHRoZSBiYXNlIGZvbnQgc2l6ZSBpcyBhICUsIHRoZW4gbXVsdGlwbHkgaXQgYnkgMTZweFxuICAvLyBUaGlzIGlzIGJlY2F1c2UgMTAwJSBmb250IHNpemUgPSAxNnB4IGluIG1vc3QgYWxsIGJyb3dzZXJzXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICAvLyBVc2luZyByZW0gYXMgYmFzZSBhbGxvd3MgY29ycmVjdCBzY2FsaW5nXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiAkY291bnQgPT0gMSB7XG4gICAgQHJldHVybiAtemYtdG8tcmVtKCR2YWx1ZXMsICRiYXNlKTtcbiAgfVxuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGNvdW50IHtcbiAgICAkcmVtLXZhbHVlczogYXBwZW5kKCRyZW0tdmFsdWVzLCAtemYtdG8tcmVtKG50aCgkdmFsdWVzLCAkaSksICRiYXNlKSk7XG4gIH1cblxuICBAcmV0dXJuICRyZW0tdmFsdWVzO1xufVxuXG4vLyBDb252ZXJ0cyBhIHVuaXRsZXNzLCBwaXhlbCwgb3IgcmVtIHZhbHVlIHRvIGVtLCBmb3IgdXNlIGluIGJyZWFrcG9pbnRzLlxuQGZ1bmN0aW9uIC16Zi1icC10by1lbSgkdmFsdWUpIHtcbiAgLy8gUGl4ZWwgYW5kIHVuaXRsZXNzIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIHJlbXNcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIG9yIHVuaXRsZXNzKCR2YWx1ZSkge1xuICAgICR2YWx1ZTogcmVtLWNhbGMoJHZhbHVlLCAkYmFzZTogMTZweCk7XG4gIH1cblxuICAvLyBUaGVuIHRoZSB2YWx1ZSBpcyBjb252ZXJ0ZWQgdG8gZW1zXG4gIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpICogMWVtO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCB2YWx1ZSB0byBtYXRjaGluZyByZW0gdmFsdWUuICpBbnkqIHZhbHVlIHBhc3NlZCwgcmVnYXJkbGVzcyBvZiB1bml0LCBpcyBhc3N1bWVkIHRvIGJlIGEgcGl4ZWwgdmFsdWUuIEJ5IGRlZmF1bHQsIHRoZSBiYXNlIHBpeGVsIHZhbHVlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSByZW0gdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYCRnbG9iYWwtZm9udC1zaXplYCB2YXJpYWJsZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkdmFsdWUgLSBQaXhlbCB2YWx1ZSB0byBjb252ZXJ0LlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBCYXNlIGZvciBwaXhlbCBjb252ZXJzaW9uLlxuLy8vXG4vLy8gQHJldHVybnMge051bWJlcn0gQSBudW1iZXIgaW4gcmVtcywgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZ2l2ZW4gdmFsdWUgYW5kIHRoZSBiYXNlIHBpeGVsIHZhbHVlLiByZW0gdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCBhcyBpcy5cbkBmdW5jdGlvbiAtemYtdG8tcmVtKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcbiAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gJ251bWJlcicge1xuICAgIEB3YXJuIGluc3BlY3QoJHZhbHVlKSArICcgd2FzIHBhc3NlZCB0byByZW0tY2FsYygpLCB3aGljaCBpcyBub3QgYSBudW1iZXIuJztcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBlbSBpbnRvIHJlbSBpZiBzb21lb25lIGhhbmRzIG92ZXIgJ2VtJ3NcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqIDFyZW07XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgcmVtIGlmIHVuaXRzIGZvciAkdmFsdWUgaXMgbm90IHJlbSBvciBlbVxuICBAaWYgdW5pdCgkdmFsdWUpICE9ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpICogMXJlbTtcbiAgfVxuXG4gIC8vIFR1cm4gMHJlbSBpbnRvIDBcbiAgQGlmICR2YWx1ZSA9PSAwcmVtIHtcbiAgICAkdmFsdWU6IDA7XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8vIENvbnZlcnRzIGEgcGl4ZWwsIHBlcmNlbnRhZ2UsIHJlbSBvciBlbSB2YWx1ZSB0byBhIHVuaXRsZXNzIHZhbHVlIGJhc2VkIG9uIGEgZ2l2ZW4gZm9udCBzaXplLiBJZGVhbCBmb3Igd29ya2luZyBvdXQgdW5pdGxlc3MgbGluZSBoZWlnaHRzLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFZhbHVlIHRvIGNvbnZlcnQgdG8gYSB1bml0bGVzcyBsaW5lIGhlaWdodFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIFRoZSBmb250IHNpemUgdG8gdXNlIHRvIHdvcmsgb3V0IHRoZSBsaW5lIGhlaWdodCAtIGRlZmF1bHRzIHRvICRnbG9iYWwtZm9udC1zaXplXG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gdW5pdGxlc3MtY2FsYygkdmFsdWUsICRiYXNlOiBudWxsKSB7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gRmlyc3QsIGxldHMgY29udmVydCBvdXIgJGJhc2UgdG8gcGl4ZWxzXG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnJScge1xuICAgICRiYXNlOiAoJGJhc2UgLyAxMDAlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ3JlbScge1xuICAgICRiYXNlOiBzdHJpcC11bml0KCRiYXNlKSAqIDE2cHg7XG4gIH1cblxuICBAaWYgdW5pdCgkYmFzZSkgPT0gJ2VtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIC8vIE5vdyBsZXQncyBjb252ZXJ0IG91ciB2YWx1ZSB0byBwaXhlbHMgdG9vXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJyUnIHtcbiAgICAkdmFsdWU6ICgkdmFsdWUgLyAxMDAlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncmVtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIEBpZiB1bml0KCR2YWx1ZSkgPT0gJ2VtJyB7XG4gICAgJHZhbHVlOiBzdHJpcC11bml0KCR2YWx1ZSkgKiAkYmFzZTtcbiAgfVxuXG4gIC8vICdweCdcbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAncHgnIHtcbiAgICBAcmV0dXJuIHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgLy8gYXNzdW1lIHRoYXQgbGluZS1oZWlnaHRzIGdyZWF0ZXIgdGhhbiAxMCBhcmUgbWVhbnQgdG8gYmUgYWJzb2x1dGUgaW4gJ3B4J1xuICBAaWYgdW5pdGxlc3MoJHZhbHVlKSBhbmQgKCR2YWx1ZSA+IDEwKSB7XG4gICAgQHJldHVybiAkdmFsdWUgLyBzdHJpcC11bml0KCRiYXNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuIiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgfVxuXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgJG5hbWVkOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcbiAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAuMDAxMjU7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuXG4gICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICB9XG4gICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgQGlmICRzdHIgPT0gJycge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgQGVsc2Uge1xuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcbiAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbn1cblxuLy8vIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gU2luZ2xlIG5vbmUgY3JpdGljYWxcblxuXG4uYnVtcC1wYXR0ZXJuLXVwLWxpZ2h0LWdyZXkge1xuXHRoZWlnaHQ6IHJlbS1jYWxjKDYpO1xuXHR3aWR0aDogMTAwJTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL2VjbGlwc2VjcmVhdGl2ZS9kaXN0L2ltYWdlcy9idW1wLXVwLWxpZ2h0LWdyZXkuc3ZnXCIpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG5cdG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcbn1cblxuXG4ucmVjZW50LWJsb2cge1xuXHRiYWNrZ3JvdW5kOiAkY29sb3ItYmFja2dyb3VuZC1saWdodC1ncmV5O1xuXHRwYWRkaW5nOiByZW0tY2FsYygxMCAyMCA0MCAyMCk7XG5cdC5pbnRybyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0fVxuXHRpbWcge1xuXHRcdC13ZWJraXQtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMTApO1xuXHRcdGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDEwKTtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdH1cblx0aDMge1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDgpOyBcblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkY29sb3ItZm9udC1wcmltYXJ5OyBcblx0XHR9XG5cdH1cblxuXG59XG5cbi5idW1wLXBhdHRlcm4tZG93bi1saWdodC1ncmV5IHtcblx0aGVpZ2h0OiByZW0tY2FsYyg2KTtcblx0d2lkdGg6IDEwMCU7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi93cC1jb250ZW50L3RoZW1lcy9lY2xpcHNlY3JlYXRpdmUvZGlzdC9pbWFnZXMvYnVtcC1kb3duLWxpZ2h0LWdyZXkuc3ZnXCIpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG5cdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcbn1cblxuXG5cblxuXG5cblxuIiwiLy8gT3VyIENsaWVudHMgXG5cblxuXG4udGVzdGltb25pYWwge1xuXHRtYXJnaW46IHJlbS1jYWxjKDAgMCA0MCAwKTtcblx0Ym9yZGVyOiA2cHggc29saWQgJGNvbG9yLWJvcmRlci1zZWNvbmRhcnk7XG5cdC13ZWJraXQtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMTUpO1xuXHRib3JkZXItcmFkaXVzOiByZW0tY2FsYygxNSk7XG5cdHBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcblx0LmJ1dHRvbiB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHR9XG59IiwiLy8gQWJvdXQgbm9uZSBjcml0aWNhbFxuXG5cbi5wYWdlLXRlbXBsYXRlLWFib3V0LXBhZ2Uge1xuXG5cblx0aDMge1xuXHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMjIpO1xuXHR9XG5cdGg0IHtcblx0XHRjb2xvcjogJGNvbG9yLWZvbnQtdGVydGlhcnk7XG5cdH1cbn1cbiIsIi8vIEhvbWUgbm9uZSBjcml0aWNhbFxuXG5cbi5idW1wLXBhdHRlcm4tdXAge1xuXHRoZWlnaHQ6IHJlbS1jYWxjKDYpO1xuXHR3aWR0aDogMTAwJTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL2VjbGlwc2VjcmVhdGl2ZS9kaXN0L2ltYWdlcy9idW1wLXVwLnN2Z1wiKTtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xufVxuXG4uYWJvdXQtdXMge1xuXHRiYWNrZ3JvdW5kOiAkY29sb3ItYmFja2dyb3VuZC1kYXJrLWdyZXk7XG5cdHBhZGRpbmc6IHJlbS1jYWxjKDYwIDAgNTAgMCk7XG5cdGgzIHsgXG5cdFx0Y29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcblx0fVxuXHRoNCB7XG5cdFx0Y29sb3I6ICAkY29sb3ItZm9udC1zZWNvbmRhcnk7XG5cdH1cblx0cCB7XG5cdFx0Y29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcblx0fVxuXG5cdC50ZWFtLW1lbWJlciB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cdFxufVxuXG4uYnVtcC1wYXR0ZXJuLWRvd24ge1xuXHRoZWlnaHQ6IHJlbS1jYWxjKDYpO1xuXHR3aWR0aDogMTAwJTtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL2VjbGlwc2VjcmVhdGl2ZS9kaXN0L2ltYWdlcy9idW1wLWRvd24uc3ZnXCIpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG59XG5cblxuXG5cblxuLnRlYW0tbWVtYmVyIHtcblx0aW1nIHtcblx0XHRib3JkZXItcmFkaXVzOiByZW0tY2FsYygyMCk7XG5cdFx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygyMCk7XG5cdFx0Ym9yZGVyOiA2cHggc29saWQgJGNvbG9yLWJvcmRlci10ZXJ0aWFyeTtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdH1cblx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gb25seSkgeyBcblx0XHQuYnV0dG9uIHtcblx0XHRcdG1pbi13aWR0aDogdW5zZXQ7XG5cdFx0fVxuXHR9XG59XG5cblxuXG4ub3VyLXNlcnZpY2VzIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3dwLWNvbnRlbnQvdGhlbWVzL2VjbGlwc2VjcmVhdGl2ZS9kaXN0L2ltYWdlcy9wZW5jaWxzLXRpbnkuanBnXCIpO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBib3R0b20gcmlnaHQ7XG5cdHBhZGRpbmc6IHJlbS1jYWxjKDQwIDIwKTtcblx0bWluLWhlaWdodDogcmVtLWNhbGMoMTAwKTtcblx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikgeyBcblx0XHRtaW4taGVpZ2h0OiByZW0tY2FsYyg1MDApO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogNjAlO1xuXHR9XG5cdGgzIHtcblx0XHRjb2xvcjogJGNvbG9yLWZvbnQtcXVhdGVybmFyeTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHRoNCB7XG5cdFx0Y29sb3I6ICRjb2xvci1mb250LXRlcnRpYXJ5O1xuXHR9XG5cblxuXHRvbCB7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcbiAgXHRcdGNvdW50ZXItcmVzZXQ6IHRoZS1jb3VudGVyO1xuXG5cblx0XHRsaSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdFx0ICBcdGNvdW50ZXItaW5jcmVtZW50OiB0aGUtY291bnRlcjtcblx0XHQgIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdCAgXHRtYXJnaW4tbGVmdDogcmVtLWNhbGMoMjApO1xuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0ICBcdGNvbG9yOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuXHRcdFx0ICBcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0ICBcdGNvbnRlbnQ6IGNvdW50ZXIodGhlLWNvdW50ZXIpIFwiLiBcIjtcblx0XHRcdCAgXHRib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItbWFpbi1wcmltYXJ5O1xuXHRcdFx0ICBcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdCAgXHQtd2Via2l0LWJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRcdCAgXHRoZWlnaHQ6IHJlbS1jYWxjKDI4KTtcblx0ICBcdFx0XHR3aWR0aDogcmVtLWNhbGMoMjgpO1xuXHQgIFx0XHRcdHBhZGRpbmctbGVmdDogcmVtLWNhbGMoMik7XG5cdCAgXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0ICBcdFx0XHRtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcblx0ICBcdFx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ICBcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdCAgXHRcdFx0bGVmdDogcmVtLWNhbGMoLTQwKTtcblx0XHQgIFx0fVxuXG5cdFx0fVxuXHR9XG5cblxufVxuXG5cblxuXG5cbi5wcmUtZm9vdGVyIHtcblx0aDMge1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdH1cblx0LmNvbnRhY3QtdXMge1xuXHRcdGJhY2tncm91bmQ6ICRjb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeTtcblx0XHQuY29udGFjdC11cy1pbm5lciB7XG5cdFx0XHRoMyB7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcblx0XHRcdH1cblx0XHRcdHAge1xuXHRcdFx0XHRjb2xvcjogJGNvbG9yLWZvbnQtc2Vjb25kYXJ5O1xuXHRcdFx0fVxuXHRcdFx0YSB7XG5cdFx0XHRcdGNvbG9yOiAkY29sb3ItZm9udC1zZWNvbmRhcnk7XG5cdFx0XHR9XG5cdFx0XHRtYXgtd2lkdGg6IDYwMHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHQgICAgXHRtYXJnaW4tbGVmdDogYXV0bztcblx0ICAgIFx0cGFkZGluZzogcmVtLWNhbGMoMjApO1xuXHQgICAgXHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSBkb3duKSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHQgXHR9XG5cdCAgICBcdC5pY29uIHtcblx0ICAgIFx0XHRoZWlnaHQ6IHJlbS1jYWxjKDU1KTtcblx0ICAgIFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdCAgICBcdFx0bWFyZ2luLXJpZ2h0OiByZW0tY2FsYygzMCk7XG5cdCAgICBcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHQgICAgXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtIGRvd24pIHtcblx0XHRcdFx0XHRmbG9hdDogcmlnaHQ7XG5cdCAgICBcdFx0XG5cdFx0XHRcdH1cblx0ICAgIFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG5cdFx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdCAgICBcdFx0fVxuXHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0XHRpbWcge1xuXHQgICAgXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHQgICAgXHRcdFx0dG9wOiA1MCU7XG5cdCAgICBcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdCAgICBcdFx0fVxuXHRcdFx0XHRcblx0ICAgIFx0fVxuXHRcdH1cblx0fVxuXHQuc3Vic2NyaWJlIHtcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5O1xuXHRcdC5zdWJzY3JpYmUtaW5uZXIge1xuXHRcdFx0bWF4LXdpZHRoOiA2MDBweDtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHQgICAgXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0ICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIwKTtcblx0XHQgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0gZG93bikge1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHQgXHR9XG5cdFx0ICAgIGgzIHsgXG5cdFx0XHRcdGNvbG9yOiAkY29sb3ItZm9udC1zZWNvbmRhcnk7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRwIHtcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuIiwiLy8gbWFpbGNoaW1wXG5cbiAjbWNfZW1iZWRfc2lnbnVwIGZvcm0ge1xuICAgIC8vYmFja2dyb3VuZDogJHByaW1hcnktY29sb3VyO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGFiZWwge1xuICAgIFx0Y29sb3I6ICRjb2xvci1mb250LXNlY29uZGFyeTtcbiAgICB9XHRcbn1cblxuI21jX2VtYmVkX3NpZ251cCBpbnB1dC5idXR0b24ge1xuXHR3aWR0aDogYXV0bztcblx0bWluLXdpZHRoOiByZW0tY2FsYygxNDApO1xufVxuXG4jbWNfZW1iZWRfc2lnbnVwIC5idXR0b24ge1xuXHRib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItYm9yZGVyLXdoaXRlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygyMCk7XG5cdGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDIwKTtcblx0XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGxldHRlci1zcGFjaW5nOiAwO1xuXHRoZWlnaHQ6IGF1dG87XG5cblxuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1iYWNrZ3JvdW5kLXdoaXRlO1xuXHRcdGNvbG9yOiAkY29sb3ItZm9udC1xdWluYXJ5O1xuXHR9XG5cbn1cblxuXG4jbWNfZW1iZWRfc2lnbnVwIGlucHV0LmVtYWlsIHtcblx0d2lkdGg6IDEwMCU7XG5cdC13ZWJraXQtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoNSk7XG5cdGJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDUpO1xuXHRib3JkZXI6IDA7XG59Il19 */
