/*! normalize.css v1.1.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}html,button,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:0.67em 0}h2{font-size:1.5em;margin:0.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:0.83em;margin:1.67em 0}h6{font-size:0.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace, serif;_font-family:'courier new', monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button:focus,html input[type="button"]:focus,input[type="reset"]:focus,input[type="submit"]:focus{outline:none}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%}body{font-family:"Helvetica Neue",Arial,sans-serif;font-size:14px;color:#444;background:#ffffff}a{color:#2980B9;text-decoration:none}a:hover{color:#20638f}a:focus{outline:none}h1{font-size:36px;font-size:3.6rem;font-family:Georgia,"Times New Roman",Times,serif;font-size:80px;font-weight:600;margin:0}h2{font-size:24px;font-size:2.4rem;text-transform:uppercase}h3{font-size:21px;font-size:2.1rem}h4{font-size:18px;font-size:1.8rem}h5{font-size:16px;font-size:1.6rem}h6{font-size:14px;font-size:1.4rem}h1,h2,h3,h4,h5,h6{font-weight:normal}.no-margin{margin:0 !important}.text-disabled{color:#DEDEDE}p{font-size:1.22rem;font-weight:500;margin:10px 0;text-transform:uppercase;letter-spacing:1px}.container{display:table;width:100%;max-width:1070px;margin:0 auto;padding:0 10px}.header{width:100%;background:#fff}.dark-bg{background:#282C37;color:#fff;padding:50px 0}.content-wrapper{padding:54px 0 0 0}.content{padding:20px 40px}.hero{text-align:center;padding:200px 0}fieldset{border:0px solid #E8ECF0;padding:0.35em 0em 0.75em;position:relative}fieldset .error{border:1px solid red !important}fieldset label{width:100%;display:inline-block;*display:inline;*zoom:1;margin:0 0 5px 0}input[type="text"],input[type="password"],textarea{border:1px solid #E8ECF0;padding:7px 10px 7px 10px;display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;background:#ffffff;font-weight:normal;font-size:12px;font-size:1.2rem;-webkit-transition:border .2s ease-in-out;-moz-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out;width:300px}input[type="text"]:hover,input[type="password"]:hover,textarea:hover{border:1px solid #B9B8B8}input[type="text"]:focus,input[type="password"]:focus,textarea:focus{outline:none;border:1px solid #ABA9A9}input[type="text"]::-webkit-input-placeholder,input[type="password"]::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9B9B9B;font-weight:400}input[type="text"]:-moz-placeholder,input[type="password"]:-moz-placeholder,textarea:-moz-placeholder{color:#9B9B9B;font-weight:400;opacity:1}input[type="text"]::-moz-placeholder,input[type="password"]::-moz-placeholder,textarea::-moz-placeholder{color:#9B9B9B;font-weight:400;opacity:1}input[type="text"]:-ms-input-placeholder,input[type="password"]:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9B9B9B;font-weight:400}input[type="text"].input-error,input[type="password"].input-error,textarea.input-error{background:rgba(178,58,58,0.1);border:1px solid #b23a3a}input[type="text"].input-error::-webkit-input-placeholder,input[type="password"].input-error::-webkit-input-placeholder,textarea.input-error::-webkit-input-placeholder{color:#b23a3a}input[type="text"].input-error:-moz-placeholder,input[type="password"].input-error:-moz-placeholder,textarea.input-error:-moz-placeholder{color:#b23a3a;opacity:1}input[type="text"].input-error::-moz-placeholder,input[type="password"].input-error::-moz-placeholder,textarea.input-error::-moz-placeholder{color:#b23a3a;opacity:1}input[type="text"].input-error:-ms-input-placeholder,input[type="password"].input-error:-ms-input-placeholder,textarea.input-error:-ms-input-placeholder{color:#b23a3a}input[type=radio]{border:1px solid #DEDEDE;background:#F9F9F9;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px;clear:none;cursor:pointer;display:inline-block;line-height:0;height:14px;margin:-3px 2px 0 0;outline:0;padding:1px !important;text-align:center;vertical-align:middle;width:14px;min-width:14px;-webkit-transition:all .2s ease-in-out;-webkit-transition-delay:0s;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out false;-webkit-appearance:none;-moz-appearance:none}input[type=radio]:hover{background:#fcfcfc;border:1px solid #cbcbcb}input[type=radio]:focus{background:#ffffff;border:1px solid #ababab;outline:none}input[type=radio].disabled{background:#f9f9f9;border:1px solid #f9f9f9}input[type=radio].disabled:checked:before{color:#f9f9f9}input[type=radio]{border-radius:50%}input[type=radio]:checked{-webkit-transition:all .2s ease-in-out;-webkit-transition-delay:0s;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out false}input[type=radio]:checked.disabled{background:#CCCCCC}input[type=radio]:checked.disabled:checked:before{color:#ffffff}input[type=radio]:before{opacity:0;-webkit-transition:all .2s ease-in-out;-webkit-transition-delay:0s;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out false}input[type=radio]:checked:before{float:left;display:inline-block;vertical-align:middle;width:14px;speak:none;opacity:1;-webkit-transition:all .2s ease-in-out;-webkit-transition-delay:0s;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out false;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[disabled]{border-color:#f9f9f9}input[disabled]:hover{background:#f9f9f9;border-color:#f9f9f9}input[disabled]:checked{border-color:#f9f9f9}input[disabled]:checked:before{color:#f9f9f9;background-color:#f9f9f9}input[disabled]+label{color:#A9A9A9}.label-error{display:none}.error input[type="text"],.error input[type="password"],.error textarea{border:1px solid #CE5C5C;color:#CE5C5C;background:#fff}.error .error-arrow-right{display:inline-block;height:0;width:0;border-top:6px solid transparent;border-right:6px solid #CE5C5C;border-bottom:6px solid transparent;position:absolute;bottom:25px;right:0}.error .label-error{color:#CE5C5C;display:block}.error .label-valid{display:none}.basic-button{position:relative;display:inline-block;*display:inline;*zoom:1;padding:7px 10px 7px 10px;background:#ffffff;background-image:linear-gradient(-180deg, #fff 0%, #f5f5f5 100%);border:1px solid #E8ECF0;font-size:12px;font-size:1.2rem;color:#2980B9;font-weight:400;line-height:14px;text-align:center;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.basic-button:hover{background-image:linear-gradient(-180deg, #fff 0%, #F0F0F0 100%)}.basic-button:active{background-image:linear-gradient(-180deg, #fff 0%, #E6E6E6 100%)}.basic-button.disabled{opacity:0.4;cursor:default;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";filter:alpha(opacity=50)}.basic-button.disabled:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.basic-button.is-red{color:#CB5555}.basic-button.is-micro{padding:2px 7px;font-size:9px;font-size:.9rem;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}.basic-button.is-small{padding:4px 8px;font-size:12px;font-size:1.2rem;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}.basic-button.is-bigger{padding:9px 15px;font-size:13px;font-size:1.3rem;line-height:16px}.basic-button.is-large{padding:11px 20px;font-size:13px;font-size:1.3rem;line-height:16px}.basic-button .basic-checkbox{position:relative;top:1px}.primary-button{position:relative;display:inline-block;*display:inline;*zoom:1;padding:7px 10px 7px 10px;background:#2980B9;background-image:linear-gradient(-180deg, #2980B9 0%, #2475A9 100%);border:1px solid #206998;font-size:12px;font-size:1.2rem;color:#ffffff;font-weight:400;line-height:14px;text-align:center;cursor:pointer;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px}.primary-button:hover{background-image:linear-gradient(-180deg, #2980B9 0%, #226D9E 100%);color:#ffffff}.primary-button:active{background-image:linear-gradient(-180deg, #2980B9 0%, #206592 100%);color:#ffffff}.primary-button.disabled{opacity:0.4;color:#ffffff;cursor:default;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";filter:alpha(opacity=50)}.primary-button.disabled:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.primary-button.is-micro{padding:2px 7px;font-size:9px;font-size:.9rem;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}.primary-button.is-small{padding:4px 8px;font-size:12px;font-size:1.2rem;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;-o-border-radius:2px;border-radius:2px}.primary-button.is-bigger{padding:9px 15px;font-size:13px;font-size:1.3rem;line-height:16px}.primary-button.is-large{padding:11px 20px;font-size:13px;font-size:1.3rem;line-height:16px}.header{padding:10px}.header .logo{float:left;margin:1em 0}.header ul{float:right}.header ul li{display:inline-block;padding:0 10px}.main-table{width:100%;border:1px solid #E8ECF0;font-size:13px;font-size:1.3rem;text-align:left;background:#fff;margin:50px 0}.main-table thead{background:#282C37;border:1px solid #5f7686}.main-table thead tr{border:1px solid #5f7686}.main-table thead th{padding:8px 10px;color:#fff;font-weight:normal;text-transform:uppercase;font-size:11px;font-size:1.1rem;text-shadow:0px 1px #516573}.main-table tr{border-top:1px solid #d6d9de}.main-table tr.not-available{background:#fcf6f6}.main-table tr.not-available td{background:#fcf6f6;color:#999999}.main-table tr.not-available td:first-child{border-right:2px solid #c72626}.main-table td{padding:15px 10px}.main-table td.url{width:55%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:25vw}.main-table td.url a{white-space:nowrap}.main-table td.date{width:15%}.main-table td.hash{width:20%}.main-table td.hash .js-copytext{width:100px;display:inline-block}.main-table td.hash .primary-button{visibility:hidden}.main-table td.hash:hover .primary-button{visibility:visible}.main-table td.count{width:10%}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9fY29tcGFzcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19mdW5jdGlvbnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbnN0YW50cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZGlzcGxheS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fY29sb3Iuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19nZW5lcmFsLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3RhZy1jbG91ZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX21pbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19zcHJpdGVzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fc3ByaXRlLWltZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fdGFibGVzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2JvcmRlcnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19zY2FmZm9sZGluZy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9sYXlvdXQvX2dyaWQtYmFja2dyb3VuZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX2NzczMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbmxpbmUtYmxvY2suc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX29wYWNpdHkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RleHQtc2hhZG93LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19jb2x1bW5zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3guc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1vcmlnaW4uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3JlZ2lvbnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2h5cGhlbmF0aW9uLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19maWx0ZXIuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3BpZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3VzZXItaW50ZXJmYWNlLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwic3RydWN0dXJlL19ub3JtYWxpemUuc2NzcyIsInN0cnVjdHVyZS9fdmFycy5zY3NzIiwic3RydWN0dXJlL19taXhpbnMuc2NzcyIsInN0cnVjdHVyZS9fZGVmYXVsdC5zY3NzIiwic3RydWN0dXJlL19sYXlvdXQuc2NzcyIsInN0cnVjdHVyZS9fZm9ybXMuc2NzcyIsInN0cnVjdHVyZS9fYnV0dG9ucy5zY3NzIiwibW9kdWxlcy9faGVhZGVyLnNjc3MiLCJtb2R1bGVzL190YWJsZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIEJhc2VcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQGltcG9ydCBcImNvbXBhc3NcIjsgLy8gQmFzZSBDb21wYXNzIE1peGluc1xuXG5AaW1wb3J0IFwic3RydWN0dXJlL25vcm1hbGl6ZVwiOyAvLyBSZXNldFxuQGltcG9ydCBcInN0cnVjdHVyZS92YXJzXCI7IC8vIEJhc2UgVmFyc1xuQGltcG9ydCBcInN0cnVjdHVyZS9taXhpbnNcIjsgLy8gQmFzZSBNaXhpbnNcbkBpbXBvcnQgXCJzdHJ1Y3R1cmUvZGVmYXVsdFwiOyAvLyBEZWZhdWx0IEdsb2JhbCBTdHlsZXNcbkBpbXBvcnQgXCJzdHJ1Y3R1cmUvbGF5b3V0XCI7IC8vIExheW91dFxuQGltcG9ydCBcInN0cnVjdHVyZS9mb3Jtc1wiOyAvLyBGb3Jtc1xuQGltcG9ydCBcInN0cnVjdHVyZS9idXR0b25zXCI7IC8vIEJ1dHRvbnNcblxuQGltcG9ydCBcIm1vZHVsZXMvaGVhZGVyXCI7IC8vIEZvcm1zXG5AaW1wb3J0IFwibW9kdWxlcy90YWJsZVwiOyAvLyBUYWJsZSIsIkBpbXBvcnQgXCJjb21wYXNzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwiY29tcGFzcy90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiY29tcGFzcy9jc3MzXCI7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogKCk7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFycyk7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICBAaWYgJHZhciB7XG4gICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgJHNlcGFyYXRvcik7XG4gICAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInV0aWxpdGllcy9jb2xvclwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9nZW5lcmFsXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3Nwcml0ZXNcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvdGFibGVzXCI7XG5cbi8vIGRlcHJlY2F0ZWRcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpbmtzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saXN0c1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvdGV4dFwiO1xuIiwiQGltcG9ydCBcImNvbG9yL2NvbnRyYXN0XCI7IiwiJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0OiAgICMwMDAgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodC1kZWZhdWx0OiAgI2ZmZiAhZGVmYXVsdDtcbiRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGQ6IDMwJSAhZGVmYXVsdDtcblxuLy8gUmV0dXJucyB0aGUgYCRsaWdodGAgY29sb3Igd2hlbiB0aGUgYCRjb2xvcmAgaXMgZGFya1xuLy8gYW5kIHRoZSBgJGRhcmtgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGxpZ2h0LlxuLy8gVGhlIGAkdGhyZXNob2xkYCBpcyBhIHBlcmNlbnQgYmV0d2VlbiBgMCVgIGFuZCBgMTAwJWAgYW5kIGl0IGRldGVybWluZXNcbi8vIHdoZW4gdGhlIGxpZ2h0bmVzcyBvZiBgJGNvbG9yYCBjaGFuZ2VzIGZyb20gXCJkYXJrXCIgdG8gXCJsaWdodFwiLlxuQGZ1bmN0aW9uIGNvbnRyYXN0LWNvbG9yKFxuICAkY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIEByZXR1cm4gaWYobGlnaHRuZXNzKCRjb2xvcikgPCAkdGhyZXNob2xkLCAkbGlnaHQsICRkYXJrKVxufVxuXG4vLyBTZXRzIHRoZSBzcGVjaWZpZWQgYmFja2dyb3VuZCBjb2xvciBhbmQgY2FsY3VsYXRlcyBhIGRhcmsgb3IgbGlnaHQgY29udHJhc3RlZCB0ZXh0IGNvbG9yLlxuLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIFtjb250cmFzdC1jb2xvciBmdW5jdGlvbl0oI2Z1bmN0aW9uLWNvbnRyYXN0LWNvbG9yKS5cbkBtaXhpbiBjb250cmFzdGVkKFxuICAkYmFja2dyb3VuZC1jb2xvcixcbiAgJGRhcms6ICRjb250cmFzdGVkLWRhcmstZGVmYXVsdCxcbiAgJGxpZ2h0OiAkY29udHJhc3RlZC1saWdodC1kZWZhdWx0LFxuICAkdGhyZXNob2xkOiAkY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkXG4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtY29sb3I7XG4gIGNvbG9yOiBjb250cmFzdC1jb2xvcigkYmFja2dyb3VuZC1jb2xvciwgJGRhcmssICRsaWdodCwgJHRocmVzaG9sZCk7XG59IiwiQGltcG9ydCBcImdlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcImdlbmVyYWwvdGFnLWNsb3VkXCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9oYWNrc1wiO1xuQGltcG9ydCBcImdlbmVyYWwvbWluXCI7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIEVtaXRzIHN0eWxlcyBmb3IgYSB0YWcgY2xvdWRcbkBtaXhpbiB0YWctY2xvdWQoJGJhc2Utc2l6ZTogMWVtKSB7XG4gIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMiAqICRiYXNlLXNpemU7XG4gIC54eHMsIC54cywgLnMsIC5sLCAueGwsIC54eGwge1xuICAgIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplOyB9XG4gIC54eHMge1xuICAgIGZvbnQtc2l6ZTogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnhzIHtcbiAgICBmb250LXNpemU6IDIgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAucyB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDQ7IH1cbiAgLmwge1xuICAgIGZvbnQtc2l6ZTogNCAqICRiYXNlLXNpemUgLyAzOyB9XG4gIC54bCB7XG4gICAgZm9udC1zaXplOiAzICogJGJhc2Utc2l6ZSAvIDI7IH1cbiAgLnh4bCB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZTsgfSB9XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLWhlaWdodCBtaXhpbi5cbkBtaXhpbiBtaW4taGVpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bShoZWlnaHQsICR2YWx1ZSk7IH1cblxuLy8qKlxuLy8gQ3Jvc3MgYnJvd3NlciBtaW4td2lkdGggbWl4aW4uXG5AbWl4aW4gbWluLXdpZHRoKCR2YWx1ZSkge1xuICBAaW5jbHVkZSBoYWNrZWQtbWluaW11bSh3aWR0aCwgJHZhbHVlKTsgfVxuXG4vLyBAcHJpdmF0ZSBUaGlzIG1peGluIGlzIG5vdCBtZWFudCB0byBiZSB1c2VkIGRpcmVjdGx5LlxuQG1peGluIGhhY2tlZC1taW5pbXVtKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gIG1pbi0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgQGluY2x1ZGUgYmFuZy1oYWNrKCRwcm9wZXJ0eSwgYXV0bywgJHZhbHVlKTsgfVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzcHJpdGVzL2Jhc2VcIjtcbkBpbXBvcnQgXCJzcHJpdGVzL3Nwcml0ZS1pbWdcIjtcbiIsIi8vIERldGVybWluZXMgdGhvc2Ugc3RhdGVzIGZvciB3aGljaCB5b3Ugd2FudCB0byBlbmFibGUgbWFnaWMgc3ByaXRlIHNlbGVjdG9yc1xuJHNwcml0ZS1zZWxlY3RvcnM6IGhvdmVyLCB0YXJnZXQsIGFjdGl2ZSAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGFuIGVsZW1lbnQgdG8gdGhlIG9yaWdpbmFsXG4vLyBkaW1lbnNpb25zIG9mIGFuIGltYWdlIGJlZm9yZSBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIHNwcml0ZS5cbkBtaXhpbiBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKSB7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTtcbiAgd2lkdGg6IGltYWdlLXdpZHRoKHNwcml0ZS1maWxlKCRtYXAsICRzcHJpdGUpKTtcbn1cblxuLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIHBvc2l0aW9uIG9mIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgIHRvIGRpc3BsYXkgdGhlXG4vLyBzcHJpdGUgb2YgdGhlIGdpdmVuIGAkc3ByaXRlYCBuYW1lLiBZb3UgY2FuIG1vdmUgdGhlIGltYWdlIHJlbGF0aXZlIHRvIGl0c1xuLy8gbmF0dXJhbCBwb3NpdGlvbiBieSBwYXNzaW5nIGAkb2Zmc2V0LXhgIGFuZCBgJG9mZnNldC15YC5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBzcHJpdGUtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpOyAgXG59XG5cblxuLy8gRGV0ZXJtaW5lcyBpZiB5b3Ugd2FudCB0byBpbmNsdWRlIG1hZ2ljIHNlbGVjdG9ycyBpbiB5b3VyIHNwcml0ZXNcbiRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnM6ZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEluY2x1ZGUgdGhlIHBvc2l0aW9uIGFuZCAob3B0aW9uYWxseSkgZGltZW5zaW9ucyBvZiB0aGlzIGAkc3ByaXRlYFxuLy8gaW4gdGhlIGdpdmVuIHNwcml0ZSBgJG1hcGAuIFRoZSBzcHJpdGUgdXJsIHNob3VsZCBjb21lIGZyb20gZWl0aGVyIGEgYmFzZVxuLy8gY2xhc3Mgb3IgeW91IGNhbiBzcGVjaWZ5IHRoZSBgc3ByaXRlLXVybGAgZXhwbGljaXRseSBsaWtlIHRoaXM6XG4vL1xuLy8gICAgIGJhY2tncm91bmQ6ICRtYXAgbm8tcmVwZWF0O1xuQG1peGluIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgQGlmICRkaW1lbnNpb25zIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtZGltZW5zaW9ucygkbWFwLCAkc3ByaXRlKTtcbiAgfVxuICBAaWYgbm90KCRkaXNhYmxlLW1hZ2ljLXNwcml0ZS1zZWxlY3RvcnMpIHtcbiAgICBAaW5jbHVkZSBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgfVxufVxuXG4vLyBJbmNsdWRlIHRoZSBzZWxlY3RvcnMgZm9yIHRoZSBgJHNwcml0ZWAgZ2l2ZW4gdGhlIGAkbWFwYCBhbmQgdGhlIFxuLy8gYCRmdWxsLXNwcml0ZS1uYW1lYFxuLy8gQHByaXZhdGVcbkBtaXhpbiBzcHJpdGUtc2VsZWN0b3JzKCRtYXAsICRzcHJpdGUtbmFtZSwgJGZ1bGwtc3ByaXRlLW5hbWUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzZWxlY3RvciBpbiAkc3ByaXRlLXNlbGVjdG9ycyB7XG4gICAgQGlmIHNwcml0ZV9oYXNfc2VsZWN0b3IoJG1hcCwgJHNwcml0ZS1uYW1lLCAkc2VsZWN0b3IpIHtcbiAgICAgICY6I3skc2VsZWN0b3J9LCAmLiN7JGZ1bGwtc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfS0jeyRzZWxlY3Rvcn0ge1xuICAgICAgICAgIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXBvc2l0aW9uKCRtYXAsIFwiI3skc3ByaXRlLW5hbWV9XyN7JHNlbGVjdG9yfVwiLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEdlbmVyYXRlcyBhIGNsYXNzIGZvciBlYWNoIHNwYWNlIHNlcGFyYXRlZCBuYW1lIGluIGAkc3ByaXRlLW5hbWVzYC5cbi8vIFRoZSBjbGFzcyB3aWxsIGJlIG9mIHRoZSBmb3JtIC48bWFwLW5hbWU+LTxzcHJpdGUtbmFtZT4uXG4vL1xuLy8gSWYgYSBiYXNlIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGVuIGVhY2ggY2xhc3Mgd2lsbCBleHRlbmQgaXQuXG4vL1xuLy8gSWYgYCRkaW1lbnNpb25zYCBpcyBgdHJ1ZWAsIHRoZSBzcHJpdGUgZGltZW5zaW9ucyB3aWxsIHNwZWNpZmllZC5cbkBtaXhpbiBzcHJpdGVzKCRtYXAsICRzcHJpdGUtbmFtZXMsICRiYXNlLWNsYXNzOiBmYWxzZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkcHJlZml4OiBzcHJpdGUtbWFwLW5hbWUoJG1hcCksICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7XG4gIEBlYWNoICRzcHJpdGUtbmFtZSBpbiAkc3ByaXRlLW5hbWVzIHtcbiAgICBAaWYgc3ByaXRlX2RvZXNfbm90X2hhdmVfcGFyZW50KCRtYXAsICRzcHJpdGUtbmFtZSkge1xuICAgICAgJGZ1bGwtc3ByaXRlLW5hbWU6IFwiI3skcHJlZml4fS0jeyRzcHJpdGUtbmFtZX1cIjtcbiAgICAgIC4jeyRmdWxsLXNwcml0ZS1uYW1lfSB7XG4gICAgICAgIEBpZiAkYmFzZS1jbGFzcyB7IEBleHRlbmQgI3skYmFzZS1jbGFzc307IH1cbiAgICAgICAgQGluY2x1ZGUgc3ByaXRlKCRtYXAsICRzcHJpdGUtbmFtZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCIvLyBAZG9jIG9mZlxuLy8gRXhhbXBsZSAxOlxuLy9cbi8vICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzIucG5nXCIsIDEpXG4vLyAgICAgYS5mYWNlYm9va1xuLy8gICAgICAgK3Nwcml0ZS1pbWcoXCJpY29ucy0zMnBuZ1wiLCAyKVxuLy9cbi8vIEV4YW1wbGUgMjpcbi8vXG4vLyAgICAgYVxuLy8gICAgICAgK3Nwcml0ZS1iYWNrZ3JvdW5kKFwiaWNvbnMtMzIucG5nXCIpXG4vLyAgICAgICBhLnR3aXR0ZXJcbi8vICAgICAgICAgK3Nwcml0ZS1jb2x1bW4oMSlcbi8vICAgICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICAgK3Nwcml0ZS1yb3coMilcbi8vIEBkb2Mgb25cblxuJHNwcml0ZS1kZWZhdWx0LXNpemU6IDMycHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtZGVmYXVsdC1tYXJnaW46IDBweCAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSAhZGVmYXVsdDtcblxuJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbi8vIFNldHMgYWxsIHRoZSBydWxlcyBmb3IgYSBzcHJpdGUgZnJvbSBhIGdpdmVuIHNwcml0ZSBpbWFnZSB0byBzaG93IGp1c3Qgb25lIG9mIHRoZSBzcHJpdGVzLlxuLy8gVG8gcmVkdWNlIGR1cGxpY2F0aW9uIHVzZSBhIHNwcml0ZS1iZyBtaXhpbiBmb3IgY29tbW9uIHByb3BlcnRpZXMgYW5kIGEgc3ByaXRlLXNlbGVjdCBtaXhpbiBmb3IgcG9zaXRpb25pbmcuXG5AbWl4aW4gc3ByaXRlLWltZygkaW1nLCAkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGgsICRoZWlnaHQpO1xuICBAaW5jbHVkZSBzcHJpdGUtcG9zaXRpb24oJGNvbCwgJHJvdywgJHdpZHRoLCAkaGVpZ2h0LCAkbWFyZ2luKTsgXG59XG5cbi8vIFNldHMgcnVsZXMgY29tbW9uIGZvciBhbGwgc3ByaXRlcywgYXNzdW1lcyB5b3Ugd2FudCBhIHNxdWFyZSwgYnV0IGFsbG93cyBhIHJlY3Rhbmd1bGFyIHJlZ2lvbi5cbkBtaXhpbiBzcHJpdGUtYmFja2dyb3VuZCgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtZGVmYXVsdC1zaXplLCAkaGVpZ2h0OiAkd2lkdGgpIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aCwgJGhlaWdodCk7IFxufVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcmVjdGFuZ2xlKCRpbWcsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0KSB7XG4gIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKSBuby1yZXBlYXQ7XG4gIHdpZHRoOiAkd2lkdGg7XG4gIGhlaWdodDogJGhlaWdodDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgXG59XG5cbi8vIEFsbG93cyBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBvcHRpbWl6ZWQgZm9yIGEgc2luZ2xlIHJvdyBvZiBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1jb2x1bW4oJGNvbCwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsIDEsICR3aWR0aCwgMHB4LCAkbWFyZ2luKTsgXG59XG5cbi8vIEFsbG93cyB2ZXJ0aWNhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSBjb2x1bW4gb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtcm93KCRyb3csICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKDEsICRyb3csIDBweCwgJGhlaWdodCwgJG1hcmdpbik7IFxufVxuXG4vLyBBbGxvd3MgdmVydGljYWwgYW5kIGhvcml6b250YWwgc3ByaXRlIHBvc2l0aW9uaW5nIGZyb20gYSBncmlkIG9mIGVxdWFsIGRpbWVuc2lvbmVkIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3c6IDEsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gICR4OiAoJGNvbCAtIDEpICogLSR3aWR0aCAtICgkY29sIC0gMSkgKiAkbWFyZ2luO1xuICAkeTogKCRyb3cgLSAxKSAqIC0kaGVpZ2h0IC0gKCRyb3cgLSAxKSAqICRtYXJnaW47XG4gIGJhY2tncm91bmQtcG9zaXRpb246ICR4ICR5OyBcbn1cblxuXG5cbi8vIFNpbWlsYXIgdG8gJ3Nwcml0ZS1yZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgZG9lcyBub3QgYXV0bWF0aWNseSBzZXQgdGhlIGRlbWVuc2lvbnNcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0ICgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9uczogZmFsc2UsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKSB7ICAgIFxuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLCAkZGltZW5zaW9ucywgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkbWFwO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xufVxuXG4vLyBTaW1pbGFyIHRvICdyZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zJyBidXQgd2l0aCBzcHJpdGVzXG4vLyBUbyB1c2UsIGNyZWF0ZSB5b3VyIHNwcml0ZSBhbmQgdGhlbiBwYXNzIGl0IGluIHRoZSBgJG1hcGAgcGFyYW1cbi8vIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSBpbiB0aGUgc3ByaXRlIGZvbGRlciBzaG91bGQgYmUgYCRpbWctbmFtZWBcbkBtaXhpbiBzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucyAoJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApeyAgICBcbiAgQGluY2x1ZGUgc3ByaXRlLXJlcGxhY2UtdGV4dCAoJG1hcCwgJHNwcml0ZSwgdHJ1ZSwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xufSIsIkBpbXBvcnQgXCJ0YWJsZXMvYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1uc1wiO1xuQGltcG9ydCBcInRhYmxlcy9ib3JkZXJzXCI7XG5AaW1wb3J0IFwidGFibGVzL3NjYWZmb2xkaW5nXCI7XG4iLCJAbWl4aW4gYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucygkZXZlbi1yb3ctY29sb3IsICRvZGQtcm93LWNvbG9yLCAkZGFyay1pbnRlcnNlY3Rpb24sICRoZWFkZXItY29sb3I6IHdoaXRlLCAkZm9vdGVyLWNvbG9yOiB3aGl0ZSkge1xuICB0aCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvcjtcbiAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH1cbiAgdHIge1xuICAgICYub2RkLCAmOm50aC1jaGlsZCgybisxKSB7XG4gICAgICB0ZCB7XG4gICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3I7XG4gICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9kZC1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gICAgfVxuICB0ci5ldmVuIHtcbiAgICB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3I7XG4gICAgICAmLmV2ZW4sICY6bnRoLWNoaWxkKDJuKSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRldmVuLXJvdy1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfSB9XG4iLCJAbWl4aW4gb3V0ZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICBib3JkZXI6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gIHRoZWFkIHtcbiAgICB0aCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGZvb3Qge1xuICAgIHRoLCB0ZCB7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH1cbiAgdGgge1xuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yOyB9IH0gfVxuXG5AbWl4aW4gaW5uZXItdGFibGUtYm9yZGVycygkd2lkdGg6IDJweCwgJGNvbG9yOiBibGFjaykge1xuICB0aCwgdGQge1xuICAgIGJvcmRlcjoge1xuICAgICAgcmlnaHQ6ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBib3R0b206ICR3aWR0aCBzb2xpZCAkY29sb3I7XG4gICAgICBsZWZ0LXdpZHRoOiAwcHg7XG4gICAgICB0b3Atd2lkdGg6IDBweDsgfTtcbiAgICAmOmxhc3QtY2hpbGQsXG4gICAgJi5sYXN0IHtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMHB4OyB9IH1cblxuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbiAgdGJvZHksIHRmb290IHtcbiAgICB0cjpsYXN0LWNoaWxkIHtcbiAgICAgIHRoLCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDBweDsgfSB9XG4gICAgdHIubGFzdCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfSB9IH1cbiIsIkBtaXhpbiB0YWJsZS1zY2FmZm9sZGluZyB7XG4gIHRoIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IH1cbiAgdGQsXG4gIHRoIHtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgJi5udW1lcmljIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyB9IH0gfVxuIiwiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3QgeyBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQgICAgOiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXkgICAgOiBibG9jaztcbiAgICBoZWlnaHQgICAgIDogMDtcbiAgICBjbGVhciAgICAgIDogYm90aDtcbiAgICBvdmVyZmxvdyAgIDogaGlkZGVuO1xuICAgIHZpc2liaWxpdHkgOiBoaWRkZW47XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgXG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0O1xufVxuIiwiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7XG4gIH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDtcbiAgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpO1xuICAgIH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7XG4gIH07XG59XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTsgICAgICAgICAgIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAgICAgIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7ICAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwOyAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8vIElFIDUrXG59XG4iLCJAaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3ZlcnRpY2FsX3JoeXRobVwiO1xuIiwiQGltcG9ydCBcImxpbmtzL2hvdmVyLWxpbmtcIjtcbkBpbXBvcnQgXCJsaW5rcy9saW5rLWNvbG9yc1wiO1xuQGltcG9ydCBcImxpbmtzL3Vuc3R5bGVkLWxpbmtcIjtcbiIsIi8vIGEgbGluayB0aGF0IG9ubHkgaGFzIGFuIHVuZGVybGluZSB3aGVuIHlvdSBob3ZlciBvdmVyIGl0XG5AbWl4aW4gaG92ZXItbGluayB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgJjpob3ZlciB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0gfVxuIiwiLy8gU2V0IGFsbCB0aGUgY29sb3JzIGZvciBhIGxpbmsgd2l0aCBvbmUgbWl4aW4gY2FsbC5cbi8vIE9yZGVyIG9mIGFyZ3VtZW50cyBpczpcbi8vXG4vLyAxLiBub3JtYWxcbi8vIDIuIGhvdmVyXG4vLyAzLiBhY3RpdmVcbi8vIDQuIHZpc2l0ZWRcbi8vIDUuIGZvY3VzXG4vL1xuLy8gVGhvc2Ugc3RhdGVzIG5vdCBzcGVjaWZpZWQgd2lsbCBpbmhlcml0LlxuLy8gTWl4aW4gdG8gYW4gYW5jaG9yIGxpbmsgbGlrZSBzbzpcbi8vICAgICBhXG4vLyAgICAgICArbGluay1jb2xvcnMoIzAwYywgIzBjYywgI2MwYywgI2NjYywgI2NjMClcblxuQG1peGluIGxpbmstY29sb3JzKCRub3JtYWwsICRob3ZlcjogZmFsc2UsICRhY3RpdmU6IGZhbHNlLCAkdmlzaXRlZDogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgY29sb3I6ICRub3JtYWw7XG4gIEBpZiAkdmlzaXRlZCB7XG4gICAgJjp2aXNpdGVkIHtcbiAgICAgIGNvbG9yOiAkdmlzaXRlZDsgfSB9XG4gIEBpZiAkZm9jdXMge1xuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICRmb2N1czsgfSB9XG4gIEBpZiAkaG92ZXIge1xuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6ICRob3ZlcjsgfSB9XG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGFjdGl2ZTsgfSB9IH1cbiIsIi8vIEEgbGluayB0aGF0IGxvb2tzIGFuZCBhY3RzIGxpa2UgdGhlIHRleHQgaXQgaXMgY29udGFpbmVkIHdpdGhpblxuQG1peGluIHVuc3R5bGVkLWxpbmsge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lOyB9IH1cbiIsIkBpbXBvcnQgXCJsaXN0cy9ob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2lubGluZS1ibG9jay1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvYnVsbGV0c1wiO1xuIiwiLy8gSG9yaXpvbnRhbCBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3Rcbi8vXG4vLyBBZHZhbmNlZCBtb2RlOlxuLy8gSWYgeW91IG5lZWQgdG8gdGFyZ2V0IHRoZSBsaXN0IGl0ZW1zIHVzaW5nIGEgZGlmZmVyZW50IHNlbGVjdG9yIHRoZW4gdXNlXG4vLyAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciBvbiB5b3VyIHVsL29sIGFuZCAraG9yaXpvbnRhbC1saXN0LWl0ZW0gb24geW91ciBsaS5cbi8vIFRoaXMgbWF5IGhlbHAgd2hlbiB3b3JraW5nIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lclxuLy8gICAgID4gbGlcbi8vICAgICAgICtob3Jpem9udGFsLWxpc3QtaXRlbVxuXG5AaW1wb3J0IFwiYnVsbGV0c1wiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2NsZWFyZml4XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvcmVzZXRcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGEgaG9yaXpvbnRhbCBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lciB7XG4gIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgQGluY2x1ZGUgY2xlYXJmaXg7IH1cblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IGxpIHNlbGVjdG9yIHRoYXQgaXMgbWVhbnQgdG8gcGFydGljaXBhdGUgaW4gYSBob3Jpem9udGFsIGxheW91dC5cbi8vIFVzZWQgdG8gaW1wbGVtZW50ICtob3Jpem9udGFsLWxpc3QuXG4vL1xuLy8gOmxhc3QtY2hpbGQgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZFxuLy8gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5IGZvciB0aGUgc3VwcG9ydCBtYXRyaXhcbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGluY2x1ZGUgZmxvYXQoJGRpcmVjdGlvbik7XG4gIEBpZiAkcGFkZGluZyB7XG4gICAgcGFkZGluZzoge1xuICAgICAgbGVmdDogJHBhZGRpbmc7XG4gICAgICByaWdodDogJHBhZGRpbmc7XG4gICAgfVxuICAgICY6Zmlyc3QtY2hpbGQsICYuZmlyc3QgeyBwYWRkaW5nLSN7JGRpcmVjdGlvbn06IDA7IH1cbiAgICAmOmxhc3QtY2hpbGQgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gICAgJi5sYXN0IHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgZmxvYXRlZCBsZWZ0IGFuZCB3b24ndCB3cmFwLlxuLy8gVGhpcyBpcyBub3QgYW4gaW5saW5lIGxpc3QuXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0KCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nLCAkZGlyZWN0aW9uKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBAZG9jIG9mZlxuLy8gRXh0ZW5kcyB0aGUgYm90dG9tIG9mIHRoZSBlbGVtZW50IHRvIGVuY2xvc2UgYW55IGZsb2F0cyBpdCBjb250YWlucy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcImhhY2tzXCI7XG5cbi8vIFRoaXMgYmFzaWMgbWV0aG9kIGlzIHByZWZlcnJlZCBmb3IgdGhlIHVzdWFsIGNhc2UsIHdoZW4gcG9zaXRpb25lZFxuLy8gY29udGVudCB3aWxsIG5vdCBzaG93IG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyLlxuLy9cbi8vIFJlY29tbWVuZGF0aW9ucyBpbmNsdWRlIHVzaW5nIHRoaXMgaW4gY29uanVuY3Rpb24gd2l0aCBhIHdpZHRoLlxuLy8gQ3JlZGl0OiBbcXVpcmtzbW9kZS5vcmddKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA1LzAzL2NsZWFyaW5nX2Zsb2F0cy5odG1sKVxuQG1peGluIGNsZWFyZml4IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBvbGRlciBtZXRob2QgZnJvbSBQb3NpdGlvbiBJcyBFdmVyeXRoaW5nIGNhbGxlZFxuLy8gW0Vhc3kgQ2xlYXJpbmddKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2Vhc3ljbGVhcmluZy5odG1sKVxuLy8gaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgcG9zaXRpb25lZCBlbGVtZW50cyB0byBoYW5nXG4vLyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lciBhdCB0aGUgZXhwZW5zZSBvZiBtb3JlIHRyaWNreSBDU1MuXG5AbWl4aW4gbGVnYWN5LXBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQgICAgOiBcIlxcMDAyMFwiO1xuICAgIGRpc3BsYXkgICAgOiBibG9jaztcbiAgICBoZWlnaHQgICAgIDogMDtcbiAgICBjbGVhciAgICAgIDogYm90aDtcbiAgICBvdmVyZmxvdyAgIDogaGlkZGVuO1xuICAgIHZpc2liaWxpdHkgOiBoaWRkZW47XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cblxuLy8gVGhpcyBpcyBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIFBJRSBjbGVhcmZpeCBtZXRob2QgdGhhdCByZWR1Y2VzIHRoZSBhbW91bnQgb2YgQ1NTIG91dHB1dC5cbi8vIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgRmlyZWZveCBiZWZvcmUgMy41IHlvdSBuZWVkIHRvIHVzZSBgbGVnYWN5LXBpZS1jbGVhcmZpeGAgaW5zdGVhZC5cbi8vXG4vLyBBZGFwdGVkIGZyb206IFtBIG5ldyBtaWNybyBjbGVhcmZpeCBoYWNrXShodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay8pXG5AbWl4aW4gcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFRoaXMgbW9kdWxlIGhhcyBtb3ZlZC5cbkBpbXBvcnQgXCIuLi8uLi9yZXNldC91dGlsaXRpZXNcIjtcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXQgMi4wXShodHRwOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY3NzL3Jlc2V0L2luZGV4Lmh0bWwpXG4vLyBHbG9iYWwgcmVzZXQgcnVsZXMuXG4vLyBGb3IgbW9yZSBzcGVjaWZpYyByZXNldHMsIHVzZSB0aGUgcmVzZXQgbWl4aW5zIHByb3ZpZGVkIGJlbG93XG5AbWl4aW4gZ2xvYmFsLXJlc2V0IHtcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH0gfVxuXG4vLyBSZXNldCB0aGUgYm94IG1vZGVsIG1lYXN1cmVtZW50cy5cbkBtaXhpbiByZXNldC1ib3gtbW9kZWwge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDsgfVxuXG4vLyBSZXNldCB0aGUgZm9udCBhbmQgdmVydGljYWwgYWxpZ25tZW50LlxuQG1peGluIHJlc2V0LWZvbnQge1xuICBmb250OiBpbmhlcml0O1xuICBmb250LXNpemU6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vLyBSZXNldHMgdGhlIG91dGxpbmUgd2hlbiBmb2N1cy5cbi8vIEZvciBhY2Nlc3NpYmlsaXR5IHlvdSBuZWVkIHRvIGFwcGx5IHNvbWUgc3R5bGluZyBpbiBpdHMgcGxhY2UuXG5AbWl4aW4gcmVzZXQtZm9jdXMge1xuICBvdXRsaW5lOiAwOyB9XG5cbi8vIFJlc2V0IGEgYm9keSBlbGVtZW50LlxuQG1peGluIHJlc2V0LWJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG4vLyBSZXNldCB0aGUgbGlzdCBzdHlsZSBvZiBhbiBlbGVtZW50LlxuQG1peGluIHJlc2V0LWxpc3Qtc3R5bGUge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbi8vIFJlc2V0IGEgdGFibGVcbkBtaXhpbiByZXNldC10YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi8vIFJlc2V0IGEgdGFibGUgY2VsbCAoYHRoYCwgYHRkYClcbkBtaXhpbiByZXNldC10YWJsZS1jZWxsIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vLyBSZXNldCBhIHF1b3RhdGlvbiAoYHFgLCBgYmxvY2txdW90ZWApXG5AbWl4aW4gcmVzZXQtcXVvdGF0aW9uIHtcbiAgcXVvdGVzOiBub25lO1xuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgXG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIi8vIG1ha2VzIGEgbGlzdCBpbmxpbmUuXG5cbkBtaXhpbiBpbmxpbmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgJiwgJiBsaSB7XG4gICAgbWFyZ2luOiAwcHg7XG4gICAgcGFkZGluZzogMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuXG4vLyBtYWtlcyBhbiBpbmxpbmUgbGlzdCBkZWxpbWl0ZWQgd2l0aCB0aGUgcGFzc2VkIHN0cmluZy5cbi8vIERlZmF1bHRzIHRvIG1ha2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LlxuLy9cbi8vIFBsZWFzZSBtYWtlIG5vdGUgb2YgdGhlIGJyb3dzZXIgc3VwcG9ydCBpc3N1ZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWl4aW46XG4vL1xuLy8gdXNlIG9mIGBjb250ZW50YCBhbmQgYDphZnRlcmAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZCBpbiBhbGwgYnJvd3NlcnMuXG4vLyBTZWUgcXVpcmtzbW9kZSBmb3IgdGhlIFtzdXBwb3J0IG1hdHJpeF0oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MTUpXG4vL1xuLy8gYDpsYXN0LWNoaWxkYCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkLlxuLy8gc2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDI5KS5cbi8vXG4vLyBJRTggaWdub3JlcyBydWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBvbiB0aGUgc2FtZSBsaW5lIGFzIDpsYXN0LWNoaWxkXG4vLyBzZWUgaHR0cDovL3d3dy5yaWNoYXJkc2NhcnJvdHQuY28udWsvcG9zdHMvdmlldy9pZTgtbGFzdC1jaGlsZC1idWcgZm9yIGRldGFpbHNcblxuQG1peGluIGRlbGltaXRlZC1saXN0KCRzZXBhcmF0b3I6IFwiLCBcIikge1xuICBAaW5jbHVkZSBpbmxpbmUtbGlzdDtcbiAgbGkge1xuICAgICY6YWZ0ZXIgeyBjb250ZW50OiAkc2VwYXJhdG9yOyB9XG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICY6YWZ0ZXIgeyBjb250ZW50OiBcIlwiOyB9XG4gICAgfVxuICAgICYubGFzdCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWUgW2RlbGltaXRlZC1saXN0XSgjbWl4aW4tZGVsaW1pdGVkLWxpc3QpXG4vLyBAZGVwcmVjYXRlZFxuQG1peGluIGNvbW1hLWRlbGltaXRlZC1saXN0IHtcbiAgQHdhcm4gXCJjb21tYS1kZWxpbWl0ZWQtbGlzdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGRlbGltaXRlZC1saXN0IGluc3RlYWQuXCI7XG4gIEBpbmNsdWRlIGRlbGltaXRlZC1saXN0O1xufVxuIiwiLy8gSW5saW5lLUJsb2NrIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgICB1bC5uYXYge1xuLy8gICAgICAgQGltcG9ydCBpbmxpbmUtYmxvY2stbGlzdDtcbi8vICAgICB9XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gYEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcmAgb24geW91ciB1bC9vbCBhbmRcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtYCBvbiB5b3VyIGxpLiBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZ1xuLy8gb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbi8vICAgICAgID4gbGkge1xuLy8gICAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtO1xuLy8gICAgICAgfVxuLy8gICAgIH1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCJob3Jpem9udGFsLWxpc3RcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9mbG9hdFwiO1xuQGltcG9ydCBcIi4uLy4uL2NzczMvaW5saW5lLWJsb2NrXCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYW4gaW5saW5lLWJsb2NrIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyOyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCBgaW5saW5lLWJsb2NrLWxpc3RgLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIG5vLWJ1bGxldDtcbiAgQGluY2x1ZGUgaW5saW5lLWJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH07XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBpbmxpbmUtYmxvY2sgYW5kIHdvbid0IHdyYXAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QoJHBhZGRpbmc6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWNvbnRhaW5lcjtcbiAgbGkge1xuICAgIEBpbmNsdWRlIGlubGluZS1ibG9jay1saXN0LWl0ZW0oJHBhZGRpbmcpOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpsZWZ0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1sZWZ0IHtcbiAgQGluY2x1ZGUgZmxvYXQobGVmdCk7IH1cblxuLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6cmlnaHQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LXJpZ2h0IHtcbiAgQGluY2x1ZGUgZmxvYXQocmlnaHQpOyB9XG5cbi8vIERpcmVjdGlvbiBpbmRlcGVuZGVudCBmbG9hdCBtaXhpbiB0aGF0IGZpeGVzIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0KCRzaWRlOiBsZWZ0KSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgZmxvYXQ6IHVucXVvdGUoJHNpZGUpOyB9XG5cbi8vIFJlc2V0cyBmbG9hdGVkIGVsZW1lbnRzIGJhY2sgdG8gdGhlaXIgZGVmYXVsdCBvZiBgZmxvYXQ6IG5vbmVgIGFuZCBkZWZhdWx0c1xuLy8gdG8gYGRpc3BsYXk6IGJsb2NrYCB1bmxlc3MgeW91IHBhc3MgYGlubGluZWAgYXMgYW4gYXJndW1lbnRcbi8vXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICBib2R5LmhvbWVwYWdlXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtmbG9hdC1sZWZ0XG4vLyAgICAgYm9keS5zaWdudXBcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK3Jlc2V0LWZsb2F0XG5AbWl4aW4gcmVzZXQtZmxvYXQoJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGZsb2F0OiBub25lO1xuICBkaXNwbGF5OiAkZGlzcGxheTsgfSIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU2V0IGAkaW5saW5lLWJsb2NrLWFsaWdubWVudGAgdG8gYG5vbmVgIG9yIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUgb3V0cHV0XG4vLyBvZiBhIHZlcnRpY2FsLWFsaWduIHByb3BlcnR5IGluIHRoZSBpbmxpbmUtYmxvY2sgbWl4aW4uXG4vLyBPciBzZXQgaXQgdG8gYSBsZWdhbCB2YWx1ZSBmb3IgYHZlcnRpY2FsLWFsaWduYCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQuXG4kaW5saW5lLWJsb2NrLWFsaWdubWVudDogbWlkZGxlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBhIGNyb3NzLWJyb3dzZXIgbWV0aG9kIHRvIGltcGxlbWVudCBgZGlzcGxheTogaW5saW5lLWJsb2NrO2BcbkBtaXhpbiBpbmxpbmUtYmxvY2soJGFsaWdubWVudDogJGlubGluZS1ibG9jay1hbGlnbm1lbnQpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSB7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtc3RhY2s7XG4gIH1cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBAaWYgJGFsaWdubWVudCBhbmQgJGFsaWdubWVudCAhPSBub25lIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJGFsaWdubWVudDtcbiAgfVxuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgKnZlcnRpY2FsLWFsaWduOiBhdXRvO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCJ0ZXh0L2VsbGlwc2lzXCI7XG5AaW1wb3J0IFwidGV4dC9ub3dyYXBcIjtcbkBpbXBvcnQgXCJ0ZXh0L3JlcGxhY2VtZW50XCI7XG5AaW1wb3J0IFwidGV4dC9mb3JjZS13cmFwXCI7XG4iLCJAaW1wb3J0IFwiLi4vLi4vY3NzMy9zaGFyZWRcIjtcblxuLy8gVG8gZ2V0IGZ1bGwgZmlyZWZveCBzdXBwb3J0LCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBlbGxpcHNpcyBwYXR0ZXJuOlxuLy9cbi8vICAgICBjb21wYXNzIGluc3RhbGwgY29tcGFzcy9lbGxpcHNpc1xuJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmc6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGlzIHRlY2huaXF1ZSwgYnkgW0p1c3RpbiBNYXh3ZWxsXShodHRwOi8vY29kZTQwNC5jb20vKSwgd2FzIG9yaWdpbmFsbHlcbi8vIHB1Ymxpc2hlZCBbaGVyZV0oaHR0cDovL21hdHRzbmlkZXIuY29tL2Nzcy9jc3Mtc3RyaW5nLXRydW5jYXRpb24td2l0aC1lbGxpcHNpcy8pLlxuLy8gRmlyZWZveCBpbXBsZW1lbnRhdGlvbiBieSBbUmlra2VydCBLb3BwZXNdKGh0dHA6Ly93d3cucmlra2VydGtvcHBlcy5jb20vdGhvdWdodHMvMjAwOC82LykuXG5AbWl4aW4gZWxsaXBzaXMoJG5vLXdyYXA6IHRydWUpIHtcbiAgQGlmICRuby13cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodGV4dC1vdmVyZmxvdywgZWxsaXBzaXMsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgbm90KC1raHRtbCksXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSBhbmQgJHVzZS1tb3ppbGxhLWVsbGlwc2lzLWJpbmRpbmcge1xuICAgIC1tb3otYmluZGluZzogc3R5bGVzaGVldC11cmwodW5xdW90ZShcInhtbC9lbGxpcHNpcy54bWwjZWxsaXBzaXNcIikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gV2hlbiByZW1lbWJlcmluZyB3aGV0aGVyIG9yIG5vdCB0aGVyZSdzIGEgaHlwaGVuIGluIHdoaXRlLXNwYWNlIGlzIHRvbyBoYXJkXG5AbWl4aW4gbm93cmFwIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuIiwiLy8gSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24geW91IHByZWZlciB0byBtb3ZlIHlvdXIgdGV4dFxuLy8gd2hlbiBoaWRpbmcgaXQuXG4vL1xuLy8gYGxlZnRgIGlzIG1vcmUgcm9idXN0LCBlc3BlY2lhbGx5IGluIG9sZGVyIGJyb3dzZXJzLlxuLy8gYHJpZ2h0YCBzZWVtcyBoYXZlIGJldHRlciBydW50aW1lIHBlcmZvcm1hbmNlLlxuJGhpZGUtdGV4dC1kaXJlY3Rpb246IGxlZnQgIWRlZmF1bHQ7XG5cbi8vIEhpZGVzIGh0bWwgdGV4dCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhbiBpbWFnZS5cbi8vIElmIHlvdSB1c2UgdGhpcyBvbiBhbiBpbmxpbmUgZWxlbWVudCwgeW91IHdpbGwgbmVlZCB0byBjaGFuZ2UgdGhlIGRpc3BsYXkgdG8gYmxvY2sgb3IgaW5saW5lLWJsb2NrLlxuLy8gQWxzbywgaWYgdGhlIHNpemUgb2YgdGhlIGltYWdlIGRpZmZlcnMgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBmb250IHNpemUsIHlvdSdsbCBuZWVkIHRvIHNldCB0aGUgd2lkdGggYW5kL29yIGhlaWdodC5cbi8vXG4vLyBQYXJhbWV0ZXJzOlxuLy9cbi8vICogYGltZ2AgLS0gdGhlIHJlbGF0aXZlIHBhdGggZnJvbSB0aGUgcHJvamVjdCBpbWFnZSBkaXJlY3RvcnkgdG8gdGhlIGltYWdlLCBvciBhIHVybCBsaXRlcmFsLlxuLy8gKiBgeGAgLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG4vLyAqIGB5YCAtLSB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYmFja2dyb3VuZCBpbWFnZS5cbkBtaXhpbiByZXBsYWNlLXRleHQoJGltZywgJHg6IDUwJSwgJHk6IDUwJSkge1xuICBAaW5jbHVkZSBoaWRlLXRleHQ7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBAaWYgaXMtdXJsKCRpbWcpIHtcbiAgICAgIGltYWdlOiB1cmwoJGltZyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBpbWFnZTogaW1hZ2UtdXJsKCRpbWcpO1xuICAgIH1cbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogJHggJHk7XG4gIH07XG59XG5cbi8vIExpa2UgdGhlIGByZXBsYWNlLXRleHRgIG1peGluLCBidXQgYWxzbyBzZXRzIHRoZSB3aWR0aFxuLy8gYW5kIGhlaWdodCBvZiB0aGUgZWxlbWVudCBhY2NvcmRpbmcgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGltYWdlLlxuLy9cbi8vIElmIHlvdSBzZXQgYCRpbmxpbmVgIHRvIHRydWUsIHRoZW4gYW4gaW5saW5lIGltYWdlIChkYXRhIHVyaSkgd2lsbCBiZSB1c2VkLlxuQG1peGluIHJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMoJGltZywgJHg6IDUwJSwgJHk6IDUwJSwgJGlubGluZTogZmFsc2UpIHtcbiAgQGluY2x1ZGUgcmVwbGFjZS10ZXh0KGlmKCRpbmxpbmUsIGlubGluZS1pbWFnZSgkaW1nKSwgJGltZyksICR4LCAkeSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aCgkaW1nKTtcbiAgaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGltZyk7XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBzbyB5b3UgY2FuIHNlZSB0aGUgYmFja2dyb3VuZC5cbi8vXG4vLyBUaGUgZGlyZWN0aW9uIGluZGljYXRlcyBob3cgdGhlIHRleHQgc2hvdWxkIGJlIG1vdmVkIG91dCBvZiB2aWV3LlxuLy9cbi8vIFNlZSBgJGhpZGUtdGV4dC1kaXJlY3Rpb25gIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCB0byBzZXQgdGhpcyBnbG9iYWxseVxuLy8gZm9yIHlvdXIgYXBwbGljYXRpb24uXG5AbWl4aW4gaGlkZS10ZXh0KCRkaXJlY3Rpb246ICRoaWRlLXRleHQtZGlyZWN0aW9uKSB7XG4gIEBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICRhcHByb3hpbWF0ZS1lbS12YWx1ZTogMTJweDtcbiAgICAkd2lkZXItdGhhbi1hbnktc2NyZWVuOiAtOTk5OTtcbiAgICB0ZXh0LWluZGVudDogJHdpZGVyLXRoYW4tYW55LXNjcmVlbiAqICRhcHByb3hpbWF0ZS1lbS12YWx1ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHNsaWdodGx5IHdpZGVyIHRoYW4gdGhlIGJveCBwcmV2ZW50cyBpc3N1ZXMgd2l0aCBpbmxpbmUtYmxvY2sgZWxlbWVudHNcbiAgICB0ZXh0LWluZGVudDogMTEwJTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbn1cblxuLy8gSGlkZXMgdGV4dCBpbiBhbiBlbGVtZW50IGJ5IHNxdWlzaGluZyB0aGUgdGV4dCBpbnRvIG9ibGl2aW9uLlxuLy8gVXNlIHRoaXMgaWYgeW91IG5lZWQgdG8gaGlkZSB0ZXh0IGNvbnRhaW5lZCBpbiBhbiBpbmxpbmUgZWxlbWVudFxuLy8gYnV0IHN0aWxsIGhhdmUgaXQgcmVhZCBieSBhIHNjcmVlbiByZWFkZXIuXG5AbWl4aW4gc3F1aXNoLXRleHQge1xuICBmb250OiAwLzAgc2VyaWY7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvLyBQcmV2ZW50IGxvbmcgdXJscyBhbmQgdGV4dCBmcm9tIGJyZWFraW5nIGxheW91dHNcbi8vIFtvcmlnaW5hbGx5IGZyb20gcGVyaXNoYWJsZXByZXNzLmNvbV0oaHR0cDovL3BlcmlzaGFibGVwcmVzcy5jb20vcHJlc3MvMjAxMC8wNi8wMS93cmFwcGluZy1jb250ZW50LylcbkBtaXhpbiBmb3JjZS13cmFwIHtcbiAgd2hpdGUtc3BhY2U6IHByZTsgICAgICAgICAgIC8vIENTUyAyLjBcbiAgd2hpdGUtc3BhY2U6IHByZS13cmFwOyAgICAgIC8vIENTUyAyLjFcbiAgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAgICAgIC8vIENTUyAzLjBcbiAgd2hpdGUtc3BhY2U6IC1wcmUtd3JhcDsgICAgIC8vIE9wZXJhIDQtNlxuICB3aGl0ZS1zcGFjZTogLW8tcHJlLXdyYXA7ICAgLy8gT3BlcmEgN1xuICB3aGl0ZS1zcGFjZTogLW1vei1wcmUtd3JhcDsgLy8gTW96aWxsYVxuICB3aGl0ZS1zcGFjZTogLWhwLXByZS13cmFwOyAgLy8gSFAgUHJpbnRlcnNcbiAgd29yZC13cmFwOiBicmVhay13b3JkOyAgICAgIC8vIElFIDUrXG59XG4iLCJAaW1wb3J0IFwiLi4vbGF5b3V0L2dyaWQtYmFja2dyb3VuZFwiO1xuXG4vLyBUaGUgYmFzZSBmb250IHNpemUuXG4kYmFzZS1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNlIGxpbmUgaGVpZ2h0IGRldGVybWluZXMgdGhlIGJhc2ljIHVuaXQgb2YgdmVydGljYWwgcmh5dGhtLlxuJGJhc2UtbGluZS1oZWlnaHQ6IDI0cHggIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgZGVmYXVsdCBib3JkZXIgc3R5bGUgZm9yIHJoeXRobSBib3JkZXJzLlxuJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZTogc29saWQgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4kYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZTogMTZweDtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gQWxsb3dzIHRoZSBgYWRqdXN0LWZvbnQtc2l6ZS10b2AgbWl4aW4gYW5kIHRoZSBgbGluZXMtZm9yLWZvbnQtc2l6ZWAgZnVuY3Rpb25cbi8vIHRvIHJvdW5kIHRoZSBsaW5lIGhlaWdodCB0byB0aGUgbmVhcmVzdCBoYWxmIGxpbmUgaGVpZ2h0IGluc3RlYWQgb2YgdGhlXG4vLyBuZWFyZXN0IGludGVncmFsIGxpbmUgaGVpZ2h0IHRvIGF2b2lkIGxhcmdlIHNwYWNpbmcgYmV0d2VlbiBsaW5lcy5cbiRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZTogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzXG4vLyBvZiB2ZXJ0aWNhbCBwYWRkaW5nIGFib3ZlIGFuZCBiZWxvdyB0aGUgdGV4dC5cbiRtaW4tbGluZS1wYWRkaW5nOiAycHggIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWZvbnQtc2l6ZSBidXQgaW4geW91ciBvdXRwdXQgdW5pdCBvZiBjaG9pY2UuXG4vLyBEZWZhdWx0cyB0byAxZW0gd2hlbiBgJHJlbGF0aXZlLWZvbnQtc2l6aW5nYCBpcyB0cnVlLlxuJGZvbnQtdW5pdDogaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAxZW0sICRiYXNlLWZvbnQtc2l6ZSkgIWRlZmF1bHQ7XG5cbi8vIFRoZSBiYXNpYyB1bml0IG9mIGZvbnQgcmh5dGhtLlxuJGJhc2Utcmh5dGhtLXVuaXQ6ICRiYXNlLWxpbmUtaGVpZ2h0IC8gJGJhc2UtZm9udC1zaXplICogJGZvbnQtdW5pdDtcblxuLy8gVGhlIGxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgaW4gYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtbGVhZGVyOiAoJGJhc2UtbGluZS1oZWlnaHQgLSAkYmFzZS1mb250LXNpemUpICogJGZvbnQtdW5pdCAvICRiYXNlLWZvbnQtc2l6ZTtcblxuLy8gVGhlIGhhbGYtbGVhZGVyIGlzIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBhYm92ZSBhbmQgYmVsb3cgYSBsaW5lLlxuLy8gSXQgbWlnaHQgYmUgdXNlZnVsIGluIHlvdXIgY2FsY3VsYXRpb25zLlxuJGJhc2UtaGFsZi1sZWFkZXI6ICRiYXNlLWxlYWRlciAvIDI7XG5cbi8vIFRydWUgaWYgYSBudW1iZXIgaGFzIGEgcmVsYXRpdmUgdW5pdC5cbkBmdW5jdGlvbiByZWxhdGl2ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiB1bml0KCRudW1iZXIpID09IFwiJVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJlbVwiIG9yIHVuaXQoJG51bWJlcikgPT0gXCJyZW1cIlxufVxuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhbiBhYnNvbHV0ZSB1bml0LlxuQGZ1bmN0aW9uIGFic29sdXRlLXVuaXQoJG51bWJlcikge1xuICBAcmV0dXJuIG5vdChyZWxhdGl2ZS11bml0KCRudW1iZXIpIG9yIHVuaXRsZXNzKCRudW1iZXIpKTtcbn1cblxuQGlmICRyZWxhdGl2ZS1mb250LXNpemluZyBhbmQgbm90KHJlbGF0aXZlLXVuaXQoJGZvbnQtdW5pdCkpIHtcbiAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgdHJ1ZSBidXQgJGZvbnQtdW5pdCBpcyBzZXQgdG8gI3skZm9udC11bml0fSB3aGljaCBpcyBub3QgYSByZWxhdGl2ZSB1bml0LlwiO1xufVxuXG4vLyBFc3RhYmxpc2hlcyBhIGZvbnQgYmFzZWxpbmUgZm9yIHRoZSBnaXZlbiBmb250LXNpemUuXG5AbWl4aW4gZXN0YWJsaXNoLWJhc2VsaW5lKCRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICAvLyBJRSA2IHJlZnVzZXMgdG8gcmVzaXplIGZvbnRzIHNldCBpbiBwaXhlbHMgYW5kIGl0IHdlaXJkbHkgcmVzaXplcyBmb250c1xuICAvLyB3aG9zZSByb290IGlzIHNldCBpbiBlbXMuIFNvIHdlIHNldCB0aGUgcm9vdCBmb250IHNpemUgaW4gcGVyY2VudGFnZXMgb2ZcbiAgLy8gdGhlIGRlZmF1bHQgZm9udCBzaXplLlxuICAqIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJSAqICgkZm9udC1zaXplIC8gJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemUpO1xuICB9XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygxLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICRmb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xuICB9XG59XG5cbi8vIFJlc2V0cyB0aGUgbGluZS1oZWlnaHQgdG8gMSB2ZXJ0aWNhbCByaHl0aG0gdW5pdC5cbi8vIERvZXMgbm90IHdvcmsgb24gZWxlbWVudHMgd2hvc2UgZm9udC1zaXplIGlzIGRpZmZlcmVudCBmcm9tICRiYXNlLWZvbnQtc2l6ZS5cbi8vXG4vLyBAZGVwcmVjYXRlZCBUaGlzIG1peGluIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuLy8gUGxlYXNlIHVzZSB0aGUgYGFkanVzdC1sZWFkaW5nLXRvYCBtaXhpbiBpbnN0ZWFkLlxuQG1peGluIHJlc2V0LWJhc2VsaW5lIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkYmFzZS1mb250LXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBTaG93IGEgYmFja2dyb3VuZCBpbWFnZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIHlvdXIgYWxpZ25tZW50cy5cbi8vIEluY2x1ZGUgdGhlICRpbWcgYXJndW1lbnQgaWYgeW91IHdvdWxkIHJhdGhlciB1c2UgeW91ciBvd24gaW1hZ2UgdGhhbiB0aGVcbi8vIENvbXBhc3MgZGVmYXVsdCBncmFkaWVudCBpbWFnZS5cbkBtaXhpbiBkZWJ1Zy12ZXJ0aWNhbC1hbGlnbm1lbnQoJGltZzogZmFsc2UpIHtcbiAgQGlmICRpbWcge1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkaW1nKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKCRiYXNlLXJoeXRobS11bml0KTtcbiAgfVxufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHJoeXRobSB1bml0cy5cbkBmdW5jdGlvbiByaHl0aG0oXG4gICRsaW5lczogMSxcbiAgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLFxuICAkb2Zmc2V0OiAwXG4pIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gdGhlIHJoeXRobSBmdW5jdGlvblwiO1xuICB9XG4gICRyaHl0aG06ICRmb250LXVuaXQgKiAoJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkb2Zmc2V0KSAvICRmb250LXNpemU7XG4gIC8vIFJvdW5kIHRoZSBwaXhlbHMgZG93biB0byBuZWFyZXN0IGludGVnZXIuXG4gIEBpZiB1bml0KCRyaHl0aG0pID09IHB4IHtcbiAgICAkcmh5dGhtOiBmbG9vcigkcmh5dGhtKTtcbiAgfVxuICBAcmV0dXJuICRyaHl0aG07XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWluaW11bSBtdWx0aXBsZSBvZiByaHl0aG0gdW5pdHMgbmVlZGVkIHRvIGNvbnRhaW4gdGhlIGZvbnQtc2l6ZS5cbkBmdW5jdGlvbiBsaW5lcy1mb3ItZm9udC1zaXplKCRmb250LXNpemUpIHtcbiAgJGxpbmVzOiBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsXG4gICAgICAgICAgICAgIGNlaWwoMiAqICRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkgLyAyLFxuICAgICAgICAgICAgICBjZWlsKCRmb250LXNpemUgLyAkYmFzZS1saW5lLWhlaWdodCkpO1xuICBAaWYgJGxpbmVzICogJGJhc2UtbGluZS1oZWlnaHQgLSAkZm9udC1zaXplIDwgJG1pbi1saW5lLXBhZGRpbmcgKiAyIHtcbiAgICAkbGluZXM6ICRsaW5lcyArIGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSwgMC41LCAxKTtcbiAgfVxuICBAcmV0dXJuICRsaW5lcztcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJHByb3BlcnR5OiBtYXJnaW4pIHtcbiAgI3skcHJvcGVydHl9LWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIG1hcmdpbi5cbkBtaXhpbiBtYXJnaW4tdHJhaWxlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBtYXJnaW4tYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IGEgYm9yZGVyIGFuZCB3aGl0ZXNwYWNlIHRvIGFueSBzaWRlIHdpdGhvdXQgZGVzdHJveWluZyB0aGUgdmVydGljYWxcbi8vIHJoeXRobS4gVGhlIHdoaXRlc3BhY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuXG5AbWl4aW4gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKCRzaWRlLCAkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyXCI7XG4gIH1cbiAgYm9yZGVyLSN7JHNpZGV9LXN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICBib3JkZXItI3skc2lkZX0td2lkdGg6ICRmb250LXVuaXQgKiAkd2lkdGggLyAkZm9udC1zaXplO1xuICBwYWRkaW5nLSN7JHNpZGV9OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplLCAkb2Zmc2V0OiAkd2lkdGgpO1xufVxuXG4vLyBBcHBseSBib3JkZXJzIGFuZCB3aGl0ZXNwYWNlIGVxdWFsbHkgdG8gYWxsIHNpZGVzLlxuQG1peGluIHJoeXRobS1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byByaHl0aG0tYm9yZGVyc1wiO1xuICB9XG4gIGJvcmRlcjoge1xuICAgIHN0eWxlOiAkYm9yZGVyLXN0eWxlO1xuICAgIHdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgfTtcbiAgcGFkZGluZzogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYSBsZWFkaW5nIGJvcmRlci5cbkBtaXhpbiBsZWFkaW5nLWJvcmRlcigkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgYXBwbHktc2lkZS1yaHl0aG0tYm9yZGVyKHRvcCwgJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBcHBseSBhIHRyYWlsaW5nIGJvcmRlci5cbkBtaXhpbiB0cmFpbGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcihib3R0b20sICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYm90aCBsZWFkaW5nIGFuZCB0cmFpbGluZyBib3JkZXJzLlxuQG1peGluIGhvcml6b250YWwtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgbGVhZGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xuICBAaW5jbHVkZSB0cmFpbGluZy1ib3JkZXIoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuXG4vLyBBbGlhcyBmb3IgYGhvcml6b250YWwtYm9yZGVyc2AgbWl4aW4uXG5AbWl4aW4gaC1ib3JkZXJzKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoLCAkbGluZXMsICRmb250LXNpemUsICRib3JkZXItc3R5bGUpO1xufVxuIiwiQGltcG9ydCBcIi4uL2NzczMvaW1hZ2VzXCI7XG5AaW1wb3J0IFwiLi4vY3NzMy9iYWNrZ3JvdW5kLXNpemVcIjtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yICAgICA6IHJnYmEoMTAwLCAxMDAsIDIyNSwgMC4yNSkgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvciAgICAgOiByZ2JhKDAsIDAsIDAsIDApICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4geW91ciBncmlkXG4kZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMgICAgOiAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIHdpZHRoIG9mIHlvdXIgY29sdW1uc1xuJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGggICAgIDogMzBweCAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGd1dHRlcnNcbiRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoICAgICA6IDEwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgb2Zmc2V0LCBpZiB5b3VyIGNvbHVtbnMgYXJlIHBhZGRlZCBpbiBmcm9tIHRoZSBjb250YWluZXIgZWRnZVxuJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQgICAgICAgICAgIDogMHB4ICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgYmFzZWxpbmVcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IgICA6IHJnYmEoMCwgMCwgMCwgMC41KSAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgaGVpZ2h0IG9mIHlvdXIgYmFzZWxpbmUgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQgIDogMS41ZW0gICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyB0b2dnbGUgeW91ciBjb2x1bW5zIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzICAgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSB5b3VyIHZlcnRpY2FsIGdyaWRzIG9uIGFuZCBvZmZcbiRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgICA6IHRydWUgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIHRvZ2dsZSBhbGwgeW91ciBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1ncmlkLWJhY2tncm91bmRzICAgICAgICAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cbi8vIG9wdGlvbmFsbHkgZm9yY2UgeW91ciBncmlkLWltYWdlIHRvIHJlbWFpbiBmbHVpZFxuLy8gbm8gbWF0dGVyIHdoYXQgdW5pdHMgeW91IHVzZWQgdG8gZGVjbGFyZWQgeW91ciBncmlkLlxuJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZCAgICAgIDogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBiYXNlbGluZSBncmlkc1xuQGZ1bmN0aW9uIGdldC1iYXNlbGluZS1ncmFkaWVudChcbiAgJGNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGNvbG9yIDUlLCByZ2JhKCRjb2xvciwwKSA1JSk7XG4gIEByZXR1cm4gJGdyYWRpZW50O1xufVxuXG4vLyBDcmVhdGUgdGhlIGNvbG9yLXN0b3BzIG5lZWRlZCBmb3IgaG9yaXpvbnRhbCBncmlkc1xuQGZ1bmN0aW9uIGJ1aWxkLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkZ3JpZDogY29tcGFjdCgpO1xuICAkZ3JpZDogYXBwZW5kKCRncmlkLCAkZ3V0dGVyLWNvbG9yICRvZmZzZXQsIGNvbW1hKTtcbiAgQGZvciAkaSBmcm9tIDAgdG8gJHRvdGFsIHtcblxuICAgIC8vICRhIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgY29sdW1uLCBpbml0aWFsbHkgZXF1YWwgdG8gdGhlIG9mZnNldFxuICAgICRhOiAkb2Zmc2V0O1xuICAgIEBpZiAkaSA+IDAgeyAkYTogJGEgKyAoKCRjb2x1bW4gKyAkZ3V0dGVyKSAqICRpKTsgfVxuXG4gICAgLy8gJGcgcmVwcmVzZW50cyB0aGUgc3RhcnQgb2YgdGhpcyBndXR0ZXIsIGVxdWFsIHRvICRhIHBsdXMgb25lIGNvbHVtbi13aWR0aFxuICAgICRnOiAkYSArICRjb2x1bW47XG5cbiAgICAvLyAkeiByZXByZXNlbnRzIHRoZSBlbmQgb2YgYSBndXR0ZXIsIGVxdWFsIHRvICRnIHBsdXMgb25lIGd1dHRlci13aWR0aFxuICAgICR6OiAkZyArICRndXR0ZXI7XG5cbiAgICBAaWYgKHVuaXQoJGEpID09IFwiJVwiKSBhbmQgKCRpID09ICgkdG90YWwgLSAxKSkge1xuICAgICAgJHo6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gYW5kIHdlIGFkZCB0aGlzIGNvbHVtbi9ndXR0ZXIgcGFpciB0byBvdXIgZ3JpZFxuICAgICRncmlkOiBqb2luKCRncmlkLCAoJGNvbHVtbi1jb2xvciAkYSwgJGNvbHVtbi1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkZywgJGd1dHRlci1jb2xvciAkeikpO1xuICB9XG5cbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuLy8gUmV0dXJuIHRoZSBncmFkaWVudCBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtY29sdW1uLWdyYWRpZW50KFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gICRncmlkOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIGRvbid0IGZvcmNlIGZsdWlkIGdyaWRzIHdoZW4gdGhleSBhcmUgYWxyZWFkeSBmbHVpZC5cbiAgQGlmIHVuaXQoJGNvbHVtbikgPT0gXCIlXCIgeyAkZm9yY2UtZmx1aWQ6IGZhbHNlOyB9XG5cbiAgQGlmICRmb3JjZS1mbHVpZCB7XG4gICAgJGdyaWQ6IGdldC1jb2x1bW4tZmx1aWQtZ3JpZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfSBAZWxzZSB7XG4gICAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgaG9yaXpvbnRhbCBncmlkIGFzIGEgZ3JhZGllbnRcbiAgJGdyYWRpZW50OiBsaW5lYXItZ3JhZGllbnQobGVmdCwgJGdyaWQpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ29udmVydCBhIGdyaWQgZnJvbSBmaXhlZCB1bml0cyBpbnRvIHBlcmNlbnRhZ2VzLlxuQGZ1bmN0aW9uIGdldC1jb2x1bW4tZmx1aWQtZ3JpZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3Jcbikge1xuICAkY29udGV4dDogKCRjb2x1bW4gKiAkdG90YWwpICsgKCRndXR0ZXIgKiAoJHRvdGFsIC0gMSkgKyAoJG9mZnNldCAqIDIpKTtcbiAgJG9mZnNldDogJG9mZnNldCAvICRjb250ZXh0ICogMTAwJTtcbiAgJGNvbHVtbjogJGNvbHVtbiAvICRjb250ZXh0ICogMTAwJTtcbiAgJGd1dHRlcjogJGd1dHRlciAvICRjb250ZXh0ICogMTAwJTtcblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIHNldCBvZiBjb2xvci1zdG9wc1xuICAkZ3JpZDogYnVpbGQtZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IpO1xuICBAcmV0dXJuICRncmlkO1xufVxuXG5cbi8vIEFkZCBqdXN0IHRoZSBiYXNlbGluZSBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kKFxuICAkYmFzZWxpbmUgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJGNvbG9yICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvclxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKGdldC1iYXNlbGluZS1ncmFkaWVudCgkY29sb3IpKTtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUpO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBqdXN0IHRoZSBob3Jpem9udGFsIGdyaWQgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIGFuZCAkc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gIH1cbn1cblxuLy8gQWRkIGJvdGggaG9yaXpvbnRhbCBhbmQgYmFzZWxpbmUgZ3JpZHMgdG8gYW4gZWxlbWVudCdzIGJhY2tncm91bmRcbkBtaXhpbiBncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkYmFzZWxpbmUgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWhlaWdodCxcbiAgJG9mZnNldCAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1vZmZzZXQsXG4gICRjb2x1bW4tY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLWNvbG9yLFxuICAkZ3V0dGVyLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci1jb2xvcixcbiAgJGJhc2VsaW5lLWNvbG9yIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcixcbiAgJGZvcmNlLWZsdWlkICAgIDogJGdyaWQtYmFja2dyb3VuZC1mb3JjZS1mbHVpZFxuKSB7XG4gIEBpZiAkc2hvdy1ncmlkLWJhY2tncm91bmRzIHtcbiAgICBAaWYgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgICAgZ2V0LWJhc2VsaW5lLWdyYWRpZW50KCRiYXNlbGluZS1jb2xvciksXG4gICAgICAgIGdldC1jb2x1bW4tZ3JhZGllbnQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvciwgJGZvcmNlLWZsdWlkKVxuICAgICAgKTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlICRiYXNlbGluZSwgYXV0byk7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZWxpbmUsICRiYXNlbGluZS1jb2xvcik7XG4gICAgICBAaW5jbHVkZSBjb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kKCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZCk7XG4gICAgfVxuICB9XG59XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLCIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7XG4gIH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpO1xufVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAoKTtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xO1xuICB9IEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05O1xuICB9XG5cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOm51bGwsICRyZWplY3QzOm51bGwsICRyZWplY3Q0Om51bGwsICRyZWplY3Q1Om51bGwsICRyZWplY3Q2Om51bGwsICRyZWplY3Q3Om51bGwsICRyZWplY3Q4Om51bGwsICRyZWplY3Q5Om51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG5cbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7XG59XG5cbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YXJzKTtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICAgIEBpZiAkdmFyIHtcbiAgICAgICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCAkc2VwYXJhdG9yKTtcbiAgICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09ICdzdHJpbmcnIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgJ3VybCcpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJ3JnYicpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJyMnKSAhPSAxO1xuICAgIH0gQGVsc2VpZiB0eXBlLW9mKCRpdGVtKSA9PSAnY29sb3InIHtcbiAgICB9IEBlbHNlaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByZWZpeGVkO1xufVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuXG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7XG4gIH0gQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgfVxuXG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTtcbiAgICAgIH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByb3BzO1xufVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXN2ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW93ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXdlYmtpdCcsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW1veicsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctcGllJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgIH0gICAgXG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn0iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vIFxuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgICBAaWYgKCRmcm9tID09IHRvcCkge1xuICAgICAgICBAcmV0dXJuIGJvdHRvbTtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBib3R0b20pIHtcbiAgICAgICAgQHJldHVybiB0b3A7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gbGVmdCkge1xuICAgICAgICBAcmV0dXJuIHJpZ2h0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IHJpZ2h0KSB7XG4gICAgICAgIEByZXR1cm4gbGVmdDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBjZW50ZXIpIHtcbiAgICAgICAgQHJldHVybiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpe1xuICAgIEBpZiAoJHR5cGUgPT0gYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gaW1nO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlKXtcbiAgICAgICAgQHJldHVybiB0YWJsZTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBsaXN0LWl0ZW0pe1xuICAgICAgICBAcmV0dXJuIGxpO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdy1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGJvZHk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0aGVhZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRmb290O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdyl7XG4gICAgICAgIEByZXR1cm4gdHI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtY2VsbCl7XG4gICAgICAgIEByZXR1cm4gdGgsIHRkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNSl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0ZXh0LWlucHV0KXtcbiAgICAgICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vICBvdmVycmlkZSB0byBjaGFuZ2UgdGhlIGRlZmF1bHRcbiRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHNpemUgb2YgYmFja2dyb3VuZCBpbWFnZXMgdXNpbmcgcHgsIHdpZHRoIGFuZCBoZWlnaHQsIG9yIHBlcmNlbnRhZ2VzLlxuLy8gQ3VycmVudGx5IHN1cHBvcnRlZCBpbjogT3BlcmEsIEdlY2tvLCBXZWJraXQuXG4vL1xuLy8gKiBwZXJjZW50YWdlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJhY2tncm91bmQtb3JpZ2luIChkZWZhdWx0ID0gcGFkZGluZy1ib3gpXG4vLyAqIG1peGluIGRlZmF1bHRzIHRvOiBgJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplYFxuQG1peGluIGJhY2tncm91bmQtc2l6ZShcbiAgJHNpemUtMTogJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplLFxuICAkc2l6ZS0yOiBmYWxzZSxcbiAgJHNpemUtMzogZmFsc2UsXG4gICRzaXplLTQ6IGZhbHNlLFxuICAkc2l6ZS01OiBmYWxzZSxcbiAgJHNpemUtNjogZmFsc2UsXG4gICRzaXplLTc6IGZhbHNlLFxuICAkc2l6ZS04OiBmYWxzZSxcbiAgJHNpemUtOTogZmFsc2UsXG4gICRzaXplLTEwOiBmYWxzZVxuKSB7XG4gICRzaXplLTE6IGlmKHR5cGUtb2YoJHNpemUtMSkgPT0gc3RyaW5nLCB1bnF1b3RlKCRzaXplLTEpLCAkc2l6ZS0xKTtcbiAgJHNpemVzOiBjb21wYWN0KCRzaXplLTEsICRzaXplLTIsICRzaXplLTMsICRzaXplLTQsICRzaXplLTUsICRzaXplLTYsICRzaXplLTcsICRzaXplLTgsICRzaXplLTksICRzaXplLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtc2l6ZSwgJHNpemVzLCAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiY3NzMy9ib3JkZXItcmFkaXVzXCI7XG5AaW1wb3J0IFwiY3NzMy9pbmxpbmUtYmxvY2tcIjtcbkBpbXBvcnQgXCJjc3MzL29wYWNpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JveC1zaGFkb3dcIjtcbkBpbXBvcnQgXCJjc3MzL3RleHQtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy9jb2x1bW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiY3NzMy9ib3hcIjtcbkBpbXBvcnQgXCJjc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1jbGlwXCI7XG5AaW1wb3J0IFwiY3NzMy9iYWNrZ3JvdW5kLW9yaWdpblwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1zaXplXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvYXBwZWFyYW5jZVwiO1xuQGltcG9ydCBcImNzczMvcmVnaW9uc1wiO1xuQGltcG9ydCBcImNzczMvaHlwaGVuYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2ZpbHRlclwiO1xuQGltcG9ydCBcImNzczMvcGllXCI7XG5AaW1wb3J0IFwiY3NzMy91c2VyLWludGVyZmFjZVwiO1xuQGltcG9ydCBcImNzczMvZmxleGJveFwiOyIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuJGRlZmF1bHQtYm9yZGVyLXJhZGl1czogNXB4ICFkZWZhdWx0O1xuXG4vLyBSb3VuZCBhbGwgY29ybmVycyBieSBhIHNwZWNpZmljIGFtb3VudCwgZGVmYXVsdHMgdG8gdmFsdWUgb2YgYCRkZWZhdWx0LWJvcmRlci1yYWRpdXNgLlxuLy9cbi8vIFdoZW4gdHdvIHZhbHVlcyBhcmUgcGFzc2VkLCB0aGUgZmlyc3QgaXMgdGhlIGhvcml6b250YWwgcmFkaXVzXG4vLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdmVydGljYWwgcmFkaXVzLlxuLy9cbi8vIE5vdGU6IHdlYmtpdCBkb2VzIG5vdCBzdXBwb3J0IHNob3J0aGFuZCBzeW50YXggZm9yIHNldmVyYWwgY29ybmVycyBhdCBvbmNlLlxuLy8gU28gaW4gdGhlIGNhc2Ugd2hlcmUgeW91IHBhc3Mgc2V2ZXJhbCB2YWx1ZXMgb25seSB0aGUgZmlyc3Qgd2lsbCBiZSBwYXNzZWQgdG8gd2Via2l0LlxuLy9cbi8vIEV4YW1wbGVzOlxuLy9cbi8vICAgICAuc2ltcGxlICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCwgNHB4KTsgfVxuLy8gICAgIC5jb21wb3VuZCB7IEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4IDVweCwgM3B4IDZweCk7IH1cbi8vICAgICAuY3JhenkgICAgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDFweCAzcHggNXB4IDdweCwgMnB4IDRweCA2cHggOHB4KX1cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vL1xuLy8gICAgLnNpbXBsZSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4IDRweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAvIDRweDsgfVxuLy8gICAgXG4vLyAgICAuY29tcG91bmQge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDJweCAzcHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAycHggNXB4IC8gM3B4IDZweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7IH1cbi8vICAgIFxuLy8gICAgLmNyYXp5IHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxcHggMnB4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgLWtodG1sLWJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDtcbi8vICAgICAgYm9yZGVyLXJhZGl1czogMXB4IDNweCA1cHggN3B4IC8gMnB4IDRweCA2cHggOHB4OyB9XG5cbkBtaXhpbiBib3JkZXItcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMsICR2ZXJ0aWNhbC1yYWRpdXM6IGZhbHNlKSB7XG5cbiAgQGlmICR2ZXJ0aWNhbC1yYWRpdXMge1xuICAgIC8vIFdlYmtpdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIG9mZmljaWFsIHNob3J0aGFuZCBzeW50YXggZm9yIHNwZWNpZnlpbmdcbiAgICAvLyBhIHZlcnRpY2FsIHJhZGl1cyB1bmxlc3Mgc28gaW4gY2FzZSB0aGVyZSdzIHNldmVyYWwgd2Ugb25seSB0YWtlIHRoZSBmaXJzdC5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgZmlyc3QtdmFsdWUtb2YoJHJhZGl1cykgZmlyc3QtdmFsdWUtb2YoJHZlcnRpY2FsLXJhZGl1cyksXG4gICAgICBub3QoLW1veiksXG4gICAgICAtd2Via2l0LFxuICAgICAgbm90KC1vKSxcbiAgICAgIG5vdCgtbXMpLFxuICAgICAgbm90KC1raHRtbCksXG4gICAgICBub3Qob2ZmaWNpYWwpXG4gICAgKTtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItcmFkaXVzXCIsICRyYWRpdXMgdW5xdW90ZShcIi9cIikgJHZlcnRpY2FsLXJhZGl1cyxcbiAgICAgIC1tb3osXG4gICAgICBub3QoLXdlYmtpdCksXG4gICAgICBub3QoLW8pLFxuICAgICAgbm90KC1tcyksXG4gICAgICAta2h0bWwsXG4gICAgICBvZmZpY2lhbFxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3JkZXItcmFkaXVzLCAkcmFkaXVzKTtcbiAgfVxufVxuXG4vLyBSb3VuZCByYWRpdXMgYXQgcG9zaXRpb24gYnkgYW1vdW50LlxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJHZlcnRgOiBgdG9wYCwgYGJvdHRvbWBcbi8vICogbGVnYWwgdmFsdWVzIGZvciBgJGhvcnpgOiBgbGVmdGAsIGByaWdodGBcblxuQG1peGluIGJvcmRlci1jb3JuZXItcmFkaXVzKCR2ZXJ0LCAkaG9yeiwgJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICAvLyBTdXBwb3J0IGZvciBtb3ppbGxhJ3Mgc3ludGF4IGZvciBzcGVjaWZ5aW5nIGEgY29ybmVyXG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImJvcmRlci1yYWRpdXMtI3skdmVydH0jeyRob3J6fVwiLCAkcmFkaXVzLFxuICAgIC1tb3osXG4gICAgbm90KC13ZWJraXQpLFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90KG9mZmljaWFsKVxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItI3skdmVydH0tI3skaG9yen0tcmFkaXVzXCIsICRyYWRpdXMsXG4gICAgbm90KC1tb3opLFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbiAgXG59XG5cbi8vIFJvdW5kIHRvcC1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCB0b3AtcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXModG9wLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90dG9tLWxlZnQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIGxlZnQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1yaWdodCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItY29ybmVyLXJhZGl1cyhib3R0b20sIHJpZ2h0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIHRvcCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCByaWdodCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1yaWdodC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTtcbiAgQGluY2x1ZGUgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMoJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCBib3R0b20gY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItYm90dG9tLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggbGVmdCBjb3JuZXJzIGJ5IGFtb3VudFxuQG1peGluIGJvcmRlci1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMoJHJhZGl1cyk7IH1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrO1xuICB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7XG4gIH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgQ1NTIG9wYWNpdHkuIFRha2VzIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSBhcyB0aGUgYXJndW1lbnQsIGUuZy4gMC41IGZvciA1MCUgb3BhY2l0eS5cbi8vXG4vLyAgICAgQHBhcmFtICRvcGFjaXR5XG4vLyAgICAgICAgIEEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMSwgd2hlcmUgMCBpcyB0cmFuc3BhcmVudCBhbmQgMSBpcyBvcGFxdWUuXG5cbkBtaXhpbiBvcGFjaXR5KCRvcGFjaXR5KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllOCB7XG4gICAgZmlsdGVyOiB1bnF1b3RlKFwicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9I3tyb3VuZCgkb3BhY2l0eSAqIDEwMCl9KVwiKTtcbiAgfVxuICBvcGFjaXR5OiAkb3BhY2l0eTtcbn1cblxuLy8gTWFrZSBhbiBlbGVtZW50IGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQuXG5AbWl4aW4gdHJhbnNwYXJlbnQgeyBAaW5jbHVkZSBvcGFjaXR5KDApOyB9XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IG9wYXF1ZS5cbkBtaXhpbiBvcGFxdWUgeyBAaW5jbHVkZSBvcGFjaXR5KDEpOyB9XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gQGRvYyBvZmZcbi8vIFRoZXNlIGRlZmF1bHRzIG1ha2UgdGhlIGFyZ3VtZW50cyBvcHRpb25hbCBmb3IgdGhpcyBtaXhpblxuLy8gSWYgeW91IGxpa2UsIHNldCBkaWZmZXJlbnQgZGVmYXVsdHMgYmVmb3JlIGltcG9ydGluZy5cbi8vIEBkb2Mgb25cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoZSBkZWZhdWx0IGNvbG9yIGZvciBib3ggc2hhZG93c1xuJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcjogIzMzMzMzMyAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBvZmZzZXQuIFBvc2l0aXZlIGlzIHRvIHRoZSByaWdodC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgdmVydGljYWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyBkb3duLlxuJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldDogMHB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBibHVyIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cjogNXB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBzcHJlYWQgbGVuZ3RoLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQgOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc2hhZG93IGluc2V0OiBpbnNldCBvciBmYWxzZSAoZm9yIHN0YW5kYXJkIHNoYWRvdykuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0IDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzIGJveCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgYm94XG4vLyBzaGFkb3dzIGFyZSBuZWVkZWQuXG4vLyBFYWNoIHNoYWRvdyBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBib3gtc2hhZG93IHByb3BlcnR5LlxuQG1peGluIGJveC1zaGFkb3coXG4gICRzaGFkb3ctMSA6IGRlZmF1bHQsXG4gICRzaGFkb3ctMiA6IGZhbHNlLFxuICAkc2hhZG93LTMgOiBmYWxzZSxcbiAgJHNoYWRvdy00IDogZmFsc2UsXG4gICRzaGFkb3ctNSA6IGZhbHNlLFxuICAkc2hhZG93LTYgOiBmYWxzZSxcbiAgJHNoYWRvdy03IDogZmFsc2UsXG4gICRzaGFkb3ctOCA6IGZhbHNlLFxuICAkc2hhZG93LTkgOiBmYWxzZSxcbiAgJHNoYWRvdy0xMDogZmFsc2Vcbikge1xuICBAaWYgJHNoYWRvdy0xID09IGRlZmF1bHQge1xuICAgICRzaGFkb3ctMSA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdChpZigkZGVmYXVsdC1ib3gtc2hhZG93LWluc2V0LCBpbnNldCwgZmFsc2UpLCAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LCAkZGVmYXVsdC1ib3gtc2hhZG93LWJsdXIsICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLCAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yKSk7XG4gIH1cbiAgJHNoYWRvdyA6IGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2hhZG93LCAkc2hhZG93LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgYm94IHNoYWRvdyBmb3IgV2Via2l0LCBHZWNrbywgYW5kIENTUzMuXG4vLyBJbmNsdWRlcyBkZWZhdWx0IGFyZ3VtZW50cyBmb3IgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciBsZW5ndGgsIHNwcmVhZCBsZW5ndGgsIGNvbG9yIGFuZCBpbnNldC5cbkBtaXhpbiBzaW5nbGUtYm94LXNoYWRvdyhcbiAgJGhvZmYgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaC1vZmZzZXQsXG4gICR2b2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LXYtb2Zmc2V0LFxuICAkYmx1ciAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLFxuICAkc3ByZWFkIDogJGRlZmF1bHQtYm94LXNoYWRvdy1zcHJlYWQsXG4gICRjb2xvciAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWNvbG9yLFxuICAkaW5zZXQgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldFxuKSB7XG4gIEBpZiBub3QgKCRpbnNldCA9PSB0cnVlIG9yICRpbnNldCA9PSBmYWxzZSBvciAkaW5zZXQgPT0gaW5zZXQpIHtcbiAgICBAd2FybiBcIiRpbnNldCBleHBlY3RlZCB0byBiZSB0cnVlIG9yIHRoZSBpbnNldCBrZXl3b3JkLiBHb3QgI3skaW5zZXR9IGluc3RlYWQuIFVzaW5nOiBpbnNldFwiO1xuICB9XG5cbiAgQGlmICRjb2xvciA9PSBub25lIHtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpO1xuICB9IEBlbHNlIHtcbiAgICAkZnVsbCAgIDogJGhvZmYgJHZvZmY7XG4gICAgQGlmICRibHVyICAgeyAkZnVsbDogJGZ1bGwgJGJsdXI7ICAgfVxuICAgIEBpZiAkc3ByZWFkIHsgJGZ1bGw6ICRmdWxsICRzcHJlYWQ7IH1cbiAgICBAaWYgJGNvbG9yICB7ICRmdWxsOiAkZnVsbCAkY29sb3I7ICB9XG4gICAgQGlmICRpbnNldCAgeyAkZnVsbDogaW5zZXQgJGZ1bGw7ICAgfVxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coJGZ1bGwpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGluIHlvdXIgcHJvamVjdFxuXG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvcjogICAgI2FhYSAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0OiAwcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyOiAgICAgMXB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZDogICBmYWxzZSAgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgdGV4dCBzaGFkb3dzIHdoZW4gb25lIG9yIG1vcmUgc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gdGV4dC1zaGFkb3cgcHJvcGVydHkuXG4vL1xuLy8gTm90ZTogaWYgYW55IHNoYWRvdyBoYXMgYSBzcHJlYWQgcGFyYW1ldGVyLCB0aGlzIHdpbGwgY2F1c2UgdGhlIG1peGluXG4vLyB0byBlbWl0IHRoZSBzaGFkb3cgZGVjbGFyYXRpb24gdHdpY2UsIGZpcnN0IHdpdGhvdXQgdGhlIHNwcmVhZCxcbi8vIHRoZW4gd2l0aCB0aGUgc3ByZWFkIGluY2x1ZGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gcHJvZ3Jlc3NpdmVseVxuLy8gZW5oYW5jZSB0aGUgYnJvd3NlcnMgdGhhdCBkbyBzdXBwb3J0IHRoZSBzcHJlYWQgcGFyYW1ldGVyLlxuQG1peGluIHRleHQtc2hhZG93KFxuICAkc2hhZG93LTEgOiBkZWZhdWx0LFxuICAkc2hhZG93LTIgOiBmYWxzZSxcbiAgJHNoYWRvdy0zIDogZmFsc2UsXG4gICRzaGFkb3ctNCA6IGZhbHNlLFxuICAkc2hhZG93LTUgOiBmYWxzZSxcbiAgJHNoYWRvdy02IDogZmFsc2UsXG4gICRzaGFkb3ctNyA6IGZhbHNlLFxuICAkc2hhZG93LTggOiBmYWxzZSxcbiAgJHNoYWRvdy05IDogZmFsc2UsXG4gICRzaGFkb3ctMTA6IGZhbHNlXG4pIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTE6IGNvbXBhY3QoJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1ciAkZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IpO1xuICB9XG4gICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBqb2luKCgpLCgpLGNvbW1hKTtcbiAgJHNoYWRvd3M6IGpvaW4oKCksKCksY29tbWEpO1xuICAkaGFzLXNwcmVhZDogZmFsc2U7XG4gIEBlYWNoICRzaGFkb3cgaW4gY29tcGFjdCgkc2hhZG93LTEsICRzaGFkb3ctMiwgJHNoYWRvdy0zLCAkc2hhZG93LTQsICRzaGFkb3ctNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaGFkb3ctNiwgJHNoYWRvdy03LCAkc2hhZG93LTgsICRzaGFkb3ctOSwgJHNoYWRvdy0xMCkge1xuICAgIEBpZiBsZW5ndGgoJHNoYWRvdykgPiA0IHtcbiAgICAgICRoYXMtc3ByZWFkOiB0cnVlO1xuICAgICAgJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQ6IGFwcGVuZCgkc2hhZG93cy13aXRob3V0LXNwcmVhZCwgbnRoKCRzaGFkb3csMSkgbnRoKCRzaGFkb3csMikgbnRoKCRzaGFkb3csMykgbnRoKCRzaGFkb3csNSkpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsICRzaGFkb3cpO1xuICAgICAgJHNoYWRvd3M6IGFwcGVuZCgkc2hhZG93cywgJHNoYWRvdyk7XG4gICAgfVxuICB9XG4gIEBpZiAkaGFzLXNwcmVhZCB7XG4gICAgdGV4dC1zaGFkb3c6ICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkO1xuICB9XG4gIHRleHQtc2hhZG93OiAkc2hhZG93cztcbn1cblxuLy8gUHJvdmlkZXMgYSBzaW5nbGUgY3Jvc3MtYnJvd3NlciBDU1MgdGV4dCBzaGFkb3cuXG4vL1xuLy8gUHJvdmlkZXMgc2Vuc2libGUgZGVmYXVsdHMgZm9yIHRoZSBjb2xvciwgaG9yaXpvbnRhbCBvZmZzZXQsIHZlcnRpY2FsIG9mZnNldCwgYmx1ciwgYW5kIHNwcmVhZFxuLy8gYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uIGRlZmF1bHRzIGFib3ZlLlxuQG1peGluIHNpbmdsZS10ZXh0LXNoYWRvdyhcbiAgJGhvZmY6IGZhbHNlLFxuICAkdm9mZjogZmFsc2UsXG4gICRibHVyOiBmYWxzZSxcbiAgJHNwcmVhZDogZmFsc2UsXG4gICRjb2xvcjogZmFsc2Vcbikge1xuICAvLyBBIGxvdCBvZiBwZW9wbGUgdGhpbmsgdGhlIGNvbG9yIGNvbWVzIGZpcnN0LiBJdCBkb2Vzbid0LlxuICBAaWYgdHlwZS1vZigkaG9mZikgPT0gY29sb3Ige1xuICAgICR0ZW1wLWNvbG9yOiAkaG9mZjtcbiAgICAkaG9mZjogJHZvZmY7XG4gICAgJHZvZmY6ICRibHVyO1xuICAgICRibHVyOiAkc3ByZWFkO1xuICAgICRzcHJlYWQ6ICRjb2xvcjtcbiAgICAkY29sb3I6ICR0ZW1wLWNvbG9yO1xuICB9XG4gIC8vIENhbid0IHJlbHkgb24gZGVmYXVsdCBhc3NpZ25tZW50IHdpdGggbXVsdGlwbGUgc3VwcG9ydGVkIGFyZ3VtZW50IG9yZGVycy5cbiAgJGhvZmY6ICAgaWYoJGhvZmYsICAgJGhvZmYsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctaC1vZmZzZXQpO1xuICAkdm9mZjogICBpZigkdm9mZiwgICAkdm9mZiwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy12LW9mZnNldCk7XG4gICRibHVyOiAgIGlmKCRibHVyLCAgICRibHVyLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgICAgKTtcbiAgJHNwcmVhZDogaWYoJHNwcmVhZCwgJHNwcmVhZCwgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICApO1xuICAkY29sb3I6ICBpZigkY29sb3IsICAkY29sb3IsICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1jb2xvciAgICk7XG4gIC8vIFdlIGRvbid0IG5lZWQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoaXMgcHJvcGVydHkuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSBvciAkaG9mZiA9PSBub25lIHtcbiAgICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhub25lKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3coY29tcGFjdCgkaG9mZiAkdm9mZiAkYmx1ciAkc3ByZWFkICRjb2xvcikpO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTcGVjaWZ5IHRoZSBzaG9ydGhhbmQgYGNvbHVtbnNgIHByb3BlcnR5LlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbnMoMjBlbSAyKVxuQG1peGluIGNvbHVtbnMoJHdpZHRoLWFuZC1jb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1ucywgJHdpZHRoLWFuZC1jb3VudCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNvbHVtbnNcbkBtaXhpbiBjb2x1bW4tY291bnQoJGNvdW50KSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tY291bnQsICRjb3VudCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgZ2FwIGJldHdlZW4gY29sdW1ucyBlLmcuIGAyMHB4YFxuQG1peGluIGNvbHVtbi1nYXAoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tZ2FwLCAkd2lkdGgsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIGNvbHVtbnMgZS5nLiBgMTAwcHhgXG5AbWl4aW4gY29sdW1uLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXdpZHRoLCAkd2lkdGgsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIHdpZHRoIG9mIHRoZSBydWxlIGJldHdlZW4gY29sdW1ucyBlLmcuIGAxcHhgXG5AbWl4aW4gY29sdW1uLXJ1bGUtd2lkdGgoJHdpZHRoKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBzdHlsZSBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgZG90dGVkYC5cbi8vIFRoaXMgd29ya3MgbGlrZSBib3JkZXItc3R5bGUuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZS1zdHlsZSwgdW5xdW90ZSgkc3R5bGUpLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSBjb2xvciBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgYmx1ZWAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLWNvbG9yLlxuQG1peGluIGNvbHVtbi1ydWxlLWNvbG9yKCRjb2xvcikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtY29sb3IsICRjb2xvcixcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gTWl4aW4gZW5jb21wYXNzaW5nIGFsbCBjb2x1bW4gcnVsZSBwcm9wZXJ0aWVzXG4vLyBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgQGluY2x1ZGUgY29sdW1uLXJ1bGUoMXB4LCBzb2xpZCwgI2MwMClcbi8vXG4vLyBPciB0aGUgdmFsdWVzIGNhbiBiZSBzcGFjZSBzZXBhcmF0ZWQ6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCBzb2xpZCAjYzAwKVxuQG1peGluIGNvbHVtbi1ydWxlKCR3aWR0aCwgJHN0eWxlOiBmYWxzZSwgJGNvbG9yOiBmYWxzZSkge1xuICAkZnVsbCA6IC1jb21wYXNzLXNwYWNlLWxpc3QoY29tcGFjdCgkd2lkdGgsICRzdHlsZSwgJGNvbG9yKSk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tcnVsZSwgJGZ1bGwsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1iZWZvcmVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vL1xuLy8gIEV4YW1wbGU6IFxuLy8gICAgaDIuYmVmb3JlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYmVmb3JlKGFsd2F5cyk7fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy9cbi8vICBoMi5iZWZvcmUgeyAgICBcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWJlZm9yZTogYWx3YXlzO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstYmVmb3JlKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWJlZm9yZSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn1cblxuLy8gTWl4aW4gZm9yIHNldHRpbmcgY29sdW1uLWJyZWFrLWFmdGVyXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmFmdGVyIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWstYWZ0ZXIoYWx3YXlzKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy9cbi8vICBoMi5hZnRlciB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzO1xuLy8gICAgY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7IH1cbkBtaXhpbiBjb2x1bW4tYnJlYWstYWZ0ZXIoJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChjb2x1bW4tYnJlYWstYWZ0ZXIsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1pbnNpZGVcbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmluc2lkZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWluc2lkZSgpO31cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy8gIFxuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cbkBtaXhpbiBjb2x1bW4tYnJlYWstaW5zaWRlKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWluc2lkZSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn1cblxuLy8gQWxsLXB1cnBvc2UgbWl4aW4gZm9yIHNldHRpbmcgY29sdW1uIGJyZWFrcy5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJHR5cGUgOiBiZWZvcmUsIGFmdGVyLCBpbnNpZGUgXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgJyR2YWx1ZScgYXJlIGRlcGVuZGVudCBvbiAkdHlwZVxuLy8gICAgKiB3aGVuICR0eXBlID0gYmVmb3JlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gYWZ0ZXIsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYWx3YXlzLCBhdm9pZCwgbGVmdCwgcmlnaHQsIHBhZ2UsIGNvbHVtbiwgYXZvaWQtcGFnZSwgYXZvaWQtY29sdW1uXG4vLyAgICAqIHdoZW4gJHR5cGUgPSBpbnNpZGUsIGxlZ2FsIHZhbHVlcyBhcmUgYXV0bywgYXZvaWQsIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gIFxuLy8gIEV4YW1wbGVzOiBcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGJlZm9yZSwgYWx3YXlzKTt9XG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrKGFmdGVyLCBhbHdheXMpOyB9XG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhpbnNpZGUpOyB9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczogXG4vLyAgaDIuYmVmb3JlIHsgICAgXG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG4vLyAgXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG4vL1xuLy8gIGgyLmluc2lkZSB7XG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1pbnNpZGU6IGF1dG87XG4vLyAgICBjb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO31cbiBcbkBtaXhpbiBjb2x1bW4tYnJlYWsoJHR5cGU6IGJlZm9yZSwgJHZhbHVlOiBhdXRvKXtcbiAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChcImNvbHVtbi1icmVhay0jeyR0eXBlfVwiLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYm94IG1vZGVsIGZvciBNb3ppbGxhLCBXZWJraXQsIElFOCBhbmQgdGhlIGZ1dHVyZVxuLy9cbi8vIEBwYXJhbSAkYnNcbi8vICAgWyBjb250ZW50LWJveCB8IGJvcmRlci1ib3ggXVxuXG5AbWl4aW4gYm94LXNpemluZygkYnMpIHtcbiAgJGJzOiB1bnF1b3RlKCRicyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtc2l6aW5nLCAkYnMsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gZGlzcGxheTpib3g7IG11c3QgYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBvdGhlciBmbGV4Ym94IG1peGlucyB0byB3b3JrIHByb3Blcmx5XG5AbWl4aW4gZGlzcGxheS1ib3gge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgYm94LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgYm94IG9yaWVudGF0aW9uLCBhc3N1bWluZyB0aGF0IHRoZSB1c2VyIHdhbnRzIHNvbWV0aGluZyBsZXNzIGJsb2NrLWxpa2VcbiRkZWZhdWx0LWJveC1vcmllbnQ6IGhvcml6b250YWwgIWRlZmF1bHQ7XG5cbi8vIEJveCBvcmllbnRhdGlvbiBbIGhvcml6b250YWwgfCB2ZXJ0aWNhbCB8IGlubGluZS1heGlzIHwgYmxvY2stYXhpcyB8IGluaGVyaXQgXVxuQG1peGluIGJveC1vcmllbnQoXG4gICRvcmllbnRhdGlvbjogJGRlZmF1bHQtYm94LW9yaWVudFxuKSB7XG4gICRvcmllbnRhdGlvbiA6IHVucXVvdGUoJG9yaWVudGF0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmllbnQsICRvcmllbnRhdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveC1hbGlnblxuJGRlZmF1bHQtYm94LWFsaWduOiBzdHJldGNoICFkZWZhdWx0O1xuXG4vLyBCb3ggYWxpZ24gWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaCBdXG5AbWl4aW4gYm94LWFsaWduKFxuICAkYWxpZ25tZW50OiAkZGVmYXVsdC1ib3gtYWxpZ25cbikge1xuICAkYWxpZ25tZW50IDogdW5xdW90ZSgkYWxpZ25tZW50KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1hbGlnbiwgJGFsaWdubWVudCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveCBmbGV4XG4kZGVmYXVsdC1ib3gtZmxleDogMCAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBib3ggZmxleC4gQXBwbHkgdGhpcyB0byB0aGUgY2hpbGRyZW4gaW5zaWRlIHRoZSBib3guXG4vL1xuLy8gRm9yIGV4YW1wbGU6IFwiZGl2LmRpc3BsYXktYm94ID4gZGl2LmNoaWxkLWJveFwiIHdvdWxkIGdldCB0aGUgYm94IGZsZXggbWl4aW4uXG5AbWl4aW4gYm94LWZsZXgoXG4gICRmbGV4OiAkZGVmYXVsdC1ib3gtZmxleFxuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleCwgJGZsZXgsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBmbGV4IGdyb3VwXG4kZGVmYXVsdC1ib3gtZmxleC1ncm91cDogMSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gd2hpY2ggdGFrZXMgYW4gaW50IGFyZ3VtZW50IGZvciBmbGV4aWJsZSBncm91cGluZ1xuQG1peGluIGJveC1mbGV4LWdyb3VwKFxuICAkZ3JvdXA6ICRkZWZhdWx0LWJveC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1mbGV4LWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3Igb3JkaW5hbCBncm91cFxuJGRlZmF1bHQtYm94LW9yZGluYWwtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3Igb3JkaW5hbCBncm91cGluZyBhbmQgcmVhcnJhbmdpbmcgdGhlIG9yZGVyXG5AbWl4aW4gYm94LW9yZGluYWwtZ3JvdXAoXG4gICRncm91cDogJGRlZmF1bHQtb3JkaW5hbC1mbGV4LWdyb3VwXG4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1vcmRpbmFsLWdyb3VwLCAkZ3JvdXAsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQm94IGRpcmVjdGlvbiBkZWZhdWx0IHZhbHVlXG4kZGVmYXVsdC1ib3gtZGlyZWN0aW9uOiBub3JtYWwgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3gtZGlyZWN0aW9uIFsgbm9ybWFsIHwgcmV2ZXJzZSB8IGluaGVyaXQgXVxuQG1peGluIGJveC1kaXJlY3Rpb24oXG4gICRkaXJlY3Rpb246ICRkZWZhdWx0LWJveC1kaXJlY3Rpb25cbikge1xuICAkZGlyZWN0aW9uOiB1bnF1b3RlKCRkaXJlY3Rpb24pO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBib3ggbGluZXNcbiRkZWZhdWx0LWJveC1saW5lczogc2luZ2xlICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IGxpbmVzIFsgc2luZ2xlIHwgbXVsdGlwbGUgXVxuQG1peGluIGJveC1saW5lcyhcbiAgJGxpbmVzOiAkZGVmYXVsdC1ib3gtbGluZXNcbikge1xuICAkbGluZXM6IHVucXVvdGUoJGxpbmVzKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1saW5lcywgJGxpbmVzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIGJveCBwYWNrXG4kZGVmYXVsdC1ib3gtcGFjazogc3RhcnQgIWRlZmF1bHQ7XG5cbi8vIG1peGluIGZvciBib3ggcGFjayBbIHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSBdXG5AbWl4aW4gYm94LXBhY2soXG4gICRwYWNrOiAkZGVmYXVsdC1ib3gtcGFja1xuKSB7XG4gICRwYWNrOiB1bnF1b3RlKCRwYWNrKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1wYWNrLCAkcGFjayxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5AaW1wb3J0IFwiLi4vdXRpbGl0aWVzL2dlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCIuLi9mdW5jdGlvbnNcIjtcblxuLy8gQmFja2dyb3VuZCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZChcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRhZGQtcGllLWJnOiBwcmVmaXhlZCgtcGllLCAgICRiYWNrZ3JvdW5kcykgb3IgJG11bHQtYmdzO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1zdmcoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1vd2coJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6IC13ZWJraXQoJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgIC1tb3ooJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRiYWNrZ3JvdW5kcykgeyAgICAgIGJhY2tncm91bmQ6ICAgICAgLW8oJGJhY2tncm91bmRzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgYW5kICRhZGQtcGllLWJnICAgICAgICAgICAgICAgICAgICAgeyAtcGllLWJhY2tncm91bmQ6ICAgIC1waWUoJGJhY2tncm91bmRzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICAgICAgICAgJGJhY2tncm91bmRzIDtcbn1cblxuQG1peGluIGJhY2tncm91bmQtd2l0aC1jc3MyLWZhbGxiYWNrKFxuICAkYmFja2dyb3VuZC0xLFxuICAkYmFja2dyb3VuZC0yOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTQ6IGZhbHNlLFxuICAkYmFja2dyb3VuZC01OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTc6IGZhbHNlLFxuICAkYmFja2dyb3VuZC04OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtOTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTEwOiBmYWxzZVxuKSB7XG4gICRiYWNrZ3JvdW5kczogY29tcGFjdCgkYmFja2dyb3VuZC0xLCAkYmFja2dyb3VuZC0yLCAkYmFja2dyb3VuZC0zLCAkYmFja2dyb3VuZC00LCAkYmFja2dyb3VuZC01LFxuICAgICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xuICAkbXVsdC1iZ3M6IC1jb21wYXNzLWxpc3Qtc2l6ZSgkYmFja2dyb3VuZHMpID4gMTtcbiAgJHNpbXBsZS1iYWNrZ3JvdW5kOiBpZigkbXVsdC1iZ3Mgb3IgcHJlZml4ZWQoLWNzczIsICRiYWNrZ3JvdW5kcyksIC1jc3MyKC1jb21wYXNzLW50aCgkYmFja2dyb3VuZHMsIGxhc3QpKSwgZmFsc2UpO1xuICBAaWYgbm90KGJsYW5rKCRzaW1wbGUtYmFja2dyb3VuZCkpIHsgYmFja2dyb3VuZDogJHNpbXBsZS1iYWNrZ3JvdW5kOyB9XG4gIEBpbmNsdWRlIGJhY2tncm91bmQoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG59XG5cblxuLy8gQmFja2dyb3VuZCBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlLTEsXG4gICRpbWFnZS0yOiBmYWxzZSxcbiAgJGltYWdlLTM6IGZhbHNlLFxuICAkaW1hZ2UtNDogZmFsc2UsXG4gICRpbWFnZS01OiBmYWxzZSxcbiAgJGltYWdlLTY6IGZhbHNlLFxuICAkaW1hZ2UtNzogZmFsc2UsXG4gICRpbWFnZS04OiBmYWxzZSxcbiAgJGltYWdlLTk6IGZhbHNlLFxuICAkaW1hZ2UtMTA6IGZhbHNlXG4pIHtcbiAgJGltYWdlczogY29tcGFjdCgkaW1hZ2UtMSwgJGltYWdlLTIsICRpbWFnZS0zLCAkaW1hZ2UtNCwgJGltYWdlLTUsICRpbWFnZS02LCAkaW1hZ2UtNywgJGltYWdlLTgsICRpbWFnZS05LCAkaW1hZ2UtMTApO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkaW1hZ2VzKSBvciAtY29tcGFzcy1saXN0LXNpemUoJGltYWdlcykgPiAxO1xuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtc3ZnKCRpbWFnZXMpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1vd2coJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQoJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgIC1tb3ooJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2VzKSB7IGJhY2tncm91bmQtaW1hZ2U6ICAgICAgLW8oJGltYWdlcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICB7IEB3YXJuIFwiUElFIGRvZXMgbm90IHN1cHBvcnQgYmFja2dyb3VuZC1pbWFnZS4gVXNlIEBpbmNsdWRlIGJhY2tncm91bmQoI3skaW1hZ2VzfSkgaW5zdGVhZC5cIiB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAgICAgICAgICRpbWFnZXMgO1xufVxuXG4vLyBFbWl0IGEgSUUtU3BlY2lmaWMgZmlsdGVycyB0aGF0IHJlbmRlcnMgYSBzaW1wbGUgbGluZWFyIGdyYWRpZW50LlxuLy8gRm9yIHVzZSBpbiBJRSA2IC0gOC4gQmVzdCBwcmFjdGljZSB3b3VsZCBoYXZlIHlvdSBhcHBseSB0aGlzIHZpYSBhXG4vLyBjb25kaXRpb25hbCBJRSBzdHlsZXNoZWV0LCBidXQgaWYgeW91IG11c3QsIHlvdSBzaG91bGQgcGxhY2UgdGhpcyBiZWZvcmVcbi8vIGFueSBiYWNrZ3JvdW5kLWltYWdlIHByb3BlcnRpZXMgdGhhdCB5b3UgaGF2ZSBzcGVjaWZpZWQuXG4vL1xuLy8gRm9yIHRoZSBgJG9yaWVudGF0aW9uYCBwYXJhbWV0ZXIsIHlvdSBjYW4gcGFzcyBgdmVydGljYWxgIG9yIGBob3Jpem9udGFsYC5cbkBtaXhpbiBmaWx0ZXItZ3JhZGllbnQoJHN0YXJ0LWNvbG9yLCAkZW5kLWNvbG9yLCAkb3JpZW50YXRpb246IHZlcnRpY2FsKSB7XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG4gICRncmFkaWVudC10eXBlOiBpZigkb3JpZW50YXRpb24gPT0gdmVydGljYWwsIDAsIDEpO1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KGdyYWRpZW50VHlwZT0jeyRncmFkaWVudC10eXBlfSwgc3RhcnRDb2xvcnN0cj0nI3tpZS1oZXgtc3RyKCRzdGFydC1jb2xvcil9JywgZW5kQ29sb3JzdHI9JyN7aWUtaGV4LXN0cigkZW5kLWNvbG9yKX0nKTtcbiAgfVxufVxuXG5cbi8vIEJvcmRlciBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHByb3BlcnRpZXMgYW5kIHZhbHVlcy5cbkBtaXhpbiBib3JkZXItaW1hZ2UoJHZhbHVlKSB7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICB7ICAgIC1tb3otYm9yZGVyLWltYWdlOiAgICAtbW96KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogICAgLW93ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IC13ZWJraXQocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICB7ICAgICAgLW8tYm9yZGVyLWltYWdlOiAgICAgIC1vKHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgeyAgICAgICAgIGJvcmRlci1pbWFnZTogICAgLXN2ZyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItaW1hZ2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlO1xufVxuXG4vLyBMaXN0IHN0eWxlIGltYWdlIHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBsaXN0LXN0eWxlLWltYWdlKCRpbWFnZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCRpbWFnZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkaW1hZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJGltYWdlIDtcbn1cblxuLy8gTGlzdCBzdHlsZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZSgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC1zdHlsZS1pbWFnZTogICAgICAgICAkdmFsdWUgO1xufVxuXG4vLyBjb250ZW50IHByb3BlcnR5IHN1cHBvcnQgZm9yIHZlbmRvciBwcmVmaXhpbmcgd2l0aGluIHZhbHVlcy5cbkBtaXhpbiBjb250ZW50KCR2YWx1ZSkge1xuICAkdmFsdWU6IC1jb21wYXNzLWxpc3QoJHZhbHVlKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkdmFsdWUpIHsgY29udGVudDogICAgLW1veigkdmFsdWUpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1vd2coJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICR2YWx1ZSkgeyBjb250ZW50OiAtd2Via2l0KCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkdmFsdWUpIHsgY29udGVudDogICAgICAtbygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1zdmcoJHZhbHVlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAgICAgICAgICR2YWx1ZSA7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJmdW5jdGlvbnMvbGlzdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29uc3RhbnRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Rpc3BsYXlcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvY29sb3JzXCI7XG4iLCIvL1xuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGxpc3QgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9saXN0cy5yYlxuLy9cblxuXG4vLyBjb21wYWN0IGlzIHBhcnQgb2YgbGlic2Fzc1xuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbnRoKCRsaXN0LCAkcGxhY2UpIHtcbiAgLy8gWWVwLCBTYXNzLWxpc3RzIGFyZSAxLWluZGV4ZWQuXG4gIEBpZiAkcGxhY2UgPT0gXCJmaXJzdFwiIHtcbiAgICAkcGxhY2U6IDE7XG4gIH1cbiAgQGlmICRwbGFjZSA9PSBcImxhc3RcIiB7XG4gICAgJHBsYWNlOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAkcGxhY2UpO1xufVxuXG4vLyBjb21wYXNzX2xpc3QgY2FuJ3QgYmUgaW1wbGVtZW50ZWQgaW4gc2FzcyBzY3JpcHRcblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNwYWNlLWxpc3QoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAoKTtcbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkaXRlbTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRpdGVtczogJGl0ZW0xO1xuICB9IEBlbHNlIHtcbiAgICAkaXRlbXM6ICRpdGVtMSAkaXRlbTIgJGl0ZW0zICRpdGVtNCAkaXRlbTUgJGl0ZW02ICRpdGVtNyAkaXRlbTggJGl0ZW05O1xuICB9XG5cbiAgJGZ1bGw6IGZpcnN0LXZhbHVlLW9mKCRpdGVtcyk7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCBsZW5ndGgoJGl0ZW1zKSB7XG4gICAgJGl0ZW06IG50aCgkaXRlbXMsICRpKTtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwgJGl0ZW07XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLWxpc3Qtc2l6ZSgkbGlzdCkge1xuICBAcmV0dXJuIGxlbmd0aCgkbGlzdCk7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zbGljZSgkbGlzdCwgJHN0YXJ0LCAkZW5kOiBmYWxzZSkge1xuICBAaWYgJGVuZCA9PSBmYWxzZSB7XG4gICAgJGVuZDogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICAkZnVsbDogbnRoKCRsaXN0LCAkc3RhcnQpO1xuICBAZm9yICRpIGZyb20gJHN0YXJ0ICsgMSB0aHJvdWdoICRlbmQge1xuICAgICRmdWxsOiAkZnVsbCwgbnRoKCRsaXN0LCAkaSk7XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIHJlamVjdCgkbGlzdCwgJHJlamVjdDEsICRyZWplY3QyOm51bGwsICRyZWplY3QzOm51bGwsICRyZWplY3Q0Om51bGwsICRyZWplY3Q1Om51bGwsICRyZWplY3Q2Om51bGwsICRyZWplY3Q3Om51bGwsICRyZWplY3Q4Om51bGwsICRyZWplY3Q5Om51bGwpIHtcbiAgJHJlamVjdHM6ICRyZWplY3QxLCAkcmVqZWN0MiwgJHJlamVjdDMsICRyZWplY3Q0LCAkcmVqZWN0NSwgJHJlamVjdDYsICRyZWplY3Q3LCAkcmVqZWN0OCwgJHJlamVjdDk7XG5cbiAgJGZ1bGw6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIGluZGV4KCRyZWplY3RzLCAkaXRlbSkge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgJGZ1bGwge1xuICAgICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZnVsbDogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiBmaXJzdC12YWx1ZS1vZigkbGlzdCkge1xuICBAcmV0dXJuIG50aCgkbGlzdCwgMSk7XG59XG5cbkBmdW5jdGlvbiBjb21wYWN0KCR2YXJzLi4uKSB7XG4gICRzZXBhcmF0b3I6IGxpc3Qtc2VwYXJhdG9yKCR2YXJzKTtcbiAgJGxpc3Q6ICgpO1xuICBAZWFjaCAkdmFyIGluICR2YXJzIHtcbiAgICAgIEBpZiAkdmFyIHtcbiAgICAgICAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkdmFyLCAkc2VwYXJhdG9yKTtcbiAgICAgIH1cbiAgfVxuICBAcmV0dXJuICRsaXN0O1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY3Jvc3MgYnJvd3NlciBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIHByZWZpeGVkKCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICAkcHJlZml4ZWQ6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09ICdzdHJpbmcnIHtcbiAgICAgICRwcmVmaXhlZDogJHByZWZpeGVkIG9yIHN0ci1pbmRleCgkaXRlbSwgJ3VybCcpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJ3JnYicpICE9IDEgYW5kIHN0ci1pbmRleCgkaXRlbSwgJyMnKSAhPSAxO1xuICAgIH0gQGVsc2VpZiB0eXBlLW9mKCRpdGVtKSA9PSAnY29sb3InIHtcbiAgICB9IEBlbHNlaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkcHJlZml4ZWQ6IHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByZWZpeGVkO1xufVxuXG5AZnVuY3Rpb24gcHJlZml4KCRwcmVmaXgsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gICRwcm9wZXJ0aWVzOiBcIlwiO1xuXG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5MSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTE7XG4gIH0gQGVsc2Uge1xuICAgIC8vIFBhc3NpbmcgbXVsdGlwbGUgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgfVxuXG4gICRwcm9wczogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJGl0ZW0gPT0gbnVsbCB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiBwcmVmaXhlZCgkcHJlZml4LCAkaXRlbSkge1xuICAgICAgICAkaXRlbTogI3skcHJlZml4fS0jeyRpdGVtfTtcbiAgICAgIH1cbiAgICAgIEBpZiAkcHJvcHMge1xuICAgICAgICAkcHJvcHM6ICRwcm9wcywgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwcm9wczogJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHByb3BzO1xufVxuXG5AZnVuY3Rpb24gLXN2ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXN2ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW93ZygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW93ZycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXdlYmtpdCgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXdlYmtpdCcsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW1veigkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW1veicsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLW8oJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtcGllKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctcGllJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBncmFkaWVudCBzdXBwb3J0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2IvdjAuMTIuMi9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2dyYWRpZW50X3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gY29sb3Itc3RvcHMoJGl0ZW0xLCAkaXRlbTI6bnVsbCwgJGl0ZW0zOm51bGwsICRpdGVtNDpudWxsLCAkaXRlbTU6bnVsbCwgJGl0ZW02Om51bGwsICRpdGVtNzpudWxsLCAkaXRlbTg6bnVsbCwgJGl0ZW05Om51bGwpIHtcbiAgJGl0ZW1zOiAkaXRlbTIsICRpdGVtMywgJGl0ZW00LCAkaXRlbTUsICRpdGVtNiwgJGl0ZW03LCAkaXRlbTgsICRpdGVtOTtcbiAgJGZ1bGw6ICRpdGVtMTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGl0ZW1zIHtcbiAgICBAaWYgJGl0ZW0gIT0gbnVsbCB7XG4gICAgICAkZnVsbDogJGZ1bGwsICRpdGVtO1xuICAgIH0gICAgXG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn0iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb25zdGFudHMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb25zdGFudHMucmJcbi8vIFxuXG5AZnVuY3Rpb24gb3Bwb3NpdGUtcG9zaXRpb24oJGZyb20pIHtcbiAgICBAaWYgKCRmcm9tID09IHRvcCkge1xuICAgICAgICBAcmV0dXJuIGJvdHRvbTtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBib3R0b20pIHtcbiAgICAgICAgQHJldHVybiB0b3A7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gbGVmdCkge1xuICAgICAgICBAcmV0dXJuIHJpZ2h0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IHJpZ2h0KSB7XG4gICAgICAgIEByZXR1cm4gbGVmdDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBjZW50ZXIpIHtcbiAgICAgICAgQHJldHVybiBjZW50ZXI7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZGlzcGxheSBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9kaXNwbGF5LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGVsZW1lbnRzLW9mLXR5cGUoJHR5cGUpe1xuICAgIEBpZiAoJHR5cGUgPT0gYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBjZW50ZXIsIGRpciwgZGl2LCBkZCwgZGV0YWlscywgZGwsIGR0LCBmaWVsZHNldCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb3JtLCBmb290ZXIsIGZyYW1lc2V0LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBociwgaGVhZGVyLCBoZ3JvdXAsIGlzaW5kZXgsIG1haW4sIG1lbnUsIG5hdiwgbm9mcmFtZXMsIG5vc2NyaXB0LCBvbCwgcCwgcHJlLCBzZWN0aW9uLCBzdW1tYXJ5LCB1bDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGEsIGFiYnIsIGFjcm9ueW0sIGF1ZGlvLCBiLCBiYXNlZm9udCwgYmRvLCBiaWcsIGJyLCBjYW52YXMsIGNpdGUsIGNvZGUsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZm4sIGVtLCBlbWJlZCwgZm9udCwgaSwgaW1nLCBpbnB1dCwga2V5Z2VuLCBrYmQsIGxhYmVsLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcSwgcnAsIHJ0LCBydWJ5LCBzLCBzYW1wLCBzZWxlY3QsIHNtYWxsLCBzcGFuLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHRleHRhcmVhLCB0aW1lLCB0dCwgdSwgdmFyLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gaW1nO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlKXtcbiAgICAgICAgQHJldHVybiB0YWJsZTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBsaXN0LWl0ZW0pe1xuICAgICAgICBAcmV0dXJuIGxpO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdy1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGJvZHk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtaGVhZGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0aGVhZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1mb290ZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRmb290O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLXJvdyl7XG4gICAgICAgIEByZXR1cm4gdHI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtY2VsbCl7XG4gICAgICAgIEByZXR1cm4gdGgsIHRkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgZGV0YWlscywgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBtZW51LCBuYXYsIHNlY3Rpb24sIHN1bW1hcnk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZW1iZWQsIGtleWdlbiwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNSl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBkZXRhaWxzLCBlbWJlZCwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBrZXlnZW4sIG1haW4sIG1hcmssIG1lbnUsIG1ldGVyLCBuYXYsIG91dHB1dCwgcHJvZ3Jlc3MsIHJwLCBydCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSwgdGltZSwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0ZXh0LWlucHV0KXtcbiAgICAgICAgQHJldHVybiBpbnB1dCwgdGV4dGFyZWE7XG4gICAgfVxufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29sb3JzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbG9ycy5yYlxuLy9cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIGxpZ2h0ZW4vZGFya2VuIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBsaWdodG5lc3MgYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIHNjYWxlZCBkYXJrZXIsIGlmIHBvc2l0aXZlLCBpdCBpcyBzY2FsZWQgbGlnaHRlci5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIGxpZ2h0IG9yIGRhcmsgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1saWdodG5lc3MoJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2Ygc2F0dXJhdGUvZGVzYXR1cmF0ZSBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3Qtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuLy8gU2NhbGVzIGEgY29sb3IncyBzYXR1cmF0aW9uIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBkZXNhdHVyYXRlZCwgaWYgcG9zaXRpdmUsIGl0IGlzIHNhdHVyYXRlZC5cbi8vIFRoaXMgd2lsbCBuZXZlciByZXR1cm4gYSBwdXJlIHNhdHVyYXRlZCBvciBkZXNhdHVyYXRlZCBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBzY2FsZS1jb2xvcigkY29sb3IsICRzYXR1cmF0aW9uOiAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjMDAwMDAwLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCNmZmZmZmYsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBwYWRkaW5nLWJveGAgLS0gdGhlIGJveCBtb2RlbCB1c2VkIGJ5IG1vZGVybiBicm93c2Vycy5cbi8vXG4vLyBJZiB5b3Ugd2lzaCB0byBkbyBzbywgeW91IGNhbiBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb25zdGFudCB3aXRoIGBib3JkZXItYm94YFxuLy9cbi8vIFRvIG92ZXJyaWRlIHRvIHRoZSBkZWZhdWx0IGJvcmRlci1ib3ggbW9kZWwsIHVzZSB0aGlzIGNvZGU6XG4vLyAgICAgJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3ggIWRlZmF1bHQ7XG5cbi8vIENsaXAgdGhlIGJhY2tncm91bmQgKGltYWdlIGFuZCBjb2xvcikgYXQgdGhlIGVkZ2Ugb2YgdGhlIHBhZGRpbmcgb3IgYm9yZGVyLlxuLy9cbi8vIExlZ2FsIFZhbHVlczpcbi8vXG4vLyAgICogcGFkZGluZy1ib3hcbi8vICAgKiBib3JkZXItYm94XG4vLyAgICogdGV4dFxuXG5AbWl4aW4gYmFja2dyb3VuZC1jbGlwKCRjbGlwOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXApIHtcbiAgLy8gd2Via2l0IGFuZCBtb3ppbGxhIHVzZSB0aGUgZGVwcmVjYXRlZCBzaG9ydCBbYm9yZGVyIHwgcGFkZGluZ11cbiAgJGNsaXA6IHVucXVvdGUoJGNsaXApO1xuICAkZGVwcmVjYXRlZDogJGNsaXA7XG4gIEBpZiAkY2xpcCA9PSBwYWRkaW5nLWJveCB7ICRkZXByZWNhdGVkOiBwYWRkaW5nOyB9XG4gIEBpZiAkY2xpcCA9PSBib3JkZXItYm94IHsgJGRlcHJlY2F0ZWQ6IGJvcmRlcjsgfVxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1jbGlwLCAkZGVwcmVjYXRlZCxcbiAgICAtbW96LFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qgb2ZmaWNpYWxcbiAgKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGNsaXAsXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIE92ZXJyaWRlIGAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luOiBjb250ZW50LWJveCAhZGVmYXVsdDtcblxuLy8gUG9zaXRpb24gdGhlIGJhY2tncm91bmQgb2ZmIHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nLCBib3JkZXIgb3IgY29udGVudFxuLy9cbi8vICogUG9zc2libGUgdmFsdWVzOlxuLy8gICAqIGBwYWRkaW5nLWJveGBcbi8vICAgKiBgYm9yZGVyLWJveGBcbi8vICAgKiBgY29udGVudC1ib3hgXG4vLyAqIGJyb3dzZXIgZGVmYXVsdHMgdG8gYHBhZGRpbmctYm94YFxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0byBgY29udGVudC1ib3hgXG5cblxuQG1peGluIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW46ICRkZWZhdWx0LWJhY2tncm91bmQtb3JpZ2luKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJG9yaWdpbik7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmcgfCBjb250ZW50XVxuICAkZGVwcmVjYXRlZDogJG9yaWdpbjtcbiAgQGlmICRvcmlnaW4gPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJG9yaWdpbiA9PSBib3JkZXItYm94ICB7ICRkZXByZWNhdGVkOiBib3JkZXI7ICB9XG4gIEBpZiAkb3JpZ2luID09IGNvbnRlbnQtYm94IHsgJGRlcHJlY2F0ZWQ6IGNvbnRlbnQ7IH1cblxuICAvLyBTdXBwb3J0IGZvciB3ZWJraXQgYW5kIG1vemlsbGEncyB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgZm9ybVxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRkZXByZWNhdGVkLFxuICAgIC1tb3osXG4gICAgLXdlYmtpdCxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdCBvZmZpY2lhbFxuICApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1vcmlnaW4sICRvcmlnaW4sXG4gICAgbm90KC1tb3opLFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICAtbyxcbiAgICAtbXMsXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSxcbiAgJHNpemUtMjogZmFsc2UsXG4gICRzaXplLTM6IGZhbHNlLFxuICAkc2l6ZS00OiBmYWxzZSxcbiAgJHNpemUtNTogZmFsc2UsXG4gICRzaXplLTY6IGZhbHNlLFxuICAkc2l6ZS03OiBmYWxzZSxcbiAgJHNpemUtODogZmFsc2UsXG4gICRzaXplLTk6IGZhbHNlLFxuICAkc2l6ZS0xMDogZmFsc2Vcbikge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDcm9zcy1icm93c2VyIHN1cHBvcnQgZm9yIEBmb250LWZhY2UuIFN1cHBvcnRzIElFLCBHZWNrbywgV2Via2l0LCBPcGVyYS5cbi8vXG4vLyAqICRuYW1lIGlzIHJlcXVpcmVkLCBhcmJpdHJhcnksIGFuZCB3aGF0IHlvdSB3aWxsIHVzZSBpbiBmb250IHN0YWNrcy5cbi8vICogJGZvbnQtZmlsZXMgaXMgcmVxdWlyZWQgdXNpbmcgZm9udC1maWxlcygncmVsYXRpdmUvbG9jYXRpb24nLCAnZm9ybWF0JykuXG4vLyAgIGZvciBiZXN0IHJlc3VsdHMgdXNlIHRoaXMgb3JkZXI6IHdvZmYsIG9wZW50eXBlL3RydWV0eXBlLCBzdmdcbi8vICogJGVvdCBpcyByZXF1aXJlZCBieSBJRSwgYW5kIGlzIGEgcmVsYXRpdmUgbG9jYXRpb24gb2YgdGhlIGVvdCBmaWxlLlxuLy8gKiAkd2VpZ2h0IHNob3dzIGlmIHRoZSBmb250IGlzIGJvbGQsIGRlZmF1bHRzIHRvIG5vcm1hbFxuLy8gKiAkc3R5bGUgZGVmYXVsdHMgdG8gbm9ybWFsLCBtaWdodCBiZSBhbHNvIGl0YWxpY1xuLy8gKiBGb3IgYW5kcm9pZCAyLjIgQ29tcGF0aWJsaXR5LCBwbGVhc2UgZW5zdXJlIHRoYXQgeW91ciB3ZWIgcGFnZSBoYXNcbi8vICAgYSBtZXRhIHZpZXdwb3J0IHRhZy5cbi8vICogVG8gc3VwcG9ydCBpT1MgPCA0LjIsIGFuIFNWRyBmaWxlIG11c3QgYmUgcHJvdmlkZWRcbi8vXG4vLyBJZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBvdGhlciBmb3JtYXRzIGNoZWNrIG91dCB0aGUgRm9udCBTcXVpcnJlbFxuLy8gW2ZvbnQgZ2VuZXJhdG9yXShodHRwOi8vd3d3LmZvbnRzcXVpcnJlbC5jb20vZm9udGZhY2UvZ2VuZXJhdG9yKVxuLy9cblxuLy8gSW4gb3JkZXIgdG8gcmVmZXIgdG8gYSBzcGVjaWZpYyBzdHlsZSBvZiB0aGUgZm9udCBpbiB5b3VyIHN0eWxlc2hlZXRzIGFzIFxuLy8gZS5nLiBcImZvbnQtc3R5bGU6IGl0YWxpYztcIiwgIHlvdSBtYXkgYWRkIGEgY291cGxlIG9mIEBmb250LWZhY2UgaW5jbHVkZXNcbi8vIGNvbnRhaW5pbmcgdGhlIHJlc3BlY3RpdmUgZm9udCBmaWxlcyBmb3IgZWFjaCBzdHlsZSBhbmQgc3BlY3lpbmdcbi8vIHJlc3BlY3RpdmUgdGhlICRzdHlsZSBwYXJhbWV0ZXIuXG5cbi8vIE9yZGVyIG9mIHRoZSBpbmNsdWRlcyBtYXR0ZXJzLCBhbmQgaXQgaXM6IG5vcm1hbCwgYm9sZCwgaXRhbGljLCBib2xkK2l0YWxpYy5cblxuQG1peGluIGZvbnQtZmFjZShcbiAgJG5hbWUsIFxuICAkZm9udC1maWxlcywgXG4gICRlb3Q6IGZhbHNlLFxuICAkd2VpZ2h0OiBmYWxzZSxcbiAgJHN0eWxlOiBmYWxzZVxuKSB7XG4gICRpZWZvbnQ6IHVucXVvdGUoXCIjeyRlb3R9PyNpZWZpeFwiKTtcbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6IHF1b3RlKCRuYW1lKTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6IGZvbnQtdXJsKCRlb3QpO1xuICAgICAgJGZvbnQtZmlsZXM6IGZvbnQtdXJsKCRpZWZvbnQpIHVucXVvdGUoXCJmb3JtYXQoJ2VvdCcpXCIpLCAkZm9udC1maWxlczsgXG4gICAgfVxuICAgIHNyYzogJGZvbnQtZmlsZXM7XG4gICAgQGlmICR3ZWlnaHQge1xuICAgICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgfVxuICAgIEBpZiAkc3R5bGUge1xuICAgICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQGRvYyBvZmZcbi8vIE5vdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2FmYXJpLCBDaHJvbWUsIGFuZCBGaXJlZm94IGFsbCBzdXBwb3J0IDNEIHRyYW5zZm9ybXMuIEhvd2V2ZXIsXG4vLyBvbmx5IGluIHRoZSBtb3N0IHJlY2VudCBidWlsZHMuIFlvdSBzaG91bGQgYWxzbyBwcm92aWRlIGZhbGxiYWNrIDJkIHN1cHBvcnQgZm9yXG4vLyBPcGVyYSBhbmQgSUUuIElFMTAgaXMgc2xhdGVkIHRvIGhhdmUgM2QgZW5hYmxlZCwgYnV0IGlzIGN1cnJlbnRseSB1bnJlbGVhc2VkLlxuLy8gVG8gbWFrZSB0aGF0IGVhc3ksIGFsbCAyRCB0cmFuc2Zvcm1zIGluY2x1ZGUgYW4gYnJvd3Nlci10YXJnZXRpbmcgdG9nZ2xlICgkb25seTNkKVxuLy8gdG8gc3dpdGNoIGJldHdlZW4gdGhlIHR3byBzdXBwb3J0IGxpc3RzLiBUaGUgdG9nZ2xlIGRlZmF1bHRzIHRvICdmYWxzZScgKDJEKSxcbi8vIGFuZCBhbHNvIGFjY2VwdHMgJ3RydWUnICgzRCkuIEN1cnJlbnRseSB0aGUgbGlzdHMgYXJlIGFzIGZvbGxvd3M6XG4vLyAyRDogTW96aWxsYSwgV2Via2l0LCBPcGVyYSwgT2ZmaWNpYWxcbi8vIDNEOiBXZWJraXQsIEZpcmVmb3guXG5cbi8vIEF2YWlsYWJsZSBUcmFuc2Zvcm1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBTY2FsZSAoMmQgYW5kIDNkKVxuLy8gLSBSb3RhdGUgKDJkIGFuZCAzZClcbi8vIC0gVHJhbnNsYXRlICgyZCBhbmQgM2QpXG4vLyAtIFNrZXcgKDJkIG9ubHkpXG5cbi8vIFRyYW5zZm9ybSBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBUcmFuc2Zvcm0gT3JpZ2luICgyZCBhbmQgM2QpXG4vLyAtIFBlcnNwZWN0aXZlICgzZClcbi8vIC0gUGVyc3BlY3RpdmUgT3JpZ2luICgzZClcbi8vIC0gVHJhbnNmb3JtIFN0eWxlICgzZClcbi8vIC0gQmFja2ZhY2UgVmlzaWJpbGl0eSAoM2QpXG5cbi8vIE1peGlucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdHJhbnNmb3JtLW9yaWdpblxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtLW9yaWdpbjJkLCB0cmFuc2Zvcm0tb3JpZ2luM2Rcbi8vICAtIGhlbHBlcnM6ICAgIGFwcGx5LW9yaWdpblxuLy8gdHJhbnNmb3JtXG4vLyAgLSBzaG9ydGN1dHM6ICB0cmFuc2Zvcm0yZCwgdHJhbnNmb3JtM2Rcbi8vICAtIGhlbHBlcnM6ICAgIHNpbXBsZS10cmFuc2Zvcm0sIGNyZWF0ZS10cmFuc2Zvcm1cbi8vIHBlcnNwZWN0aXZlXG4vLyAgLSBoZWxwZXJzOiAgICBwZXJzcGVjdGl2ZS1vcmlnaW5cbi8vIHRyYW5zZm9ybS1zdHlsZVxuLy8gYmFja2ZhY2UtdmlzaWJpbGl0eVxuLy8gc2NhbGVcbi8vICAtIHNob3J0Y3V0czogIHNjYWxlWCwgc2NhbGVZLCBzY2FsZVosIHNjYWxlM2Rcbi8vIHJvdGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgcm90YXRlWCwgcm90YXRlWSwgcm90YXRlM2Rcbi8vIHRyYW5zbGF0ZVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWiwgdHJhbnNsYXRlM2Rcbi8vIHNrZXdcbi8vICAtIHNob3J0Y3V0czogIHNrZXdYLCBza2V3WVxuXG4vLyBEZWZhdWx0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gVGhlIGRlZmF1bHQgeC1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi14ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi15ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei1vcmlnaW4gZm9yIHRyYW5zZm9ybXNcbiRkZWZhdWx0LW9yaWdpbi16ICAgIDogNTAlICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteCAgICAgOiAxLjI1ICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXkgICAgIDogJGRlZmF1bHQtc2NhbGUteCAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS16ICAgICA6ICRkZWZhdWx0LXNjYWxlLXggICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCBhbmdsZSBmb3Igcm90YXRpb25zXG4kZGVmYXVsdC1yb3RhdGUgICAgICA6IDQ1ZGVnICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteCAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci15ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgei12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXogICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXggOiAxZW0gICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteSA6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS16IDogJGRlZmF1bHQtdHJhbnNsYXRlLXggICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteCAgICAgIDogNWRlZyAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1hbmdsZSBmb3Igc2tld2luZ1xuJGRlZmF1bHQtc2tldy15ICAgICAgOiA1ZGVnICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gKipUcmFuc2Zvcm0tb3JpZ2luKipcbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBhIGNvbXBsZXRlIHN0cmluZ1xuLy9cbi8vICAgICBAaW5jbHVkZSBhcHBseS1vcmlnaW4oIG9yaWdpbiBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICdvcmlnaW4nIGlzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QgY29udGFpbmluZyAxLTMgKHgveS96KSBjb29yZGluYXRlc1xuLy8gaW4gcGVyY2VudGFnZXMsIGFic29sdXRlIChweCwgY20sIGluLCBlbSBldGMuLikgb3IgcmVsYXRpdmVcbi8vIChsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20sIGNlbnRlcikgdW5pdHNcbi8vXG4vLyBAcGFyYW0gb25seTNkIFNldCB0aGlzIHRvIHRydWUgdG8gb25seSBhcHBseSB0aGlzXG4vLyBtaXhpbiB3aGVyZSBicm93c2VycyBoYXZlIDNEIHN1cHBvcnQuXG5AbWl4aW4gYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpIHtcbiAgJG9ubHkzZDogJG9ubHkzZCBvciAtY29tcGFzcy1saXN0LXNpemUoLWNvbXBhc3MtbGlzdCgkb3JpZ2luKSkgPiAyO1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLW9yaWdpbiwgJG9yaWdpbixcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gVHJhbnNmb3JtLW9yaWdpbiBzZW50IGFzIGluZGl2aWR1YWwgYXJndW1lbnRzOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKCBbIG9yaWdpbi14LCBvcmlnaW4teSwgb3JpZ2luLXosIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlIDMgJ29yaWdpbi0nIGFyZ3VtZW50cyByZXByZXNlbnQgeC95L3ogY29vcmRpbmF0ZXMuXG4vL1xuLy8gKipOT1RFOioqIHNldHRpbmcgeiBjb29yZGluYXRlcyB0cmlnZ2VycyAzRCBzdXBwb3J0IGxpc3QsIGxlYXZlIGZhbHNlIGZvciAyRCBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbihcbiAgJG9yaWdpbi14OiAkZGVmYXVsdC1vcmlnaW4teCxcbiAgJG9yaWdpbi15OiAkZGVmYXVsdC1vcmlnaW4teSxcbiAgJG9yaWdpbi16OiBmYWxzZSxcbiAgJG9ubHkzZDogICBpZigkb3JpZ2luLXosIHRydWUsIGZhbHNlKVxuKSB7XG4gICRvcmlnaW46IHVucXVvdGUoJycpO1xuICBAaWYgJG9yaWdpbi14IG9yICRvcmlnaW4teSBvciAkb3JpZ2luLXoge1xuICAgIEBpZiAkb3JpZ2luLXggeyAkb3JpZ2luOiAkb3JpZ2luLXg7IH0gQGVsc2UgeyAkb3JpZ2luOiA1MCU7IH1cbiAgICBAaWYgJG9yaWdpbi15IHsgJG9yaWdpbjogJG9yaWdpbiAkb3JpZ2luLXk7IH0gQGVsc2UgeyBAaWYgJG9yaWdpbi16IHsgJG9yaWdpbjogJG9yaWdpbiA1MCU7IH19XG4gICAgQGlmICRvcmlnaW4teiB7ICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi16OyB9XG4gICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCRvcmlnaW4sICRvbmx5M2QpO1xuICB9XG59XG5cblxuLy8gVHJhbnNmb3JtIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmc6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHRyYW5zZm9ybSggdHJhbnNmb3JtcyBbLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlICd0cmFuc2Zvcm1zJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGFsbCB0aGUgdHJhbnNmb3JtcyB0byBiZSBhcHBsaWVkLlxuQG1peGluIHRyYW5zZm9ybShcbiAgJHRyYW5zZm9ybSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICBAaWYgJG9ubHkzZCB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybSwgJHRyYW5zZm9ybSxcbiAgICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBhbGwgYnJvd3NlcnMgd2l0aCAyRCB0cmFuc2Zvcm0gc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybTJkKCR0cmFucykge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCBmYWxzZSk7XG59XG5cbi8vIFNob3J0Y3V0IHRvIHRhcmdldCBvbmx5IGJyb3dzZXJzIHdpdGggM0QgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0zZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgdHJ1ZSk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyAzRCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2V0IHRoZSBwZXJzcGVjdGl2ZSBvZiAzRCB0cmFuc2Zvcm1zIG9uIHRoZSBjaGlsZHJlbiBvZiBhbiBlbGVtZW50OlxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoIHBlcnNwZWN0aXZlIClcbi8vXG4vLyB3aGVyZSAncGVyc3BlY3RpdmUnIGlzIGEgdW5pdGxlc3MgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgZGVwdGggb2YgdGhlXG4vLyB6LWF4aXMuIFRoZSBoaWdoZXIgdGhlIHBlcnNwZWN0aXZlLCB0aGUgbW9yZSBleGFnZ2VyYXRlZCB0aGUgZm9yZXNob3J0ZW5pbmcuXG4vLyB2YWx1ZXMgZnJvbSA1MDAgdG8gMTAwMCBhcmUgbW9yZS1vci1sZXNzIFwibm9ybWFsXCIgLSBhIGdvb2Qgc3RhcnRpbmctcG9pbnQuXG5AbWl4aW4gcGVyc3BlY3RpdmUoJHApIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLCAkcCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU2V0IHRoZSBvcmlnaW4gcG9zaXRpb24gZm9yIHRoZSBwZXJzcGVjdGl2ZVxuLy9cbi8vICAgICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUtb3JpZ2luKG9yaWdpbi14IFtvcmlnaW4teV0pXG4vL1xuLy8gd2hlcmUgdGhlIHR3byBhcmd1bWVudHMgcmVwcmVzZW50IHgveSBjb29yZGluYXRlc1xuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkb3JpZ2luOiA1MCUpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHBlcnNwZWN0aXZlLW9yaWdpbiwgJG9yaWdpbixcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGV0ZXJtaW5lIHdoZXRoZXIgYSAzRCBvYmplY3RzIGNoaWxkcmVuIGFsc28gbGl2ZSBpbiB0aGUgZ2l2ZW4gM0Qgc3BhY2Vcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZSggWyBzdHlsZSBdIClcbi8vXG4vLyB3aGVyZSBgc3R5bGVgIGNhbiBiZSBlaXRoZXIgYGZsYXRgIG9yIGBwcmVzZXJ2ZS0zZGAuXG4vLyBCcm93c2VycyBkZWZhdWx0IHRvIGBmbGF0YCwgbWl4aW4gZGVmYXVsdHMgdG8gYHByZXNlcnZlLTNkYC5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBwcmVzZXJ2ZS0zZCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLXN0eWxlLCAkc3R5bGUsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERldGVybWluZSB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IHdoZW4gaXQncyBiYWNrIGlzIHR1cm5lZFxuLy9cbi8vICAgICBAaW5jbHVkZSBiYWNrZmFjZS12aXNpYmlsaXR5KCBbIHZpc2liaWxpdHkgXSApXG4vL1xuLy8gd2hlcmUgYHZpc2liaWxpdHlgIGNhbiBiZSBlaXRoZXIgYHZpc2libGVgIG9yIGBoaWRkZW5gLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byB2aXNpYmxlLCBtaXhpbiBkZWZhdWx0cyB0byBoaWRkZW5cbkBtaXhpbiBiYWNrZmFjZS12aXNpYmlsaXR5KCR2aXNpYmlsaXR5OiBoaWRkZW4pIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNmb3JtIFBhcnRpYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGVzZSB3b3JrIHdlbGwgb24gdGhlaXIgb3duLCBidXQgdGhleSBkb24ndCBhZGQgdG8gZWFjaCBvdGhlciwgdGhleSBvdmVycmlkZS5cbi8vIFVzZSBhbG9uZyB3aXRoIHRyYW5zZm9ybSBwYXJhbWV0ZXIgbWl4aW5zIHRvIGFkanVzdCBvcmlnaW4sIHBlcnNwZWN0aXZlIGFuZCBzdHlsZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuLy8gU2NhbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBhbmQgeSBheGlzOlxuLy9cbi8vICAgICAgQGluY2x1ZGUgc2NhbGUoIFsgc2NhbGUteCwgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gd2hlcmUgdGhlICdzY2FsZS0nIGFyZ3VtZW50cyBhcmUgdW5pdGxlc3MgbXVsdGlwbGllcnMgb2YgdGhlIHggYW5kIHkgZGltZW5zaW9uc1xuLy8gYW5kIHBlcnNwZWN0aXZlLCB3aGljaCB3b3JrcyB0aGUgc2FtZSBhcyB0aGUgc3RhbmQtYWxvbmUgcGVyc3BlY3RpdmUgcHJvcGVydHkvbWl4aW5cbi8vIGJ1dCBhcHBsaWVzIHRvIHRoZSBpbmRpdmlkdWFsIGVsZW1lbnQgKG11bHRpcGxpZWQgd2l0aCBhbnkgcGFyZW50IHBlcnNwZWN0aXZlKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZShcbiAgJHNjYWxlLXg6ICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkc2NhbGUteTogICAgICRzY2FsZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZSgkc2NhbGUteCwgJHNjYWxlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWCggWyBzY2FsZS14LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVYKFxuICAkc2NhbGU6ICAgICAgICRkZWZhdWx0LXNjYWxlLXgsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWCgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWSggWyBzY2FsZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVZKFxuICAkc2NhbGU6ICAgICAgICRkZWZhdWx0LXNjYWxlLXksXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWSgkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2NhbGUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXNcbi8vIEBpbmNsdWRlIHNjYWxlWiggWyBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGVaKFxuICAkc2NhbGU6ICRkZWZhdWx0LXNjYWxlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNjYWxlWigkc2NhbGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBTY2FsZSBhbmQgb2JqZWN0IGFsb25nIGFsbCB0aHJlZSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZTNkKCBbIHNjYWxlLXgsIHNjYWxlLXksIHNjYWxlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBzY2FsZTNkKFxuICAkc2NhbGUteDogICAgICRkZWZhdWx0LXNjYWxlLXgsXG4gICRzY2FsZS15OiAgICAgJGRlZmF1bHQtc2NhbGUteSxcbiAgJHNjYWxlLXo6ICAgICAkZGVmYXVsdC1zY2FsZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZTNkKCRzY2FsZS14LCAkc2NhbGUteSwgJHNjYWxlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gUm90YXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB6IGF4aXMgICgyRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vLyB3aGVyZSAncm90YXRpb24nIGlzIGFuIGFuZ2xlIHNldCBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0c1xuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGUoXG4gICRyb3RhdGU6ICAgICAgJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGUoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBBIGxvbmdjdXQgZm9yICdyb3RhdGUnIGluIGNhc2UgeW91IGZvcmdldCB0aGF0ICd6JyBpcyBpbXBsaWVkXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVooXG4gICRyb3RhdGU6ICAgICAgJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgcm90YXRlKCRyb3RhdGUsICRwZXJzcGVjdGl2ZSwgJG9ubHkzZCk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB4IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlWCggWyByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZVgoXG4gICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlWCgkcm90YXRlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gUm90YXRlIGFuIG9iamVjdCBhcm91bmQgdGhlIHkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVZKFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZVkoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIGFuIGFyYml0cmFyeSBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZSggWyB2ZWN0b3IteCwgdmVjdG9yLXksIHZlY3Rvci16LCByb3RhdGlvbiwgcGVyc3BlY3RpdmUgXSApXG4vLyB3aGVyZSB0aGUgJ3ZlY3Rvci0nIGFyZ3VtZW50cyBhY2NlcHQgdW5pdGxlc3MgbnVtYmVycy5cbi8vIFRoZXNlIG51bWJlcnMgYXJlIG5vdCBpbXBvcnRhbnQgb24gdGhlaXIgb3duLCBidXQgaW4gcmVsYXRpb24gdG8gb25lIGFub3RoZXJcbi8vIGNyZWF0aW5nIGFuIGF4aXMgZnJvbSB5b3VyIHRyYW5zZm9ybS1vcmlnaW4sIGFsb25nIHRoZSBheGlzIG9mIFh4ID0gWXkgPSBaei5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlM2QoXG4gICR2ZWN0b3IteDogJGRlZmF1bHQtdmVjdG9yLXgsXG4gICR2ZWN0b3IteTogJGRlZmF1bHQtdmVjdG9yLXksXG4gICR2ZWN0b3ItejogJGRlZmF1bHQtdmVjdG9yLXosXG4gICRyb3RhdGU6ICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlM2QoJHZlY3Rvci14LCAkdmVjdG9yLXksICR2ZWN0b3IteiwgJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBUcmFuc2xhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggb3IgeSBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgdGhlICd0cmFuc2xhdGUtJyBhcmd1bWVudHMgYWNjZXB0IGFueSBkaXN0YW5jZSBpbiBwZXJjZW50YWdlcyBvciBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIHVuaXRzLlxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUoXG4gICR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZSgkdHJhbnNsYXRlLXgsICR0cmFuc2xhdGUteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzICgyRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVgoXG4gICR0cmFucy14OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2UsXG4gICRvbmx5M2Q6ICAgICAgZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVgoJHRyYW5zLXgpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVZKFxuICAkdHJhbnMteTogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVZKCR0cmFucy15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWihcbiAgJHRyYW5zLXo6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWigkdHJhbnMteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4LCB5IGFuZCB6IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS14LCB0cmFuc2xhdGUteSwgdHJhbnNsYXRlLXosIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGUzZChcbiAgJHRyYW5zbGF0ZS14OiAkZGVmYXVsdC10cmFuc2xhdGUteCxcbiAgJHRyYW5zbGF0ZS15OiAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHRyYW5zbGF0ZS16OiAkZGVmYXVsdC10cmFuc2xhdGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlM2QoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXksICR0cmFuc2xhdGUteik7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIEBkb2Mgb2ZmXG4vLyBTa2V3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEBkb2Mgb25cblxuLy8gU2tldyBhbiBlbGVtZW50OlxuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteCwgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2tldy0nIGFyZ3VtZW50cyBhY2NlcHQgY3NzIGFuZ2xlcyBpbiBkZWdyZWVzIChkZWcpIG9yIHJhZGlhbiAocmFkKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tldyhcbiAgJHNrZXcteDogJGRlZmF1bHQtc2tldy14LFxuICAkc2tldy15OiAkZGVmYXVsdC1za2V3LXksXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBza2V3KCRza2V3LXgsICRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gU2tldyBhbiBlbGVtZW50IGFsb25nIHRoZSB4IGF4aXpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXdYKFxuICAkc2tldy14OiAkZGVmYXVsdC1za2V3LXgsXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBza2V3WCgkc2tldy14KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeSBheGlzXG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy15LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WShcbiAgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tld1koJHNrZXcteSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG5cbi8vIEZ1bGwgdHJhbnNmb3JtIG1peGluc1xuLy8gRm9yIHNldHRpbmdzIGFueSBjb21iaW5hdGlvbiBvZiB0cmFuc2Zvcm1zIGFzIGFyZ3VtZW50c1xuLy8gVGhlc2UgYXJlIGNvbXBsZXggYW5kIG5vdCBoaWdobHkgcmVjb21tZW5kZWQgZm9yIGRhaWx5IHVzZS4gVGhleSBhcmUgbWFpbmx5XG4vLyBoZXJlIGZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHB1cnBvc2VzLlxuLy9cbi8vICogdGhleSBpbmNsdWRlIG9yaWdpbiBhZGp1c3RtZW50c1xuLy8gKiBzY2FsZSB0YWtlcyBhIG11bHRpcGxpZXIgKHVuaXRsZXNzKSwgcm90YXRlIGFuZCBza2V3IHRha2UgZGVncmVlcyAoZGVnKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBjcmVhdGUtdHJhbnNmb3JtKFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkc2NhbGUteDogICAgIGZhbHNlLFxuICAkc2NhbGUteTogICAgIGZhbHNlLFxuICAkc2NhbGUtejogICAgIGZhbHNlLFxuICAkcm90YXRlLXg6ICAgIGZhbHNlLFxuICAkcm90YXRlLXk6ICAgIGZhbHNlLFxuICAkcm90YXRlLXo6ICAgIGZhbHNlLFxuICAkcm90YXRlM2Q6ICAgIGZhbHNlLFxuICAkdHJhbnMteDogICAgIGZhbHNlLFxuICAkdHJhbnMteTogICAgIGZhbHNlLFxuICAkdHJhbnMtejogICAgIGZhbHNlLFxuICAkc2tldy14OiAgICAgIGZhbHNlLFxuICAkc2tldy15OiAgICAgIGZhbHNlLFxuICAkb3JpZ2luLXg6ICAgIGZhbHNlLFxuICAkb3JpZ2luLXk6ICAgIGZhbHNlLFxuICAkb3JpZ2luLXo6ICAgIGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB1bnF1b3RlKFwiXCIpO1xuXG4gIC8vIHBlcnNwZWN0aXZlXG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgOyB9XG5cbiAgLy8gc2NhbGVcbiAgQGlmICRzY2FsZS14IGFuZCAkc2NhbGUteSB7XG4gICAgQGlmICRzY2FsZS16IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTsgfVxuICAgIEBlbHNlIHsgJHRyYW5zOiAkdHJhbnMgc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTsgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgJHNjYWxlLXggeyAkdHJhbnM6ICR0cmFucyBzY2FsZVgoJHNjYWxlLXgpOyB9XG4gICAgQGlmICRzY2FsZS15IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVZKCRzY2FsZS15KTsgfVxuICAgIEBpZiAkc2NhbGUteiB7ICR0cmFuczogJHRyYW5zIHNjYWxlWigkc2NhbGUteik7IH1cbiAgfVxuXG4gIC8vIHJvdGF0ZVxuICBAaWYgJHJvdGF0ZS14IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWCgkcm90YXRlLXgpOyB9XG4gIEBpZiAkcm90YXRlLXkgeyAkdHJhbnM6ICR0cmFucyByb3RhdGVZKCRyb3RhdGUteSk7IH1cbiAgQGlmICRyb3RhdGUteiB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVooJHJvdGF0ZS16KTsgfVxuICBAaWYgJHJvdGF0ZTNkIHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlM2QoJHJvdGF0ZTNkKTsgfVxuXG4gIC8vIHRyYW5zbGF0ZVxuICBAaWYgJHRyYW5zLXggYW5kICR0cmFucy15IHtcbiAgICBAaWYgJHRyYW5zLXogeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGUzZCgkdHJhbnMteCwgJHRyYW5zLXksICR0cmFucy16KTsgfVxuICAgIEBlbHNlIHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlKCR0cmFucy14LCAkdHJhbnMteSk7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICR0cmFucy14IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWCgkdHJhbnMteCk7IH1cbiAgICBAaWYgJHRyYW5zLXkgeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVZKCR0cmFucy15KTsgfVxuICAgIEBpZiAkdHJhbnMteiB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVooJHRyYW5zLXopOyB9XG4gIH1cblxuICAvLyBza2V3XG4gIEBpZiAkc2tldy14IGFuZCAkc2tldy15IHsgJHRyYW5zOiAkdHJhbnMgc2tldygkc2tldy14LCAkc2tldy15KTsgfVxuICBAZWxzZSB7XG4gICAgQGlmICRza2V3LXggeyAkdHJhbnM6ICR0cmFucyBza2V3WCgkc2tldy14KTsgfVxuICAgIEBpZiAkc2tldy15IHsgJHRyYW5zOiAkdHJhbnMgc2tld1koJHNrZXcteSk7IH1cbiAgfVxuXG4gIC8vIGFwcGx5IGl0IVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbigkb3JpZ2luLXgsICRvcmlnaW4teSwgJG9yaWdpbi16LCAkb25seTNkKTtcbn1cblxuXG4vLyBBIHNpbXBsaWZpZWQgc2V0IG9mIG9wdGlvbnNcbi8vIGJhY2t3YXJkcy1jb21wYXRpYmxlIHdpdGggdGhlIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlICd0cmFuc2Zvcm0nIG1peGluXG5AbWl4aW4gc2ltcGxlLXRyYW5zZm9ybShcbiAgJHNjYWxlOiAgICBmYWxzZSxcbiAgJHJvdGF0ZTogICBmYWxzZSxcbiAgJHRyYW5zLXg6ICBmYWxzZSxcbiAgJHRyYW5zLXk6ICBmYWxzZSxcbiAgJHNrZXcteDogICBmYWxzZSxcbiAgJHNrZXcteTogICBmYWxzZSxcbiAgJG9yaWdpbi14OiBmYWxzZSxcbiAgJG9yaWdpbi15OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGNyZWF0ZS10cmFuc2Zvcm0oXG4gICAgZmFsc2UsXG4gICAgJHNjYWxlLCAkc2NhbGUsIGZhbHNlLFxuICAgIGZhbHNlLCBmYWxzZSwgJHJvdGF0ZSwgZmFsc2UsXG4gICAgJHRyYW5zLXgsICR0cmFucy15LCBmYWxzZSxcbiAgICAkc2tldy14LCAkc2tldy15LFxuICAgICRvcmlnaW4teCwgJG9yaWdpbi15LCBmYWxzZSxcbiAgICBmYWxzZVxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ1NTIFRyYW5zaXRpb25zXG4vLyBDdXJyZW50bHkgb25seSB3b3JrcyBpbiBXZWJraXQuXG4vL1xuLy8gKiBleHBlY3RlZCBpbiBDU1MzLCBGaXJlRm94IDMuNi83IGFuZCBPcGVyYSBQcmVzdG8gMi4zXG4vLyAqIFdlJ2xsIGJlIHByZXBhcmVkLlxuLy9cbi8vIEluY2x1ZGluZyB0aGlzIHN1Ym1vZHVsZSBzZXRzIGZvbGxvd2luZyBkZWZhdWx0cyBmb3IgdGhlIG1peGluczpcbi8vXG4vLyAgICAgJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IGFsbFxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gOiAxc1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gOiBmYWxzZVxuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXkgICAgOiBmYWxzZVxuLy9cbi8vIE92ZXJyaWRlIHRoZW0gaWYgeW91IGxpa2UuIFRpbWluZy1mdW5jdGlvbiBhbmQgZGVsYXkgYXJlIHNldCB0byBmYWxzZSBmb3IgYnJvd3NlciBkZWZhdWx0cyAoZWFzZSwgMHMpLlxuXG4kZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5OiBhbGwgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246IDFzICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uOiBmYWxzZSAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogZmFsc2UgIWRlZmF1bHQ7XG5cbiR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXM6IHRyYW5zZm9ybSwgdHJhbnNmb3JtLW9yaWdpbiAhZGVmYXVsdDtcblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0eS0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkcHJvcGVydHktMiA6IGZhbHNlLFxuICAkcHJvcGVydHktMyA6IGZhbHNlLFxuICAkcHJvcGVydHktNCA6IGZhbHNlLFxuICAkcHJvcGVydHktNSA6IGZhbHNlLFxuICAkcHJvcGVydHktNiA6IGZhbHNlLFxuICAkcHJvcGVydHktNyA6IGZhbHNlLFxuICAkcHJvcGVydHktOCA6IGZhbHNlLFxuICAkcHJvcGVydHktOSA6IGZhbHNlLFxuICAkcHJvcGVydHktMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5LTEpID09IHN0cmluZyB7ICRwcm9wZXJ0eS0xOiB1bnF1b3RlKCRwcm9wZXJ0eS0xKTsgfVxuICAkcHJvcGVydGllczogY29tcGFjdCgkcHJvcGVydHktMSwgJHByb3BlcnR5LTIsICRwcm9wZXJ0eS0zLCAkcHJvcGVydHktNCwgJHByb3BlcnR5LTUsICRwcm9wZXJ0eS02LCAkcHJvcGVydHktNywgJHByb3BlcnR5LTgsICRwcm9wZXJ0eS05LCAkcHJvcGVydHktMTApO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydGllcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgICAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLW1veiwgICAgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1vLCAgICAgICRwcm9wZXJ0aWVzKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHkgOiAkcHJvcGVydGllcztcbn1cblxuLy8gT25lIG9yIG1vcmUgZHVyYXRpb25zIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZHVyYXRpb25zIHdpbGwgYWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZHVyYXRpb24oJGR1cmF0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRkdXJhdGlvbi0yIDogZmFsc2UsXG4gICRkdXJhdGlvbi0zIDogZmFsc2UsXG4gICRkdXJhdGlvbi00IDogZmFsc2UsXG4gICRkdXJhdGlvbi01IDogZmFsc2UsXG4gICRkdXJhdGlvbi02IDogZmFsc2UsXG4gICRkdXJhdGlvbi03IDogZmFsc2UsXG4gICRkdXJhdGlvbi04IDogZmFsc2UsXG4gICRkdXJhdGlvbi05IDogZmFsc2UsXG4gICRkdXJhdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZHVyYXRpb24tMSkgPT0gc3RyaW5nIHsgJGR1cmF0aW9uLTE6IHVucXVvdGUoJGR1cmF0aW9uLTEpOyB9XG4gICRkdXJhdGlvbnM6IGNvbXBhY3QoJGR1cmF0aW9uLTEsICRkdXJhdGlvbi0yLCAkZHVyYXRpb24tMywgJGR1cmF0aW9uLTQsICRkdXJhdGlvbi01LCAkZHVyYXRpb24tNiwgJGR1cmF0aW9uLTcsICRkdXJhdGlvbi04LCAkZHVyYXRpb24tOSwgJGR1cmF0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZHVyYXRpb24sICRkdXJhdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdGltaW5nIGZ1bmN0aW9uc1xuLy9cbi8vICogWyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoeDEsIHkxLCB4MiwgeTIpXVxuLy8gKiBGb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGVmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigkZnVuY3Rpb24tMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGZ1bmN0aW9uLTIgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTMgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTQgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTUgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTYgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTcgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTggOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTkgOiBmYWxzZSxcbiAgJGZ1bmN0aW9uLTEwOiBmYWxzZVxuKSB7XG4gICRmdW5jdGlvbi0xOiB1bnF1b3RlKCRmdW5jdGlvbi0xKTtcbiAgJGZ1bmN0aW9uczogY29tcGFjdCgkZnVuY3Rpb24tMSwgJGZ1bmN0aW9uLTIsICRmdW5jdGlvbi0zLCAkZnVuY3Rpb24tNCwgJGZ1bmN0aW9uLTUsICRmdW5jdGlvbi02LCAkZnVuY3Rpb24tNywgJGZ1bmN0aW9uLTgsICRmdW5jdGlvbi05LCAkZnVuY3Rpb24tMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sICRmdW5jdGlvbnMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSxcbiAgJGRlbGF5LTIgOiBmYWxzZSxcbiAgJGRlbGF5LTMgOiBmYWxzZSxcbiAgJGRlbGF5LTQgOiBmYWxzZSxcbiAgJGRlbGF5LTUgOiBmYWxzZSxcbiAgJGRlbGF5LTYgOiBmYWxzZSxcbiAgJGRlbGF5LTcgOiBmYWxzZSxcbiAgJGRlbGF5LTggOiBmYWxzZSxcbiAgJGRlbGF5LTkgOiBmYWxzZSxcbiAgJGRlbGF5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRkZWxheS0xKSA9PSBzdHJpbmcgeyAkZGVsYXktMTogdW5xdW90ZSgkZGVsYXktMSk7IH1cbiAgJGRlbGF5czogY29tcGFjdCgkZGVsYXktMSwgJGRlbGF5LTIsICRkZWxheS0zLCAkZGVsYXktNCwgJGRlbGF5LTUsICRkZWxheS02LCAkZGVsYXktNywgJGRlbGF5LTgsICRkZWxheS05LCAkZGVsYXktMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNpdGlvbi1kZWxheSwgJGRlbGF5cyxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBUcmFuc2l0aW9uIGFsbC1pbi1vbmUgc2hvcnRoYW5kXG5cbkBtaXhpbiBzaW5nbGUtdHJhbnNpdGlvbihcbiAgJHByb3BlcnR5OiAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5LFxuICAkZHVyYXRpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24sXG4gICRmdW5jdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbixcbiAgJGRlbGF5OiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5XG4pIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihjb21wYWN0KCRwcm9wZXJ0eSAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSkpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbihcbiAgJHRyYW5zaXRpb24tMSA6IGRlZmF1bHQsXG4gICR0cmFuc2l0aW9uLTIgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi00IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTUgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNiA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi03IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTggOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tOSA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi0xMDogZmFsc2Vcbikge1xuICBAaWYgJHRyYW5zaXRpb24tMSA9PSBkZWZhdWx0IHtcbiAgICAkdHJhbnNpdGlvbi0xIDogY29tcGFjdCgkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5ICRkZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbiAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5KTtcbiAgfVxuICAkdHJhbnNpdGlvbnM6IGZhbHNlO1xuICBAaWYgdHlwZS1vZigkdHJhbnNpdGlvbi0xKSA9PSBsaXN0IGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbi0xLDEpKSA9PSBsaXN0IHtcbiAgICAkdHJhbnNpdGlvbnM6IGpvaW4oJHRyYW5zaXRpb24tMSwgY29tcGFjdCgkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCksIGNvbW1hKTtcbiAgfSBAZWxzZSB7XG4gICAgJHRyYW5zaXRpb25zIDogY29tcGFjdCgkdHJhbnNpdGlvbi0xLCAkdHJhbnNpdGlvbi0yLCAkdHJhbnNpdGlvbi0zLCAkdHJhbnNpdGlvbi00LCAkdHJhbnNpdGlvbi01LCAkdHJhbnNpdGlvbi02LCAkdHJhbnNpdGlvbi03LCAkdHJhbnNpdGlvbi04LCAkdHJhbnNpdGlvbi05LCAkdHJhbnNpdGlvbi0xMCk7XG4gIH1cbiAgJGRlbGF5czogY29tbWEtbGlzdCgpO1xuICAkaGFzLWRlbGF5czogZmFsc2U7XG4gICR3ZWJraXQtdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG1vei12YWx1ZTogY29tbWEtbGlzdCgpO1xuICAkby12YWx1ZTogY29tbWEtbGlzdCgpO1xuXG4gIC8vIFRoaXMgYmxvY2sgY2FuIGJlIG1hZGUgY29uc2lkZXJhYmx5IHNpbXBsZXIgYXQgdGhlIHBvaW50IGluIHRpbWUgdGhhdFxuICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gIEBlYWNoICR0cmFuc2l0aW9uIGluICR0cmFuc2l0aW9ucyB7XG4gICAgLy8gRXh0cmFjdCB0aGUgdmFsdWVzIGZyb20gdGhlIGxpc3RcbiAgICAvLyAodGhpcyB3b3VsZCBiZSBjbGVhbmVyIGlmIG50aCB0b29rIGEgM3JkIGFyZ3VtZW50IHRvIHByb3ZpZGUgYSBkZWZhdWx0IHZhbHVlKS5cbiAgICAkcHJvcGVydHk6IG50aCgkdHJhbnNpdGlvbiwgMSk7XG4gICAgJGR1cmF0aW9uOiBmYWxzZTtcbiAgICAkdGltaW5nLWZ1bmN0aW9uOiBmYWxzZTtcbiAgICAkZGVsYXk6IGZhbHNlO1xuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMSB7ICRkdXJhdGlvbjogICAgICAgIG50aCgkdHJhbnNpdGlvbiwgMik7IH1cbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDIgeyAkdGltaW5nLWZ1bmN0aW9uOiBudGgoJHRyYW5zaXRpb24sIDMpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAzIHsgJGRlbGF5OiAgICAgICAgICAgbnRoKCR0cmFuc2l0aW9uLCA0KTsgJGhhcy1kZWxheXM6IHRydWU7IH1cblxuICAgIC8vIElmIGEgZGVsYXkgaXMgcHJvdmlkZWQgd2l0aG91dCBhIHRpbWluZyBmdW5jdGlvblxuICAgIEBpZiBpcy10aW1lKCR0aW1pbmctZnVuY3Rpb24pIGFuZCBub3QoJGRlbGF5KSB7ICRkZWxheTogJHRpbWluZy1mdW5jdGlvbjsgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBLZWVwIGEgbGlzdCBvZiBkZWxheXMgaW4gY2FzZSBvbmUgaXMgc3BlY2lmaWVkXG4gICAgJGRlbGF5czogYXBwZW5kKCRkZWxheXMsIGlmKCRkZWxheSwgJGRlbGF5LCAwcykpO1xuXG4gICAgJHdlYmtpdC12YWx1ZTogYXBwZW5kKCR3ZWJraXQtdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC13ZWJraXQsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pLi4uKSk7XG4gICAgICAgJG1vei12YWx1ZTogYXBwZW5kKCAgICRtb3otdmFsdWUsIGNvbXBhY3QoKHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCAgIC1tb3osICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KS4uLikpO1xuICAgICAgICAgJG8tdmFsdWU6IGFwcGVuZCggICAgICRvLXZhbHVlLCBjb21wYWN0KChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbiggICAgIC1vLCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkuLi4pKTtcbiAgfVxuXG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbiA6ICR3ZWJraXQtdmFsdWU7XG4gICAgLy8gb2xkIHdlYmtpdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGRlbGF5IHBhcmFtZXRlciBpbiB0aGUgc2hvcnRoYW5kIHNvIHdlIHByb2dyZXNzaXZlbHkgZW5oYW5jZSBpdC5cbiAgICBAaWYgJGhhcy1kZWxheXMgICAgICAgICAgICAgICAgICAgICAgIHsgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5IDogJGRlbGF5czsgICAgICAgfSB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbiA6ICRtb3otdmFsdWU7ICAgIH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAgICAgICAtby10cmFuc2l0aW9uIDogJG8tdmFsdWU7ICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24gOiAkdHJhbnNpdGlvbnM7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gUmV0dXJucyBgJHByb3BlcnR5YCB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaWYgaXQgaXMgZm91bmQgaW4gYCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXNgLlxuQGZ1bmN0aW9uIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICRwcm9wZXJ0eSkge1xuICBAaWYgdHlwZS1vZigkcHJvcGVydHkpID09IGxpc3Qge1xuICAgICRuZXctbGlzdDogY29tbWEtbGlzdCgpO1xuICAgIEBlYWNoICR2IGluICRwcm9wZXJ0eSB7XG4gICAgICAkbmV3LWxpc3Q6IGFwcGVuZCgkbmV3LWxpc3QsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRwcmVmaXgsICR2KSk7XG4gICAgfVxuICAgIEByZXR1cm4gJG5ldy1saXN0O1xuICB9IEBlbHNlIHtcbiAgICBAaWYgaW5kZXgoJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlcywgJHByb3BlcnR5KSB7XG4gICAgICBAcmV0dXJuICN7JHByZWZpeH0tI3skcHJvcGVydHl9O1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHJldHVybiAkcHJvcGVydHk7XG4gICAgfVxuICB9XG59XG5cbi8vIENoZWNrcyBpZiB0aGUgdmFsdWUgZ2l2ZW4gaXMgYSB1bml0IG9mIHRpbWUuXG5AZnVuY3Rpb24gaXMtdGltZSgkdmFsdWUpIHtcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIge1xuICAgIEByZXR1cm4gbm90KG5vdChpbmRleChzIG1zLCB1bml0KCR2YWx1ZSkpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENoYW5nZSB0aGUgYXBwZWFyYW5jZSBmb3IgTW96aWxsYSwgV2Via2l0IGFuZCBwb3NzaWJseSB0aGUgZnV0dXJlLlxuLy8gVGhlIGFwcGVhcmFuY2UgcHJvcGVydHkgaXMgY3VycmVudGx5IG5vdCBwcmVzZW50IGluIGFueSBuZXdlciBDU1Mgc3BlY2lmaWNhdGlvbi5cbi8vXG4vLyBUaGVyZSBpcyBubyBvZmZpY2lhbCBsaXN0IG9mIGFjY2VwdGVkIHZhbHVlcywgYnV0IHlvdSBtaWdodCBjaGVjayB0aGVzZSBzb3VyY2U6XG4vLyAgIE1vemlsbGEgOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9DU1MvLW1vei1hcHBlYXJhbmNlXG4vLyAgIFdlYmtpdCAgOiBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2Via2l0LW1pcnJvci9zb3VyY2UvYnJvd3NlL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluP3NwZWM9c3ZuZjFhZWE1NTlkY2QwMjVhODk0NmFhN2RhNmU0ZTgzMDZmNWMxYjYwNCZyPTYzYzdkMWFmNDQ0MzBiMzE0MjMzZmVhMzQyYzNkZGIyYTA1MmUzNjVcbi8vICAgKHNlYXJjaCBmb3IgJ2FwcGVhcmFuY2UnIHdpdGhpbiB0aGUgcGFnZSlcblxuQG1peGluIGFwcGVhcmFuY2UoJGFwKSB7XG4gICRhcDogdW5xdW90ZSgkYXApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYXBwZWFyYW5jZSwgJGFwLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFdlYmtpdCwgSUUxMCBhbmQgZnV0dXJlIHN1cHBvcnQgZm9yIFtDU1MgUmVnaW9uc10oaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLylcbi8vXG4vLyAkdGFyZ2V0IGlzIGEgdmFsdWUgeW91IHVzZSB0byBsaW5rIHR3byByZWdpb25zIG9mIHlvdXIgY3NzLiBHaXZlIHRoZSBzb3VyY2Ugb2YgeW91ciBjb250ZW50IHRoZSBmbG93LWludG8gcHJvcGVydHksIGFuZCBnaXZlIHlvdXIgdGFyZ2V0IGNvbnRhaW5lciB0aGUgZmxvdy1mcm9tIHByb3BlcnR5LlxuLy9cbi8vIEZvciBhIHZpc3VhbCBleHBsYW5hdGlvbiwgc2VlIHRoZSBkaWFncmFtcyBhdCBDaHJpcyBDb3lpZXInc1xuLy8gW0NTUy1Ucmlja3NdKGh0dHA6Ly9jc3MtdHJpY2tzLmNvbS9jb250ZW50LWZvbGRpbmcvKVxuXG5AbWl4aW4gZmxvdy1pbnRvKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctaW50bywgJHRhcmdldCxcbiAgICBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG5vdCBvZmZpY2lhbFxuICApO1xufVxuXG5AbWl4aW4gZmxvdy1mcm9tKCR0YXJnZXQpIHtcbiAgJHRhcmdldDogdW5xdW90ZSgkdGFyZ2V0KTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZsb3ctZnJvbSwgJHRhcmdldCxcbiAgICBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG5vdCBvZmZpY2lhbFxuICApO1xufSIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIE1peGlucyB0byBzdXBwb3J0IHNwZWNpZmljIENTUyBUZXh0IExldmVsIDMgZWxlbWVudHNcbi8vXG4vL1xuLy9cbi8vIE1peGluIGZvciB3b3JkLWJyZWFrIHByb3BlcnRpZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL2NzczMtdGV4dC8jd29yZC1icmVha1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogbm9ybWFsLCBrZWVwLWFsbCwgYnJlYWstYWxsXG4vL1xuLy8gRXhhbXBsZTpcbi8vICAgIHAud29yZEJyZWFrIHtAaW5jbHVkZSB3b3JkLWJyZWFrKGJyZWFrLWFsbCk7fVxuLy9cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIHAud29yZEJyZWFrIHtcbi8vICAgICAgLW1zLXdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO31cbi8vXG5AbWl4aW4gd29yZC1icmVhaygkdmFsdWU6IG5vcm1hbCl7XG4gIEBpZiAkdmFsdWUgPT0gYnJlYWstYWxsIHtcbiAgICAvL01vc3QgYnJvd3NlcnMgaGFuZGxlIHRoZSBicmVhay1hbGwgY2FzZSB0aGUgc2FtZS4uLlxuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICAgIC8vV2Via2l0IGhhbmRsZXMgYnJlYWstYWxsIGRpZmZlcmVudGx5Li4uIGFzIGJyZWFrLXdvcmRcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgYnJlYWstd29yZCxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssICR2YWx1ZSxcbiAgICAgIG5vdCgtbW96KSwgbm90KC13ZWJraXQpLCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbn1cblxuLy8gTWl4aW4gZm9yIHRoZSBoeXBoZW5zIHByb3BlcnR5XG4vL1xuLy8gVzNDIHNwZWNpZmljYXRpb246IGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdGV4dC8jaHlwaGVuc1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYXV0bywgbWFudWFsLCBub25lXG4vL1xuLy8gRXhhbXBsZTpcbi8vICBwIHtcbi8vICAgIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7fVxuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy8gIHAge1xuLy8gICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgaHlwaGVuczogYXV0bzt9XG4vL1xuQG1peGluIGh5cGhlbnMoJHZhbHVlOiBhdXRvKXtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGh5cGhlbnMsICR2YWx1ZSxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGZvciB4LWJyb3dzZXIgaHlwaGVuYXRpb24gYmFzZWQgb24gQGF1Y2hlbmJlcmcncyBwb3N0OlxuLy8gUmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIDx3YnIvPiBIVE1MIHRhZ1xuLy8gaHR0cDovL2Jsb2cua2VubmV0aC5pby9ibG9nLzIwMTIvMDMvMDQvd29yZC13cmFwcGluZy1oeXBlcm5hdGlvbi11c2luZy1jc3MvXG4vL1xuLy8gIEV4YW1wbGU6XG4vLyAgZGl2IHtAaW5jbHVkZSBoeXBoZW5hdGlvbjt9XG4vL1xuLy8gIFdoaWNoIGdlbmVyYXRlczpcbi8vICAgIGRpdiB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbi8vICAgICAgLW1vei1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICAtd2Via2l0LWh5cGhlbnM6IGF1dG87XG4vLyAgICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5hdGlvbntcbiAgQGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO1xuICBAaW5jbHVkZSBoeXBoZW5zO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gUHJvdmlkZXMgY3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciB0aGUgdXBjb21pbmcgKD8pIGNzczMgZmlsdGVyIHByb3BlcnR5LlxuLy9cbi8vIEVhY2ggZmlsdGVyIGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIGZpbHRlciBwcm9wZXJ0eS5cbkBtaXhpbiBmaWx0ZXIgKFxuICAkZmlsdGVyLTEsXG4gICRmaWx0ZXItMiA6IGZhbHNlLFxuICAkZmlsdGVyLTMgOiBmYWxzZSxcbiAgJGZpbHRlci00IDogZmFsc2UsXG4gICRmaWx0ZXItNSA6IGZhbHNlLFxuICAkZmlsdGVyLTYgOiBmYWxzZSxcbiAgJGZpbHRlci03IDogZmFsc2UsXG4gICRmaWx0ZXItOCA6IGZhbHNlLFxuICAkZmlsdGVyLTkgOiBmYWxzZSxcbiAgJGZpbHRlci0xMDogZmFsc2Vcbikge1xuICAkZmlsdGVyIDogY29tcGFjdCgkZmlsdGVyLTEsICRmaWx0ZXItMiwgJGZpbHRlci0zLCAkZmlsdGVyLTQsICRmaWx0ZXItNSwgJGZpbHRlci02LCAkZmlsdGVyLTcsICRmaWx0ZXItOCwgJGZpbHRlci05LCAkZmlsdGVyLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGZpbHRlciwgJGZpbHRlcixcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVzZSBTYXNzJ3MgQGV4dGVuZCBkaXJlY3RpdmUgdG8gYXBwbHkgdGhlIGJlaGF2aW9yXG4vLyB0byB5b3VyIFBJRSBlbGVtZW50cy4gVG8gYXNzaXN0IHlvdSwgQ29tcGFzcyBwcm92aWRlcyB0aGlzIHZhcmlhYmxlLlxuLy8gV2hlbiBzZXQsIGl0IHdpbGwgY2F1c2UgdGhlIGBAaW5jbHVkZSBwaWVgIG1peGluIHRvIGV4dGVuZCB0aGlzIGNsYXNzLlxuLy8gVGhlIGNsYXNzIG5hbWUgeW91IHByb3ZpZGUgc2hvdWxkICoqbm90KiogaW5jbHVkZSB0aGUgYC5gLlxuJHBpZS1iYXNlLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYXBwcm9hY2ggdG8gdXNpbmcgUElFLlxuLy8gQ2FuIGJlIG9uZSBvZjpcbi8vXG4vLyAqIHJlbGF0aXZlIChkZWZhdWx0KVxuLy8gKiB6LWluZGV4XG4vLyAqIG5vbmVcbiRwaWUtZGVmYXVsdC1hcHByb2FjaDogcmVsYXRpdmUgIWRlZmF1bHQ7XG5cbi8vIFRoZSBsb2NhdGlvbiBvZiB5b3VyIFBJRSBiZWhhdmlvciBmaWxlXG4vLyBUaGlzIHNob3VsZCBiZSByb290LXJlbGF0aXZlIHRvIHlvdXIgd2ViIHNlcnZlclxuLy8gcmVsYXRpdmUgYXNzZXRzIGRvbid0IHdvcmsuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXRcbi8vIHlvdSBzZXQgdGhpcyB5b3Vyc2VsZi5cbiRwaWUtYmVoYXZpb3I6IHN0eWxlc2hlZXQtdXJsKFwiUElFLmh0Y1wiKSAhZGVmYXVsdDtcblxuLy8gV2hlbiB1c2luZyB0aGUgei1pbmRleCBhcHByb2FjaCwgdGhlXG4vLyBmaXJzdCBhbmNlc3RvciBvZiB0aGUgUElFIGVsZW1lbnQgYXRcbi8vIG9yIGJlZm9yZSB0aGUgY29udGFpbmVyJ3Mgb3BhcXVlIGJhY2tncm91bmRcbi8vIHNob3VsZCBoYXZlIGEgei1pbmRleCBzZXQgYXMgd2VsbCB0byBlbnN1cmVcbi8vIHByb3BlcnQgei1pbmRleCBzdGFja2luZy5cbi8vXG4vLyBUaGUgYCRwb3NpdGlvbmAgYXJndW1lbnQgbXVzdCBiZSBzb21lIG5vbi1zdGF0aWNcbi8vIHZhbHVlIChhYnNvbHV0ZSwgcmVsYXRpdmUsIGV0Yy4pXG5AbWl4aW4gcGllLWNvbnRhaW5lcigkei1pbmRleDogMCwgJHBvc2l0aW9uOiByZWxhdGl2ZSkge1xuICB6LWluZGV4OiAkei1pbmRleDtcbiAgcG9zaXRpb246ICRwb3NpdGlvbjtcbn1cblxuLy8gUElFIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGlzIGJlaGF2aW9yIGF0dGFjaGVkIHRvIHRoZW0uXG4vLyBJRSBpcyBicm9rZW4gLS0gaXQgZG9lc24ndCB0aGluayBvZiBiZWhhdmlvciB1cmxzIGFzXG4vLyByZWxhdGl2ZSB0byB0aGUgc3R5bGVzaGVldC4gSXQgY29uc2lkZXJzIHRoZW0gcmVsYXRpdmVcbi8vIHRvIHRoZSB3ZWJwYWdlLiBBcyBhIHJlc3VsdCwgeW91IGNhbm5vdCByZWxpYWJseSB1c2Vcbi8vIGNvbXBhc3MncyByZWxhdGl2ZV9hc3NldHMgd2l0aCBQSUUuXG4vL1xuLy8gKiBgJGFwcHJvYWNoYCAtIG9uZSBvZjogcmVsYXRpdmUsIHotaW5kZXgsIG9yIG5vbmVcbi8vICogYCR6LWluZGV4YCAtIHdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoaXNcbi8vICAgICAgICAgICAgICAgIGlzIHRoZSB6LWluZGV4IHRoYXQgaXMgYXBwbGllZC5cbkBtaXhpbiBwaWUtZWxlbWVudChcbiAgJGFwcHJvYWNoOiAkcGllLWRlZmF1bHQtYXBwcm9hY2gsXG4gICR6LWluZGV4OiAwXG4pIHtcbiAgYmVoYXZpb3I6ICRwaWUtYmVoYXZpb3I7XG4gIEBpZiAkYXBwcm9hY2ggPT0gcmVsYXRpdmUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuICBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gei1pbmRleCB7XG4gICAgei1pbmRleDogJHotaW5kZXg7XG4gIH1cbn1cblxuLy8gYSBzbWFydCBtaXhpbiB0aGF0IGtub3dzIHRvIGV4dGVuZCBvciBpbmNsdWRlIHBpZS1lbGVtZW50IGFjY29yZGluZ1xuLy8gdG8geW91ciBzdHlsZXNoZWV0J3MgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuXG5AbWl4aW4gcGllKCRiYXNlLWNsYXNzOiAkcGllLWJhc2UtY2xhc3MpIHtcbiAgQGlmICRiYXNlLWNsYXNzIHtcbiAgICBAZXh0ZW5kIC4jeyRiYXNlLWNsYXNzfTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgcGllLWVsZW1lbnQ7XG4gIH1cbn1cblxuLy8gV2F0Y2ggYCRuYCBsZXZlbHMgb2YgYW5jZXN0b3JzIGZvciBjaGFuZ2VzIHRvIHRoZWlyIGNsYXNzIGF0dHJpYnV0ZVxuLy8gU28gdGhhdCBjYXNjYWRpbmcgc3R5bGVzIHdpbGwgd29yayBjb3JyZWN0bHkgb24gdGhlIFBJRSBlbGVtZW50LlxuQG1peGluIHBpZS13YXRjaC1hbmNlc3RvcnMoJG4pIHtcbiAgLXBpZS13YXRjaC1hbmNlc3RvcnM6ICRuO1xufVxuIiwiLy8gVXNlciBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUaGlzIGZpbGUgY2FuIGJlIGV4cGFuZGVkIHRvIGhhbmRsZSBhbGwgdGhlIHVzZXIgaW50ZXJmYWNlIHByb3BlcnRpZXMgYXNcbi8vIHRoZXkgYmVjb21lIGF2YWlsYWJsZSBpbiBicm93c2Vyczpcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvV0QtY3NzMy11c2VyaW50LTIwMDAwMjE2XG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cblxuLy8gVGhpcyBwcm9wZXJ0eSBjb250cm9scyB0aGUgc2VsZWN0aW9uIG1vZGVsIGFuZCBncmFudWxhcml0eSBvZiBhbiBlbGVtZW50LlxuLy9cbi8vIEBwYXJhbSAkc2VsZWN0XG4vLyAgIFsgbm9uZSB8IHRleHQgfCB0b2dnbGUgfCBlbGVtZW50IHwgZWxlbWVudHMgfCBhbGwgfCBpbmhlcml0IF1cbkBtaXhpbiB1c2VyLXNlbGVjdCgkc2VsZWN0KSB7XG4gICRzZWxlY3Q6IHVucXVvdGUoJHNlbGVjdCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh1c2VyLXNlbGVjdCwgJHNlbGVjdCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIC1raHRtbCwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3R5bGUgdGhlIGh0bWw1IGlucHV0IHBsYWNlaG9sZGVyIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBpdC5cbi8vXG4vLyBUaGUgc3R5bGVzIGZvciB0aGUgaW5wdXQgcGxhY2Vob2xkZXIgYXJlIHBhc3NlZCBhcyBtaXhpbiBjb250ZW50XG4vLyBhbmQgdGhlIHNlbGVjdG9yIGNvbWVzIGZyb20gdGhlIG1peGluJ3MgY29udGV4dC5cbi8vXG4vLyBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgICAgI3tlbGVtZW50cy1vZi10eXBlKHRleHQtaW5wdXQpfSB7XG4vLyAgICAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4vLyAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuLy8gICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy9cbi8vIGlmIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBwbGFjZWhvbGRlciBzdHlsZXMgdG8gYWxsIGVsZW1lbnRzIHN1cHBvcnRpbmdcbi8vIHRoZSBgaW5wdXQtcGxhY2Vob2xkZXJgIHBzZXVkbyBjbGFzcyAoYmV3YXJlIG9mIHBlcmZvcm1hbmNlIGltcGFjdHMpOlxuLy9cbi8vICAgICAqIHtcbi8vICAgICAgIEBpbmNsdWRlIGlucHV0LXBsYWNlaG9sZGVyIHtcbi8vICAgICAgICAgY29sb3I6ICNiZmJmYmY7XG4vLyAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbi8vICAgICAgIH1cbi8vICAgICB9XG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICY6LW1vei1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG4gICY6Oi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGlzIGlzIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uIGZvciBhbGwgdGhlIG90aGVyIG1peGlucyBpbiB0aGlzIG1vZHVsZS5cbi8vIEl0IGlzIHRoZSBvbmx5IHdheSB0byBhY2Nlc3MgcHJlZml4IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzcGVjLlxuLy8gRGV2aWF0ZXMgZnJvbSBjYW5vbmljYWwgQ29tcGFzcyBpbXBsZW1lbnRhdGlvbiBieSBkcm9wcGluZyBzdXBwb3J0IGZvclxuLy8gb2xkZXIgdmVyc2lvbnMgb2YgdGhlIEZsZXhib3ggc3BlYy5cbi8vXG4vLyBgJHByb3BlcnRpZXNgOiBtYXAgb2YgcHJvcGVydHktdmFsdWUgcGFpcnMgdGhhdCBzaG91bGQgYmUgcHJlZml4ZWRcbkBtaXhpbiBmbGV4Ym94KCRwcm9wZXJ0aWVzKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkcHJvcCA9PSBkaXNwbGF5IHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbC12YWx1ZShkaXNwbGF5LCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCgkcHJvcCwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCk7XG4gICAgfVxuICB9XG59XG5cbi8vIFZhbHVlcyBmb3IgJGRpc3BsYXkgYXJlOiBmbGV4IChkZWZhdWx0KSwgaW5saW5lLWZsZXhcbkBtaXhpbiBkaXNwbGF5LWZsZXgoJGRpc3BsYXk6IGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZGlzcGxheTogJGRpc3BsYXkpKTtcbn1cblxuLy8gVmFsdWVzOiByb3cgfCByb3ctcmV2ZXJzZSB8IGNvbHVtbiB8IGNvbHVtbi1yZXZlcnNlXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJGRpcmVjdGlvbikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbikpO1xufVxuXG4vLyBWYWx1ZXM6IG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2VcbkBtaXhpbiBmbGV4LXdyYXAoJHdyYXApIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC13cmFwOiAkd3JhcCkpO1xufVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZGlyZWN0aW9uIGFuZCBmbGV4LXdyYXAuXG5AbWl4aW4gZmxleC1mbG93KCRmbG93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZmxvdzogJGZsb3cpKTtcbn1cblxuLy8gQWNjZXB0cyBhbiBpbnRlZ2VyXG5AbWl4aW4gb3JkZXIoJG9yZGVyKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKG9yZGVyOiAkb3JkZXIpKTtcbn1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWdyb3csIGZsZXgtc2hyaW5rIGFuZCBvcHRpb25hbGx5IGZsZXgtYmFzaXMuXG4vLyBTcGFjZSBzZXBhcmF0ZWQsIGluIHRoYXQgb3JkZXIuXG5AbWl4aW4gZmxleCgkZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4OiAkZmxleCkpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtZ3JvdygkZmxleC1ncm93KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZ3JvdzogJGZsZXgtZ3JvdykpO1xufVxuXG4vLyBBY2NlcHRzIGEgbnVtYmVyLlxuQG1peGluIGZsZXgtc2hyaW5rKCRmbGV4LXNocmluaykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXNocmluazogJGZsZXgtc2hyaW5rKSk7XG59XG5cbi8vIEFjY2VwdHMgYW55IGxlZ2FsIHZhbHVlIGZvciB0aGUgd2lkdGggcHJvcGVydHkuXG5AbWl4aW4gZmxleC1iYXNpcygkZmxleC1iYXNpcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWJhc2lzOiAkZmxleC1iYXNpcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmRcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJGp1c3RpZnktY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5LWNvbnRlbnQpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1pdGVtcygkYWxpZ24taXRlbXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcykpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGF1dG8gfCBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1zZWxmKCRhbGlnbi1zZWxmKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLXNlbGY6ICRhbGlnbi1zZWxmKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZCB8IHN0cmV0Y2hcbkBtaXhpbiBhbGlnbi1jb250ZW50KCRhbGlnbi1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWNvbnRlbnQ6ICRhbGlnbi1jb250ZW50KSk7XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2MS4xLjIgfCBNSVQgTGljZW5zZSB8IGdpdC5pby9ub3JtYWxpemUgKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgNi83LzgvOSBhbmQgRmlyZWZveCAzLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgNi83LzgvOSBhbmQgRmlyZWZveCAzLlxuICovXG5cbmF1ZGlvLFxuY2FudmFzLFxudmlkZW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAqZGlzcGxheTogaW5saW5lO1xuICAgICp6b29tOiAxO1xufVxuXG4vKipcbiAqIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXG4gKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDcvOC85LCBGaXJlZm94IDMsIGFuZCBTYWZhcmkgNC5cbiAqIEtub3duIGlzc3VlOiBubyBJRSA2IHN1cHBvcnQuXG4gKi9cblxuW2hpZGRlbl0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIENvcnJlY3QgdGV4dCByZXNpemluZyBvZGRseSBpbiBJRSA2Lzcgd2hlbiBib2R5IGBmb250LXNpemVgIGlzIHNldCB1c2luZ1xuICogICAgYGVtYCB1bml0cy5cbiAqIDIuIFByZXZlbnQgaU9TIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlLCB3aXRob3V0IGRpc2FibGluZ1xuICogICAgdXNlciB6b29tLlxuICovXG5cbmh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTAwJTsgLyogMSAqL1xuICAgIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogQWRkcmVzcyBgZm9udC1mYW1pbHlgIGluY29uc2lzdGVuY3kgYmV0d2VlbiBgdGV4dGFyZWFgIGFuZCBvdGhlciBmb3JtXG4gKiBlbGVtZW50cy5cbiAqL1xuXG5odG1sLFxuYnV0dG9uLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2lucyBoYW5kbGVkIGluY29ycmVjdGx5IGluIElFIDYvNy5cbiAqL1xuXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIGBvdXRsaW5lYCBpbmNvbnNpc3RlbmN5IGJldHdlZW4gQ2hyb21lIGFuZCBvdGhlciBicm93c2Vycy5cbiAqL1xuXG5hOmZvY3VzIHtcbiAgICBvdXRsaW5lOiB0aGluIGRvdHRlZDtcbn1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IHdoZW4gZm9jdXNlZCBhbmQgYWxzbyBtb3VzZSBob3ZlcmVkIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBUeXBvZ3JhcGh5XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgZm9udCBzaXplcyBhbmQgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICogQWRkcmVzcyBmb250IHNpemVzIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYCBpbiBGaXJlZm94IDQrLCBTYWZhcmkgNSxcbiAqIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbmgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbjogMC44M2VtIDA7XG59XG5cbmgzIHtcbiAgICBmb250LXNpemU6IDEuMTdlbTtcbiAgICBtYXJnaW46IDFlbSAwO1xufVxuXG5oNCB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgbWFyZ2luOiAxLjMzZW0gMDtcbn1cblxuaDUge1xuICAgIGZvbnQtc2l6ZTogMC44M2VtO1xuICAgIG1hcmdpbjogMS42N2VtIDA7XG59XG5cbmg2IHtcbiAgICBmb250LXNpemU6IDAuNjdlbTtcbiAgICBtYXJnaW46IDIuMzNlbSAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA3LzgvOSwgU2FmYXJpIDUsIGFuZCBDaHJvbWUuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCAzKywgU2FmYXJpIDQvNSwgYW5kIENocm9tZS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gU2FmYXJpIDUgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKiBLbm93biBpc3N1ZTogbm8gSUUgNi83IG5vcm1hbGl6YXRpb24uXG4gKi9cblxuaHIge1xuICAgIC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA2LzcvOC85LlxuICovXG5cbm1hcmsge1xuICAgIGJhY2tncm91bmQ6ICNmZjA7XG4gICAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gKi9cblxucCxcbnByZSB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IGZvbnQgZmFtaWx5IHNldCBvZGRseSBpbiBJRSA2LCBTYWZhcmkgNC81LCBhbmQgQ2hyb21lLlxuICovXG5cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBzZXJpZjtcbiAgICBfZm9udC1mYW1pbHk6ICdjb3VyaWVyIG5ldycsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDFlbTtcbn1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIHByZS1mb3JtYXR0ZWQgdGV4dCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBDU1MgcXVvdGVzIG5vdCBzdXBwb3J0ZWQgaW4gSUUgNi83LlxuICovXG5cbnEge1xuICAgIHF1b3Rlczogbm9uZTtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBxdW90ZXNgIHByb3BlcnR5IG5vdCBzdXBwb3J0ZWQgaW4gU2FmYXJpIDQuXG4gKi9cblxucTpiZWZvcmUsXG5xOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBjb250ZW50OiBub25lO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgICBmb250LXNpemU6IDc1JTtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICAgIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICAgIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIExpc3RzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICovXG5cbmRsLFxubWVudSxcbm9sLFxudWwge1xuICAgIG1hcmdpbjogMWVtIDA7XG59XG5cbmRkIHtcbiAgICBtYXJnaW46IDAgMCAwIDQwcHg7XG59XG5cbi8qKlxuICogQWRkcmVzcyBwYWRkaW5ncyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICovXG5cbm1lbnUsXG5vbCxcbnVsIHtcbiAgICBwYWRkaW5nOiAwIDAgMCA0MHB4O1xufVxuXG4vKipcbiAqIENvcnJlY3QgbGlzdCBpbWFnZXMgaGFuZGxlZCBpbmNvcnJlY3RseSBpbiBJRSA3LlxuICovXG5cbm5hdiB1bCxcbm5hdiBvbCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBsaXN0LXN0eWxlLWltYWdlOiBub25lO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDYvNy84LzkgYW5kIEZpcmVmb3ggMy5cbiAqIDIuIEltcHJvdmUgaW1hZ2UgcXVhbGl0eSB3aGVuIHNjYWxlZCBpbiBJRSA3LlxuICovXG5cbmltZyB7XG4gICAgYm9yZGVyOiAwOyAvKiAxICovXG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3Qgb3ZlcmZsb3cgZGlzcGxheWVkIG9kZGx5IGluIElFIDkuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGaWd1cmVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDYvNy84LzksIFNhZmFyaSA1LCBhbmQgT3BlcmEgMTEuXG4gKi9cblxuZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBDb3JyZWN0IG1hcmdpbiBkaXNwbGF5ZWQgb2RkbHkgaW4gSUUgNi83LlxuICovXG5cbmZvcm0ge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDYvNy84LzkuXG4gKiAyLiBDb3JyZWN0IHRleHQgbm90IHdyYXBwaW5nIGluIEZpcmVmb3ggMy5cbiAqIDMuIENvcnJlY3QgYWxpZ25tZW50IGRpc3BsYXllZCBvZGRseSBpbiBJRSA2LzcuXG4gKi9cblxubGVnZW5kIHtcbiAgICBib3JkZXI6IDA7IC8qIDEgKi9cbiAgICBwYWRkaW5nOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDIgKi9cbiAgICAqbWFyZ2luLWxlZnQ6IC03cHg7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGZvbnQgc2l6ZSBub3QgYmVpbmcgaW5oZXJpdGVkIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIEFkZHJlc3MgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LCBGaXJlZm94IDMrLCBTYWZhcmkgNSxcbiAqICAgIGFuZCBDaHJvbWUuXG4gKiAzLiBJbXByb3ZlIGFwcGVhcmFuY2UgYW5kIGNvbnNpc3RlbmN5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgICBtYXJnaW46IDA7IC8qIDIgKi9cbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDMgKi9cbiAgICAqdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogMyAqL1xufVxuXG4vKipcbiAqIEFkZHJlc3MgRmlyZWZveCAzKyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIENocm9tZSwgU2FmYXJpIDUrLCBhbmQgSUUgNisuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3ggNCsgYW5kIE9wZXJhLlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICAgIGFuZCBgdmlkZW9gIGNvbnRyb2xzLlxuICogMi4gQ29ycmVjdCBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIGBpbnB1dGAgdHlwZXMgaW4gaU9TLlxuICogMy4gSW1wcm92ZSB1c2FiaWxpdHkgYW5kIGNvbnNpc3RlbmN5IG9mIGN1cnNvciBzdHlsZSBiZXR3ZWVuIGltYWdlLXR5cGVcbiAqICAgIGBpbnB1dGAgYW5kIG90aGVycy5cbiAqIDQuIFJlbW92ZSBpbm5lciBzcGFjaW5nIGluIElFIDcgd2l0aG91dCBhZmZlY3Rpbmcgbm9ybWFsIHRleHQgaW5wdXRzLlxuICogICAgS25vd24gaXNzdWU6IGlubmVyIHNwYWNpbmcgcmVtYWlucyBpbiBJRSA2LlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbiAgICAqb3ZlcmZsb3c6IHZpc2libGU7ICAvKiA0ICovXG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG59XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGNvbnRlbnQtYm94IGluIElFIDgvOS5cbiAqIDIuIFJlbW92ZSBleGNlc3MgcGFkZGluZyBpbiBJRSA4LzkuXG4gKiAzLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgNy5cbiAqICAgIEtub3duIGlzc3VlOiBleGNlc3MgcGFkZGluZyByZW1haW5zIGluIElFIDYuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gICAgcGFkZGluZzogMDsgLyogMiAqL1xuICAgICpoZWlnaHQ6IDEzcHg7IC8qIDMgKi9cbiAgICAqd2lkdGg6IDEzcHg7IC8qIDMgKi9cbn1cblxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgNSBhbmQgQ2hyb21lXG4gKiBvbiBPUyBYLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDMrLlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiAxLiBSZW1vdmUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgNi83LzgvOS5cbiAqIDIuIEltcHJvdmUgcmVhZGFiaWxpdHkgYW5kIGFsaWdubWVudCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxudGV4dGFyZWEge1xuICAgIG92ZXJmbG93OiBhdXRvOyAvKiAxICovXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDsgLyogMiAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgVGFibGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xuXG50YWJsZSB7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbn0iLCJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIEJhc2UgVmFyaWFibGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qXG4gICAgTGVnYWN5IFN1cHBvcnQgZm9yIElFXG4gICAgLSBodHRwOi8vc3VzeS5vZGRiaXJkLm5ldC9ndWlkZXMvcmVmZXJlbmNlLyNyZWYtYnJvd3Nlci1zdXBwb3J0XG4gICAgLSBodHRwOi8vY29tcGFzcy1zdHlsZS5vcmcvcmVmZXJlbmNlL2NvbXBhc3Mvc3VwcG9ydC9cbiAgICAtIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9jb21wYXNzLXVzZXJzL0pPTGFOOUc4NldVXG4qL1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlO1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGVnYWN5LXN1cHBvcnQtZm9yLWllO1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGVnYWN5LXN1cHBvcnQtZm9yLWllO1xuXG5cbi8qXG4gICAgR3JpZHMgU3VzeVxuKi9cblxuJHRvdGFsLWNvbHVtbnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgNi1jb2x1bW4gZ3JpZFxuJGNvbHVtbi13aWR0aDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggY29sdW1uIGlzIDRlbSB3aWRlXG4kZ3V0dGVyLXdpZHRoOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNWVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMS41ZW0gZ3V0dGVycyBiZXR3ZWVuIGNvbHVtbnNcbiRncmlkLXBhZGRpbmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGd1dHRlci13aWR0aDsgICAgICAgICAgICAgICAgICAvLyBncmlkLXBhZGRpbmcgZXF1YWwgdG8gZ3V0dGVyc1xuXG4kc21hbGwtdGFibGV0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggICAgICAgICAgIGx0LWllOTsgICAgICAgICAgICAgLy8gU21hbGwgdGFibGV0IDgtY29sdW1uIGdyaWRcbiR0YWJsZXQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgICAgICAgICAgbHQtaWU5OyAgICAgICAgICAgICAvLyBUYWJsZXQgMTAtY29sdW1uIGdyaWRcbiRjb21wdXRlcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjVlbSAxNCAgICAgbHQtaWU5OyAgICAgICAgICAgICAvLyBDb21wdXRlciAxNC1jb2x1bW4gZ3JpZFxuJGxhcmdlLWNvbXB1dGVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MGVtIDE0ICAgICBsdC1pZTk7ICAgICAgICAgICAgIC8vIENvbXB1dGVyIDE0LWNvbHVtbiBncmlkXG4kcHJpbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1ZW0gMTQgICAgIGx0LWllOTtcbiRyZXNwb25zaXZlLWhlbHA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMWVtIDY1ZW0gICAgbHQtaWU5OyAgICAgICAgICAgICAvLyBCZXR3ZWVuIDFlbSBhbmQgNjVlbSBjb2x1bW4gZ3JpZCBIRUxQRVJcblxuJGNvbnRhaW5lci1zdHlsZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYztcblxuXG4vKlxuICAgIFR5cG9ncmFwaHlcbiovXG5cblxuJGJhc2UtZm9udC1mYW1pbHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuJGZvbnQtaWNvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udGN1c3RvbScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbi8vIEJhc2UgU2V0XG4kYmFzZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0cHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmFzZSBGb250IHNpemVcblxuLy8gU21hbGwgU2V0XG4kc21hbGwtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzcHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU21hbGwgRm9udCBzaXplXG4kdGlueS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEycHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGlueSBGb250IHNpemVcbiR2ZXJ5LXRpbnktZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTFweDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJ5IFRpbnkgRm9udCBzaXplXG5cbi8vIEJpZ2dlciBTZXRcbiRiaWdnZXItZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTZweDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCaWdnZXIgRm9udCBzaXplXG4kbGFyZ2UtZm9udC1zaXplOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4cHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGFyZ2UgRm9udCBzaXplXG4kdmVyeS1sYXJnZS1mb250LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0cHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVyeSBMYXJnZSBGb250IHNpemVcblxuLy8gSDEtSDYgU2V0IERPIE5PVCBDSEFOR0UgVEhJU1xuJGgxLXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNnB4O1xuJGgyLXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNHB4O1xuJGgzLXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMXB4O1xuJGg0LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOHB4O1xuJGg1LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNnB4O1xuJGg2LXNpemU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNHB4O1xuXG5cbi8qXG4gICAgQ29sb3JzXG4qL1xuXG4vLyBMYXlvdXQgYW5kIFByaW1hcnkgQ29sb3JzXG4kbWFpbi1iYWNrZ3JvdW5kOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNGRkZGRkY7XG4kZGFya2VzdC1iYWNrZ29ydW5kOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMxQTFDMjQ7XG4kZGFyay1iYWNrZ29ydW5kOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMyODJDMzc7XG4kcHJpbWFyeS1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNmZmZmZmY7XG4kc2Vjb25kYXJ5LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNFMzcyMzU7XG4kc2Vjb25kYXJ5LWNvbG9yLWRhcms6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM1Rjc2ODY7XG5cbi8vIFRleHQgQ29sb3JzXG4kYmFzZS10ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM0NDQ0NDQ7XG5cbi8vIExpbmtzIENvbG9yc1xuJGJhc2UtbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjMjk4MEI5O1xuJGhvdmVyLWxpbmstY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJrZW4oJGJhc2UtbGluay1jb2xvciwgMTAlKTtcbiRmb2N1cy1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFya2VuKCRiYXNlLWxpbmstY29sb3IsIDIwJSk7XG4kZGlzYWJsZS1saW5rLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM3Nzc3Nzc7XG5cbi8vIFRvcCBCYXIgTGluayBDb2xvclxuJHRvcC1iYXItbGluay1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjQ0FDQUNBO1xuXG4vLyBCdXR0b25zIENvbG9yc1xuJGJ1dHRvbi10ZXh0LWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcHJpbWFyeS1jb2xvcjtcblxuLy8gRm9ybSBDb2xvcnNcbiRmb3JtLWJhY2tncm91bmQtY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Y1ZjVmNTtcbiRmb3JtLWhvdmVyLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2VkZWRlZDtcbiRmb3JtLWZvY3VzLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByaW1hcnktY29sb3I7XG5cbiRmb3JtLWJvcmRlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2RkZGRkZDtcbiRmb3JtLWJvcmRlci1ob3Zlci1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2NjY2NjYztcbiRmb3JtLWJvcmRlci1mb2N1cy1jb2xvcjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuLy8gQm9yZGVyXG4kcHJpbWFyeS1ib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNFOEVDRjA7XG5cblxuLypcbiAgICBaLWluZGV4IFsgRE9OJ1QgQ0hBTkdFIFRISVMgLSBBZGQgbmV3IHZhciBpZiBpcyBuZWNlc3NhcnkgXVxuKi9cblxuJHppbmRleC1kcm9wZG93bjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwO1xuJHppbmRleC1wb3BvdmVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEwO1xuJHppbmRleC10b29sdGlwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDIwO1xuJHppbmRleC1maXhlZC1uYXZiYXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMwO1xuJHppbmRleC1tb2RhbC1iYWNrZ3JvdW5kOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQwO1xuJHppbmRleC1tb2RhbDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDUwO1xuJHppbmRleC1tb2RhbC1jb250ZW50OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYwO1xuXG4iLCJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gIE1peGluc1xuICAtIFNuaXBwZXRzIG9mIHJldXNhYmxlIENTUyB0byBkZXZlbG9wIGZhc3RlciBhbmQga2VlcCBjb2RlIHJlYWRhYmxlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4vKlxuICAgIElucHV0IFBsYWNlaG9sZGVyXG4qL1xuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICAmOi1tb3otcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG5cbiAgICAmOjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICBAY29udGVudDtcbiAgICB9XG59XG5cbi8vIENhbGN1bGF0ZSBweCB0byByZW0gZm9yIGZvbnQtc2l6ZVxuQG1peGluIGZvbnQtc2l6ZSgkc2l6ZSwgJGlzLWltcG9ydGFudDogZmFsc2UpIHtcbiAgICAkc2l6ZTogaWYodW5pdGxlc3MoJHNpemUpLCAkc2l6ZSwgJHNpemUgLyAxcHgpO1xuXG4gICAgQGlmICRpcy1pbXBvcnRhbnQge1xuICAgICAgICBmb250LXNpemU6ICRzaXplICsgcHggIWltcG9ydGFudDtcbiAgICAgICAgZm9udC1zaXplOiAoJHNpemUgLyAxMCkgKyByZW0gIWltcG9ydGFudDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgZm9udC1zaXplOiAkc2l6ZSArIHB4O1xuICAgICAgICBmb250LXNpemU6ICgkc2l6ZSAvIDEwKSArIHJlbTtcbiAgICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBhcnJvd3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAkZGlyZWN0aW9uOiB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHRvcC1sZWZ0LCB0b3AtcmlnaHQsIGJvdHRvbS1sZWZ0LCBib3R0b20tcmlnaHRcbi8vICRjb2xvcjogaGV4LCByZ2Igb3IgcmJnYVxuLy8gJHNpemU6IHB4IG9yIGVtXG4vLyBAZXhhbXBsZVxuLy8gLmVsZW1lbnR7XG4vLyAgICAgQGluY2x1ZGUgYXJyb3codG9wLCAjMDAwLCA1MHB4KTtcbi8vIH1cbkBtaXhpbiBhcnJvdygkZGlyZWN0aW9uLCAkY29sb3IsICRzaXplKXtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gJ3RvcCcge1xuICAgICAgICBib3JkZXItbGVmdDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ3JpZ2h0JyB7XG4gICAgICAgIGJvcmRlci10b3A6ICRzaXplIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWxlZnQ6ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ2JvdHRvbScge1xuICAgICAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ2xlZnQnIHtcbiAgICAgICAgYm9yZGVyLXRvcDogJHNpemUgc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yaWdodDogJHNpemUgc29saWQgJGNvbG9yO1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ3RvcC1sZWZ0JyB7XG4gICAgICAgIGJvcmRlci10b3A6ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ3RvcC1yaWdodCcge1xuICAgICAgICBib3JkZXItdG9wOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ2JvdHRvbS1sZWZ0JyB7XG4gICAgICAgIGJvcmRlci1ib3R0b206ICRzaXplIHNvbGlkICRjb2xvcjtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gJ2JvdHRvbS1yaWdodCcge1xuICAgICAgICBib3JkZXItYm90dG9tOiAkc2l6ZSBzb2xpZCAkY29sb3I7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAkc2l6ZSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICB9XG59XG5cbkBtaXhpbiBoaWRwaSgkbWVkaWE6IGFsbCkge1xuICAgIEBtZWRpYVxuICAgIG9ubHkgI3skbWVkaWF9IGFuZCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLFxuICAgIG9ubHkgI3skbWVkaWF9IGFuZCAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogMy8yKSxcbiAgICBvbmx5ICN7JG1lZGlhfSBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSxcbiAgICBvbmx5ICN7JG1lZGlhfSBhbmQgKG1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuNSksXG4gICAgb25seSAjeyRtZWRpYX0gYW5kIChtaW4tcmVzb2x1dGlvbjogMTQ0ZHBpKSxcbiAgICBvbmx5ICN7JG1lZGlhfSBhbmQgKG1pbi1yZXNvbHV0aW9uOiAxLjVkcHB4KSB7XG5cbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuXG4vKlxuICBSZXNldCBVbm9yZGVyZWQgTGlzdFxuKi9cbkBtaXhpbiByZXNldC11bC1saXN0IHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5cbi8qXG4gIENsZWFyZml4XG4qL1xuQG1peGluIGNsZWFyZml4IHtcbiAgICAqem9vbTogMTtcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICB9XG59XG5cblxuLypcbiAgSGlkZSBUZXh0XG4gKi9cbkBtaXhpbiBoaWRlLXRleHQge1xuICAgIHRleHQtaW5kZW50OiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuXG4vKlxuICBXZWJraXQtc3R5bGUgZm9jdXNcbiAqL1xuQG1peGluIHRhYi1mb2N1cygpIHtcbiAgICAvLyBEZWZhdWx0XG4gICAgb3V0bGluZTogdGhpbiBkb3R0ZWQgIzMzMztcbiAgICAvLyBXZWJraXRcbiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG59XG5cbi8qXG4gIENlbnRlci1hbGlnbiBhIGJsb2NrIGxldmVsIGVsZW1lbnRcbiAqL1xuQG1peGluIGNlbnRlci1ibG9jaygpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi8qXG4gIElFNyBpbmxpbmUtYmxvY2tcbiAqL1xuQG1peGluIGllNy1pbmxpbmUtYmxvY2soKSB7XG4gICAgKmRpc3BsYXk6IGlubGluZTsgLy8gSUU3IGlubGluZS1ibG9jayBoYWNrXG4gICAgKnpvb206IDE7XG59XG5cblxuLypcbiAgICBJRTcgbGlrZXMgdG8gY29sbGFwc2Ugd2hpdGVzcGFjZSBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgaW5saW5lLWJsb2NrIGVsZW1lbnRzLlxuICAgIEVtcyBiZWNhdXNlIHdlJ3JlIGF0dGVtcHRpbmcgdG8gbWF0Y2ggdGhlIHdpZHRoIG9mIGEgc3BhY2UgY2hhcmFjdGVyLiBMZWZ0XG4gICAgdmVyc2lvbiBpcyBmb3IgZm9ybSBidXR0b25zLCB3aGljaCB0eXBpY2FsbHkgY29tZSBhZnRlciBvdGhlciBlbGVtZW50cywgYW5kXG4gICAgcmlnaHQgdmVyc2lvbiBpcyBmb3IgaWNvbnMsIHdoaWNoIGNvbWUgYmVmb3JlLiBBcHBseWluZyBib3RoIGlzIG9rLCBidXQgaXQgd2lsbFxuICAgIG1lYW4gdGhhdCBzcGFjZSBiZXR3ZWVuIHRob3NlIGVsZW1lbnRzIHdpbGwgYmUgLjZlbSAofjIgc3BhY2UgY2hhcmFjdGVycykgaW4gSUU3LFxuICAgIGluc3RlYWQgb2YgdGhlIDEgc3BhY2UgaW4gb3RoZXIgYnJvd3NlcnMuXG4gKi9cbkBtaXhpbiBpZTctcmVzdG9yZS1sZWZ0LXdoaXRlc3BhY2UoKSB7XG4gICAgKm1hcmdpbi1sZWZ0OiAuM2VtO1xuXG4gICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICptYXJnaW4tbGVmdDogMDtcbiAgICB9XG59XG5cbkBtaXhpbiBpZTctcmVzdG9yZS1yaWdodC13aGl0ZXNwYWNlKCkge1xuICAgICptYXJnaW4tcmlnaHQ6IC4zZW07XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAqbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgIFRleHQgT3ZlcmZsb3dcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuQG1peGluIHRleHQtb3ZlcmZsb3coKSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgRGVmYXVsdCAtIEh0bWwsIEJvZHksIGgxLWg2LCBsaW5rcyBldGNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbioge1xuICAgIEBpbmNsdWRlIGJveC1zaXppbmcoYm9yZGVyLWJveCk7XG59XG5cbmh0bWwge1xuICAgIGZvbnQtc2l6ZTogNjIuNSU7XG59XG5cbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiAgICBmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGJhc2UtdGV4dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xufVxuXG5hIHtcbiAgICBjb2xvcjogJGJhc2UtbGluay1jb2xvcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IGRhcmtlbigkYmFzZS1saW5rLWNvbG9yLCAxMCUpO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgIH1cbn1cblxuaDEge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDEtc2l6ZSk7XG4gICAgZm9udC1mYW1pbHk6IEdlb3JnaWEsXCJUaW1lcyBOZXcgUm9tYW5cIixUaW1lcyxzZXJpZjtcbiAgICBmb250LXNpemU6IDgwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW46IDA7XG59XG5cbmgyIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGgyLXNpemUpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbmgzIHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGgzLXNpemUpO1xufVxuXG5oNCB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKCRoNC1zaXplKTtcbn1cblxuaDUge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgkaDUtc2l6ZSk7XG59XG5cbmg2IHtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoJGg2LXNpemUpO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG4ubm8tbWFyZ2luIHtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbn1cblxuLnRleHQtZGlzYWJsZWQge1xuICAgIGNvbG9yOiAjREVERURFO1xufVxuXG5wIHtcbiAgICBmb250LXNpemU6IDEuMjJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBtYXJnaW46IDEwcHggMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG59IiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgTGF5b3V0XG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qXG4gICAgTWFpbiBMYXlvdXRcbiovXG5cbi5jb250YWluZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMTA3MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgMTBweDtcbn1cblxuLmhlYWRlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogJG1haW4tYmFja2dyb3VuZDtcbn1cblxuLmRhcmstYmcge1xuICAgIGJhY2tncm91bmQ6ICRkYXJrLWJhY2tnb3J1bmQ7XG4gICAgY29sb3I6ICRwcmltYXJ5LWNvbG9yO1xuICAgIHBhZGRpbmc6IDUwcHggMDtcbn1cblxuLmNvbnRlbnQtd3JhcHBlciB7XG4gICAgcGFkZGluZzogNTRweCAwIDAgMDtcbn1cblxuLmNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDIwcHggNDBweDtcbn1cblxuLmhlcm8ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAyMDBweCAwO1xufSIsIlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgRm9ybXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy8gRmllbGRzZXRcbmZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDBweCBzb2xpZCAkcHJpbWFyeS1ib3JkZXItY29sb3I7XG4gICAgcGFkZGluZzogMC4zNWVtIDBlbSAwLjc1ZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmVycm9yIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgbGFiZWwge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBAaW5jbHVkZSBpZTctaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgMCA1cHggMDtcbiAgICB9XG59XG5cbi8vIElucHV0OiBUZXh0LCBFbWFpbCwgUGFzc3dvcmRcbmlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxudGV4dGFyZWEge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRwcmltYXJ5LWJvcmRlci1jb2xvcjtcbiAgICBwYWRkaW5nOiA3cHggMTBweCA3cHggMTBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgQGluY2x1ZGUgaWU3LWlubGluZS1ibG9jaztcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDNweCk7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMnB4KTtcbiAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKGJvcmRlciAwLjJzIGVhc2UtaW4tb3V0KTtcbiAgICB3aWR0aDogMzAwcHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0I5QjhCODtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0FCQTlBOTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiAjOUI5QjlCO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgIH1cblxuICAgICYuaW5wdXQtZXJyb3Ige1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE3OCwgNTgsIDU4LCAuMSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNiMjNhM2E7XG5cbiAgICAgICAgQGluY2x1ZGUgaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6ICNiMjNhM2E7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBib3ggc2l6aW5nIHNldCB0byBjb250ZW50LWJveCBpbiBJRSA4LzkuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LlxuICogMy4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDcuXG4gKiAgICBLbm93biBpc3N1ZTogZXhjZXNzIHBhZGRpbmcgcmVtYWlucyBpbiBJRSA2LlxuICovXG5cbi8vICBSYWRpbyBCdXR0b25zXG5pbnB1dFt0eXBlPXJhZGlvXSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI0RFREVERTtcbiAgICBiYWNrZ3JvdW5kOiAjRjlGOUY5O1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMnB4KTtcbiAgICBjbGVhcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIGhlaWdodDogMTRweDtcbiAgICBtYXJnaW46IC0zcHggMnB4IDAgMDtcbiAgICBvdXRsaW5lOiAwO1xuICAgIHBhZGRpbmc6IDFweCAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIG1pbi13aWR0aDogMTRweDtcbiAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihhbGwsIDAuMnMsIGVhc2UtaW4tb3V0KTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oI0Y5RjlGOSwgMSUpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JjYmNiO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZW4oI0RFREVERSwgMjAlKTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Y5ZjlmOTtcblxuICAgICAgICAmOmNoZWNrZWQ6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZjlmOWY5O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5pbnB1dFt0eXBlPXJhZGlvXSB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG5pbnB1dFt0eXBlPXJhZGlvXTpjaGVja2VkIHtcbiAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihhbGwsIDAuMnMsIGVhc2UtaW4tb3V0KTtcblxuICAgICYuZGlzYWJsZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjQ0NDQ0NDO1xuXG4gICAgICAgICY6Y2hlY2tlZDpiZWZvcmUge1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmlucHV0W3R5cGU9cmFkaW9dOmJlZm9yZSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihhbGwsIDAuMnMsIGVhc2UtaW4tb3V0KTtcbn1cblxuaW5wdXRbdHlwZT1yYWRpb106Y2hlY2tlZDpiZWZvcmUge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIHNwZWFrOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24oYWxsLCAwLjJzLCBlYXNlLWluLW91dCk7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuLy8gRGlzYWJsZWQgY2hlY2tlZC91bmNoZWNrZWQgc3R5bGVzXG5pbnB1dFtkaXNhYmxlZF0ge1xuICAgIGJvcmRlci1jb2xvcjogI2Y5ZjlmOTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xuICAgICAgICBib3JkZXItY29sb3I6ICNmOWY5Zjk7XG4gICAgfVxufVxuXG5pbnB1dFtkaXNhYmxlZF06Y2hlY2tlZCB7XG4gICAgYm9yZGVyLWNvbG9yOiAjZjlmOWY5O1xufVxuXG5pbnB1dFtkaXNhYmxlZF06Y2hlY2tlZDpiZWZvcmUge1xuICAgIGNvbG9yOiAjZjlmOWY5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbmlucHV0W2Rpc2FibGVkXSArIGxhYmVsIHtcbiAgICBjb2xvcjogI0E5QTlBOTtcbn1cblxuXG4vKlxuICAgIEVycm9yc1xuKi9cblxuLmxhYmVsLWVycm9yIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uZXJyb3Ige1xuICAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuICAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbiAgICB0ZXh0YXJlYSB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDRTVDNUM7XG4gICAgICAgIGNvbG9yOiAjQ0U1QzVDO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcHJpbWFyeS1jb2xvcjtcbiAgICB9XG5cbiAgICAuZXJyb3ItYXJyb3ctcmlnaHQge1xuICAgICAgICBAaW5jbHVkZSBhcnJvdyhsZWZ0LCAjQ0U1QzVDLCA2cHgpO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMjVweDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLmxhYmVsLWVycm9yIHtcbiAgICAgICAgY29sb3I6ICNDRTVDNUM7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC5sYWJlbC12YWxpZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLmJhc2ljLWJ1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBAaW5jbHVkZSBpZTctaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDdweCAxMHB4IDdweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICNGRkZGRkYgMCUsICNGNUY1RjUgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHByaW1hcnktYm9yZGVyLWNvbG9yO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMnB4KTtcbiAgICBjb2xvcjogJGJhc2UtbGluay1jb2xvcjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygzcHgpO1xuXG4gICAgLy8gSG92ZXJcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICNGRkZGRkYgMCUsICNGMEYwRjAgMTAwJSk7XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlXG4gICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTE4MGRlZywgI0ZGRkZGRiAwJSwgI0U2RTZFNiAxMDAlKTtcbiAgICB9XG5cbiAgICAvLyBEaXNhYmxlZFxuICAgICYuZGlzYWJsZWQge1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgLW1zLWZpbHRlcjogXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT01MClcIjtcbiAgICAgICAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTUwKTtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogMDtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBpcyBSZWRcbiAgICAmLmlzLXJlZCB7XG4gICAgICAgIGNvbG9yOiAjQ0I1NTU1O1xuICAgIH1cblxuICAgIC8vIElmIGlzIE1pY3JvXG4gICAgJi5pcy1taWNybyB7XG4gICAgICAgIHBhZGRpbmc6IDJweCA3cHg7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSg5cHgpO1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gICAgfVxuXG4gICAgLy8gSWYgaXMgU21hbGxcbiAgICAmLmlzLXNtYWxsIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDEycHgpO1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gICAgfVxuXG4gICAgLy8gSWYgaXMgQmlnZ2VyXG4gICAgJi5pcy1iaWdnZXIge1xuICAgICAgICBwYWRkaW5nOiA5cHggMTVweDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDEzcHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAvLyBJZiBpcyBMYXJnZVxuICAgICYuaXMtbGFyZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxMXB4IDIwcHg7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxM3B4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgLy8gSWYgaGFzIEJhc2ljIENoZWNrYm94XG4gICAgLmJhc2ljLWNoZWNrYm94IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDFweDtcbiAgICB9XG59XG5cblxuLy8gUHJpbWFyeSBCdXR0b24gKGJsdWUgY29sb3IgZm9yIG5vdylcbi5wcmltYXJ5LWJ1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBAaW5jbHVkZSBpZTctaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDdweCAxMHB4IDdweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6ICMyOTgwQjk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsICMyOTgwQjkgMCUsICMyNDc1QTkgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzIwNjk5ODtcbiAgICBAaW5jbHVkZSBmb250LXNpemUoMTJweCk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMTRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoM3B4KTtcblxuICAgIC8vIEhvdmVyXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCAjMjk4MEI5IDAlLCAjMjI2RDlFIDEwMCUpO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmVcbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCAjMjk4MEI5IDAlLCAjMjA2NTkyIDEwMCUpO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIHtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShvcGFjaXR5PTUwKVwiO1xuICAgICAgICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NTApO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGlzIE1pY3JvXG4gICAgJi5pcy1taWNybyB7XG4gICAgICAgIHBhZGRpbmc6IDJweCA3cHg7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSg5cHgpO1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gICAgfVxuXG4gICAgLy8gSWYgaXMgU21hbGxcbiAgICAmLmlzLXNtYWxsIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDEycHgpO1xuICAgICAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCk7XG4gICAgfVxuXG4gICAgLy8gSWYgaXMgQmlnZ2VyXG4gICAgJi5pcy1iaWdnZXIge1xuICAgICAgICBwYWRkaW5nOiA5cHggMTVweDtcbiAgICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDEzcHgpO1xuICAgICAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAvLyBJZiBpcyBMYXJnZVxuICAgICYuaXMtbGFyZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxMXB4IDIwcHg7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxM3B4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgfVxufSIsIi5oZWFkZXIge1xuICAgIHBhZGRpbmc6IDEwcHg7XG5cbiAgICAubG9nbyB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW46IDFlbSAwO1xuICAgIH1cblxuICAgIHVsIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICBUYWJsZVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4ubWFpbi10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHByaW1hcnktYm9yZGVyLWNvbG9yO1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxM3B4KTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgbWFyZ2luOiA1MHB4IDA7XG5cbiAgICB0aGVhZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRkYXJrLWJhY2tnb3J1bmQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1Zjc2ODY7XG5cbiAgICAgICAgdHIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzVmNzY4NjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMHB4O1xuICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMXB4KTtcbiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwcHggMXB4ICM1MTY1NzM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0ciB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDZkOWRlO1xuXG4gICAgICAgICYubm90LWF2YWlsYWJsZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmNmNmY2O1xuXG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZjZjZmNjtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzk5OTk5OTtcblxuICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjYzcyNjI2O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMTVweCAxMHB4O1xuXG4gICAgICAgICYudXJsIHtcbiAgICAgICAgICAgIHdpZHRoOiA1NSU7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAyNXZ3O1xuXG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5kYXRlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNSU7XG4gICAgICAgIH1cblxuICAgICAgICAmLmhhc2gge1xuICAgICAgICAgICAgd2lkdGg6IDIwJTtcblxuICAgICAgICAgICAgLmpzLWNvcHl0ZXh0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJpbWFyeS1idXR0b24ge1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgLnByaW1hcnktYnV0dG9uIHtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmNvdW50IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCU7XG4gICAgICAgIH1cblxuICAgIH1cbn0iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFxTUFBLDREQUE0RCxBQVU1RCxBQUFBLE9BQU8sQ0FDUCxBQUFBLEtBQUssQ0FDTCxBQUFBLE9BQU8sQ0FDUCxBQUFBLFVBQVUsQ0FDVixBQUFBLE1BQU0sQ0FDTixBQUFBLE1BQU0sQ0FDTixBQUFBLE1BQU0sQ0FDTixBQUFBLE1BQU0sQ0FDTixBQUFBLElBQUksQ0FDSixBQUFBLEdBQUcsQ0FDSCxBQUFBLE9BQU8sQ0FDUCxBQUFBLE9BQU8sQUFBQyxDQUNKLE9BQU8sQ0FBRSxLQUFLLENBQ2pCLEFBTUQsQUFBQSxLQUFLLENBQ0wsQUFBQSxNQUFNLENBQ04sQUFBQSxLQUFLLEFBQUMsQ0FDRixPQUFPLENBQUUsWUFBWSxDQUNyQixRQUFRLENBQUUsTUFBTSxDQUNoQixLQUFLLENBQUUsQ0FBQyxDQUNYLEFBT0QsQUFBQSxLQUFLLEFBQUEsSUFBSyxFQUFBLEFBQUEsQUFBQSxRQUFDLEFBQUEsRUFBVyxDQUNsQixPQUFPLENBQUUsSUFBSSxDQUNiLE1BQU0sQ0FBRSxDQUFDLENBQ1osQ0FPRCxBQUFBLEFBQUEsTUFBQyxBQUFBLENBQVEsQ0FDTCxPQUFPLENBQUUsSUFBSSxDQUNoQixBQWFELEFBQUEsSUFBSSxBQUFDLENBQ0QsU0FBUyxDQUFFLElBQUksQ0FDZixvQkFBb0IsQ0FBRSxJQUFJLENBQzFCLHdCQUF3QixDQUFFLElBQUksQ0FDakMsQUFPRCxBQUFBLElBQUksQ0FDSixBQUFBLE1BQU0sQ0FDTixBQUFBLE1BQU0sQ0FDTixBQUFBLFFBQVEsQUFBQyxDQUNMLFdBQVcsQ0FBRSxVQUFVLENBQzFCLEFBTUQsQUFBQSxJQUFJLEFBQUMsQ0FDRCxNQUFNLENBQUUsQ0FB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 */
