.klaro h1,.klaro .h1,.klaro .cookie-modal .cm-modal.cm-klaro .cm-header .title span{margin-top:0;font-family:"Land Rover Wide";text-transform:uppercase;font-size:1.625rem;line-height:1.625rem;letter-spacing:.03125rem;color:#000}@media print,screen and (min-width: 40em){.klaro h1,.klaro .h1,.klaro .cookie-modal .cm-modal.cm-klaro .cm-header .title span{font-size:2.375rem;line-height:2.375rem}}.klaro h4,.klaro .h4,.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label{font-family:"Land Rover Wide";text-transform:uppercase;font-size:.9375rem;line-height:.9375rem;letter-spacing:.03125rem;color:#000}@media print,screen and (min-width: 40em){.klaro h4,.klaro .h4,.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label{font-size:1rem;line-height:1rem}}.klaro p{font-size:.875rem;line-height:1.1875rem;letter-spacing:.0125rem}.klaro ul{display:block}.klaro .hide{display:none}.klaro .textlink,.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a{position:relative;display:inline-block;text-decoration:none;text-transform:uppercase;font-family:"Land Rover Wide";font-size:.625rem;line-height:.875rem;letter-spacing:.1875rem;color:#000;padding-left:15px;margin-bottom:20px}.klaro .textlink:before,.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a:before{content:"";background-image:url("icn-arrow-textlink.svg");background-repeat:no-repeat;background-size:6px 10px;width:6px;height:10px;display:inline-block;position:absolute;left:0;top:50%;margin:0;transform:translateY(-50%);margin-top:1px}.klaro .cookie-modal{width:100%;height:100%;position:fixed;overflow:hidden;left:0;top:0;z-index:2147483647}.klaro .cookie-modal .cm-bg{background:rgba(0,0,0,.65);height:100%;width:100%;position:fixed;top:0;left:0}.klaro .cookie-modal .cm-btn{display:block;width:100%;border-radius:0;transition:background-color .25s ease-out,color .25s ease-out;-webkit-appearance:none;text-align:center;cursor:pointer;text-decoration:none;text-transform:uppercase;font-size:.625rem;line-height:.875rem;letter-spacing:.1875rem;padding:.9375rem 1.5625rem .9375rem 1.5625rem;margin-bottom:0;white-space:nowrap;background-color:#000;color:#fff;border:1px solid #000}@media print,screen and (min-width: 40em){.klaro .cookie-modal .cm-btn{display:inline-block;width:auto}}.klaro .cookie-modal .cm-btn:hover{color:#000;background-color:transparent;border-color:#000}.klaro .cookie-modal .cookie-notice{background-color:#fff;color:#e9ecec;z-index:1001;margin-left:15px;margin-right:15px;width:calc(100% - 30px);max-height:calc(100% - 30px);top:50%;transform:translateY(-50%);position:fixed;overflow:auto}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cookie-notice{position:relative;margin:0 auto;max-width:900px;height:auto;width:auto;max-height:98%}}.klaro .cookie-modal .cookie-notice .cn-body{padding:30px 16px}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cookie-notice .cn-body{padding:60px 30px 30px}}.klaro .cookie-modal .cookie-notice .cn-body .cn-ok,.klaro .cookie-modal .cookie-notice .cn-body .cn-buttons{display:flex;flex-wrap:wrap;gap:10px 15px;justify-content:center;align-items:center}@media print,screen and (min-width: 40em){.klaro .cookie-modal .cookie-notice .cn-body .cn-ok,.klaro .cookie-modal .cookie-notice .cn-body .cn-buttons{justify-content:flex-end;align-items:flex-start}}.klaro .cookie-modal .cookie-notice .cn-body .cn-ok{padding-top:20px}.klaro .cookie-modal .cookie-notice .cn-body .cn-buttons{width:100%;order:-1}@media print,screen and (min-width: 40em){.klaro .cookie-modal .cookie-notice .cn-body .cn-buttons{width:auto;order:1}}.klaro .cookie-modal .cookie-notice .cn-body .cn-buttons .cn-decline{display:none}.klaro .cookie-modal .cm-modal.cm-klaro{background-color:#fff;color:#e9ecec;z-index:1001;margin-left:15px;margin-right:15px;width:calc(100% - 30px);max-height:calc(100% - 30px);top:50%;transform:translateY(-50%);position:fixed;overflow:auto}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cm-modal.cm-klaro{position:relative;margin:0 auto;max-width:900px;height:auto;width:auto;max-height:98%}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-footer-buttons{display:flex;flex-wrap:wrap;gap:10px 15px;justify-content:center;align-items:center}@media print,screen and (min-width: 40em){.klaro .cookie-modal .cm-modal.cm-klaro .cm-footer-buttons{justify-content:flex-end;align-items:flex-start}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-header{padding:25px 16px 20px 16px}@media print,screen and (min-width: 768px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-header{padding-top:45px}}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cm-modal.cm-klaro .cm-header{padding:60px 30px 30px 30px}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-header .title span{font-size:1.6875rem;line-height:2.0625rem;letter-spacing:calc(20px / 1000)}.klaro .cookie-modal .cm-modal.cm-klaro .cm-header p:last-child{margin-bottom:0}.klaro .cookie-modal .cm-modal.cm-klaro .cm-footer{padding:30px 16px}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cm-modal.cm-klaro .cm-footer{padding:30px}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body{padding:25px 16px}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-body{padding-right:60px}}@media print,screen and (min-width: 64em){.klaro .cookie-modal .cm-modal.cm-klaro .cm-body{padding:25px 60px 25px 30px}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes{margin:0;padding:0}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes li:before{display:none}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes>li{padding-left:0;position:relative}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes>li{padding-left:9.25rem}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes>li+li{margin-top:2.8125rem}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-list-description span,.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .purposes{margin-bottom:0;font-size:.6875rem;line-height:1.1875rem;letter-spacing:calc(16px / 1000)}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-list-description{margin-top:.625rem;margin-bottom:0}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-list-description+.purposes{margin-top:.3125rem}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .purposes{display:none;margin-top:.125rem}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services{margin-top:.8125rem}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a{letter-spacing:calc(120px / 100);margin:0}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a span{display:none}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a:hover{color:#005a2b}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a:before{margin-right:5px;transition:all .25s ease-in-out}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a:after{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translate3d(0, 0, 0)}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a.active{color:#005a2b}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a.active:before{transform:translateY(-50%) rotate(90deg)}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-caret a.active:after{content:"";visibility:visible;position:absolute;bottom:-2px;left:15px;width:calc(100% - 15px);height:1px;background-color:#005a2b;opacity:1}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content{margin-top:1.25rem;margin-left:0;margin-bottom:60px;padding-left:15px;display:none}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content{padding-left:0;margin-top:2.5rem;margin-bottom:0}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content.expanded{display:block}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content li{padding-left:0;position:relative}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content li{padding-left:9.25rem}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-services .cm-content li+li{margin-top:1.875rem}.klaro .cookie-modal .cm-modal.cm-klaro .cm-body .cm-purposes .cm-toggle-all{display:none}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label{margin:0;padding-right:138px;min-height:25px;width:100%;text-transform:uppercase;font-size:.9375rem;line-height:.9375rem;letter-spacing:.03125rem;color:#000}@media print,screen and (min-width: 40em){.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label{font-size:1rem;line-height:1rem}}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label{padding-right:0;min-height:inherit}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label .cm-list-title{color:#000;-webkit-hyphens:auto;hyphens:auto}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label .cm-list-title{-webkit-hyphens:none;hyphens:none}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label .cm-required{color:#000;display:block}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-label .cm-required{display:inline;margin-left:.4375rem}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch{position:absolute;right:120px;top:-5px}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch{left:0;top:0;right:inherit}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch .slider{pointer-events:none;background-color:#e9ecec;letter-spacing:.0625rem;font-size:.625rem;position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;transition:.4s;width:118px;height:30px;display:inline-block}.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch .slider:before,.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch .slider:after{position:absolute;bottom:0;height:30px;width:59px;display:flex;align-items:center;justify-content:center;line-height:30px;color:#000;text-transform:uppercase}.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch .slider:before{text-decoration:none;color:#000;right:0;transition:all .4s ease;transform:translateX(0);transform:translateZ(0);box-shadow:rgba(0,0,0,.15) 0px 2px 6px,rgba(0,0,0,.15) 0px 2px 6px;background-color:#fff;content:"Off";z-index:1}.klaro .cookie-modal .cm-modal.cm-klaro .cm-switch .slider:after{left:0;content:"On"}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input{position:absolute;top:-5px;right:0;opacity:0 !important;width:118px;height:30px;background:transparent}@media print,screen and (min-width: 640px){.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input{left:0;right:inherit;top:0}}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:checked+.cm-list-label .slider::before{transform:translateX(-59px);content:"On";text-decoration:underline}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:checked+.cm-list-label .slider::after{transform:translateX(59px);content:"Off"}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:hover{cursor:pointer}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:hover+.cm-list-label .slider{background-color:#000;color:#fff}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:hover+.cm-list-label .slider:after{color:#fff;text-decoration:underline}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input:hover+.cm-list-label .slider:before{text-decoration:none}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required:hover{cursor:not-allowed}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required:hover+.cm-list-label .slider{transition:none;background-color:#e9ecec;color:#000}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required:hover+.cm-list-label .slider:after{color:#000;text-decoration:none}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required+.cm-list-label .cm-switch{opacity:.3}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required+.cm-list-label .slider{cursor:not-allowed}.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required:checked+.cm-list-label .slider::before,.klaro .cookie-modal .cm-modal.cm-klaro .cm-list-input.required.half-checked+.cm-list-label .slider::before{text-decoration:underline;background-color:#fff;color:#000}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtsYXJvLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX2JyZWFrcG9pbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTRSxvRkFFRSxZQUFBLENBQ0EsNkJBQUEsQ0FDQSx3QkFBQSxDQUNBLGtCQUFBLENBQ0Esb0JBQUEsQ0FDQSx3QkFBQSxDQUNBLFVBZkksQ0NpTEEsMENEMUtOLG9GQVVJLGtCQUFBLENBQ0Esb0JBQUEsQ0FBQSxDQUlKLDRFQUVFLDZCQUFBLENBQ0Esd0JBQUEsQ0FDQSxrQkFBQSxDQUNBLG9CQUFBLENBQ0Esd0JBQUEsQ0FDQSxVQTdCSSxDQ2lMQSwwQ0QzSk4sNEVBU0ksY0FBQSxDQUNBLGdCQUFBLENBQUEsQ0FJSixTQUNFLGlCQUFBLENBQ0EscUJBQUEsQ0FDQSx1QkFBQSxDQUdGLFVBQ0UsYUFBQSxDQUdGLGFBQ0UsWUFBQSxDQUdGLHdHQUNFLGlCQUFBLENBQ0Esb0JBQUEsQ0FDQSxvQkFBQSxDQUNBLHdCQUFBLENBQ0EsNkJBQUEsQ0FDQSxpQkFBQSxDQUNBLG1CQUFBLENBQ0EsdUJBQUEsQ0FDQSxVQTNESSxDQTRESixpQkFBQSxDQUNBLGtCQUFBLENBRUEsc0hBQ0UsVUFBQSxDQUNBLDhDQUFBLENBQ0EsMkJBQUEsQ0FDQSx3QkFBQSxDQUNBLFNBQUEsQ0FDQSxXQUFBLENBQ0Esb0JBQUEsQ0FDQSxpQkFBQSxDQUNBLE1BQUEsQ0FDQSxPQUFBLENBQ0EsUUFBQSxDQUNBLDBCQUFBLENBQ0EsY0FBQSxDQUlKLHFCQUNFLFVBQUEsQ0FDQSxXQUFBLENBQ0EsY0FBQSxDQUNBLGVBQUEsQ0FDQSxNQUFBLENBQ0EsS0FBQSxDQUNBLGtCQUFBLENBRUEsNEJBQ0UsMEJBQUEsQ0FDQSxXQUFBLENBQ0EsVUFBQSxDQUNBLGNBQUEsQ0FDQSxLQUFBLENBQ0EsTUFBQSxDQUdGLDZCQUNFLGFBQUEsQ0FDQSxVQUFBLENBUUEsZUFBQSxDQUNBLDZEQUFBLENBQ0EsdUJBQUEsQ0FD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QSxDQUNBLHVCQUFBLENBQ0Esa0VBQUEsQ0FHQSxxQkExZU4sQ0EyZU0sYUFBQSxDQUNBLFNBQUEsQ0FHRixpRUFDRSxNQUFBLENBQ0EsWUFBQSxDQUtOLHVEQUNFLGlCQUFBLENBQ0EsUUFBQSxDQUNBLE9BQUEsQ0FDQSxvQkFBQSxDQUNBLFdBQUEsQ0FDQSxXQUFBLENBQ0Esc0JBQUEsQ0FDQSwyQ0FSRix1REFVSSxNQUFBLENBQ0EsYUFBQSxDQUNBLEtBQUEsQ0FBQSxDQUtJLDhGQUNFLDJCQUFBLENBQ0EsWUFBQSxDQUNBLHlCQUFBLENBRUYsNkZBQ0UsMEJBQUEsQ0FDQSxhQUFBLENBS1IsNkRBQ0UsY0FBQSxDQUVFLG9GQUNFLHFCQXhoQlIsQ0F5aEJRLFVBeGhCUixDQXloQlEsMEZBQ0UsVUExaEJWLENBMmhCVSx5QkFBQSxDQUVGLDJGQUNFLG9CQUFBLENBTU4sc0VBQ0Usa0JBQUEsQ0FFRSw2RkFDRSxlQUFBLENBQ0Esd0JBdmlCTCxDQXdpQkssVUEzaUJWLENBNGlCVSxtR0FDRSxVQTdpQlosQ0E4aUJZLG9CQUFBLENBTU4sMEZBQ0UsVUFBQSxDQUVGLHVGQUNFLGtCQUFBLENBT0UsbU5BQ0UseUJBQUEsQ0FDQSxxQkFoa0JaLENBaWtCWSxVQWxrQloiLCJmaWxlIjoia2xhcm8uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcImZvdW5kYXRpb25cIjtcblxuJGJsYWNrOiAjMDAwMDAwO1xuJHdoaXRlOiAjZmZmZmZmO1xuJG1lZGl1bS1ncmF5OiAjZTllY2VjO1xuJGxpZ2h0LWdyYXk6ICNlOWVjZWM7XG4kcHJpbWFyeS1jb2xvcjogIzAwNWEyYjtcblxuLmtsYXJvIHtcbiAgaDEsXG4gIC5oMSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBmb250LWZhbWlseTogXCJMYW5kIFJvdmVyIFdpZGVcIjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjYpO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygyNik7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDAuNSk7XG4gICAgY29sb3I6ICRibGFjaztcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzOCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMzgpO1xuICAgIH1cbiAgfVxuXG4gIGg0LFxuICAuaDQge1xuICAgIGZvbnQtZmFtaWx5OiBcIkxhbmQgUm92ZXIgV2lkZVwiO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNSk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE1KTtcbiAgICBsZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoMC41KTtcbiAgICBjb2xvcjogJGJsYWNrO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE2KTtcbiAgICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNik7XG4gICAgfVxuICB9XG5cbiAgcCB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNCk7XG4gICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE5KTtcbiAgICBsZXR0ZXItc3BhY2luZzogcmVtLWNhbGMoMC4yKTtcbiAgfVxuXG4gIHVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxuXG4gIC5oaWRlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnRleHRsaW5rIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtZmFtaWx5OiBcIkxhbmQgUm92ZXIgV2lkZVwiO1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTApO1xuICAgIGxpbmUtaGVpZ2h0OiByZW0tY2FsYygxNCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDMpO1xuICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaWNuLWFycm93LXRleHRsaW5rLnN2Z1wiKTtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6IDZweCAxMHB4O1xuICAgICAgd2lkdGg6IDZweDtcbiAgICAgIGhlaWdodDogMTBweDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIG1hcmdpbi10b3A6IDFweDtcbiAgICB9XG4gIH1cblxuICAuY29va2llLW1vZGFsIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgei1pbmRleDogMjE0NzQ4MzY0NztcblxuICAgIC5jbS1iZyB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNjUpO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgIC5jbS1idG4ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgIC8vQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgfVxuXG4gICAgICAvLyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZS1vdXQsIGNvbG9yIDAuMjVzIGVhc2Utb3V0O1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMCk7XG4gICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTQpO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDMpO1xuICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTUgMjUgMTUgMjUpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrO1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJGJsYWNrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5jb29raWUtbm90aWNlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgICB6LWluZGV4OiAxMDAxO1xuICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCk7XG4gICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAzMHB4KTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC1oZWlnaHQ6IDk4JTtcbiAgICAgIH1cblxuICAgICAgLmNuLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAzMHB4IDE2cHg7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHtcbiAgICAgICAgICBwYWRkaW5nOiA2MHB4IDMwcHggMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jbi1vayxcbiAgICAgICAgLmNuLWJ1dHRvbnMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgIGdhcDogMTBweCAxNXB4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgLy8gQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jbi1vayB7XG4gICAgICAgICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY24tYnV0dG9ucyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgb3JkZXI6IC0xO1xuICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWVkaXVtKSB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIG9yZGVyOiAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5jbi1kZWNsaW5lIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNtLW1vZGFsIHtcbiAgICAgICYuY20ta2xhcm8ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgIGNvbG9yOiAkbWVkaXVtLWdyYXk7XG4gICAgICAgIHotaW5kZXg6IDEwMDE7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KTtcbiAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDAlIC0gMzBweCk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgICBtYXgtd2lkdGg6IDkwMHB4O1xuICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA5OCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY20tZm9vdGVyLWJ1dHRvbnMge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgIGdhcDogMTBweCAxNXB4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkge1xuICAgICAgICAgICAgLy8gQGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jbS1oZWFkZXIge1xuICAgICAgICAgIHBhZGRpbmc6IDI1cHggMTZweCAyMHB4IDE2cHg7XG5cbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA0NXB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA2MHB4IDMwcHggMzBweCAzMHB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC50aXRsZSB7XG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgQGV4dGVuZCAuaDE7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjcpO1xuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMzMpO1xuICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogY2FsYygyMHB4IC8gMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcCB7XG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jbS1mb290ZXIge1xuICAgICAgICAgIHBhZGRpbmc6IDMwcHggMTZweDtcbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAzMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jbS1ib2R5IHtcbiAgICAgICAgICBwYWRkaW5nOiAyNXB4IDE2cHg7XG5cbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgIC8vQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiA2MHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAyNXB4IDYwcHggMjVweCAzMHB4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5jbS1wdXJwb3NlcyB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPiBsaSB7XG4gICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgICAgICAvL0BtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogcmVtLWNhbGMoMTQ4KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICArIGxpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg0NSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNtLWxpc3QtZGVzY3JpcHRpb24gc3BhbixcbiAgICAgICAgICAgIC5wdXJwb3NlcyB7XG4gICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTEpO1xuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTkpO1xuICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogY2FsYygxNnB4IC8gMTAwMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jbS1saXN0LWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICArIC5wdXJwb3NlcyB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnB1cnBvc2VzIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jbS1zZXJ2aWNlcyB7XG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEzKTtcbiAgICAgICAgICAgICAgLmNtLWNhcmV0IHtcbiAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgIEBleHRlbmQgLnRleHRsaW5rO1xuICAgICAgICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IGNhbGMoMTIwcHggLyAxMDApO1xuICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkcHJpbWFyeS1jb2xvcjtcbiAgICAgICAgICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoOTBkZWcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAtMnB4O1xuICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IDE1cHg7XG4gICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE1cHgpO1xuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLmNtLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2MHB4O1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICAgICAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgICAgICAgIC8vQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG4gICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICYuZXhwYW5kZWQge1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NDBweCkge1xuICAgICAgICAgICAgICAgICAgICAvL0BtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDE0OCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICArIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMzApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLmNtLXRvZ2dsZS1hbGwge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vXG4gICAgICAgIC8vVE9HR0xFLVNMSURFUlxuICAgICAgICAvL1xuICAgICAgICAuY20tbGlzdC1sYWJlbCB7XG4gICAgICAgICAgQGV4dGVuZCAuaDQ7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEzOHB4O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDI1cHg7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE1KTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogcmVtLWNhbGMoMTUpO1xuICAgICAgICAgIGxldHRlci1zcGFjaW5nOiByZW0tY2FsYygwLjUpO1xuICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IHJlbS1jYWxjKDE2KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgIC8vQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWluLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuY20tbGlzdC10aXRsZSB7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuICAgICAgICAgICAgLW1zLWh5cGhlbnM6IGF1dG87XG4gICAgICAgICAgICBoeXBoZW5zOiBhdXRvO1xuICAgICAgICAgICAgQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY0MHB4KSB7XG4gICAgICAgICAgICAgIC13ZWJraXQtaHlwaGVuczogbm9uZTtcbiAgICAgICAgICAgICAgLW1zLWh5cGhlbnM6IG5vbmU7XG4gICAgICAgICAgICAgIGh5cGhlbnM6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC5jbS1yZXF1aXJlZCB7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogcmVtLWNhbGMoNyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNtLXN3aXRjaCB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiAxMjBweDtcbiAgICAgICAgICB0b3A6IC01cHg7XG5cbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgIC8vQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgcmlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsaWdodC1ncmF5O1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHJlbS1jYWxjKDEpO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxMCk7XG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IDAuNHM7XG4gICAgICAgICAgICB3aWR0aDogMTE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICAgICAgICAgICY6YmVmb3JlLFxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgICAgICBoZWlnaHQ6IDMwcHg7XG4gICAgICAgICAgICAgIHdpZHRoOiA1OXB4O1xuXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICAgICAgICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlO1xuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE1KSAwcHggMnB4IDZweCxcbiAgICAgICAgICAgICAgICByZ2JhKDAsIDAsIDAsIDAuMTUpIDBweCAycHggNnB4O1xuXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgICAgY29udGVudDogXCJPZmZcIjtcbiAgICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IFwiT25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY20tbGlzdC1pbnB1dCB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHRvcDogLTVweDtcbiAgICAgICAgICByaWdodDogMDtcbiAgICAgICAgICBvcGFjaXR5OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgd2lkdGg6IDExOHB4O1xuICAgICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjQwcHgpIHtcbiAgICAgICAgICAgIC8vQG1lZGlhIHByaW50LCBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgcmlnaHQ6IGluaGVyaXQ7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICArIC5jbS1saXN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTlweCk7XG4gICAgICAgICAgICAgICAgICBjb250ZW50OiBcIk9uXCI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDU5cHgpO1xuICAgICAgICAgICAgICAgICAgY29udGVudDogXCJPZmZcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICArIC5jbS1saXN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJi5yZXF1aXJlZCB7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgICAgKyAuY20tbGlzdC1sYWJlbCB7XG4gICAgICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0LWdyYXk7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJGJsYWNrO1xuICAgICAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICsgLmNtLWxpc3QtbGFiZWwge1xuICAgICAgICAgICAgICAuY20tc3dpdGNoIHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLnNsaWRlciB7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJjpjaGVja2VkLFxuICAgICAgICAgICAgJi5oYWxmLWNoZWNrZWQge1xuICAgICAgICAgICAgICArIC5jbS1saXN0LWxhYmVsIHtcbiAgICAgICAgICAgICAgICAuc2xpZGVyIHtcbiAgICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkYmxhY2s7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLyBGb3VuZGF0aW9uIGZvciBTaXRlc1xuLy8gaHR0cHM6Ly9nZXQuZm91bmRhdGlvblxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIFBhdGNoIHRvIGZpeCBpc3N1ZSAjMTIwODBcbiQtemYtc2l6ZTogbnVsbDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBcInNtYWxsXCI6IDAsXG4gIFwibWVkaXVtXCI6IDY0MHB4LFxuICBcImxhcmdlXCI6IDEwMjRweCxcbiAgXCJ4bGFyZ2VcIjogMTIwMHB4LFxuICBcInh4bGFyZ2VcIjogMTQ0MHB4LFxuKSAhZGVmYXVsdDtcblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBIaURQSSBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcyBmb3IgcmVzb2x1dGlvbnMuXG4vLy8gVmFsdWVzIG11c3QgcmVwcmVzZW50IHRoZSBkZXZpY2UgcGl4ZWxzIC8gd2ViIHBpeGVscyByYXRpb24gYW5kIGJlIHVuaXRsZXNzIG9yIGluIERQUFguXG4vLy8gQHR5cGUgTWFwXG4kYnJlYWtwb2ludHMtaGlkcGk6IChcbiAgXCJoaWRwaS0xXCI6IDEsXG4gIFwiaGlkcGktMS01XCI6IDEuNSxcbiAgXCJoaWRwaS0yXCI6IDIsXG4gIFwicmV0aW5hXCI6IDIsXG4gIFwiaGlkcGktM1wiOiAzXG4pICFkZWZhdWx0O1xuXG4vLy8gVGhlIGxhcmdlc3QgbmFtZWQgYnJlYWtwb2ludCBpbiB3aGljaCB0byBpbmNsdWRlIHByaW50IGFzIGEgbWVkaWEgdHlwZVxuLy8vIEB0eXBlIEtleXdvcmRcbiRwcmludC1icmVha3BvaW50OiBsYXJnZSAhZGVmYXVsdDtcblxuJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IHNtYWxsICFkZWZhdWx0O1xuXG4kLXpmLWJyZWFrcG9pbnRzLWtleXM6IG1hcC10by1saXN0KCRicmVha3BvaW50cywgJ2tleXMnKTtcblxuQGlmIG50aChtYXAtdmFsdWVzKCRicmVha3BvaW50cyksIDEpICE9IDAge1xuICBAZXJyb3IgJ1RoZSBmaXJzdCBrZXkgaW4gdGhlICRicmVha3BvaW50cyBtYXAgbXVzdCBoYXZlIGEgdmFsdWUgb2YgXCIwXCIuJztcbn1cbkBlbHNlIHtcbiAgJC16Zi16ZXJvLWJyZWFrcG9pbnQ6IG50aChtYXAta2V5cygkYnJlYWtwb2ludHMpLCAxKTtcbn1cblxuLy8vIEFsbCBvZiB0aGUgbmFtZXMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgb3V0cHV0IGFzIGNsYXNzZXMgaW4geW91ciBDU1MsIGxpa2UgYC5zbWFsbC0xMmAsIGAubWVkaXVtLTZgLCBhbmQgc28gb24uIEVhY2ggdmFsdWUgaW4gdGhpcyBsaXN0IG11c3QgYWxzbyBiZSBpbiB0aGUgYCRicmVha3BvaW50c2AgbWFwLlxuLy8vIEB0eXBlIExpc3RcbiRicmVha3BvaW50LWNsYXNzZXM6IChzbWFsbCBtZWRpdW0gbGFyZ2UpICFkZWZhdWx0O1xuXG4vLy8gR2VuZXJhdGVzIGEgbWVkaWEgcXVlcnkgc3RyaW5nIG1hdGNoaW5nIHRoZSBpbnB1dCB2YWx1ZS4gUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBgYnJlYWtwb2ludCgpYCBtaXhpbiB0byBzZWUgd2hhdCB0aGUgcG9zc2libGUgaW5wdXRzIGFyZS5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWwgW3NtYWxsXSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbkBmdW5jdGlvbiBicmVha3BvaW50KCR2YWw6ICQtemYtemVyby1icmVha3BvaW50KSB7XG4gIC8vIFdlYiBzdGFuZGFyZCBQaXhlbHMgcGVyIGluY2guICgxZGRweCAvICRzdGQtd2ViLWRwaSkgPSAxZHBpXG4gIC8vIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXZhbHVlcy0zLyNhYnNvbHV0ZS1sZW5ndGhzXG4gICRzdGQtd2ViLWRwaTogOTY7XG5cbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBvZiB0aGUgZm9sbG93aW5nIGJyZWFrcG9pbnRcbiAgJGJwLW5leHQ6IG51bGw7XG4gIC8vIFZhbHVlIGZvciBtYXgtd2lkdGggbWVkaWEgcXVlcmllc1xuICAkYnAtbWluOiBudWxsO1xuICAvLyBWYWx1ZSBmb3IgbWluLXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogbnVsbDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIElmIG5hbWVkLCBuYW1lIG9mIHRoZSBicmVha3BvaW50XG4gICRuYW1lOiBudWxsO1xuICAvLyBJZiB0aGUgYnJlYWtwb2ludCBpcyBhIEhpRFBJIGJyZWFrcG9pbnRcbiAgJGhpZHBpOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cblxuICAvLyBJZiBhIGJyZWFrcG9pbnQgbmFtZSBpcyBnaXZlbiwgZ2V0IGl0cyB2YWx1ZSBmcm9tIHRoZSAkYnJlYWtwb2ludHMvJGJyZWFrcG9pbnRzLWhpZHBpIG1hcC5cbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICAkbmFtZTogJGJwO1xuICAgICAgJGJwOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICAgICAgJGJwLW5leHQ6IC16Zi1tYXAtbmV4dCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLWhpZHBpLCAkYnApIHtcbiAgICAgICRuYW1lOiAkYnA7XG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLWhpZHBpLCAkbmFtZSk7XG4gICAgICAkYnAtbmV4dDogLXpmLW1hcC1uZXh0LW51bWJlcigkYnJlYWtwb2ludHMtaGlkcGksICRicCk7XG4gICAgICAkaGlkcGk6IHRydWU7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRicDogMDtcbiAgICAgIEB3YXJuICdicmVha3BvaW50KCk6IFwiI3skdmFsfVwiIGlzIG5vdCBkZWZpbmVkIGluIHlvdXIgYCRicmVha3BvaW50c2Agb3IgYCRicmVha3BvaW50cy1oaWRwaWAgc2V0dGluZy4nO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJG5hbWUgYW5kICRkaXIgPT0gJ29ubHknIHtcbiAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgQHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gT25seSAnb25seScgYW5kICd1cCcgaGF2ZSBhIG1pbiBsaW1pdC5cbiAgQGlmICRkaXIgPT0gJ29ubHknIG9yICRkaXIgPT0gJ3VwJyB7XG4gICAgJGJwLW1pbjogaWYoJGhpZHBpLCBzdHJpcC11bml0KCRicCksIC16Zi1icC10by1lbSgkYnApKTtcbiAgfVxuICAvLyBPbmx5ICdvbmx5JyBhbmQgJ2Rvd24nIGhhdmUgYSBtYXggbGltaXQuXG4gIEBpZiAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gSWYgdGhlIGJyZWFrcG9pbnQgaXMgYSB2YWx1ZSwgdXNlIGl0IGFzIG1heCBsaW1pdC5cbiAgICBAaWYgbm90ICRuYW1lIHtcbiAgICAgICRicC1tYXg6IGlmKCRoaWRwaSwgc3RyaXAtdW5pdCgkYnApLCAtemYtYnAtdG8tZW0oJGJwKSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBicmVha3BvaW50IGlzIG5hbWVkLCB0aGUgbWF4IGxpbWl0IGlzIHRoZSBmb2xsb3dpbmcgYnJlYWtwb2ludCAtIDFweC5cbiAgICBAZWxzZSBpZiAkYnAtbmV4dCB7XG4gICAgICAvLyBNYXggdmFsdWUgaXMgMC4ycHggdW5kZXIgdGhlIG5leHQgYnJlYWtwb2ludCAoMC4wMiAvIDE2ID0gMC4wMDEyNSkuXG4gICAgICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZm91bmRhdGlvbi9mb3VuZGF0aW9uLXNpdGVzL2lzc3Vlcy8xMTMxM1xuICAgICAgJGJwLW1heDogaWYoJGhpZHBpLCAkYnAtbmV4dCAtIGRpdmlkZSgxLCAkc3RkLXdlYi1kcGkpLCAtemYtYnAtdG8tZW0oJGJwLW5leHQpIC0gMC4wMDEyNSk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2VuZXJhdGUgdGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyBmcm9tIG1pbiBhbmQgbWF4IGxpbWl0cy5cbiAgQGlmICRoaWRwaSB7XG4gICAgLy8gR2VuZXJhdGUgdmFsdWVzIGluIERQSSBpbnN0ZWFkIG9mIERQUFggZm9yIGFuIElFOS0xMS9PcGVyYSBtaW5pIGNvbXBhdGliaWxpdHkuXG4gICAgLy8gU2VlIGh0dHBzOi8vY2FuaXVzZS5jb20vI2ZlYXQ9Y3NzLW1lZGlhLXJlc29sdXRpb25cbiAgICAkYnAtbWluLWRwaTogaWYoJGJwLW1pbiwgJGJwLW1pbiAqICRzdGQtd2ViLWRwaSAqIDFkcGksICRicC1taW4pO1xuICAgICRicC1tYXgtZHBpOiBpZigkYnAtbWF4LCAkYnAtbWF4ICogJHN0ZC13ZWItZHBpICogMWRwaSwgJGJwLW1heCk7XG4gICAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICAgIC16Zi1icC1qb2luKCRicC1taW4sICRicC1tYXgsICctd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW8nLCAnLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvJyksXG4gICAgICAtemYtYnAtam9pbigkYnAtbWluLWRwaSwgJGJwLW1heC1kcGksICdtaW4tcmVzb2x1dGlvbicsICdtYXgtcmVzb2x1dGlvbicpLFxuICAgICAgJywgJyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gLXpmLWJwLWpvaW4oJGJwLW1pbiwgJGJwLW1heCk7XG4gIH1cbn1cblxuLy8vIFdyYXBzIGEgbWVkaWEgcXVlcnkgYXJvdW5kIHRoZSBjb250ZW50IHlvdSBwdXQgaW5zaWRlIHRoZSBtaXhpbi4gVGhpcyBtaXhpbiBhY2NlcHRzIGEgbnVtYmVyIG9mIHZhbHVlczpcbi8vLyAgLSBJZiBhIHN0cmluZyBpcyBwYXNzZWQsIHRoZSBtaXhpbiB3aWxsIGxvb2sgZm9yIGl0IGluIHRoZSBgJGJyZWFrcG9pbnRzYCBhbmQgYCRicmVha3BvaW50cy1oaWRwaWAgbWFwcywgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgbWl4aW4gd2lsbCBnZW5lcmF0ZSBhIG1lZGlhIHF1ZXJ5IGZvciBlYWNoIG9mIHRoZW0gYXMgZGVzY3JpYmVkIGFib3ZlLlxuLy8vIFNpbmNlIHRoZSBjb250ZW50IGlzIGR1cGxpY2F0ZWQgZm9yIGVhY2ggYnJlYWtwb2ludCwgdGhpcyBtaXhpbiBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggcHJvcGVydGllcyB0aGF0XG4vLy8gY2hhbmdlIGFjcm9zcyBicmVha3BvaW50cy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZXMuLi4gLSBCcmVha3BvaW50IG5hbWUgb3IgcHgvcmVtL2VtIHZhbHVlIHRvIHByb2Nlc3MuXG4vLy9cbi8vLyBAb3V0cHV0IElmIHRoZSBicmVha3BvaW50IGlzIFwiMHB4IGFuZCBsYXJnZXJcIiwgb3V0cHV0cyB0aGUgY29udGVudCBhcy1pcy4gT3RoZXJ3aXNlLCBvdXRwdXRzIHRoZSBjb250ZW50IHdyYXBwZWQgaW4gYSBtZWRpYSBxdWVyeS5cbkBtaXhpbiBicmVha3BvaW50KCR2YWx1ZXMuLi4pIHtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHZhbHVlcykge1xuICAgICR2YWx1ZTogbnRoKCR2YWx1ZXMsICRpKTtcbiAgICAkc3RyOiBicmVha3BvaW50KCR2YWx1ZSk7XG4gICAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsIG50aCgkdmFsdWUsIDEpKTtcbiAgICAkcGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICRwcmludC1icmVha3BvaW50KTtcbiAgICAvLyBEaXJlY3Rpb24gb2YgbWVkaWEgcXVlcnkgKHVwLCBkb3duLCBvciBvbmx5KVxuICAgICRkaXI6IGlmKGxlbmd0aCgkdmFsdWUpID4gMSwgbnRoKCR2YWx1ZSwgMiksIHVwKTtcblxuICAgICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAgIC8vIE1ha2UgYnJlYWtwb2ludCBzaXplIGF2YWlsYWJsZSBhcyBhIHZhcmlhYmxlXG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoLXpmLXNpemUpIHtcbiAgICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICAgIH1cbiAgICAkLXpmLXNpemU6IG50aCgkdmFsdWUsIDEpICFnbG9iYWw7IC8vIGdldCB0aGUgZmlyc3QgdmFsdWUgdG8gYWNjb3VudCBmb3IgYG9ubHlgIGFuZCBgZG93bmAga2V5d29yZHNcblxuICAgIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgICBAaWYgJHN0ciA9PSAnJyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHdyYXAgdGhlIGNvbnRlbnQgaW4gYSBtZWRpYSBxdWVyeVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICAgIC8vIGdlbmVyYXRlIHByaW50IGlmIHRoZSBicmVha3BvaW50IGFmZmVjdHMgdGhlIHByaW50LWJyZWFrcG9pbnQgKG9yIHNtYWxsZXIpLlxuICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY3VycmVudCBjb25kaXRpb24gb25seSBuZWVkcyB0byBiZSBleHRlbmRlZCBzbyAnZG93bicgYWx3YXlzIGdlbmVyYXRlcyBwcmludC5cbiAgICAgIEBpZiAkYnAgIT0gbnVsbCBhbmQgKCRicCA8PSAkcGJwIG9yICRkaXIgPT0gZG93bikge1xuICAgICAgICBAbWVkaWEgcHJpbnQsIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgI3skc3RyfSB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkLXpmLXNpemU6ICRvbGQtemYtc2l6ZSAhZ2xvYmFsO1xuICB9XG59XG5cbi8vLyBDb252ZXJ0cyB0aGUgYnJlYWtwb2ludHMgbWFwIHRvIGEgVVJMLWVuY29kZWQgc3RyaW5nLCBsaWtlIHRoaXM6IGBrZXkxPXZhbHVlMSZrZXkyPXZhbHVlMmAuIFRoZSB2YWx1ZSBpcyB0aGVuIGRyb3BwZWQgaW50byB0aGUgQ1NTIGZvciBhIHNwZWNpYWwgYDxtZXRhPmAgdGFnLCB3aGljaCBpcyByZWFkIGJ5IHRoZSBGb3VuZGF0aW9uIEphdmFTY3JpcHQuIFRoaXMgaXMgaG93IHdlIHRyYW5zZmVyIHZhbHVlcyBmcm9tIFNhc3MgdG8gSmF2YVNjcmlwdCwgc28gdGhleSBjYW4gYmUgZGVmaW5lZCBpbiBvbmUgcGxhY2UuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byBjb252ZXJ0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbWFwJ3MgY29udGVudHMuXG5AZnVuY3Rpb24gLXpmLWJwLXNlcmlhbGl6ZSgkbWFwKSB7XG4gICRzdHI6ICcnO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgJHN0cjogJHN0ciArICRrZXkgKyAnPScgKyAtemYtYnAtdG8tZW0oJHZhbHVlKSArICcmJztcbiAgfVxuICAkc3RyOiBzdHItc2xpY2UoJHN0ciwgMSwgLTIpO1xuXG4gIEByZXR1cm4gJHN0cjtcbn1cblxuLy8vIEZpbmQgdGhlIG5leHQga2V5IGluIGEgbWFwLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtNYXB9ICRtYXAgLSBNYXAgdG8gdHJhdmVyc2UuXG4vLy8gQHBhcmFtIHtNaXhlZH0gJGtleSAtIEtleSB0byB1c2UgYXMgYSBzdGFydGluZyBwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtNaXhlZH0gVGhlIHZhbHVlIGZvciB0aGUga2V5IGFmdGVyIGAka2V5YCwgaWYgYCRrZXlgIHdhcyBmb3VuZC4gSWYgYCRrZXlgIHdhcyBub3QgZm91bmQsIG9yIGAka2V5YCB3YXMgdGhlIGxhc3QgdmFsdWUgaW4gdGhlIG1hcCwgcmV0dXJucyBgbnVsbGAuXG5AZnVuY3Rpb24gLXpmLW1hcC1uZXh0KCRtYXAsICRrZXkpIHtcblxuICAvLyBTdG9yZSB0aGUga2V5cyBvZiB0aGUgbWFwIGFzIGEgbGlzdFxuICAkdmFsdWVzOiBtYXAta2V5cygkbWFwKTtcblxuICAkaTogMDtcblxuICAvLyBJZiB0aGUgS2V5IEV4aXN0cywgR2V0IHRoZSBpbmRleCBvZiB0aGUga2V5IHdpdGhpbiB0aGUgbWFwIGFuZCBhZGQgMSB0byBpdCBmb3IgdGhlIG5leHQgYnJlYWtwb2ludCBpbiB0aGUgbWFwXG4gIEBpZiAobWFwLWhhcy1rZXkoJG1hcCwgJGtleSkpIHtcbiAgICAkaTogaW5kZXgoJHZhbHVlcywgJGtleSkgKyAxO1xuICB9XG5cbiAgLy8gSWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0LCBvciBpdCdzIHRoZSBsYXN0IGtleSBpbiB0aGUgbWFwLCByZXR1cm4gbnVsbFxuICBAaWYgKCRpID4gbGVuZ3RoKCRtYXApIG9yICRpID09IDApIHtcbiAgICBAcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHZhbHVlXG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgbnRoKCR2YWx1ZXMsICRpKSk7XG4gIH1cblxufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBudW1iZXIgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgbnVtYmVyIGZvbGxvd2luZyBgJG51bWJlcmAsIGlmIGAkbnVtYmVyYCB3YXMgZm91bmQuIElmIGAkbnVtYmVyYCB3YXMgbm90IGZvdW5kLCBvciBgJG51bWJlcmAgd2FzIHRoZSBiaWdnZXN0IG51bWJlciBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQtbnVtYmVyKCRtYXAsICRudW1iZXIpIHtcblxuICAkbmV4dC1udW1iZXI6IG51bGw7XG5cbiAgQGVhY2ggJGssICR2IGluICRtYXAge1xuICAgIEBpZiB0eXBlLW9mKCR2KSA9PSAnbnVtYmVyJyBhbmQgJHYgPiAkbnVtYmVyIGFuZCAoJG5leHQtbnVtYmVyID09IG51bGwgb3IgJHYgPCAkbmV4dC1udW1iZXIpIHtcbiAgICAgICRuZXh0LW51bWJlcjogJHY7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmV4dC1udW1iZXI7XG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmQta2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kLWtleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmQta2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuLy8vIFJldHVybiB0aGUgYmVzdCBicmVha3BvaW50IHRvIHVzZSBhY2NvcmRpbmcgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4gSXQgcmV0dXJucyBpbiBvcmRlcjpcbi8vLyAxLiB0aGUgZ2l2ZW4gYCR2YWx1ZWAgYXJndW1lbnQgaWYgaXQgaXMgbm90IG51bGwuXG4vLy8gMi4gdGhlIGdsb2JhbCBicmVha3BvaW50IGNvbnRleHQgYCQtemYtc2l6ZWAgaWYgaXQgaXMgbm90IG51bGwgKGxpa2UgaWYgY2FsbGVkIGluc2lkZSB0aGVuIGBicmVha3BvaW50KClgIG1peGluKVxuLy8vIDMuIHRoZSBnaXZlbiBgJGRlZmF1bHRgIGFyZ3VtZW50LlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgW251bGxdIC0gQnJlYWtwb2ludCB0byB1c2UgaW4gcHJpb3JpdHkgaWYgbm9uLW51bGwuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkZGVmYXVsdCBbbnVsbF0gLSBCcmVha3BvaW50IHRvIHVzZSBieSBkZWZhdWx0IGlmIG5vIG90aGVyIHZhbHVlIGNhbiBiZSB1c2VkLlxuLy8vXG4vLy8gQHJldHVybiB7S2V5d29yZH0gVGhlIHJlc29sdmVkIGJyZWFrcG9pbnQuXG5AZnVuY3Rpb24gLXpmLWN1cnJlbnQtYnJlYWtwb2ludCgkdmFsdWU6IG51bGwsICRkZWZhdWx0OiBudWxsKSB7XG4gIEBpZiAoJHZhbHVlICE9IG51bGwpIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbiAgfVxuICBAZWxzZSBpZiAodmFyaWFibGUtZXhpc3RzKC16Zi1zaXplKSBhbmQgdHlwZS1vZigkLXpmLXNpemUpICE9ICdudW1iZXInKSBhbmQgJC16Zi1zaXplICE9IG51bGwge1xuICAgIEByZXR1cm4gJC16Zi1zaXplO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRkZWZhdWx0O1xuICB9XG59XG5cbi8vLyBSZXR1cm4gbWVkaWEgcXVlcnkgc3RyaW5nIGZyb20gdGhlIGdpdmVuIG1pbiBhbmQvb3IgbWF4IGxpbWl0cy5cbi8vLyBJZiBhIGxpbWl0IGlzIGVxdWFsIHRvIGBudWxsYCBvciBgMGAsIGl0IGlzIGlnbm9yZWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJG1pbiBbMF0gLSBNaW4gbWVkaWEgcXVlcnkgbGltaXQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRtYXggWzBdIC0gTWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWluLW5hbWUgWydtaW4td2lkdGgnXSAtIE5hbWUgb2YgdGhlIG1pbiBtZWRpYSBxdWVyeSBsaW1pdC5cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRlbGltaXRlciBbJ21heC13aWR0aCddIC0gTmFtZSBvZiB0aGUgbWF4IG1lZGlhIHF1ZXJ5IGxpbWl0LlxuLy8vXG4vLy8gQHJldHVybnMge1N0cmluZ30gTWVkaWEgUXVlcnkgc3RyaW5nLlxuQGZ1bmN0aW9uIC16Zi1icC1qb2luKFxuICAkbWluOiAwLFxuICAkbWF4OiAwLFxuICAkbWluLW5hbWU6ICdtaW4td2lkdGgnLFxuICAkbWF4LW5hbWU6ICdtYXgtd2lkdGgnXG4pIHtcbiAgQHJldHVybiB6Zi1zdHItam9pbihcbiAgICBpZigkbWluIGFuZCAkbWluID4gMCwgJygjeyRtaW4tbmFtZX06ICN7JG1pbn0pJywgbnVsbCksXG4gICAgaWYoJG1heCBhbmQgJG1heCA+IDAsICcoI3skbWF4LW5hbWV9OiAjeyRtYXh9KScsIG51bGwpLFxuICAgICcgYW5kICcpO1xufVxuXG4kc21hbGwtdXA6ICcnO1xuJHNtYWxsLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBzbWFsbCkge1xuICAkc21hbGwtdXA6IHNjcmVlbjtcbiAgJHNtYWxsLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHNtYWxsIG9ubHkpfScpO1xufVxuXG4kbWVkaXVtLXVwOiAnJztcbiRtZWRpdW0tb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIG1lZGl1bSkge1xuICAkbWVkaXVtLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0pfScpO1xuICAkbWVkaXVtLW9ubHk6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KG1lZGl1bSBvbmx5KX0nKTtcbn1cblxuJGxhcmdlLXVwOiAnJztcbiRsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgbGFyZ2UpIHtcbiAgJGxhcmdlLXVwOiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSl9Jyk7XG4gICRsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChsYXJnZSBvbmx5KX0nKTtcbn1cblxuJHhsYXJnZS11cDogJyc7XG4keGxhcmdlLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCB4bGFyZ2UpIHtcbiAgJHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlKX0nKTtcbiAgJHhsYXJnZS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludCh4bGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4eGxhcmdlLXVwOiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeHhsYXJnZSkge1xuICAkeHhsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeHhsYXJnZSl9Jyk7XG59XG4iXX0= */
