:root{--font-size-int:1.125;--scale0:1em;--scale-1:calc(var(--scale0)/var(--font-size-int));--scale-2:calc(var(--scale-1)/var(--font-size-int));--scale-3:calc(var(--scale-2)/var(--font-size-int));--scale1:calc(var(--scale0)*var(--font-size-int));--scale2:calc(var(--scale1)*var(--font-size-int));--scale3:calc(var(--scale2)*var(--font-size-int));--scale4:calc(var(--scale3)*var(--font-size-int))}:root{--line-height-int:0.95;--lh0:1.3;--lh-1:calc(var(--lh0)/var(--line-height-int));--lh-2:calc(var(--lh-1)/var(--line-height-int));--lh-3:calc(var(--lh-2)/var(--line-height-int));--lh1:calc(var(--lh0)*var(--line-height-int));--lh2:calc(var(--lh1)*var(--line-height-int));--lh3:calc(var(--lh2)*var(--line-height-int));--lh4:calc(var(--lh3)*var(--line-height-int))}.clearfix:after{content:"";display:table;clear:both}p{orphans:2;widows:2}div.image,figure,table{-moz-column-break-inside:avoid;break-inside:avoid}.acm-ad,.acm-ad-container,.o-site-sidebar .acm-ad,article .acm-ad{display:none!important}.a-site-branding{width:100%;height:auto;position:relative;margin:0 auto .5em}.a-site-branding .a-logo-svg{display:block}header .a-site-branding{margin:0;max-width:30.37975%}header.o-header-support .a-site-branding{margin-right:auto}.m-ad-region,.m-support-cta-bottom,.m-support-cta .a-support-button{display:none!important}.m-support-cta.m-support-cta-top{text-align:left;flex-direction:row;width:auto;font-size:100%;max-width:none}.m-support-cta.m-support-cta-top h2{font-size:var(--scale0);line-height:1.3;font-size-adjust:.495;font-weight:700;font-style:normal;padding-bottom:0;font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .m-support-cta.m-support-cta-top h2{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .m-support-cta.m-support-cta-top h2{font-family:ff-meta-web-pro}.m-support-cta.m-support-cta-bottom{display:none!important}.o-header-support .m-support-cta.m-support-cta-top{text-align:left;flex-direction:row;width:auto}.o-header-support .m-support-cta.m-support-cta-top h2{margin:0;font-size:var(--scale0);line-height:1.3;font-size-adjust:.495;font-weight:700;font-style:normal;font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .o-header-support .m-support-cta.m-support-cta-top h2{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .o-header-support .m-support-cta.m-support-cta-top h2{font-family:ff-meta-web-pro}nav{display:none!important}.m-widget-site-branding{max-width:36.70886%}.m-widget-site-branding .a-site-branding{max-width:82.75862%}.m-entry-content{margin-bottom:1.5em;overflow-wrap:break-word}.m-entry-content.m-membership-support-wrapper{font-family:helvetica, arial, sans-serif}.serif-fonts-loaded .m-entry-content.m-membership-support-wrapper{font-family:ff-meta-serif-web-pro}.sans-fonts-loaded .m-entry-content.m-membership-support-wrapper{font-family:ff-meta-web-pro}.o-entry .m-entry-meta{width:15.25424%}.m-entry-header .m-entry-meta,.o-entry .m-entry-meta.m-entry-meta-horizontal{width:100%}.m-archive .m-entry-content{margin-bottom:0;flex:1 0}.m-archive.m-archive-excerpt .m-entry-content{flex:1 0;margin-right:.75em}.m-archive.m-archive-homepage .m-entry-content{order:2;margin-left:0}.m-archive.m-zone-homepage-top .m-entry-content{flex:1 0;margin-right:.75em}.m-archive.m-zone-homepage-top .m-post-image-first .m-entry-content{order:2;flex:1 0;margin-right:0}.m-archive-excerpt .m-post-image,.m-archive-homepage .m-post-image,.m-archive-top .m-post-image{width:100%}.m-archive-excerpt .m-post-image,.m-archive-top .m-post-image{margin-left:0;margin-bottom:.75em;width:auto}.m-archive-excerpt .m-post-image.m-post-thumbnail-full,.m-archive-top .m-post-image.m-post-thumbnail-full{width:100%}.m-post-image-first .m-post-image{margin-right:.75em}.m-homepage-zones .m-zone{flex-wrap:wrap;display:flex;width:100%;max-width:calc(100% - 300px)}.m-homepage-zones .m-zone.m-zone-homepage-top{max-width:calc(93.22034% - 300px)}.m-homepage-zones .m-zone.m-zone-homepage-top article{width:100%;border-bottom:0;padding-bottom:0}.m-homepage-zones .m-zone.m-zone-homepage-more-top article,.m-homepage-zones .m-zone.m-zone-homepage-opinion article{width:47.45763%}.m-widget-group.m-widget-group-homepage{display:flex}.o-wrapper-site-navigation,.o-wrapper-site-navigation *,.o-wrapper-sub-navigation{display:none!important}.o-wrapper.o-wrapper-site-header{align-items:center;justify-content:space-between;flex-direction:row;margin-bottom:.5em}#content{display:block}#content #comments #respond,#content #comments .a-comment-links,#content .m-entry-share,#content .m-form-instory,#content .m-related,#content article .m-form-newsletter-shortcode{display:none}.o-entry{flex-direction:row;justify-content:flex-start}.o-entry .m-entry-content{max-width:83.05085%}.o-site-message-container,body.page .o-site-sidebar .m-minnpost-spills-widget,body.page .o-site-sidebar .m-widget-most-commented,body.page .o-site-sidebar .m-widget-zone-posts,body.single .o-site-sidebar .m-minnpost-spills-widget,body.single .o-site-sidebar .m-widget-most-commented,body.single .o-site-sidebar .m-widget-zone-posts,footer nav{display:none}footer .o-footer .o-footer-hat{display:block}.pum,.wp-message-inserter-message-region-popup{display:none!important}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMuc2NzcyIsIl9taXhpbnMuc2NzcyIsInByaW50LnNjc3MiLCJfY29sdW1uLXNldHRlci5zY3NzIiwiPG5vIHNvdXJjZT4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0ZBLE1BTUMscUJBQWdCLENBQ2hCLFlBQVMsQ0FTTCxrREFBb0IsQ0FBcEIsbURBQW9CLENBQXBCLG1EQUFvQixDQWVwQixpREFBb0IsQ0FBcEIsaURBQW9CLENBQXBCLGlEQUFvQixDQUFwQixpREFBb0IsQ0FVekIsTUFNQyxzQkFBa0IsQ0FDbEIsU0FBTSxDQVNGLDhDQUFjLENBQWQsK0NBQWMsQ0FBZCwrQ0FBYyxDQWVkLDZDQUFjLENBQWQsNkNBQWMsQ0FBZCw2Q0FBYyxDQUFkLDZDQUFjLENDdkpsQixnQkFDQyxVQUFXLENBQ1gsYUFBYyxDQUNkLFVBQVcsQ0NFYixFQUNDLFNBQVUsQ0FDVixRQUFTLENBR1YsdUJBR0MsOEJBQW1CLENBQW5CLGtCQUFtQixDQU1wQixrRUFJQyxzQkFBd0IsQ0FHekIsaUJBQ0MsVUFBVyxDQUNYLFdBQVksQ0FDWixpQkFBa0IsQ0FDbEIsa0JBQTJDLENBSjVDLDZCQU9FLGFBQWMsQ0FJaEIsd0JBQ0MsUUFBUyxDQUNULG1CQzhMdUQsQ0QzTHhELHlDQUNDLGlCQUFrQixDQVduQixvRUFDQyxzQkFBd0IsQ0FHekIsaUNBSUUsZUFBZ0IsQ0FDaEIsa0JBQW1CLENBQ25CLFVBQVcsQ0FDWCxjQUFlLENBQ2YsY0FBZSxDQVJqQixvQ0RzQ0UsdUJBQXdDLENBRXhDLGVBQWdCLENBdEJqQixxQkFBdUIsQ0FHdEIsZUFBZ0IsQ0FRaEIsaUJBQWtCLENDaEJqQixnQkFBaUIsQ0UxRXBCLHdDRjBFb0IsQ0FicEIsd0REaUJDLGlDQ0ptQixDQWJwQix1RERpQkMsMkJDSm1CLENBYnBCLG9DQW1CRSxzQkFBd0IsQ0FJMUIsbURBQ0MsZUFBZ0IsQ0FDaEIsa0JBQW1CLENBQ25CLFVBQVcsQ0FIWixzREFPRSxRQUFTLENEUVQsdUJBQXdDLENBRXhDLGVBQWdCLENBdEJqQixxQkFBdUIsQ0FHdEIsZUFBZ0IsQ0FRaEIsaUJBQWtCLENHMUZwQix3Q0gwRm9CLENDTnBCLDBFRE5DLGlDQVltQixDQ05wQix5RUROQywyQkFZbUIsQ0NPcEIsSUFDQyxzQkFBd0IsQ0FJekIsd0JBQ0MsbUJDaUl1RCxDRGxJeEQseUNBSUUsbUJDOEhzRCxDRDFIeEQsaUJBQ0MsbUJGOEg0QixDRTdINUIsd0JBQXlCLENBRjFCLDhDRTlHQSx3Q0pvRStELENFMEMvRCxrRUFLRSxpQ0YvQzZELENFMEMvRCxpRUFLRSwyQkYvQzZELENFbUQvRCx1QkFHRSxlQzhHc0QsQ0R0R3hELDZFQUdFLFVDbUdzRCxDRC9GeEQsNEJBR0UsZUFBZ0IsQ0FDaEIsUUFBUyxDQUpYLDhDQVVHLFFBQVMsQ0FDVCxrQkYwRjZCLENFckdoQywrQ0FtQkcsT0FBUSxDQUNSLGFBQWMsQ0FwQmpCLGdEQTJCRyxRQUFTLENBQ1Qsa0JGeUU2QixDRXJHaEMsb0VBaUNJLE9BQVEsQ0FDUixRQUFTLENBQ1QsY0FBZSxDQU1uQixnR0FHQyxVQUFXLENBR1osOERBRUMsYUFBYyxDQUVkLG1CRmtEK0IsQ0VqRC9CLFVBQVcsQ0FMWiwwR0FRRSxVQUFXLENBSWIsa0NBQ0Msa0JGeUMrQixDRXRDaEMsMEJBSUUsY0FBZSxDQUNmLFlBQWEsQ0FDYixVQUFXLENBQ1gsNEJBQWlELENBUG5ELDhDQVVHLGlDQUF1RSxDQVYxRSxzREFhSSxVQUFXLENBQ1gsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBZnJCLHFIQXVCSSxlQ1NvRCxDREh4RCx3Q0FHUSxZQUFhLENBV3JCLGtGQUdDLHNCQUF3QixDQUd6QixpQ0FHRSxrQkFBbUIsQ0FDbkIsNkJBQThCLENBQzlCLGtCQUFtQixDQUNuQixrQkZoQjRCLENFb0I5QixTQUNDLGFBQWMsQ0FEZixtTEEyQkUsWUFBYSxDQUlmLFNBQ0Msa0JBQW1CLENBQ25CLDBCQUEyQixDQUY1QiwwQkFLRSxtQkMvRHNELENEcUZ4RCx1VkFHRSxZQUFhLENBSGYsK0JBT0UsYUFBYyxDQUtoQiwrQ0FFQyxzQkFBd0IiLCJmaWxlIjoicHJpbnQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcblx0I0NvbG9yc1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gYnJhbmQgY29sb3JzXG4kYnJhbmQtY29sb3JzOiAoXG5cdHJlZDogKFxuXHRcdGRhcms6ICM0YzEwMTYsXG5cdFx0bWVkaXVtOiAjN2YxMjFjLCAvLyBsb2dvXG5cdFx0aGlnaGxpZ2h0OiAjZDc3NTdlXG5cdCksXG4pO1xuXG4vLyB1dGlsaXR5IGNvbG9yc1xuJHV0aWxpdHktY29sb3JzOiAoXG5cdGdyZWVuOiAoXG5cdFx0ZGFyazogIzI0NjEzYixcblx0XHRtZWRpdW06ICMxYzg3NDUsIC8vIGRvbmF0ZVxuXHRcdGhpZ2hsaWdodDogIzYwOWY3OCxcblx0XHRiYWNrZ3JvdW5kOiAjZGRmOGU3LFxuXHQpLFxuXHRibHVlOiAoXG5cdFx0ZGFyazogIzEzNWI3ZSwgLy8gbGlua1xuXHRcdG1lZGl1bTogIzBjN2JiMCxcblx0XHRoaWdobGlnaHQ6ICM1ZTk5YjUsXG5cdFx0YmFja2dyb3VuZDogI2RjZjBmYVxuXHQpLFxuXHRwdXJwbGU6IChcblx0XHRkYXJrOiAjNjM1MDc3LCAvLyBvcGluaW9uXG5cdFx0bWVkaXVtOiAjOGM2NGI0LFxuXHRcdGhpZ2hsaWdodDogI2E4ODBkMCxcblx0XHRiYWNrZ3JvdW5kOiAjZWJlN2VmXG5cdCksXG5cdHllbGxvdzogKFxuXHRcdGJhY2tncm91bmQ6ICNmYmQzNDFcblx0KSxcbik7XG5cbi8vIG5ldXRyYWwgY29sb3JzXG4kbmV1dHJhbC1jb2xvcnM6IChcblx0YmxhY2s6ICMxYTE4MTgsIC8vIGxvZ29cblx0ZGFyazogIzVlNmU3Nixcblx0bWVkaXVtOiAjODY5Mjk4LFxuXHRib3JkZXI6ICNkNmQ2ZGEsXG5cdGhpZ2hsaWdodDogI2ViZWJmYixcblx0bGlnaHQ6ICNlZmVmZjAsXG5cdHdoaXRlOiAjZmZmXG4pO1xuXG4vLyBNZW1iZXJzaGlwIGxldmVsc1xuJGNvbG9yX19taW5ucG9zdC1icm9uemU6ICNjZDdmMzI7XG4kY29sb3JfX21pbm5wb3N0LXNpbHZlcjogI2MwYzBjMDtcbiRjb2xvcl9fbWlubnBvc3QtZ29sZDogI2ZmZDcwMDtcbiRjb2xvcl9fbWlubnBvc3QtcGxhdGludW06ICNlNWU0ZTI7XG5cbiRiYWNrZ3JvdW5kLXVucHVibGlzaGVkOiBuZXV0cmFsLWNvbG9yKHdoaXRlKSB1cmwoL3dwLWNvbnRlbnQvdGhlbWVzL21pbm5wb3N0LWxhcmdvL2Fzc2V0cy9pbWcvdW5wdWJsaXNoZWQucG5nKTtcblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuXHQjVFlQT0dSQVBIWVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gZm9udCBmYW1pbGllc1xuJGZvbnRfX2NvZGU6IG1vbmFjbywgY29uc29sYXMsIFwiQW5kYWxlIE1vbm9cIiwgXCJEZWphVnUgU2FucyBNb25vXCIsIG1vbm9zcGFjZTtcbiRmb250X19wcmU6IFwiQ291cmllciAxMCBQaXRjaFwiLCBjb3VyaWVyLCBtb25vc3BhY2U7XG4kZm9udF9fc2FuczogaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiRmb250X19zZXJpZjogZ2VvcmdpYSwgY2FtYnJpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgdGltZXMsIHNlcmlmO1xuJHdlYmZvbnRfX3NlcmlmOiBcImZmLW1ldGEtc2VyaWYtd2ViLXByb1wiLCBnZW9yZ2lhLCBjYW1icmlhLCBcIlRpbWVzIE5ldyBSb21hblwiLCB0aW1lcywgc2VyaWY7XG4kd2ViZm9udF9fc2FuczogXCJmZi1tZXRhLXdlYi1wcm9cIiwgaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZjtcblxuJGh0bWwtcm9vdC1zaXplOiAxMjUlOyAvLyAxMDAlIGlzIDE2cHhcbiRodG1sLXJvb3Qtc2l6ZS1sYXJnZS1zY3JlZW46IDE1MCU7XG5cbiRpbnRlcmZhY2UtY29weS1zaXplOiA4MCU7XG4kaW50ZXJmYWNlLWNvcHktc2l6ZS1sYXJnZXI6IDg1JTtcbiRpbnRlcmZhY2UtY29weS1zaXplLXNtYWxsZXI6IDc1JTtcblxuLy8gdHlwZSBzY2FsZS5cbi8vIHVzZXMgUm9iIFdleWNoZXJ0J3MgY29kZSBhdCBodHRwczovLzI0d2F5cy5vcmcvMjAxOS9hLW1vZGVybi10eXBvZ3JhcGhpYy1zY2FsZS9cbiRodG1sLWZvbnQtc2l6ZTogMTAwJTtcbi8vIHN0YXJ0cyB3aXRoIHRoZSA8aHRtbD4gZWxlbWVudCdzIGZvbnQgc2l6ZSB2YWx1ZSwgc28gd2Vcbi8vIHNob3VsZCBjaGFuZ2UgdGhhdCBiYXNlZCBvbiBvdXIgbWVkaWEgcXVlcmllc1xuOnJvb3Qge1xuXHQkZm9udC1zaXplLWludGVydmFsOiAxLjEyNTsgICAgLy8gVW5pdGxlc3MgZm9yIHByb3BvcnRpb25hbCwgdW5pdCBmb3IgZml4ZWRcblx0JGJvZHktdGV4dDogMWVtOyAgLy8gTXVzdCBoYXZlIGEgdW5pdFxuXHQkc2NhbGUtbWluOiAtMzsgICAgLy8gVW5pdGxlc3MgbmVnYXRpdmUgaW50ZWdlclxuXHQkc2NhbGUtbWF4OiA0OyAgICAgLy8gVW5pdGxlc3MgcG9zaXRpdmUgaW50ZWdlclxuXG5cdC0tZm9udC1zaXplLWludDogI3skZm9udC1zaXplLWludGVydmFsfTtcblx0LS1zY2FsZTA6ICN7JGJvZHktdGV4dH07XG5cblx0QGlmICRzY2FsZS1taW4gPCAwIHtcblx0XHQvLyBHZW5lcmF0ZSBzY2FsZSB2YXJpYWJsZXMgc21hbGxlciB0aGFuIHRoZSBiYXNlIHRleHQgc2l6ZVxuXHRcdEBmb3IgJGkgZnJvbSAtMSB0aHJvdWdoICRzY2FsZS1taW4ge1xuXG5cdFx0XHRAaWYgdHlwZS1vZigkZm9udC1zaXplLWludGVydmFsKSA9PSBudW1iZXIge1xuXG5cdFx0XHRcdEBpZiB1bml0bGVzcygkZm9udC1zaXplLWludGVydmFsKSB7XG5cdFx0XHRcdFx0LS1zY2FsZSN7JGl9OiBjYWxjKHZhcigtLXNjYWxlI3skaSArIDF9KSAvIHZhcigtLWZvbnQtc2l6ZS1pbnQpKTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0LS1zY2FsZSN7JGl9OiBjYWxjKHZhcigtLXNjYWxlI3skaSArIDF9KSAtIHZhcigtLWZvbnQtc2l6ZS1pbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBpZiAkc2NhbGUtbWF4ID4gMCB7XG5cdFx0Ly8gR2VuZXJhdGUgc2NhbGUgdmFyaWFibGVzIGxhcmdlciB0aGFuIHRoZSBiYXNlIHRleHQgc2l6ZVxuXHRcdEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJHNjYWxlLW1heCB7XG5cblx0XHRcdEBpZiB0eXBlLW9mKCRmb250LXNpemUtaW50ZXJ2YWwpID09IG51bWJlciB7XG5cblx0XHRcdFx0QGlmIHVuaXRsZXNzKCRmb250LXNpemUtaW50ZXJ2YWwpIHtcblx0XHRcdFx0XHQtLXNjYWxlI3skaX06IGNhbGModmFyKC0tc2NhbGUjeyRpIC0gMX0pICogdmFyKC0tZm9udC1zaXplLWludCkpO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHQtLXNjYWxlI3skaX06IGNhbGModmFyKC0tc2NhbGUjeyRpIC0gMX0pICsgdmFyKC0tZm9udC1zaXplLWludCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vIGxpbmUgaGVpZ2h0IHNjYWxlXG46cm9vdCB7XG5cdCRsaW5lLWhlaWdodC1pbnRlcnZhbDogMC45NTtcblx0JGJvZHktbGluZS1oZWlnaHQ6IDEuMztcblx0JGxpbmUtaGVpZ2h0LXNjYWxlLW1pbjogLTM7ICAgIC8vIFVuaXRsZXNzIG5lZ2F0aXZlIGludGVnZXJcblx0JGxpbmUtaGVpZ2h0LXNjYWxlLW1heDogNDsgICAgIC8vIFVuaXRsZXNzIHBvc2l0aXZlIGludGVnZXJcblxuXHQtLWxpbmUtaGVpZ2h0LWludDogI3skbGluZS1oZWlnaHQtaW50ZXJ2YWx9O1xuXHQtLWxoMDogI3skYm9keS1saW5lLWhlaWdodH07XG5cblx0QGlmICRsaW5lLWhlaWdodC1zY2FsZS1taW4gPCAwIHtcblx0XHQvLyBHZW5lcmF0ZSBzY2FsZSB2YXJpYWJsZXMgc21hbGxlciB0aGFuIHRoZSBiYXNlIHRleHQgc2l6ZVxuXHRcdEBmb3IgJGkgZnJvbSAtMSB0aHJvdWdoICRsaW5lLWhlaWdodC1zY2FsZS1taW4ge1xuXG5cdFx0XHRAaWYgdHlwZS1vZigkbGluZS1oZWlnaHQtaW50ZXJ2YWwpID09IG51bWJlciB7XG5cblx0XHRcdFx0QGlmIHVuaXRsZXNzKCRsaW5lLWhlaWdodC1pbnRlcnZhbCkge1xuXHRcdFx0XHRcdC0tbGgjeyRpfTogY2FsYyh2YXIoLS1saCN7JGkgKyAxfSkgLyB2YXIoLS1saW5lLWhlaWdodC1pbnQpKTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0LS1saCN7JGl9OiBjYWxjKHZhcigtLWxoI3skaSArIDF9KSAtIHZhcigtLWxpbmUtaGVpZ2h0LWludCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QGlmICRsaW5lLWhlaWdodC1zY2FsZS1tYXggPiAwIHtcblx0XHQvLyBHZW5lcmF0ZSBzY2FsZSB2YXJpYWJsZXMgbGFyZ2VyIHRoYW4gdGhlIGJhc2UgdGV4dCBzaXplXG5cdFx0QGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGluZS1oZWlnaHQtc2NhbGUtbWF4IHtcblxuXHRcdFx0QGlmIHR5cGUtb2YoJGxpbmUtaGVpZ2h0LWludGVydmFsKSA9PSBudW1iZXIge1xuXG5cdFx0XHRcdEBpZiB1bml0bGVzcygkbGluZS1oZWlnaHQtaW50ZXJ2YWwpIHtcblx0XHRcdFx0XHQtLWxoI3skaX06IGNhbGModmFyKC0tbGgjeyRpIC0gMX0pICogdmFyKC0tbGluZS1oZWlnaHQtaW50KSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdC0tbGgjeyRpfTogY2FsYyh2YXIoLS1saCN7JGkgLSAxfSkgKyB2YXIoLS1saW5lLWhlaWdodC1pbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuXHQjTGF5b3V0XG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdSSUQgUFJPUE9SVElPTlNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ3VzdG9taXplIHlvdXIgZ3JpZOKAmXMgcHJvcG9ydGlvbnMgYnkgZWRpdGluZyB0aGUgdmFsdWVzIG9mXG4vLyB0aGUgZm91ciB2YXJpYWJsZXMgYmVsb3cuIFVzZSBvbmx5IG51bWJlcnMgZm9yIHZhbHVlcywgbm9cbi8vIHVuaXRzIChlLmcuIFwiMTBcIiwgbm90IFwiMTBweFwiKS4gSU1QT1JUQU5UOiBEb24ndCBkZWxldGUgYW55XG4vLyBvZiB0aGVzZSB2YXJpYWJsZXMhIEZvciBhbnkgeW91IGRvbid0IG5lZWQgdG8gdXNlLCBqdXN0XG4vLyBhc3NpZ24gYSB2YWx1ZSBvZiAwLlxuXG4kbWFyOiA0OyAvLyBNYXJnaW4gd2lkdGhcbiRjb2w6IDQ7IC8vIENvbHVtbiB3aWR0aFxuJGd1dDogMTsgLy8gR3V0dGVyIHdpZHRoXG4kcGFkOiAxOyAvLyBQYWRkaW5nIHdpZHRoXG5cbiRncmlkLWNvbG9yOiByZWQ7IC8vIEdyaWQgb3ZlcmxheSBjb2xvclxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJSRUFLUE9JTlRTXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFlvdSBjYW4gZGVmaW5lIGFzIG1hbnkgKG9yIGFzIGZldykgYnJlYWtwb2ludHMgYXMgeW91IGxpa2UsXG4vLyBhbmQgbmFtZSB0aGVtIHdoYXRldmVyIHlvdSB3YW50LiBKdXN0IGJlIHN1cmUgdG86XG4vL1xuLy8gMS4gdXNlIHRoZSBzeW50YXggc2hvd24gYmVsb3csXG4vLyAyLiBrZWVwIHRoZSBicmVha3BvaW50cyBpbiBvcmRlciAoc21hbGxlc3QgdG8gbGFyZ2VzdCksIGFuZFxuLy8gMy4gaW5jbHVkZSBhIG5hbWUgKGUuZy4gXCJ4bFwiKSwgY29sdW1uIGNvdW50IChcImNvbHNcIixcbi8vICAgIHVuaXRsZXNzKSwgYW5kIG1pbmltdW0gd2lkdGggKFwibWluLXdpZHRoXCIsIHdpdGggdW5pdHMpXG4vLyAgICBmb3IgZWFjaCBicmVha3BvaW50XG4vL1xuLy8gQWxsIGJyZWFrcG9pbnRzIHVzZSB0aGUgc2FtZSBwcm9wb3J0aW9ucyBzcGVjaWZpZWQgaW4gdGhlXG4vLyB2YXJpYWJsZXMgYWJvdmUsIGJ1dCBtYXJnaW4gd2lkdGhzIGNhbiBiZSBvcHRpb25hbGx5XG4vLyBjdXN0b21pemVkIGZvciBlYWNoIGJyZWFrcG9pbnQuXG5cbi8vIGV4OiBAaW5jbHVkZSBicmVha3BvaW50LW1pbiggc20gKSB7IH1cblxuJGJyZWFrcG9pbnRzOiAoXG5cdHh4eHM6IChjb2xzOiAgNCwgbWluLXdpZHRoOiAgMCwgIG1hcmdpbjogJHBhZCksIC8vIEluY2x1ZGVzIG9wdGlvbmFsIGN1c3RvbSBtYXJnaW5cblx0eHhzOiAoY29sczogIDYsIG1pbi13aWR0aDogMjRlbSwgbWFyZ2luOiAkZ3V0KSwgLy8gMzg0cHhcblx0eHM6IChjb2xzOiAgNiwgbWluLXdpZHRoOiAzMGVtLCBtYXJnaW46ICRndXQpLCAvLyA0ODBweFxuXHRzbTogKGNvbHM6ICA2LCBtaW4td2lkdGg6IDQwZW0sIG1hcmdpbjogJGd1dCksIC8vIDY0MHB4XG5cdG1kOiAoY29sczogIDgsIG1pbi13aWR0aDogNTBlbSwgbWFyZ2luOiAkZ3V0KSwgLy8gODAwcHhcblx0bGc6IChjb2xzOiAxMiwgbWluLXdpZHRoOiA2MGVtLCBtYXJnaW46ICRtYXIpLCAvLyA5NjBweFxuXHR4bDogKGNvbHM6IDE2LCBtaW4td2lkdGg6IDcwZW0sIG1hcmdpbjogJG1hciksIC8vIDExMjBweFxuXHR4eGw6IChjb2xzOiAxNiwgbWluLXdpZHRoOiA4MGVtLCBtYXJnaW46ICRtYXIpLCAvLyAxMjgwcHhcbiAgICB4eHhsOiAoY29sczogMTYsIG1pbi13aWR0aDogOTBlbSwgbWFyZ2luOiAkbWFyKSAvLyAxNDQwcHhcbik7XG5cbiRtYXgtd2lkdGg6IG51bGw7IC8vIEZvciBubyBtYXgtd2lkdGgsIHVzZSAkbWF4LXdpZHRoOiBudWxsO1xuXG4kc2l6ZV9fc2l0ZS1zaWRlYmFyOiAzMDBweDsgLy8gdGhpcyBuZWVkcyB0byBiZSBwaXhlbCBiYXNlZCBiZWNhdXNlIG9mIGFkIGRpbWVuc2lvbnNcbiRtYXgtd2lkdGgtcGFnZTogODBlbTsgLy8gdGhpcyBpcyAxMjgwcHhcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBaLUlOREVYRVNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kei1pbmRleF9feHh4bDogMTAwMDAwMDAwMDtcbiR6LWluZGV4X194eGw6IDEwMDAwMDAwMDtcbiR6LWluZGV4X194bDogMTAwMDAwMDA7XG4kei1pbmRleF9fbGc6IDEwMDAwMDA7XG4kei1pbmRleF9fbWQ6IDEwMDAwMDtcbiR6LWluZGV4X19zbTogMTAwMDA7XG4kei1pbmRleF9feHM6IDEwMDA7XG4kei1pbmRleF9feHhzOiAxMDA7XG4kei1pbmRleF9feHh4czogMTA7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG5cdCNTUEFDSU5HXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vLyBtYXJnaW4vcGFkZGluZ1xuJHN0YW5kYXJkLWJsb2NrLW1hcmdpbjogMS41ZW07IC8vIDM2cHggYXQgZGVza3RvcFxuJHN0YW5kYXJkLWhlYWRpbmctbWFyZ2luOiAwLjc1ZW07IC8vIDE4cHggYXQgZGVza3RvcFxuJHN0YW5kYXJkLWJsb2NrLXBhZGRpbmc6IDAuNWVtOyAvLyAxMnB4IGF0IGJvZHlcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcblx0I0JPUkRFUlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiRib3JkZXItcmFkaXVzOiA0cHg7XG4kYm9yZGVyLWRlZmF1bHQtc3R5bGU6IDFweCBzb2xpZCBuZXV0cmFsLWNvbG9yKGJvcmRlcik7XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG5cdCNBbmltYXRpb25cblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiRob3Zlci10cmFuc2l0aW9uOiAuMjVzIGFsbDtcbiRkb3VibGUtdHJhbnNpdGlvbjogLjVzIGFsbDtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcblx0I0ZpeGVkIFNpemVzXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vLyBpbWFnZXNcbiRhdXRob3ItdGh1bWItc2l6ZTogNzVweDtcbiRhdXRob3ItcGhvdG8tc2l6ZTogMTkwcHg7XG4kYXV0aG9yLWZ1bGwtc2l6ZTogMjI1cHg7XG5cbi8vIGljb25zXG4kc2hhcmUtaWNvbi1zaXplOiAyZW07XG4kaW5saW5lLWljb24tc2l6ZTogMWVtO1xuXG4vLyBhZHNcbiRhZC10b3Atd2lkdGg6IDcyOHB4O1xuJGFkLXRvcC1oZWlnaHQ6IDkwcHg7XG4kYWQtdG9wLXJpZ2h0LXdpZHRoOiAyMjhweDtcbiRhZC10b3AtcmlnaHQtaWZyYW1lLWhlaWdodDogOTBweDtcbiRhZC1lbWJlZC13aWR0aDogMzAwcHg7XG4kYWQtZW1iZWQtaGVpZ2h0OiAyNTBweDtcbiRhZC1oYWxmcGFnZS13aWR0aDogMzAwcHg7XG4kYWQtaGFsZnBhZ2UtaGVpZ2h0OiA2MDBweDtcblxuLy8gdG91Y2ggdGFyZ2V0c1xuJHRvdWNoLXRhcmdldC1taW5pbXVtLXNpemU6IDQ0cHg7XG4kdG91Y2gtdGFyZ2V0LW1pbmltdW0tc2l6ZS1kZXNrdG9wOiAzMnB4O1xuIiwiLy8gY2xlYXJmaXhcbkBtaXhpbiBjbGVhcmZpeCB7XG5cblx0Jjo6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdH1cbn1cbi8vIHVzZWQgbGlrZSB0aGlzXG4uY2xlYXJmaXgge1xuXG5cdEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4vLyByZXNwb25zaXZlIGlmcmFtZXMgYnkgcmF0aW9cbkBtaXhpbiBnZW5lcmF0ZVJhdGlvcyggJHdpZHRoLCAkaGVpZ2h0LCAkcHJlZml4OiBcInJhdGlvLVwiICkge1xuXHQkY2xhc3MtbmFtZTogJHByZWZpeCArICR3aWR0aCArIFwieFwiICsgJGhlaWdodDtcblxuXHQuI3skY2xhc3MtbmFtZX0ge1xuXHRcdHBhZGRpbmctYm90dG9tOiByYXRpbygkd2lkdGgsICRoZWlnaHQpO1xuXHR9XG5cdC8vIE91dHB1dCBleGFtcGxlOiAucmF0aW8tMTZ4OSB7fVxufVxuLy8gdXNlZCBsaWtlIHRoaXNcbi8vQGluY2x1ZGUgZ2VuZXJhdGVSYXRpb3MoMTYsOSk7IC8vIDE2eDlcbi8vQGluY2x1ZGUgZ2VuZXJhdGVSYXRpb3MoNCwzKTsgIC8vIDR4M1xuXG4vLyBmb250IGZhbWlsaWVzXG5cbi8vIGJvZHkgdGV4dFxuQG1peGluIGJvZHktcHJlc2V0KCAkc2l6ZTogaW5oZXJpdCwgJGJvbGQ6IGluaGVyaXQsICRpdGFsaWM6IGluaGVyaXQsICRsaW5lLWhlaWdodDogaW5oZXJpdCApIHtcblxuXHRAaW5jbHVkZSB0ZXh0LXByZXNldCggJHNpemUsICRsaW5lLWhlaWdodCApO1xuXHRmb250LWZhbWlseTogJHdlYmZvbnRfX3NlcmlmO1xuXHRmb250LXNpemUtYWRqdXN0OiAwLjQ2O1xuXG5cdEBpZiAkYm9sZCA9PSB0cnVlIHtcblx0XHRmb250LXdlaWdodDogNzAwO1xuXHR9IEBlbHNlIGlmICRib2xkID09IGZhbHNlIHtcblx0XHRmb250LXdlaWdodDogNTAwO1xuXHR9XG5cblx0QGlmICRpdGFsaWMgPT0gdHJ1ZSB7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9IEBlbHNlIGlmICRpdGFsaWMgPT0gZmFsc2Uge1xuXHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0fVxuXHRsaW5lLWhlaWdodDogMS4zO1xufVxuLy8gdXNlZCBsaWtlIHRoaXM6IGJvZHktcHJlc2V0KCAkc2l6ZTogMyApO1xuXG4vLyBoZWFkaW5nIHRleHRcbkBtaXhpbiBoZWFkaW5nLXByZXNldCggJHNpemU6IGluaGVyaXQsICRib2xkOiBpbmhlcml0LCAkaXRhbGljOiBpbmhlcml0LCAkbGluZS1oZWlnaHQ6IGluaGVyaXQgKSB7XG5cblx0QGluY2x1ZGUgdGV4dC1wcmVzZXQoICRzaXplLCAkbGluZS1oZWlnaHQgKTtcblx0Zm9udC1mYW1pbHk6ICR3ZWJmb250X19zZXJpZjtcblx0Zm9udC1zaXplLWFkanVzdDogMC40NjtcblxuXHRAaWYgJGJvbGQgPT0gdHJ1ZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDkwMDtcblx0fSBAZWxzZSBpZiAkYm9sZCA9PSBmYWxzZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0fVxuXG5cdEBpZiAkaXRhbGljID09IHRydWUge1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fSBAZWxzZSBpZiAkaXRhbGljID09IGZhbHNlIHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdH1cblx0bGluZS1oZWlnaHQ6IDEuMTU7XG59XG4vLyB1c2VkIGxpa2UgdGhpczogQGluY2x1ZGUgaGVhZGluZy1wcmVzZXQoICRzaXplOiAzLCAkYm9sZDogZmFsc2UgKTtcblxuLy8gbWV0YSB0ZXh0XG5AbWl4aW4gbWV0YS1wcmVzZXQoICRzaXplOiBpbmhlcml0LCAkYm9sZDogZmFsc2UsICRpdGFsaWM6IGZhbHNlLCAkbGluZS1oZWlnaHQ6IGluaGVyaXQgKSB7XG5cblx0QGluY2x1ZGUgdGV4dC1wcmVzZXQoICRzaXplLCAkbGluZS1oZWlnaHQgKTtcblx0Zm9udC1mYW1pbHk6ICR3ZWJmb250X19zYW5zO1xuXHRmb250LXNpemUtYWRqdXN0OiAwLjQ5NTtcblxuXHRAaWYgJGJvbGQgPT0gdHJ1ZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0fSBAZWxzZSBpZiAkYm9sZCA9PSBmYWxzZSB7XG5cdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0fVxuXG5cdEBpZiAkaXRhbGljID09IHRydWUge1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fSBAZWxzZSBpZiAkaXRhbGljID09IGZhbHNlIHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdH1cbn1cblxuLy8gdGV4dCBzaXplc1xuQG1peGluIHRleHQtcHJlc2V0KCAkc2l6ZTogaW5oZXJpdCwgJGxpbmUtaGVpZ2h0OiBpbmhlcml0ICkge1xuXHQvL2ZvbnQtc2l6ZTogbWFwLWdldCggJHRleHQtc2l6ZXMsICRzaXplICkgKyBweDtcblx0Ly9mb250LXNpemU6IG1hcC1nZXQoICR0ZXh0LXNpemVzLCAkc2l6ZSApLzEwICsgcmVtO1xuXHRAaWYgJHNpemUgIT0gXCJpbmhlcml0XCIge1xuXHRcdGZvbnQtc2l6ZTogdmFyKC0tc2NhbGUjeyAkc2l6ZSB9KTtcblx0XHQvL2xpbmUtaGVpZ2h0OiB2YXIoLS1saCN7ICRzaXplIH0pO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdH1cblx0XG5cdC8vbGluZS1oZWlnaHQ6IG1hcC1nZXQoICRsaW5lLWhlaWdodHMsICRzaXplICk7XG5cblx0LypAaW5jbHVkZSBicmVha3BvaW50LW1pbiggeHMgKSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHRzLCAkc2l6ZSApICogMS4yNTtcbiAgICB9IC8vIDEyNSVcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LW1pbiggc20gKSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiBtYXAtZ2V0KCAkbGluZS1oZWlnaHRzLCAkc2l6ZSApICogMS41O1xuICAgIH0gLy8gMTUwJSovXG59XG4vLyBsaW5rIHVuZGVybGluZSB0cmVhdG1lbnRcbkBtaXhpbiBsaW5rLXVuZGVybGluZSggJGNvbG9yOiB1dGlsaXR5LWNvbG9yKGJsdWUsIGRhcmspLCAkaG92ZXI6IHV0aWxpdHktY29sb3IoYmx1ZSwgaGlnaGxpZ2h0KSApIHtcblx0Y29sb3I6ICRjb2xvcjtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdHRleHQtZGVjb3JhdGlvbi1jb2xvcjogJGhvdmVyO1xuXHR0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDAuMjVlbTtcblx0dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMC4wOGVtO1xufVxuXG4vLyBidXR0b24gdHJlYXRtZW50XG5AbWl4aW4gYnV0dG9uKCAkYmFja2dyb3VuZDogYnJhbmQtY29sb3IocmVkLCBtZWRpdW0pLCAkaG92ZXI6IGJyYW5kLWNvbG9yKHJlZCwgZGFyayksICRjb2xvcjogbmV1dHJhbC1jb2xvcih3aGl0ZSkpIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwYWRkaW5nOiAkc3RhbmRhcmQtYmxvY2stcGFkZGluZyAvIDI7XG5cdGJvcmRlcjogMDtcblx0bWFyZ2luLXJpZ2h0OiAkc3RhbmRhcmQtYmxvY2stcGFkZGluZztcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHRyYW5zaXRpb246ICRob3Zlci10cmFuc2l0aW9uO1xuXHRAaW5jbHVkZSBtZXRhLXByZXNldCggJHNpemU6IDEsICRib2xkOiB0cnVlLCAkaXRhbGljOiBmYWxzZSwgJGxpbmUtaGVpZ2h0OiAxICk7XG5cdGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuXHRjb2xvcjogJGNvbG9yO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cztcblxuXHQmOmxpbmssXG5cdCY6dmlzaXRlZCB7XG5cdFx0YmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG5cdFx0Y29sb3I6ICRjb2xvcjtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzLFxuXHQmOmFjdGl2ZSxcblx0Ji5hY3RpdmUge1xuXHRcdGJhY2tncm91bmQ6ICRob3Zlcjtcblx0XHRjb2xvcjogJGNvbG9yO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0fVxufVxuIiwiQGltcG9ydCBcImZ1bmN0aW9uc1wiOyAvLyBwdXQgZnVuY3Rpb25zIGZpcnN0IGJlY2F1c2UgdGhleSBnZXQgdXNlZCBpbiBjb2xvciB2YXJpYWJsZSBjYWxjdWxhdGlvbnNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJjb2x1bW4tc2V0dGVyXCI7XG5AaW1wb3J0IFwibWl4aW5zXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQkFTRVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5wIHtcblx0b3JwaGFuczogMjtcblx0d2lkb3dzOiAyO1xufVxuXG5maWd1cmUsXG50YWJsZSxcbmRpdi5pbWFnZSB7XG5cdGJyZWFrLWluc2lkZTogYXZvaWQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQVRPTVNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLmFjbS1hZC1jb250YWluZXIsXG4uYWNtLWFkLFxuYXJ0aWNsZSAuYWNtLWFkLFxuLm8tc2l0ZS1zaWRlYmFyIC5hY20tYWQge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5hLXNpdGUtYnJhbmRpbmcge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG1hcmdpbjogMCBhdXRvICRzdGFuZGFyZC1ibG9jay1wYWRkaW5nIGF1dG87XG5cblx0LmEtbG9nby1zdmcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbmhlYWRlciAuYS1zaXRlLWJyYW5kaW5nIHtcblx0bWFyZ2luOiAwO1xuXHRtYXgtd2lkdGg6IGNvbHNwYW4oIDUsIDE2ICk7XG59XG5cbmhlYWRlci5vLWhlYWRlci1zdXBwb3J0IC5hLXNpdGUtYnJhbmRpbmcge1xuXHRtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5tLXN1cHBvcnQtY3RhIC5hLXN1cHBvcnQtYnV0dG9uLFxuLm0tc3VwcG9ydC1jdGEtYm90dG9tIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1PTEVDVUxFU1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4ubS1hZC1yZWdpb24ge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5tLXN1cHBvcnQtY3RhIHtcblxuXHQvLyBjdGEgaW4gdGhlIHNpdGUgaGVhZGVyXG5cdCYubS1zdXBwb3J0LWN0YS10b3Age1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHR3aWR0aDogYXV0bztcblx0XHRmb250LXNpemU6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXG5cdFx0Ly8gdGFnbGluZVxuXHRcdGgyIHtcblx0XHRcdEBpbmNsdWRlIG1ldGEtcHJlc2V0KCAkc2l6ZTogMCwgJGJvbGQ6IHRydWUsICRpdGFsaWM6IGZhbHNlLCAkbGluZS1oZWlnaHQ6IDEgKTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8vIGN0YSBpbiB0aGUgc2l0ZSBmb290ZXJcblx0Ji5tLXN1cHBvcnQtY3RhLWJvdHRvbSB7XG5cdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXHR9XG59XG5cbi5vLWhlYWRlci1zdXBwb3J0IC5tLXN1cHBvcnQtY3RhLm0tc3VwcG9ydC1jdGEtdG9wIHtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0d2lkdGg6IGF1dG87XG5cblx0Ly8gdGFnbGluZVxuXHRoMiB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdEBpbmNsdWRlIG1ldGEtcHJlc2V0KCAkc2l6ZTogMCwgJGJvbGQ6IHRydWUsICRpdGFsaWM6IGZhbHNlLCAkbGluZS1oZWlnaHQ6IDEgKTtcblx0fVxufVxuXG5cbm5hdiB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuXG4ubS13aWRnZXQtc2l0ZS1icmFuZGluZyB7XG5cdG1heC13aWR0aDogY29sc3BhbiggNiwgMTYgKTtcblxuXHQuYS1zaXRlLWJyYW5kaW5nIHtcblx0XHRtYXgtd2lkdGg6IGNvbHNwYW4oIDUsIDYgKTtcblx0fVxufVxuXG4ubS1lbnRyeS1jb250ZW50IHtcblx0bWFyZ2luLWJvdHRvbTogJHN0YW5kYXJkLWJsb2NrLW1hcmdpbjtcblx0b3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcblxuXHQmLm0tbWVtYmVyc2hpcC1zdXBwb3J0LXdyYXBwZXIge1xuXHRcdGZvbnQtZmFtaWx5OiAkd2ViZm9udF9fc2Fucztcblx0fVxufVxuXG4uby1lbnRyeSB7XG5cblx0Lm0tZW50cnktbWV0YSB7XG5cdFx0d2lkdGg6IGNvbHNwYW4oIDIsIDEyICk7XG5cblx0XHQmLm0tZW50cnktbWV0YS1ob3Jpem9udGFsIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxufVxuXG4ubS1lbnRyeS1oZWFkZXIge1xuXG5cdC5tLWVudHJ5LW1ldGEge1xuXHRcdHdpZHRoOiBjb2xzcGFuKCAxMiwgMTIgKTtcblx0fVxufVxuXG4ubS1hcmNoaXZlIHtcblxuXHQubS1lbnRyeS1jb250ZW50IHtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdGZsZXg6IDEgMDtcblx0fVxuXG5cdCYubS1hcmNoaXZlLWV4Y2VycHQge1xuXG5cdFx0Lm0tZW50cnktY29udGVudCB7XG5cdFx0XHRmbGV4OiAxIDA7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6ICRzdGFuZGFyZC1oZWFkaW5nLW1hcmdpbjtcblx0XHR9XG5cblx0fVxuXG5cdCYubS1hcmNoaXZlLWhvbWVwYWdlIHtcblxuXHRcdC5tLWVudHJ5LWNvbnRlbnQge1xuXHRcdFx0b3JkZXI6IDI7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cdH1cblxuXHQmLm0tem9uZS1ob21lcGFnZS10b3Age1xuXHRcdFxuXHRcdC5tLWVudHJ5LWNvbnRlbnQge1xuXHRcdFx0ZmxleDogMSAwO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAkc3RhbmRhcmQtaGVhZGluZy1tYXJnaW47XG5cdFx0fVxuXG5cdFx0Lm0tcG9zdC1pbWFnZS1maXJzdCB7XG5cdFx0XHQubS1lbnRyeS1jb250ZW50IHtcblx0XHRcdFx0b3JkZXI6IDI7XG5cdFx0XHRcdGZsZXg6IDEgMDtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4ubS1hcmNoaXZlLXRvcCAubS1wb3N0LWltYWdlLFxuLm0tYXJjaGl2ZS1leGNlcnB0IC5tLXBvc3QtaW1hZ2UsXG4ubS1hcmNoaXZlLWhvbWVwYWdlIC5tLXBvc3QtaW1hZ2Uge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLm0tYXJjaGl2ZS10b3AgLm0tcG9zdC1pbWFnZSxcbi5tLWFyY2hpdmUtZXhjZXJwdCAubS1wb3N0LWltYWdlIHtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdG1hcmdpbi1ib3R0b206ICRzdGFuZGFyZC1oZWFkaW5nLW1hcmdpbjtcblx0d2lkdGg6IGF1dG87XG5cblx0Ji5tLXBvc3QtdGh1bWJuYWlsLWZ1bGwge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5tLXBvc3QtaW1hZ2UtZmlyc3QgLm0tcG9zdC1pbWFnZSB7XG5cdG1hcmdpbi1yaWdodDogJHN0YW5kYXJkLWhlYWRpbmctbWFyZ2luO1xufVxuXG4ubS1ob21lcGFnZS16b25lcyB7XG5cblx0Ly8gd2hlcmUgdGhlIHpvbmVzIGRpZmZlciBmcm9tIHRoZSBhcmNoaXZlc1xuXHQubS16b25lIHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IGNhbGMoKDEwMCUpIC0gI3skc2l6ZV9fc2l0ZS1zaWRlYmFyfSApO1xuXG5cdFx0Ji5tLXpvbmUtaG9tZXBhZ2UtdG9wIHsgLy8gYmVjYXVzZSB0aGlzIHNlY3Rpb24gaXMgbm90IHZpc3VhbGx5IHNlcGFyYXRlXG5cdFx0XHRtYXgtd2lkdGg6IGNhbGMoKDEwMCUgLSAje2NvbHNwYW4oIDEsIDEyICl9KSAtICN7JHNpemVfX3NpdGUtc2lkZWJhcn0gKTtcblxuXHRcdFx0YXJ0aWNsZSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0Ji5tLXpvbmUtaG9tZXBhZ2UtbW9yZS10b3AsXG5cdFx0Ji5tLXpvbmUtaG9tZXBhZ2Utb3BpbmlvbiB7XG5cblx0XHRcdGFydGljbGUge1xuXHRcdFx0XHR3aWR0aDogY29sc3BhbiggNS44LCAxMiApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4ubS13aWRnZXQtZ3JvdXAge1xuICAgIFxuICAgICYubS13aWRnZXQtZ3JvdXAtaG9tZXBhZ2Uge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbn1cblxuXG5cblxuXG5cblxuLy8gT1JHQU5JU01TXG4uby13cmFwcGVyLXNpdGUtbmF2aWdhdGlvbixcbi5vLXdyYXBwZXItc3ViLW5hdmlnYXRpb24sXG4uby13cmFwcGVyLXNpdGUtbmF2aWdhdGlvbiAqIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uby13cmFwcGVyIHtcblx0Ly8gc2l0ZSBoZWFkZXIgd3JhcHBlclxuXHQmLm8td3JhcHBlci1zaXRlLWhlYWRlciB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRtYXJnaW4tYm90dG9tOiAkc3RhbmRhcmQtYmxvY2stcGFkZGluZztcblx0fVxufVxuXG4jY29udGVudCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdGFydGljbGUge1xuXG5cdFx0Lm0tZm9ybS1uZXdzbGV0dGVyLXNob3J0Y29kZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdCNjb21tZW50cyB7XG5cdFx0XG5cdFx0LmEtY29tbWVudC1saW5rcyxcblx0XHQjcmVzcG9uZCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5tLWVudHJ5LXNoYXJlIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Lm0tZm9ybS1pbnN0b3J5IHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Lm0tcmVsYXRlZCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuXG4uby1lbnRyeSB7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcblxuXHQubS1lbnRyeS1jb250ZW50IHtcblx0XHRtYXgtd2lkdGg6IGNvbHNwYW4oIDEwLCAxMiApO1xuXHR9XHRcbn1cblxuLm8tc2l0ZS1tZXNzYWdlLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuYm9keS5zaW5nbGUsXG5ib2R5LnBhZ2Uge1xuXG5cdC5vLXNpdGUtc2lkZWJhciB7XG5cblx0XHQubS1taW5ucG9zdC1zcGlsbHMtd2lkZ2V0LFxuXHRcdC5tLXdpZGdldC16b25lLXBvc3RzLFxuXHRcdC5tLXdpZGdldC1tb3N0LWNvbW1lbnRlZCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuXG5mb290ZXIge1xuXG5cdG5hdiB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5vLWZvb3RlciAuby1mb290ZXItaGF0IHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG4vLyBkb24ndCBwcmludCBwb3B1cHNcbi5wdW0sXG4ud3AtbWVzc2FnZS1pbnNlcnRlci1tZXNzYWdlLXJlZ2lvbi1wb3B1cCB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsIi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRlVOQ1RJT05TXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGludmFsaWRcbi8vIHdyb25nLXR5cGVcbi8vIG1pc3Npbmdcbi8vIG9wdGlvbmFsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2x1bW4gU2V0dGVyIHVzZXMgdGhlIFwiaW52YWxpZFwiLCBcIndyb25nLXR5cGVcIiwgXCJtaXNzaW5nXCIsIGFuZFxuLy8gXCJvcHRpb25hbFwiIGZ1bmN0aW9ucyB0byBidWlsZCBlcnJvciBtZXNzYWdlcy5cblxuQGZ1bmN0aW9uIGludmFsaWQoJGNhbGwsICRhcmcyOm51bGwsICRhcmczOm51bGwsICRhcmc0Om51bGwpIHtcblxuXHRAaWYgJGFyZzIgYW5kICRhcmczIGFuZCAkYXJnNCB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGNhbGx9KCN7JGFyZzJ9LCN7JGFyZzN9LCN7JGFyZzR9KScgaXMgaW52YWxpZCBiZWNhdXNlIFwiO1xuXHR9XG5cblx0QGlmICRhcmcyIGFuZCAkYXJnMyBhbmQgbm90ICRhcmc0IHtcblxuXHRcdEByZXR1cm4gXCInI3skY2FsbH0oI3skYXJnMn0sI3skYXJnM30pJyBpcyBpbnZhbGlkIGJlY2F1c2UgXCI7XG5cdH1cblxuXHRAaWYgJGFyZzIgYW5kIG5vdCAkYXJnMyBhbmQgbm90ICRhcmc0IHtcblxuXHRcdEByZXR1cm4gXCInI3skY2FsbH0oI3skYXJnMn0pJyBpcyBpbnZhbGlkIGJlY2F1c2UgXCI7XG5cdH1cblxuXHRAaWYgbm90ICRhcmcyIHtcblxuXHRcdEByZXR1cm4gXCInI3skY2FsbH0oKScgaXMgaW52YWxpZCBiZWNhdXNlIFwiO1xuXHR9XG59XG5cbkBmdW5jdGlvbiB3cm9uZy10eXBlKCR0eXBlLCAkYXJnMjpudWxsLCAkYXJnMzpudWxsKSB7XG5cblx0QGlmICRhcmcyIGFuZCAkYXJnMyB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGFyZzJ9JyBhbmQgJyN7JGFyZzN9JyBhcmUgbm90ICN7JHR5cGV9c1wiO1xuXHR9XG5cblx0QGlmIG5vdCAkYXJnMyB7XG5cblx0XHRAcmV0dXJuIFwiJyN7JGFyZzJ9JyBpcyBub3QgYSAjeyR0eXBlfVwiO1xuXHR9XG59XG5cbkBmdW5jdGlvbiBtaXNzaW5nKCRudW1iZXIpIHtcblxuXHRAaWYgJG51bWJlciA8IDIge1xuXG5cdFx0QHJldHVybiBcImFuIGFyZ3VtZW50IGlzIG1pc3NpbmcuIFwiO1xuXHR9XG5cblx0QGlmICRudW1iZXIgPj0gMiB7XG5cblx0XHRAcmV0dXJuIFwiYXJndW1lbnRzIGFyZSBtaXNzaW5nLiBcIjtcblx0fVxufVxuXG5AZnVuY3Rpb24gb3B0aW9uYWwoJG51bWJlciwkY3VycmVudCwkY29ycmVjdCkge1xuXG5cdEByZXR1cm4gXCJ0aGUgb3B0aW9uYWwgI3skbnVtYmVyfSBhcmd1bWVudCAoY3VycmVudGx5ICcjeyRjdXJyZW50fScpIHdpbGwgb25seSBhY2NlcHQgYSB2YWx1ZSBvZiAnI3skY29ycmVjdH0nLiBcIjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gYnAtYXR0cmlidXRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2x1bW4gU2V0dGVyIHVzZXMgdGhlIFwiYnAtYXR0cmlidXRlXCIgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlXG4vLyB2YWx1ZXMgb2YgYnJlYWtwb2ludCBhdHRyaWJ1dGVzIChzdWNoIGFzIFwiY29sc1wiIGFuZCBcIm1pblwiLFxuLy8gZm91bmQgaW4gdGhlICRicmVha3BvaW50cyBtYXAgaW4gXCJtYWluLnNjc3NcIikuXG4vL1xuLy8gRVhBTVBMRTogVG8gYWNjZXNzIHRoZSBtaW5pbXVtIG1lYXN1cmVtZW50IG9mIHRoZSBcInNtXCJcbi8vIGJyZWFrcG9pbnQuLi5cbi8vXG4vLyBicC1hdHRyaWJ1dGUoc20sIG1pbi13aWR0aClcbi8vXG4vLyAuLi5yZXR1cm5zIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gNDBlbVxuXG5AZnVuY3Rpb24gYnAtYXR0cmlidXRlKCRicC1uYW1lLCAkYnAtYXR0cmlidXRlKSB7XG5cblx0QHJldHVybiBtYXAtZ2V0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnAtbmFtZSksICRicC1hdHRyaWJ1dGUpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBicC12YWxpZGF0b3IgKFVORklOSVNIRUQpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb2x1bW4gU2V0dGVyIHVzZXMgdGhlIFwiYnAtdmFsaWRhdG9yXCIgZnVuY3Rpb24gdG8gZW5zdXJlIHRoYXQgdGhlcmVcbi8vIGFyZSBubyBlcnJvcnMgaW4gdGhlICRicmVha3BvaW50cyBtYXAgaW4gXCJtYWluLnNjc3NcIi5cblxuQGZ1bmN0aW9uIGJwLXZhbGlkYXRvcigpIHtcblxuXHRAaWYgdHlwZS1vZigkbWFyKSAhPSBudW1iZXIgb3IgdW5pdGxlc3MoJG1hcikgPT0gZmFsc2Uge1xuXG5cdFx0QHdhcm4gXCJIZXJlIGlzIHRoZSBicC12YWxpZGF0b3IgJG1hciB3YXJuaW5nLlwiO1xuXHR9XG5cblx0QGlmIHR5cGUtb2YoJGNvbCkgIT0gbnVtYmVyIG9yIHVuaXRsZXNzKCRjb2wpID09IGZhbHNlIHtcblxuXHRcdEB3YXJuIFwiSGVyZSBpcyB0aGUgYnAtdmFsaWRhdG9yICRjb2wgd2FybmluZy5cIjtcblx0fVxuXG5cdEBpZiB0eXBlLW9mKCRndXQpICE9IG51bWJlciBvciB1bml0bGVzcygkZ3V0KSA9PSBmYWxzZSB7XG5cblx0XHRAd2FybiBcIkhlcmUgaXMgdGhlIGJwLXZhbGlkYXRvciAkZ3V0IHdhcm5pbmcuXCI7XG5cdH1cblxuXHRAaWYgdHlwZS1vZigkcGFkKSAhPSBudW1iZXIgb3IgdW5pdGxlc3MoJHBhZCkgPT0gZmFsc2Uge1xuXG5cdFx0QHdhcm4gXCJIZXJlIGlzIHRoZSBicC12YWxpZGF0b3IgJHBhZCB3YXJuaW5nLlwiO1xuXHR9XG5cblx0QGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGJyZWFrcG9pbnRzKSB7XG5cblx0XHRAaWYgdHlwZS1vZihtYXAtZ2V0KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAobnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksICRpKSkpLCBjb2xzKSkgIT0gbnVtYmVyIG9yIHVuaXRsZXNzKG1hcC1nZXQobWFwLWdldCgkYnJlYWtwb2ludHMsIChudGgobWFwLWtleXMoJGJyZWFrcG9pbnRzKSwgJGkpKSksIGNvbHMpKSA9PSBmYWxzZSB7XG5cblx0XHRcdEB3YXJuIFwiSGVyZSBpcyB0aGUgYnAtdmFsaWRhdG9yIGNvbHMgd2FybmluZy5cIjtcblx0XHR9XG5cdH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gd2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENvbHVtbiBTZXR0ZXIgdXNlcyB0aGUgXCJ3aWR0aFwiIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGggb2YgYVxuLy8gc3BhbiBvZiBjb2x1bW5zLCBkZXJpdmVkIGZyb20gdGhlIHByb3BvcnRpb25hbCB3aWR0aFxuLy8gdmFyaWFibGVzIHdob3NlIGN1c3RvbWl6YWJsZSB2YWx1ZXMgYXJlIGRlZmluZWQgYXQgdGhlIHRvcFxuLy8gb2YgXCJtYWluLnNjc3NcIi5cbi8vXG4vLyBFWEFNUExFOiBGb3IgYSB3aWR0aCBzcGFubmluZyA2IGNvbHVtbnMuLi5cbi8vXG4vLyB3aWR0aCg2KVxuLy9cbi8vIC4uLnJldHVybnMgc29tZXRoaW5nIGxpa2UgdGhpczpcbi8vXG4vLyA1MzhcblxuQGZ1bmN0aW9uIHdpZHRoKCR3aWR0aCkge1xuXG5cdEByZXR1cm4gKCgkY29sICogJHdpZHRoKSArICgkZ3V0ICogKCR3aWR0aCAtIDEpKSk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGNvbHNwYW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBcImNvbHNwYW5cIiBmdW5jdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZ2VuZXJhdGVcbi8vIGdyaWQtYmFzZWQsIHBlcmNlbnRhZ2Ugd2lkdGggdmFsdWVzLCBkZXJpdmVkIGZyb20gdGhlXG4vLyBwcm9wb3J0aW9uYWwgd2lkdGggdmFyaWFibGVzIHdob3NlIGN1c3RvbWl6YWJsZSB2YWx1ZXMgYXJlXG4vLyBkZWZpbmVkIGF0IHRoZSB0b3Agb2YgXCJtYWluLnNjc3NcIi5cbi8vXG4vLyBFWEFNUExFOiBGb3IgYSB3aWR0aCBzcGFubmluZyA2IG9mIDEyIGNvbHVtbnMuLi5cbi8vXG4vLyB3aWR0aDogY29sc3Bhbig2LDEyKTtcbi8vXG4vLyAuLi5jb21waWxlcyB0byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuLy9cbi8vIHdpZHRoOiA0OC44MjAzMyU7XG5cbiRjb2xzcGFuLWxlc3NvbjogXCJBICdjb2xzcGFuJyBmdW5jdGlvbiBjYWxsIG11c3QgaW5jbHVkZSB0aGUgdW5pdGxlc3MgbnVtZXJpYyBjb2x1bW4gd2lkdGhzIG9mIGJvdGggdGhlIHRhcmdldCBhbmQgaXRzIGNvbnRhaW5lciwgZS5nLiAnY29sc3Bhbig0LDgpJy4gVGhlIHRhcmdldCB3aWR0aCBjYW4gYWxzbyBiZSBzcGVjaWZpZWQgYXMgJ3AnIChmb3IgJHBhZCB3aWR0aCkgb3IgJ2cnIChmb3IgJGd1dCB3aWR0aCkuXCI7XG5cbkBmdW5jdGlvbiBjb2xzcGFuKCR0YXJnZXQ6bnVsbCwkY29udGFpbmVyOm51bGwpIHtcblxuXHRAaWYgJHRhcmdldFxuXHRcdGFuZCAkY29udGFpbmVyIHtcblxuXHRcdEBpZiAkdGFyZ2V0ID09IFwibVwiXG5cdFx0XHRhbmQgKHR5cGUtb2YoJGNvbnRhaW5lcikgPT0gXCJudW1iZXJcIiBhbmQgdW5pdGxlc3MoJGNvbnRhaW5lcikgPT0gdHJ1ZSkge1xuXG5cdFx0XHRAcmV0dXJuIHBlcmNlbnRhZ2UoJG1hciAvICh3aWR0aCgkY29udGFpbmVyKSArICgkbWFyICogMikpKTtcblx0XHR9XG5cblx0XHRAaWYgJHRhcmdldCA9PSBcInBcIlxuXHRcdFx0YW5kICh0eXBlLW9mKCRjb250YWluZXIpID09IFwibnVtYmVyXCIgYW5kIHVuaXRsZXNzKCRjb250YWluZXIpID09IHRydWUpIHtcblxuXHRcdFx0QHJldHVybiBwZXJjZW50YWdlKCRwYWQgLyB3aWR0aCgkY29udGFpbmVyKSk7XG5cdFx0fVxuXG5cdFx0QGlmICR0YXJnZXQgPT0gXCJnXCJcblx0XHRcdGFuZCAodHlwZS1vZigkY29udGFpbmVyKSA9PSBcIm51bWJlclwiIGFuZCB1bml0bGVzcygkY29udGFpbmVyKSA9PSB0cnVlKSB7XG5cblx0XHRcdEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0IC8gd2lkdGgoJGNvbnRhaW5lcikpO1xuXHRcdH1cblxuXHRcdEBpZiAodHlwZS1vZigkdGFyZ2V0KSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCR0YXJnZXQpID09IGZhbHNlKVxuXHRcdFx0YW5kICh0eXBlLW9mKCRjb250YWluZXIpICE9IFwibnVtYmVyXCIgb3IgdW5pdGxlc3MoJGNvbnRhaW5lcikgPT0gZmFsc2UpXG5cdFx0XHRhbmQgJHRhcmdldCAhPSBcIm1cIlxuXHRcdFx0YW5kICR0YXJnZXQgIT0gXCJwXCJcblx0XHRcdGFuZCAkdGFyZ2V0ICE9IFwiZ1wiIHtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImNvbHNwYW5cIiwkdGFyZ2V0LCRjb250YWluZXIpICsgd3JvbmctdHlwZShcInVuaXRsZXNzIG51bWJlclwiLCR0YXJnZXQsJGNvbnRhaW5lcikgKyBcIi4gXCIgKyAkY29sc3Bhbi1sZXNzb247XG5cdFx0XHRAcmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdEBpZiAodHlwZS1vZigkdGFyZ2V0KSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCR0YXJnZXQpID09IGZhbHNlKVxuXHRcdFx0YW5kICh0eXBlLW9mKCRjb250YWluZXIpID09IFwibnVtYmVyXCIgYW5kIHVuaXRsZXNzKCRjb250YWluZXIpID09IHRydWUpIHtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImNvbHNwYW5cIiwkdGFyZ2V0LCRjb250YWluZXIpICsgd3JvbmctdHlwZShcInVuaXRsZXNzIG51bWJlclwiLCR0YXJnZXQpICsgXCIuIFwiICsgJGNvbHNwYW4tbGVzc29uO1xuXHRcdFx0QHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRAaWYgKCh0eXBlLW9mKCR0YXJnZXQpID09IFwibnVtYmVyXCIgYW5kIHVuaXRsZXNzKCR0YXJnZXQpID09IHRydWUpIGFuZCAodHlwZS1vZigkY29udGFpbmVyKSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCRjb250YWluZXIpID09IGZhbHNlKSlcblx0XHRcdG9yICgkdGFyZ2V0ID09IFwibVwiIGFuZCAodHlwZS1vZigkY29udGFpbmVyKSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCRjb250YWluZXIpID09IGZhbHNlKSlcblx0XHRcdG9yICgkdGFyZ2V0ID09IFwicFwiIGFuZCAodHlwZS1vZigkY29udGFpbmVyKSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCRjb250YWluZXIpID09IGZhbHNlKSlcblx0XHRcdG9yICgkdGFyZ2V0ID09IFwiZ1wiIGFuZCAodHlwZS1vZigkY29udGFpbmVyKSAhPSBcIm51bWJlclwiIG9yIHVuaXRsZXNzKCRjb250YWluZXIpID09IGZhbHNlKSkge1xuXG5cdFx0XHRAd2FybiBpbnZhbGlkKFwiY29sc3BhblwiLCR0YXJnZXQsJGNvbnRhaW5lcikgKyB3cm9uZy10eXBlKFwidW5pdGxlc3MgbnVtYmVyXCIsJGNvbnRhaW5lcikgKyBcIi4gXCIgKyAkY29sc3Bhbi1sZXNzb247XG5cdFx0XHRAcmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkdGFyZ2V0XG5cdFx0YW5kIG5vdCAkY29udGFpbmVyIHtcblxuXHRcdEBpZiAodHlwZS1vZigkdGFyZ2V0KSA9PSBcIm51bWJlclwiIGFuZCB1bml0bGVzcygkdGFyZ2V0KSA9PSB0cnVlKSB7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoY29sc3BhbiwkdGFyZ2V0KSArIG1pc3NpbmcoMSkgKyAkY29sc3Bhbi1sZXNzb247XG5cdFx0XHRAcmV0dXJuIGZhbHNlO1xuXHRcdH0gQGVsc2Uge1xuXG5cdFx0XHRAd2FybiBpbnZhbGlkKGNvbHNwYW4sJHRhcmdldCkgKyB3cm9uZy10eXBlKFwidW5pdGxlc3MgbnVtYmVyXCIsJHRhcmdldCkgKyBcIiwgYW5kIFwiICsgbWlzc2luZygxKSArICRjb2xzcGFuLWxlc3Nvbjtcblx0XHRcdEByZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0QGlmIG5vdCAkdGFyZ2V0IHtcblxuXHRcdEB3YXJuIGludmFsaWQoY29sc3BhbikgKyBtaXNzaW5nKDIpICsgJGNvbHNwYW4tbGVzc29uO1xuXHRcdEByZXR1cm4gZmFsc2U7XG5cdH0gQGVsc2Uge1xuXG5cdFx0QHJldHVybiBwZXJjZW50YWdlKHdpZHRoKCR0YXJnZXQpIC8gd2lkdGgoJGNvbnRhaW5lcikpO1xuXHR9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTUlYSU5TXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGZ1bGwtd2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRoZSBcImZ1bGwtd2lkdGhcIiBtaXhpbiBhbGxvd3MgdGhlIHVzZXIgdG8gYnJlYWsgYW4gZWxlbWVudFxuLy8gb3V0IG9mIHRoZSBncmlkIGFuZCBpbnRvIHRoZSBtYXJnaW5zLCB0YWtpbmcgdXAgdGhlIGZ1bGxcbi8vIHdpZHRoIG9mIHRoZSB2aWV3cG9ydC5cblxuQG1peGluIGZ1bGwtd2lkdGgge1xuXHR3aWR0aDogYXV0bztcblx0bWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBicmVha3BvaW50XG4vLyBicmVha3BvaW50LW1heFxuLy8gYnJlYWtwb2ludC1yYW5nZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlIHRocmVlIGZsYXZvcnMgb2YgdGhlIFwiYnJlYWtwb2ludFwiIG1peGluIGFsbG93IHRoZSB1c2VyXG4vLyB0byBnZW5lcmF0ZSB3aWR0aC1iYXNlZCBtZWRpYSBxdWVyaWVzIHVzaW5nIHRoZSBicmVha3BvaW50XG4vLyBuYW1lcyBhbmQgdmFsdWVzIGRlZmluZWQgaW4gdGhlICRicmVha3BvaW50cyBtYXAgaW5cbi8vIG1haW4uc2Nzcy5cblxuJHZhbGlkLWJwLW5hbWVzOiBcIkN1cnJlbnQgdmFsaWQgYnJlYWtwb2ludCBuYW1lczogXCIgKyBtYXAta2V5cygkYnJlYWtwb2ludHMpICsgXCIuXCI7XG4kYnAtbWluLWxlc3NvbjogXCJBICdicmVha3BvaW50LW1pbicgbWl4aW4gY2FsbCBtdXN0IGNvbnRhaW4gYSB2YWxpZCBicmVha3BvaW50IG5hbWUsIGUuZy4gJ2JyZWFrcG9pbnQtbWluKHNtYWxsKScuIFwiICsgJHZhbGlkLWJwLW5hbWVzO1xuJGJwLW1heC1sZXNzb246IFwiQSAnYnJlYWtwb2ludC1tYXgnIG1peGluIGNhbGwgbXVzdCBjb250YWluIGEgdmFsaWQgYnJlYWtwb2ludCBuYW1lLCBlLmcuICdicmVha3BvaW50LW1heChsYXJnZSknLiBcIiArICR2YWxpZC1icC1uYW1lcztcbiRicC1yYW5nZS1sZXNzb246IFwiQSAnYnJlYWtwb2ludC1yYW5nZScgbWl4aW4gY2FsbCBtdXN0IGNvbnRhaW4gdmFsaWQgbWluaW11bSBhbmQgbWF4aW11bSBicmVha3BvaW50IG5hbWVzLCBlLmcuICdicmVha3BvaW50LXJhbmdlKHNtYWxsLGxhcmdlKScuIFwiICsgJHZhbGlkLWJwLW5hbWVzO1xuXG4vLyBAaW5jbHVkZSBicmVha3BvaW50LW1pbihsZykgeyAuLi4gfVxuLy9cbi8vIC4uLmNvbXBpbGVzIHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkgeyAuLi4gfVxuXG5AbWl4aW4gYnJlYWtwb2ludC1taW4oJGJwOm51bGwpIHtcblx0JGFsbC1pcy13ZWxsOiB0cnVlO1xuXG5cdEBpZiAkYnAge1xuXG5cdFx0QGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuXHRcdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtbWluXCIsJGJwKSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnApICsgXCIuIFwiICsgJGJwLW1pbi1sZXNzb247XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtbWluXCIpICsgbWlzc2luZygxKSArICRicC1taW4tbGVzc29uO1xuXHR9XG5cblx0QGlmICRhbGwtaXMtd2VsbCA9PSB0cnVlIHtcblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IGJwLWF0dHJpYnV0ZSgkYnAsIG1pbi13aWR0aCkpIHtcblx0XHRcdEBjb250ZW50O1xuXHRcdH1cblx0fVxufVxuXG4vLyBAaW5jbHVkZSBicmVha3BvaW50LW1heChsZykgeyAuLi4gfVxuLy9cbi8vIC4uLmNvbXBpbGVzIHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTBlbSkgeyAuLi4gfVxuXG5AbWl4aW4gYnJlYWtwb2ludC1tYXgoJGJwOm51bGwpIHtcblx0JGFsbC1pcy13ZWxsOiB0cnVlO1xuXG5cdEBpZiAkYnAge1xuXG5cdFx0QGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicCkge1xuXHRcdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtbWF4XCIsJGJwKSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnApICsgXCIuIFwiICsgJGJwLW1pbi1sZXNzb247XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtbWF4XCIpICsgbWlzc2luZygxKSArICRicC1taW4tbGVzc29uO1xuXHR9XG5cblx0QGlmICRhbGwtaXMtd2VsbCA9PSB0cnVlIHtcblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IGJwLWF0dHJpYnV0ZSgkYnAsIG1pbi13aWR0aCkpIHtcblx0XHRcdEBjb250ZW50O1xuXHRcdH1cblx0fVxufVxuXG4vLyBAaW5jbHVkZSBicmVha3BvaW50LXJhbmdlKG1kLCBsZykgeyAuLi4gfVxuLy9cbi8vIC4uLmNvbXBpbGVzIHRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4vL1xuLy8gQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDBlbSkgYW5kIChtYXgtd2lkdGg6IDUwZW0pIHsgLi4uIH1cblxuQG1peGluIGJyZWFrcG9pbnQtcmFuZ2UoJGJwLW1pbjpudWxsLCAkYnAtbWF4Om51bGwpIHtcblx0JGFsbC1pcy13ZWxsOiB0cnVlO1xuXG5cdEBpZiAkYnAtbWluXG5cdFx0YW5kICRicC1tYXgge1xuXG5cdFx0QGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicC1taW4pXG5cdFx0XHRhbmQgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwLW1heCkge1xuXHRcdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtcmFuZ2VcIiwkYnAtbWluLCRicC1tYXgpICsgd3JvbmctdHlwZShcInZhbGlkIGJyZWFrcG9pbnQgbmFtZVwiLCRicC1taW4sJGJwLW1heCkgKyBcIi4gXCIgKyAkYnAtcmFuZ2UtbGVzc29uO1xuXHRcdH1cblxuXHRcdEBpZiBub3QgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnAtbWluKVxuXHRcdFx0YW5kIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwLW1heCkge1xuXHRcdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtcmFuZ2VcIiwkYnAtbWluLCRicC1tYXgpICsgd3JvbmctdHlwZShcInZhbGlkIGJyZWFrcG9pbnQgbmFtZVwiLCRicC1taW4pICsgXCIuIFwiICsgJGJwLXJhbmdlLWxlc3Nvbjtcblx0XHR9XG5cblx0XHRAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnAtbWluKVxuXHRcdFx0YW5kIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRicC1tYXgpIHtcblx0XHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LXJhbmdlXCIsJGJwLW1pbiwkYnAtbWF4KSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnAtbWF4KSArIFwiLiBcIiArICRicC1yYW5nZS1sZXNzb247XG5cdFx0fVxuXHR9XG5cblx0QGlmICRicC1taW5cblx0XHRhbmQgbm90ICRicC1tYXgge1xuXHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkYnAtbWluKSB7XG5cblx0XHRcdEB3YXJuIGludmFsaWQoXCJicmVha3BvaW50LXJhbmdlXCIsJGJwLW1pbikgKyBtaXNzaW5nKDEpICsgJGJwLXJhbmdlLWxlc3Nvbjtcblx0XHR9IEBlbHNlIHtcblxuXHRcdFx0QHdhcm4gaW52YWxpZChcImJyZWFrcG9pbnQtcmFuZ2VcIiwkYnAtbWluKSArIHdyb25nLXR5cGUoXCJ2YWxpZCBicmVha3BvaW50IG5hbWVcIiwkYnAtbWluKSArIFwiLCBhbmQgXCIgKyBtaXNzaW5nKDEpICsgJGJwLXJhbmdlLWxlc3Nvbjtcblx0XHR9XG5cdH1cblxuXHRAaWYgbm90ICRicC1taW4ge1xuXHRcdCRhbGwtaXMtd2VsbDogZmFsc2U7XG5cblx0XHRAd2FybiBpbnZhbGlkKFwiYnJlYWtwb2ludC1yYW5nZVwiKSArIG1pc3NpbmcoMikgKyAkYnAtcmFuZ2UtbGVzc29uO1xuXHR9XG5cblx0QGlmICRhbGwtaXMtd2VsbCA9PSB0cnVlIHtcblxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IGJwLWF0dHJpYnV0ZSgkYnAtbWluLCBtaW4td2lkdGgpKSBhbmQgKG1heC13aWR0aDogYnAtYXR0cmlidXRlKCRicC1tYXgsIG1pbi13aWR0aCkpIHtcblx0XHRcdEBjb250ZW50O1xuXHRcdH1cblx0fVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBncmlkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGUgXCJncmlkXCIgbWl4aW4gYWxsb3dzIHRoZSB1c2VyIHRvIGlkZW50aWZ5IHRoZSBjbGFzcyBvZlxuLy8gdGhlIHByaW1hcnkgY29udGFpbmluZyBlbGVtZW50IGluIHdoaWNoIHRoZWlyIGdyaWQtYWxpZ25lZFxuLy8gY29udGVudCBsaXZlcy4gVGhlIG1peGluIHVzZXMgYWxsIG9mIHRoZSBpbmZvIGZyb20gdGhlXG4vLyBwcm9wb3J0aW9uYWwgd2lkdGggYW5kIGJyZWFrcG9pbnQgdmFyaWFibGVzIGRlZmluZWQgYXQgdGhlXG4vLyB0b3Agb2YgXCJtYWluLnNjc3NcIiB0byBzcGVjaWZ5IGFwcHJvcHJpYXRlIG1hcmdpbiB3aWR0aHMgZm9yXG4vLyB0aGUgZ3JpZCBjb250YWluZXIgYXQgZWFjaCBicmVha3BvaW50LiBPcHRpb25hbGx5IGluY2x1ZGluZ1xuLy8gXCJvdmVybGF5XCIgYXMgYSBzZWNvbmQgYXJndW1lbnQgd2lsbCBhZGQgYSB0cmFuc2x1Y2VudCBncmlkXG4vLyBvdmVybGF5IG9uIHRvcCBvZiB0aGUgZ3JpZCBjb250YWluZXIgd2hpY2ggY2FuIGJlIHVzZWQgaW5cbi8vIHByb2R1Y3Rpb24gdG8gZW5zdXJlIHRoYXQgeW91ciBkZXNpZ24gaXMgYWxpZ25pbmcgdG8gdGhlXG4vLyBncmlkIGFzIGludGVuZGVkLlxuLy9cbi8vIEVYQU1QTEU6IElmIFwibWFpbi5zY3NzXCIgZGVmaW5lcyB0d28gYnJlYWtwb2ludHMgYW5kIHRoZVxuLy8gcHJpbWFyeSBncmlkIGNvbnRhaW5lciBoYXMgYSBjbGFzcyBvZiBcImNvbnRlbnRcIi4uLlxuLy9cbi8vIEBpbmNsdWRlIGdyaWQoY29udGVudCk7XG4vL1xuLy8gLi4uY29tcGlsZXMgdG8gc29tZXRoaW5nIGxpa2UgdGhpczpcbi8vXG4vLyBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwKSB7XG4vLyAgIC5jb250ZW50IHtcbi8vICAgICBtYXJnaW46IDAgMy4zODYzOCU7XG4vLyAgIH1cbi8vIH1cbi8vIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pIHtcbi8vICAgLmNvbnRlbnQge1xuLy8gICAgIG1hcmdpbjogMCA0LjM2MTk0JTtcbi8vICAgfVxuLy8gfVxuXG4kZ3JpZC1sZXNzb246IFwiQSAnZ3JpZCcgbWl4aW4gY2FsbCBtdXN0IGluY2x1ZGUgYSB2YWxpZCBjbGFzcyBuYW1lLCBlLmcuICdncmlkKGNvbnRlbnQpOycuIEl0IG1heSBvcHRpb25hbGx5IGluY2x1ZGUgYSBzZWNvbmQgYXJndW1lbnQgb2YgJ292ZXJsYXknIChlLmcuICdncmlkKGNvbnRlbnQsb3ZlcmxheSk7JykgdG8gY3JlYXRlIGEgdHJhbnNsdWNlbnQgZ3JpZCBvdmVybGF5IG9uIHRvcCBvZiB0aGUgZ3JpZCBjb250YWluZXIuXCI7XG5cbkBtaXhpbiBncmlkKCRjbGFzczpudWxsLCAkb3ZlcmxheTpudWxsKSB7XG5cdCRhbGwtaXMtd2VsbDogdHJ1ZTtcblxuXHRAaWYgbm90ICRjbGFzcyB7XG5cdFx0JGFsbC1pcy13ZWxsOiBmYWxzZTtcblxuXHRcdEB3YXJuIGludmFsaWQoXCJncmlkXCIpICsgbWlzc2luZygxKSArICRncmlkLWxlc3Nvbjtcblx0fVxuXG5cdEBpZiAkb3ZlcmxheSAhPSBcIm92ZXJsYXlcIlxuXHRcdGFuZCAkb3ZlcmxheSAhPSBudWxsIHtcblx0XHQkYWxsLWlzLXdlbGw6IGZhbHNlO1xuXG5cdFx0QHdhcm4gaW52YWxpZChcImdyaWRcIiwkY2xhc3MsJG92ZXJsYXkpICsgb3B0aW9uYWwoXCJzZWNvbmRcIiwkb3ZlcmxheSxcIm92ZXJsYXlcIikgKyAkZ3JpZC1sZXNzb247XG5cdH1cblxuXHRAaWYgJGFsbC1pcy13ZWxsID09IHRydWUge1xuXG5cdFx0LiN7JGNsYXNzfSB7XG5cblx0XHRcdEBlYWNoICRicCwgJHZhbHVlIGluICRicmVha3BvaW50cyB7XG5cblx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludC1taW4oJGJwKSB7XG5cblx0XHRcdFx0XHRAaWYgbWFwLWhhcy1rZXkobWFwLWdldCgkYnJlYWtwb2ludHMsICRicCksIG1hcmdpbikge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwIGNvbHNwYW4oYnAtYXR0cmlidXRlKCRicCwgbWFyZ2luKSwgd2lkdGgoYnAtYXR0cmlidXRlKCRicCwgY29scykpICsgKGJwLWF0dHJpYnV0ZSgkYnAsIG1hcmdpbikgKiAyKSk7XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHRtYXJnaW46IDAgY29sc3BhbihtLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIHRoZXJlIGlzIGEgbWF4LXdpZHRoLFxuXHRcdFx0Ly8gY3JlYXRlIGEgYnJlYWtwb2ludCB3aXRoIGEgbWluLXdpZHRoIGVxdWFsIHRvOlxuXHRcdFx0Ly8gKCgobWFyIC8gd2lkdGgpICogbWF4LXdpZHRoKSAqIDIpICsgbWF4LXdpZHRoXG5cblx0XHRcdEBpZiAkbWF4LXdpZHRoIHtcblx0XHRcdFx0bWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuXHRcdFx0XHQkYnAtZmluYWw6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAtMSk7IC8vIE5hbWUgb2YgdGhlIHdpZGVzdCBicmVha3BvaW50XG5cblx0XHRcdFx0QGlmIG1hcC1oYXMta2V5KG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnAtZmluYWwpLCBtYXJnaW4pIHtcblxuXHRcdFx0XHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICgoKChicC1hdHRyaWJ1dGUoJGJwLWZpbmFsLCBtYXJnaW4pIC8gd2lkdGgoYnAtYXR0cmlidXRlKCRicC1maW5hbCwgY29scykpKSAqICRtYXgtd2lkdGgpICogMikgKyAkbWF4LXdpZHRoKSkge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IEBlbHNlIHtcblxuXHRcdFx0XHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICgoKCgkbWFyIC8gd2lkdGgoYnAtYXR0cmlidXRlKCRicC1maW5hbCwgY29scykpKSAqICRtYXgtd2lkdGgpICogMikgKyAkbWF4LXdpZHRoKSkge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAkb3ZlcmxheSA9PSBvdmVybGF5IHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHQkZ2M6IHJnYmEoJGdyaWQtY29sb3IsIDAuMSk7XG5cdFx0XHRcdCRncDogcmdiYSgkZ3JpZC1jb2xvciwgMC4yKTtcblx0XHRcdFx0JGdnOiByZ2JhKCRncmlkLWNvbG9yLCAwKTtcblxuXHRcdFx0XHQmOjpiZWZvcmUge1xuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdHRvcDogMDtcblx0XHRcdFx0XHRsZWZ0OiAwO1xuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdFx0XHR6LWluZGV4OiAxMDA7XG5cdFx0XHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0XHRcdFx0XHRAZWFjaCAkYnAsICR2YWx1ZSBpbiAkYnJlYWtwb2ludHMge1xuXG5cdFx0XHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50LW1pbigkYnApIHtcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJGdwLCAkZ3AgY29sc3BhbihwLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSksICRnYyBjb2xzcGFuKHAsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSwgJGdjIGNvbHNwYW4oMSwgYnAtYXR0cmlidXRlKCRicCwgY29scykpIC0gY29sc3BhbihwLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSksICRncCBjb2xzcGFuKDEsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSAtIGNvbHNwYW4ocCwgYnAtYXR0cmlidXRlKCRicCwgY29scykpLCAkZ3AgY29sc3BhbigxLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSksICRnZyBjb2xzcGFuKDEsIGJwLWF0dHJpYnV0ZSgkYnAsIGNvbHMpKSwgJGdnIGNvbHNwYW4oMSwgYnAtYXR0cmlidXRlKCRicCwgY29scykpICsgY29sc3BhbihnLCBicC1hdHRyaWJ1dGUoJGJwLCBjb2xzKSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIixudWxsXX0= */
