From 91552eb325f5eb8fd149c7c0c11d423b21bd2e0c Mon Sep 17 00:00:00 2001 From: devowhippit Date: Tue, 21 Nov 2017 17:12:39 -0500 Subject: [PATCH] default page layout --- build.js | 2 +- bundle/styles/site.concat.css | 45 +++- dist/charts.html | 4 +- dist/colors.html | 2 +- dist/components.html | 2 +- dist/index.html | 2 +- dist/scripts/nyco.dist.js | 4 +- dist/styles/site.min.css | 4 +- dist/team-site.html | 2 +- package.json | 7 +- serve.js | 2 +- src/js/modules/o-charts.js | 3 +- src/scss/core/_base.scss | 19 +- src/scss/core/_clearfix.scss | 7 + src/scss/core/_code.scss | 25 ++ src/scss/core/_fonts.mixins.scss | 4 + src/scss/core/_fonts.vars.scss | 4 +- src/scss/core/_vars.scss | 9 +- src/scss/site.scss | 1 + src/scss/utilities/_dimensions.scss | 26 ++- src/scss/utilities/_fonts.scss | 16 ++ src/scss/utilities/_grid.scss | 4 + src/{data => }/vars.json | 9 +- src/views/charts.slm | 44 ++-- src/views/colors.slm | 80 +++---- src/views/components.slm | 99 ++++---- src/views/index.slm | 28 +-- src/views/layouts/default.slm | 21 ++ src/views/partials/footer.mixin.slm | 16 ++ src/views/partials/head.mixin.slm | 5 +- src/views/partials/header.mixin.slm | 12 + src/views/partials/navsub.mixin.slm | 7 + src/views/partials/o-header.mixin.slm | 10 - src/views/team-site.slm | 315 +++++++++++++------------- 34 files changed, 504 insertions(+), 336 deletions(-) create mode 100644 src/scss/core/_clearfix.scss create mode 100644 src/scss/core/_code.scss rename src/{data => }/vars.json (88%) create mode 100644 src/views/layouts/default.slm create mode 100644 src/views/partials/footer.mixin.slm create mode 100644 src/views/partials/header.mixin.slm create mode 100644 src/views/partials/navsub.mixin.slm delete mode 100644 src/views/partials/o-header.mixin.slm diff --git a/build.js b/build.js index e6365f70..a2470408 100644 --- a/build.js +++ b/build.js @@ -8,7 +8,7 @@ const FS = require('fs'); const VIEWS = PATH.join(__dirname, 'src/views/'); const DIST = PATH.join(__dirname, 'dist/'); const LOCALS = { - 'vars': require(PATH.join(__dirname, 'src/data/vars.json')) + 'vars': require(PATH.join(__dirname, process.env.VARS)) }; diff --git a/bundle/styles/site.concat.css b/bundle/styles/site.concat.css index 93777755..f46494fb 100644 --- a/bundle/styles/site.concat.css +++ b/bundle/styles/site.concat.css @@ -58,6 +58,16 @@ a { path { fill: none; } +header, main, footer, fieldset, section { + display: block; } + header:after, header:before, main:after, main:before, footer:after, footer:before, fieldset:after, fieldset:before, section:after, section:before { + content: ''; + display: table; + clear: both; } + +/** + * Code + */ pre { display: block; padding: 16px 16px; } @@ -281,6 +291,18 @@ a, input, .btn, textarea, select { -webkit-font-smoothing: subpixel-antialiased; -moz-osx-font-smoothing: auto; } +.ff-system { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } + +.fw-normal { + font-weight: normal; } + +.fw-bold { + font-weight: bold; } + +.fs-italic { + font-style: italic; } + /** * Colors */ @@ -1151,6 +1173,9 @@ html:not(.touchevents) .btn.bg-primary-red-30t:hover { margin-left: auto; margin-right: auto; } +.wrap--full { + max-width: 100%; } + /** * Display */ @@ -1253,6 +1278,24 @@ html:not(.touchevents) .btn.bg-primary-red-30t:hover { .w-100p { width: 100%; } +.mh-25vh { + min-height: 25vh; } + +.mh-33vh { + min-height: 33.33vh; } + +.mh-50vh { + min-height: 50vh; } + +.mh-66vh { + min-height: 66.66vh; } + +.mh-75vh { + min-height: 75vh; } + +.mh-100vh { + min-height: 100vh; } + /** * SVG */ @@ -1278,4 +1321,4 @@ html:not(.touchevents) .btn.bg-primary-red-30t:hover { image-rendering: -webkit-optimize-contrast; image-rendering: optimizequality; } -/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiYnVuZGxlL3N0eWxlcy9zaXRlLmNvbmNhdC5jc3MiLAoJInNvdXJjZXMiOiBbCgkJInNyYy9zY3NzL3NpdGUuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2ZvbnRzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19mb250cy52YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL192YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19mb250cy5taXhpbnMuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2NvbG9ycy52YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19iYXNlLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19ncmlkLnZhcnMuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX3RyYW5zaXRpb25zLnNjc3MiLAoJCSJzcmMvc2Nzcy9fYy1uYXZzLnNjc3MiLAoJCSJzcmMvc2Nzcy9fYy10YWJsZXMuc2NzcyIsCgkJInNyYy9zY3NzL19jLWFzaWRlcy5zY3NzIiwKCQkic3JjL3Njc3MvX2MtZXhhbXBsZS5zY3NzIiwKCQkic3JjL3Njc3MvX28tY2hhcnRzLnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX2ZvbnRzLnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX2NvbG9ycy5zY3NzIiwKCQkic3JjL3Njc3MvY29yZS9fY29sb3JzLm1peGlucy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19ib3JkZXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX2dyaWQuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2dyaWQubWl4aW5zLnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX2Rpc3BsYXkuc2NzcyIsCgkJInNyYy9zY3NzL3V0aWxpdGllcy9fdGV4dC5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19kaW1lbnNpb25zLnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX3N2Zy5zY3NzIiwKCQkic3JjL3Njc3MvdXRp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LG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFJSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFaSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFJSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFaSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFJSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFaSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFJSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFaSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFJSCxBQUVFLG1CQUZpQixDQUVqQixFQUFFLEFBQUEsVUFBVyxDQUFBLEFBQUEsQ0FBQyxFQUFvQjtFQUNoQyxVQUFVLEVBQUUsS0FBSyxHQUNsQjs7QUFaSCxBQUVFLG9CQUZrQixDQUVsQixFQUFFLEFBQUEsVUFBVyxD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 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiYnVuZGxlL3N0eWxlcy9zaXRlLmNvbmNhdC5jc3MiLAoJInNvdXJjZXMiOiBbCgkJInNyYy9zY3NzL3NpdGUuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2ZvbnRzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19mb250cy52YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL192YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19mb250cy5taXhpbnMuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2NvbG9ycy52YXJzLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19iYXNlLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19ncmlkLnZhcnMuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2NsZWFyZml4LnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19jb2RlLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL190cmFuc2l0aW9ucy5zY3NzIiwKCQkic3JjL3Njc3MvX2MtbmF2cy5zY3NzIiwKCQkic3JjL3Njc3MvX2MtdGFibGVzLnNjc3MiLAoJCSJzcmMvc2Nzcy9fYy1hc2lkZXMuc2NzcyIsCgkJInNyYy9zY3NzL19jLWV4YW1wbGUuc2NzcyIsCgkJInNyYy9zY3NzL19vLWNoYXJ0cy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19mb250cy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19jb2xvcnMuc2NzcyIsCgkJInNyYy9zY3NzL2NvcmUvX2NvbG9ycy5taXhpbnMuc2NzcyIsCgkJInNyYy9zY3NzL3V0aWxpdGllcy9fYm9yZGVycy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19ncmlkLnNjc3MiLAoJCSJzcmMvc2Nzcy9jb3JlL19ncmlkLm1peGlucy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19kaXNwbGF5LnNjc3MiLAoJCSJzcmMvc2Nzcy91dGlsaXRpZXMvX3RleHQuc2NzcyIsCgkJInNyYy9zY3NzL3V0aWxpdGllcy9fZGltZW5zaW9ucy5zY3NzIiwKCQkic3JjL3Njc3MvdXRpbGl0aWVzL19zdmcuc2NzcyIsCgkJInNyYy9zY3NzL3V0aWxpdGllcy9faW1hZ2VzLnNjc3MiCgldLAoJIm5hbWVzIjogW10sCgkibWFwcGluZ3MiOiAiQUNBQTs7R0FFRztBQVFILEFBQUEsSUFBSSxDQUFDO0VBQ0gsS0FBSyxFRUZFLE9BQU87RUZHZCxXQUFXLEVBQUUsOENBQThDO0VBQzNELFNBQVMsRUVUSSxJQUFJO0VGVWpCLFdBQVcsRUVUSSxJQUFJLEdGVXBCOztBQUVELEFBQUEsQ0FBQyxDQUFDO0VBQ0EsVUFBVSxFQUFFLENBQUMsR0FDZDs7QUFFRCxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsQ0FBQztFQUNyQixNQUFNLEVBQUUsTUFBTTtFQUNkLFdBQVcsRUFBRSxPQUFPO0VBQ3BCLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLEtBQUssRUFBRSxPQUFPO0VBQ2QsY0FBYyxFQUFFLGtCQUFrQixHQUNuQzs7QUFFRCxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsQ0FBQztFQUNMLFdBQVcsRUFBRSxJQUFJLEdBQ2xCOztBQUVELEFBQUEsRUFBRSxDQUFDO0VBQ0QsU0FBUyxFQUFFLE1BQU0sR0FDbEI7O0FBRUQsQUFBQSxFQUFFLENBQUM7RUFDRCxTQUFTLEVBQUUsTUFBTSxHQUNsQjs7QUFFRCxBQUFBLEVBQUUsQ0FBQztFQUNELFNBQVMsRUFBRSxNQUFNO0VBQ2pCLFdBQVcsRUFBRSxNQUFNLEdBQ3BCOztBQUVELEFBQUEsRUFBRSxDQUFDO0VBQ0QsU0FBUyxFQUFFLE1BQU0sR0FDbEI7O0FBRUQsQUFBQSxFQUFFLENBQUM7RUFDRCxTQUFTLEVBQUUsSUFBSSxHQUNoQjs7QUFFRCxBQUFBLEVBQUUsQ0FBQztFQUNELFNBQVMsRUFBRSxNQUFNLEdBQ2xCOztBQUVELEFBQUEsR0FBRyxFQUFFLEFB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VSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxtQkFGaUIsQ0FFakIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBb0I7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxvQkFGa0IsQ0FFbEIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLEVBQUUsRUFBbUI7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxvQkFGa0IsQ0FFbEIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLEVBQUUsRUFBbUI7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxvQkFGa0IsQ0FFbEIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLEVBQUUsRUFBbUI7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBSUgsQUFFRSxvQkFGa0IsQ0FFbEIsRUFBRSxBQUFBLFVBQVcsQ0FBQSxBQUFBLEVBQUUsRUFBbUI7RUFDaEMsVUFBVSxFQUFFLEtBQUssR0FDbEI7O0FBWkgsQUFFRSxvQkFGa0IsQ0FFbEIsRUFBRSxBQUFBLFVBQVcsQ0FB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 */ \ No newline at end of file diff --git a/dist/charts.html b/dist/charts.html index 9f9c4312..173330a2 100644 --- a/dist/charts.html +++ b/dist/charts.html @@ -1,4 +1,4 @@ -Chart Object | NYC Opportunity Patterns

Chart Object

U.S. Official and NYCgov Poverty Rates 2005–2015

Employment/Population Ratios 2008, 2010–2015

NYCO Patterns

Chart Object

U.S. Official and NYCgov Poverty Rates 2005–2015

Employment/Population Ratios 2008, 2010–2015

\ No newline at end of file +var EmploymentPopulationRatios = charts(settings, DataEmploymentPopulationRatios);
\ No newline at end of file diff --git a/dist/colors.html b/dist/colors.html index c1758339..a412d7be 100644 --- a/dist/colors.html +++ b/dist/colors.html @@ -1 +1 @@ -Colors | NYC Opportunity Patterns

Colors

Utility Usage

Backrounds .bg-primary-blue

Color .c-primary-blue

Borders .b-primary-blue

Swatches

base-black
#333333
base-white
#FFFFFF
primary-navy
#2F334F
primary-navy-70t
#6E7085
primary-navy-50t
#9698A7
primary-navy-30t
#C0C2CA
primary-blue
#3155A6
primary-blue-70t
#6C88C1
primary-blue-50t
#96ABD2
primary-blue-30t
#C0CCE3
primary-red
#F2695D
primary-red-70t
#F6958D
primary-red-50t
#F8B2AD
primary-red-30t
#FBD1CE
secondary-grey
#ACAEB9
secondary-grey-70t
#C4C6CD
secondary-grey-50t
#D5D6DC
secondary-grey-30t
#E8E7E9
secondary-white
#F3F3F3
secondary-white-70t
#F6F6F6
secondary-white-50t
#F9F9FA
secondary-white-30t
#FBFCFC
secondary-orange
#F9A137
secondary-orange-70t
#FFA133
secondary-orange-50t
#FED09A
secondary-orange-30t
#FFE3C2
secondary-pink
#EBBCD8
secondary-pink-70t
#F2D0E3
secondary-pink-50t
#F7DDEB
secondary-pink-30t
#FDEBF3
\ No newline at end of file +Colors | NYC Opportunity Patterns

NYCO Patterns

Colors

Utility Usage

Backrounds .bg-primary-blue

Color .c-primary-blue

Borders .b-primary-blue

Swatches

base-black
#333333
base-white
#FFFFFF
primary-navy
#2F334F
primary-navy-70t
#6E7085
primary-navy-50t
#9698A7
primary-navy-30t
#C0C2CA
primary-blue
#3155A6
primary-blue-70t
#6C88C1
primary-blue-50t
#96ABD2
primary-blue-30t
#C0CCE3
primary-red
#F2695D
primary-red-70t
#F6958D
primary-red-50t
#F8B2AD
primary-red-30t
#FBD1CE
secondary-grey
#ACAEB9
secondary-grey-70t
#C4C6CD
secondary-grey-50t
#D5D6DC
secondary-grey-30t
#E8E7E9
secondary-white
#F3F3F3
secondary-white-70t
#F6F6F6
secondary-white-50t
#F9F9FA
secondary-white-30t
#FBFCFC
secondary-orange
#F9A137
secondary-orange-70t
#FFA133
secondary-orange-50t
#FED09A
secondary-orange-30t
#FFE3C2
secondary-pink
#EBBCD8
secondary-pink-70t
#F2D0E3
secondary-pink-50t
#F7DDEB
secondary-pink-30t
#FDEBF3
\ No newline at end of file diff --git a/dist/components.html b/dist/components.html index 9cfc03fb..b1ec49d4 100644 --- a/dist/components.html +++ b/dist/components.html @@ -1 +1 @@ -CSS Components | NYC Opportunity Patterns

Components

Tables

src/scss/_c-tables.scss

Percentile20082010201120122013201420152008–20152014–2015
2013,73610,13110,42310,33311,06311,73412,870-6.3%9.7%
2520,60517,03416,61416,70117,45818,25219,024-7.7%4.2%
3028,05122,97222,54622,90423,55823,96325,325-9.7%5.7%
3535,13729,49228,50129,22629,87030,49431,497-10.4%3.3%
4042,21035,95034,18134,93435,94336,48738,305-9.3%5.0%
4549,37142,58641,53141,69343,23743,69445,661-7.5%4.5%
5056,60449,29748,43648,83850,62951,84253,758-5.0%3.7%
        
Average Percentage Change
-8.0%5.2%
Percentage Point Change
% Families with No Earnings21.222.422.322.221.922.021.40.2(0.7)

Small Table

Percentile20082010201120122013201420152008–20152014–2015
2013,73610,13110,42310,33311,06311,73412,870-6.3%9.7%
2520,60517,03416,61416,70117,45818,25219,024-7.7%4.2%
3028,05122,97222,54622,90423,55823,96325,325-9.7%5.7%
3535,13729,49228,50129,22629,87030,49431,497-10.4%3.3%
4042,21035,95034,18134,93435,94336,48738,305-9.3%5.0%
4549,37142,58641,53141,69343,23743,69445,661-7.5%4.5%
5056,60449,29748,43648,83850,62951,84253,758-5.0%3.7%
        
Average Percentage Change
-8.0%5.2%
Percentage Point Change
% Families with No Earnings21.222.422.322.221.922.021.40.2(0.7)

Asides

src/scss/_c-asides.scss

\ No newline at end of file +CSS Components | NYC Opportunity Patterns

NYCO Patterns

Components

Tables

src/scss/_c-tables.scss

Percentile20082010201120122013201420152008–20152014–2015
2013,73610,13110,42310,33311,06311,73412,870-6.3%9.7%
2520,60517,03416,61416,70117,45818,25219,024-7.7%4.2%
3028,05122,97222,54622,90423,55823,96325,325-9.7%5.7%
3535,13729,49228,50129,22629,87030,49431,497-10.4%3.3%
4042,21035,95034,18134,93435,94336,48738,305-9.3%5.0%
4549,37142,58641,53141,69343,23743,69445,661-7.5%4.5%
5056,60449,29748,43648,83850,62951,84253,758-5.0%3.7%
        
Average Percentage Change
-8.0%5.2%
Percentage Point Change
% Families with No Earnings21.222.422.322.221.922.021.40.2(0.7)

Small Table

Percentile20082010201120122013201420152008–20152014–2015
2013,73610,13110,42310,33311,06311,73412,870-6.3%9.7%
2520,60517,03416,61416,70117,45818,25219,024-7.7%4.2%
3028,05122,97222,54622,90423,55823,96325,325-9.7%5.7%
3535,13729,49228,50129,22629,87030,49431,497-10.4%3.3%
4042,21035,95034,18134,93435,94336,48738,305-9.3%5.0%
4549,37142,58641,53141,69343,23743,69445,661-7.5%4.5%
5056,60449,29748,43648,83850,62951,84253,758-5.0%3.7%
        
Average Percentage Change
-8.0%5.2%
Percentage Point Change
% Families with No Earnings21.222.422.322.221.922.021.40.2(0.7)

Asides

src/scss/_c-asides.scss

\ No newline at end of file diff --git a/dist/index.html b/dist/index.html index 01ecd7c2..7348f54b 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -NYC Opportunity Patterns

Agency patterns for the Mayor's Office for Economic Opportunity

\ No newline at end of file +NYC Opportunity Patterns

NYCO Patterns

Agency patterns for the Mayor's Office for Economic Opportunity

\ No newline at end of file diff --git a/dist/scripts/nyco.dist.js b/dist/scripts/nyco.dist.js index d9f8772b..333ca980 100644 --- a/dist/scripts/nyco.dist.js +++ b/dist/scripts/nyco.dist.js @@ -1,2 +1,2 @@ -var nyco=function(){"use strict";function t(t){return function(n,e){return ti(t(n),e)}}function n(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ri?10:o>=ii?5:o>=oi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ri?10:o>=ii?5:o>=oi?2:1)}function e(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ri?i*=10:o>=ii?i*=5:o>=oi&&(i*=2),n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function p(t,n){for(var e,r=0,i=t.length;r=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}function w(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;rn?1:t>=n?0:NaN}function C(t){return function(){this.removeAttribute(t)}}function S(t){return function(){this.removeAttributeNS(t.space,t.local)}}function D(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function U(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function P(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function F(t){return function(){this.style.removeProperty(t)}}function H(t,n,e){return function(){this.style.setProperty(t,n,e)}}function L(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Y(t,n){return t.style.getPropertyValue(n)||Vi(t).getComputedStyle(t,null).getPropertyValue(n)}function O(t){return function(){delete this[t]}}function j(t,n){return function(){this[t]=n}}function z(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function I(t){return t.trim().split(/^|\s+/)}function q(t){return t.classList||new $(t)}function $(t){this._node=t,this._names=I(t.getAttribute("class")||"")}function X(t,n){for(var e=q(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=_o.exec(t))?pt(parseInt(n[1],16)):(n=vo.exec(t))?new vt(n[1],n[2],n[3],1):(n=yo.exec(t))?new vt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=mo.exec(t))?dt(n[1],n[2],n[3],n[4]):(n=wo.exec(t))?dt(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=xo.exec(t))?yt(n[1],n[2]/100,n[3]/100,1):(n=bo.exec(t))?yt(n[1],n[2]/100,n[3]/100,n[4]):Mo.hasOwnProperty(t)?pt(Mo[t]):"transparent"===t?new vt(NaN,NaN,NaN,0):null}function pt(t){return new vt(t>>16&255,t>>8&255,255&t,1)}function dt(t,n,e,r){return r<=0&&(t=n=e=NaN),new vt(t,n,e,r)}function gt(t){return t instanceof ht||(t=ft(t)),t?(t=t.rgb(),new vt(t.r,t.g,t.b,t.opacity)):new vt}function _t(t,n,e,r){return 1===arguments.length?gt(t):new vt(t,n,e,null==r?1:r)}function vt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function yt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xt(t,n,e,r)}function mt(t){if(t instanceof xt)return new xt(t.h,t.s,t.l,t.opacity);if(t instanceof ht||(t=ft(t)),!t)return new xt;if(t instanceof xt)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,s=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&s<1?0:a,new xt(a,u,s,t.opacity)}function wt(t,n,e,r){return 1===arguments.length?mt(t):new xt(t,n,e,null==r?1:r)}function xt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function bt(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Mt(t){if(t instanceof kt)return new kt(t.l,t.a,t.b,t.opacity);if(t instanceof Ut){var n=t.h*Ao;return new kt(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof vt||(t=gt(t));var e=St(t.r),r=St(t.g),i=St(t.b),o=Nt((.4124564*e+.3575761*r+.1804375*i)/No),a=Nt((.2126729*e+.7151522*r+.072175*i)/To);return new kt(116*a-16,500*(o-a),200*(a-Nt((.0193339*e+.119192*r+.9503041*i)/Co)),t.opacity)}function At(t,n,e,r){return 1===arguments.length?Mt(t):new kt(t,n,e,null==r?1:r)}function kt(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Nt(t){return t>Uo?Math.pow(t,1/3):t/Eo+So}function Tt(t){return t>Do?t*t*t:Eo*(t-So)}function Ct(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function St(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dt(t){if(t instanceof Ut)return new Ut(t.h,t.c,t.l,t.opacity);t instanceof kt||(t=Mt(t));var n=Math.atan2(t.b,t.a)*ko;return new Ut(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Et(t,n,e,r){return 1===arguments.length?Dt(t):new Ut(t,n,e,null==r?1:r)}function Ut(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Pt(t){if(t instanceof Ht)return new Ht(t.h,t.s,t.l,t.opacity);t instanceof vt||(t=gt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(zo*r+Oo*n-jo*e)/(zo+Oo-jo),o=r-i,a=(Yo*(e-i)-Ho*o)/Lo,u=Math.sqrt(a*a+o*o)/(Yo*i*(1-i)),s=u?Math.atan2(a,o)*ko-120:NaN;return new Ht(s<0?s+360:s,u,i,t.opacity)}function Ft(t,n,e,r){return 1===arguments.length?Pt(t):new Ht(t,n,e,null==r?1:r)}function Ht(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Lt(t,n){return function(e){return t+e*n}}function Yt(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function Ot(t,n){var e=n-t;return e?Lt(t,e>180||e<-180?e-360*Math.round(e/360):e):Bo(isNaN(t)?n:t)}function jt(t){return 1==(t=+t)?zt:function(n,e){return e-n?Yt(n,e,t):Bo(isNaN(n)?e:n)}}function zt(t,n){var e=n-t;return e?Lt(t,e):Bo(isNaN(t)?n:t)}function It(t){return function(){return t}}function qt(t){return function(n){return t(n)+""}}function $t(t){return"none"===t?ra:(Io||(Io=document.createElement("DIV"),qo=document.documentElement,$o=document.defaultView),Io.style.transform=t,t=$o.getComputedStyle(qo.appendChild(Io),null).getPropertyValue("transform"),qo.removeChild(Io),t=t.slice(7,-1).split(","),ia(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function Xt(t){return null==t?ra:(Xo||(Xo=document.createElementNS("http://www.w3.org/2000/svg","g")),Xo.setAttribute("transform",t),(t=Xo.transform.baseVal.consolidate())?(t=t.matrix,ia(t.a,t.b,t.c,t.d,t.e,t.f)):ra)}function Bt(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}function o(t,r,i,o,a,u){if(t!==i||r!==o){var s=a.push("translate(",null,n,null,e);u.push({i:s-4,x:Vo(t,i)},{i:s-2,x:Vo(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}function a(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Vo(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}function u(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Vo(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}function s(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Vo(t,e)},{i:u-2,x:Vo(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}return function(n,e){var r=[],i=[];return n=t(n),e=t(e),o(n.translateX,n.translateY,e.translateX,e.translateY,r,i),a(n.rotate,e.rotate,r,i),u(n.skewX,e.skewX,r,i),s(n.scaleX,n.scaleY,e.scaleX,e.scaleY,r,i),n=e=null,function(t){for(var n,e=-1,o=i.length;++e=0&&n._call.call(null,t),n=n._next;--la}function Qt(){ga=(da=va.now())+_a,la=ha=0;try{Jt()}finally{la=0,tn(),ga=0}}function Kt(){var t=va.now(),n=t-da;n>pa&&(_a-=n,da=t)}function tn(){for(var t,n,e=ua,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ua=n);sa=t,nn(r)}function nn(t){if(!la){ha&&(ha=clearTimeout(ha));var n=t-ga;n>24?(t<1/0&&(ha=setTimeout(Qt,n)),fa&&(fa=clearInterval(fa))):(fa||(da=ga,fa=setInterval(Kt,pa)),la=1,ya(Qt))}}function en(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>ba)throw new Error("too late");return e}function rn(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>Aa)throw new Error("too late");return e}function on(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("too late");return e}function an(t,n,e){function r(t){e.state=Ma,e.timer.restart(i,e.delay,e.time),e.delay<=t&&i(t-e.delay)}function i(r){var c,l,h,f;if(e.state!==Ma)return a();for(c in s)if((f=s[c]).name===e.name){if(f.state===ka)return ma(i);f.state===Na?(f.state=Ca,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete s[c]):+c=0&&(t=t.slice(0,n)),!t||"start"===t})}function An(t,n,e){var r,i,o=Mn(n)?en:rn;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}function kn(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Nn(t,n){var e,r,i;return function(){var o=Y(this,t),a=(this.style.removeProperty(t),Y(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}function Tn(t){return function(){this.style.removeProperty(t)}}function Cn(t,n,e){var r,i;return function(){var o=Y(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}function Sn(t,n,e){var r,i,o;return function(){var a=Y(this,t),u=e(this);return null==u&&(this.style.removeProperty(t),u=Y(this,t)),a===u?null:a===r&&u===i?o:o=n(r=a,i=u)}}function Dn(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}function En(t){return function(){this.textContent=t}}function Un(t){return function(){var n=t(this);this.textContent=null==n?"":n}}function Pn(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Fn(t){return ct().transition(t)}function Hn(){return++Ja}function Ln(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function Yn(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return tu.time=Wt(),tu;return e}function On(t){return{type:t}}function jn(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function zn(){return new jn}function In(){}function qn(t,n){var e=new In;if(t instanceof In)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=(o=(g+v)/2))?g=o:v=o,(l=e>=(a=(_+y)/2))?_=a:y=a,i=p,!(p=p[h=l<<1|c]))return i[h]=d,t;if(u=+t._x.call(null,p.data),s=+t._y.call(null,p.data),n===u&&e===s)return d.next=p,i?i[h]=d:t._root=d,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(c=n>=(o=(g+v)/2))?g=o:v=o,(l=e>=(a=(_+y)/2))?_=a:y=a}while((h=l<<1|c)==(f=(s>=a)<<1|u>=o));return i[f]=p,i[h]=d,t}function Vn(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),s=1/0,c=1/0,l=-1/0,h=-1/0;for(e=0;el&&(l=r),ih&&(h=i));for(l",i=n[3]||"-",o=n[4]||"",a=!!n[5],u=n[6]&&+n[6],s=!!n[7],c=n[8]&&+n[8].slice(1),l=n[9]||"";"n"===l?(s=!0,l="g"):Tu[l]||(l=""),(a||"0"===e&&"="===r)&&(a=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=a,this.width=u,this.comma=s,this.precision=c,this.type=l}function ie(){this.reset()}function oe(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function ae(t){return t>1?0:t<-1?zu:Math.acos(t)}function ue(t){return t>1?Iu:t<-1?-Iu:Math.asin(t)}function se(t){return function(n,e){var r=Xu(n),i=Xu(e),o=t(r*i);return[o*i*Bu(n),o*Bu(e)]}}function ce(t){return function(n,e){var r=Ru(n*n+e*e),i=t(r),o=Bu(i),a=Xu(i);return[$u(n*o,r*a),ue(r&&e*o/r)]}}function le(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function he(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}function fe(t,n){var e,r,i,o,a,u=new ve(t),s=+t.value&&(u.value=t.value),c=[u];for(null==n&&(n=de);e=c.pop();)if(s&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)c.push(r=e.children[o]=new ve(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(_e)}function pe(){return fe(this).eachBefore(ge)}function de(t){return t.children}function ge(t){t.data=t.data.data}function _e(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function ve(t){this.data=t,this.depth=this.height=0,this.parent=null}function ye(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function me(t){if(!t._start)try{we(t)}catch(n){if(t._tasks[t._ended+t._active-1])be(t,n);else if(!t._data)throw n}}function we(t){for(;t._start=t._waiting&&t._active=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,Me(t)}function Me(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function Ae(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:ss(n)}function ke(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=n?0:t>=e?1:r(t)}}}function Ne(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}function Te(t,n,e,r){var i=t[0],o=t[1],a=n[0],u=n[1];return o2?Ce:Te,o=a=null,r}function r(n){return(o||(o=i(u,s,l?ke(t):t,c)))(+n)}var i,o,a,u=ls,s=ls,c=ta,l=!1;return r.invert=function(t){return(a||(a=i(s,u,Ae,l?Ne(n):n)))(+t)},r.domain=function(t){return arguments.length?(u=as.call(t,cs),e()):u.slice()},r.range=function(t){return arguments.length?(s=us.call(t),e()):s.slice()},r.rangeRound=function(t){return s=us.call(t),c=na,e()},r.clamp=function(t){return arguments.length?(l=!!t,e()):l},r.interpolate=function(t){return arguments.length?(c=t,e()):c},e()}function Ee(t){var e=t.domain;return t.ticks=function(t){var n=e();return ai(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){return hs(e(),t,n)},t.nice=function(r){null==r&&(r=10);var i,o=e(),a=0,u=o.length-1,s=o[a],c=o[u];return c0?i=n(s=Math.floor(s/i)*i,c=Math.ceil(c/i)*i,r):i<0&&(i=n(s=Math.ceil(s*i)/i,c=Math.floor(c*i)/i,r)),i>0?(o[a]=Math.floor(s/i)*i,o[u]=Math.ceil(c/i)*i,e(o)):i<0&&(o[a]=Math.ceil(s*i)/i,o[u]=Math.floor(c*i)/i,e(o)),t},t}function Ue(){var t=De(Ae,Vo);return t.copy=function(){return Se(t,Ue())},Ee(t)}function Pe(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return a;do{a.push(new Date(+e))}while(n(e,o),t(e),e=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return ps.setTime(+n),ds.setTime(+r),t(ps),t(ds),Math.floor(e(ps,ds))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function Fe(t){return Pe(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*_s)/vs})}function He(t){return Pe(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/vs})}function Le(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Ye(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Oe(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function je(t){function n(t,n){return function(e){var r,i,o,a=[],u=-1,s=0,c=t.length;for(e instanceof Date||(e=new Date(+e));++u=s)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=q[i in Hs?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function i(t,n,e){var r=D.exec(n.slice(e));return r?(t.p=E[r[0].toLowerCase()],e+r[0].length):-1}function o(t,n,e){var r=F.exec(n.slice(e));return r?(t.w=H[r[0].toLowerCase()],e+r[0].length):-1}function a(t,n,e){var r=U.exec(n.slice(e));return r?(t.w=P[r[0].toLowerCase()],e+r[0].length):-1}function u(t,n,e){var r=O.exec(n.slice(e));return r?(t.m=j[r[0].toLowerCase()],e+r[0].length):-1}function s(t,n,e){var r=L.exec(n.slice(e));return r?(t.m=Y[r[0].toLowerCase()],e+r[0].length):-1}function c(t,n,e){return r(t,b,n,e)}function l(t,n,e){return r(t,M,n,e)}function h(t,n,e){return r(t,A,n,e)}function f(t){return T[t.getDay()]}function p(t){return N[t.getDay()]}function d(t){return S[t.getMonth()]}function g(t){return C[t.getMonth()]}function _(t){return k[+(t.getHours()>=12)]}function v(t){return T[t.getUTCDay()]}function y(t){return N[t.getUTCDay()]}function m(t){return S[t.getUTCMonth()]}function w(t){return C[t.getUTCMonth()]}function x(t){return k[+(t.getUTCHours()>=12)]}var b=t.dateTime,M=t.date,A=t.time,k=t.periods,N=t.days,T=t.shortDays,C=t.months,S=t.shortMonths,D=qe(k),E=$e(k),U=qe(N),P=$e(N),F=qe(T),H=$e(T),L=qe(C),Y=$e(C),O=qe(S),j=$e(S),z={a:f,A:p,b:d,B:g,c:null,d:ir,e:ir,H:or,I:ar,j:ur,L:sr,m:cr,M:lr,p:_,S:hr,U:fr,w:pr,W:dr,x:null,X:null,y:gr,Y:_r,Z:vr,"%":Ur},I={a:v,A:y,b:m,B:w,c:null,d:yr,e:yr,H:mr,I:wr,j:xr,L:br,m:Mr,M:Ar,p:x,S:kr,U:Nr,w:Tr,W:Cr,x:null,X:null,y:Sr,Y:Dr,Z:Er,"%":Ur},q={a:o,A:a,b:u,B:s,c:c,d:Je,e:Je,H:Ke,I:Ke,j:Qe,L:er,m:Ge,M:tr,p:i,S:nr,U:Be,w:Xe,W:Re,x:l,X:h,y:Ze,Y:We,Z:Ve,"%":rr};return z.x=n(M,z),z.X=n(A,z),z.c=n(b,z),I.x=n(M,I),I.X=n(A,I),I.c=n(b,I),{format:function(t){var e=n(t+="",z);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",Le);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",I);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,Ye);return n.toString=function(){return t},n}}}function ze(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Ve(t,n,e){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Ge(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Je(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Qe(t,n,e){var r=Ls.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Ke(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function tr(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function nr(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function er(t,n,e){var r=Ls.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function rr(t,n,e){var r=Ys.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function ir(t,n){return ze(t.getDate(),n,2)}function or(t,n){return ze(t.getHours(),n,2)}function ar(t,n){return ze(t.getHours()%12||12,n,2)}function ur(t,n){return ze(1+xs.count(ks(t),t),n,3)}function sr(t,n){return ze(t.getMilliseconds(),n,3)}function cr(t,n){return ze(t.getMonth()+1,n,2)}function lr(t,n){return ze(t.getMinutes(),n,2)}function hr(t,n){return ze(t.getSeconds(),n,2)}function fr(t,n){return ze(bs.count(ks(t),t),n,2)}function pr(t){return t.getDay()}function dr(t,n){return ze(Ms.count(ks(t),t),n,2)}function gr(t,n){return ze(t.getFullYear()%100,n,2)}function _r(t,n){return ze(t.getFullYear()%1e4,n,4)}function vr(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+ze(n/60|0,"0",2)+ze(n%60,"0",2)}function yr(t,n){return ze(t.getUTCDate(),n,2)}function mr(t,n){return ze(t.getUTCHours(),n,2)}function wr(t,n){return ze(t.getUTCHours()%12||12,n,2)}function xr(t,n){return ze(1+Ns.count(Ss(t),t),n,3)}function br(t,n){return ze(t.getUTCMilliseconds(),n,3)}function Mr(t,n){return ze(t.getUTCMonth()+1,n,2)}function Ar(t,n){return ze(t.getUTCMinutes(),n,2)}function kr(t,n){return ze(t.getUTCSeconds(),n,2)}function Nr(t,n){return ze(Ts.count(Ss(t),t),n,2)}function Tr(t){return t.getUTCDay()}function Cr(t,n){return ze(Cs.count(Ss(t),t),n,2)}function Sr(t,n){return ze(t.getUTCFullYear()%100,n,2)}function Dr(t,n){return ze(t.getUTCFullYear()%1e4,n,4)}function Er(){return"+0000"}function Ur(){return"%"}function Pr(t){return t.toISOString()}function Fr(t){var n=new Date(t);return isNaN(n)?null:n}function Hr(t){return new Date(t)}function Lr(t){return t instanceof Date?+t:+new Date(+t)}function Yr(t,n,r,i,o,a,u,s,c){function l(e){return(u(e)n?1:t>=n?0:NaN},ni=function(n){return 1===n.length&&(n=t(n)),{left:function(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[o],e)<0?r=o+1:i=o}return r},right:function(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[o],e)>0?i=o:r=o+1}return r}}},ei=ni(ti).right,ri=Math.sqrt(50),ii=Math.sqrt(10),oi=Math.sqrt(2),ai=function(t,e,r){var i,o,a,u=e0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++s=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r},si=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r},ci=Array.prototype.slice,li=function(t){return t},hi=1,fi=2,pi=3,di=4,gi=1e-6,_i={value:function(){}};h.prototype=l.prototype={constructor:h,on:function(t,n){var e,r=this._,i=f(t+"",r),o=-1,a=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),yi.hasOwnProperty(n)?{space:yi[n],local:t}:t},wi=function(t){var n=mi(t);return(n.local?_:g)(n)},xi=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var bi=document.documentElement;if(!bi.matches){var Mi=bi.webkitMatchesSelector||bi.msMatchesSelector||bi.mozMatchesSelector||bi.oMatchesSelector;xi=function(t){return function(){return Mi.call(this,t)}}}}var Ai=xi,ki={},Ni=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(ki={mouseenter:"mouseover",mouseleave:"mouseout"}));var Ti=function(t,n,e){var r,i,o=m(t+""),a=o.length;{if(!(arguments.length<2)){for(u=n?x:w,null==e&&(e=!1),r=0;r=w&&(w=m+1);!(y=_[w])&&++w=0;)(r=i[o])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},Ii=function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=T);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?F:"function"==typeof n?L:H)(t,n,null==e?"":e)):Y(this.node(),t)},Ji=function(t,n){return arguments.length>1?this.each((null==n?O:"function"==typeof n?z:j)(t,n)):this.node()[t]};$.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Qi=function(t,n){var e=I(t+"");if(arguments.length<2){for(var r=q(this.node()),i=-1,o=e.length;++i=240?t-240:t+120,i,r),bt(t,i,r),bt(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Ao=Math.PI/180,ko=180/Math.PI,No=.95047,To=1,Co=1.08883,So=4/29,Do=6/29,Eo=3*Do*Do,Uo=Do*Do*Do;lo(kt,At,lt(ht,{brighter:function(t){return new kt(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new kt(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=To*Tt(t),n=No*Tt(n),e=Co*Tt(e),new vt(Ct(3.2404542*n-1.5371385*t-.4985314*e),Ct(-.969266*n+1.8760108*t+.041556*e),Ct(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),lo(Ut,Et,lt(ht,{brighter:function(t){return new Ut(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Ut(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Mt(this).rgb()}}));var Po=-.14861,Fo=1.78277,Ho=-.29227,Lo=-.90649,Yo=1.97294,Oo=Yo*Lo,jo=Yo*Fo,zo=Fo*Ho-Lo*Po;lo(Ht,Ft,lt(ht,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ht(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ht(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Ao,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new vt(255*(n+e*(Po*r+Fo*i)),255*(n+e*(Ho*r+Lo*i)),255*(n+e*(Yo*r)),this.opacity)}}));var Io,qo,$o,Xo,Bo=function(t){return function(){return t}},Ro=function t(n){function e(t,n){var e=r((t=_t(t)).r,(n=_t(n)).r),i=r(t.g,n.g),o=r(t.b,n.b),a=zt(t.opacity,n.opacity);return function(n){return t.r=e(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}var r=jt(n);return e.gamma=t,e}(1),Wo=function(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(r),a=new Array(r);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:Vo(e,r)})),o=Qo.lastIndex;return oAa&&e.state1e-6)if(Math.abs(l*u-s*c)>1e-6&&i){var f=e-o,p=r-a,d=u*u+s*s,g=f*f+p*p,_=Math.sqrt(d),v=Math.sqrt(h),y=i*Math.tan((eu-Math.acos((d+h-g)/(2*_*v)))/2),m=y/v,w=y/_;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*c)+","+(n+m*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>c*p)+","+(this._x1=t+w*u)+","+(this._y1=n+w*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),s=t+a,c=n+u,l=1^o,h=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+s+","+c:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+s+","+c),e&&(h<0&&(h=h%ru+ru),h>iu?this._+="A"+e+","+e+",0,1,"+l+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+l+","+(this._x1=s)+","+(this._y1=c):h>1e-6&&(this._+="A"+e+","+e+",0,"+ +(h>=eu)+","+l+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};In.prototype=qn.prototype={constructor:In,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var ou=qn.prototype;$n.prototype=Xn.prototype={constructor:$n,has:ou.has,add:function(t){return t+="",this["$"+t]=t,this},remove:ou.remove,clear:ou.clear,values:ou.keys,size:ou.size,empty:ou.empty,each:ou.each};var au=function(t){function n(t,n){var r,i,o=e(t,function(t,e){if(r)return r(t,e-1);i=t,r=n?Rn(t,n):Bn(t)});return o.columns=i,o}function e(t,n){function e(){if(l>=c)return a;if(i)return i=!1,o;var n,e=l;if(34===t.charCodeAt(e)){for(var r=e;r++t||t>i||r>n||n>o))return this;var a,u,s=i-e,c=this._root;switch(u=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{a=new Array(4),a[u]=c,c=a}while(s*=2,i=e+s,o=r+s,t>i||n>o);break;case 1:do{a=new Array(4),a[u]=c,c=a}while(s*=2,e=i-s,o=r+s,e>t||n>o);break;case 2:do{a=new Array(4),a[u]=c,c=a}while(s*=2,i=e+s,r=o-s,t>i||r>n);break;case 3:do{a=new Array(4),a[u]=c,c=a}while(s*=2,e=i-s,r=o-s,e>t||r>n)}this._root&&this._root.length&&(this._root=c)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},cu=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},lu=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},hu=function(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i},fu=function(t,n,e){var r,i,o,a,u,s,c,l=this._x0,h=this._y0,f=this._x1,p=this._y1,d=[],g=this._root;for(g&&d.push(new hu(g,l,h,f,p)),null==e?e=1/0:(l=t-e,h=n-e,f=t+e,p=n+e,e*=e);s=d.pop();)if(!(!(g=s.node)||(i=s.x0)>f||(o=s.y0)>p||(a=s.x1)=v)<<1|t>=_)&&(s=d[d.length-1],d[d.length-1]=d[d.length-1-c],d[d.length-1-c]=s)}else{var y=t-+this._x.call(null,g.data),m=n-+this._y.call(null,g.data),w=y*y+m*m;if(w=(u=(d+_)/2))?d=u:_=u,(l=a>=(s=(g+v)/2))?g=s:v=s,n=p,!(p=p[h=l<<1|c]))return this;if(!p.length)break;(n[h+1&3]||n[h+2&3]||n[h+3&3])&&(e=n,f=h)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[h]=i:delete n[h],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[f]=p:this._root=p),this):(this._root=i,this)},du=function(){return this._root},gu=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},_u=function(t){var n,e,r,i,o,a,u=[],s=this._root;for(s&&u.push(new hu(s,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(s=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&s.length){var c=(r+o)/2,l=(i+a)/2;(e=s[3])&&u.push(new hu(e,c,l,o,a)),(e=s[2])&&u.push(new hu(e,r,l,c,a)),(e=s[1])&&u.push(new hu(e,c,i,o,l)),(e=s[0])&&u.push(new hu(e,r,i,c,l))}return this},vu=function(t){var n,e=[],r=[];for(this._root&&e.push(new hu(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,s=n.x1,c=n.y1,l=(a+s)/2,h=(u+c)/2;(o=i[0])&&e.push(new hu(o,a,u,l,h)),(o=i[1])&&e.push(new hu(o,l,u,s,h)),(o=i[2])&&e.push(new hu(o,a,h,l,c)),(o=i[3])&&e.push(new hu(o,l,h,s,c))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},yu=function(t){return arguments.length?(this._x=t,this):this._x},mu=function(t){return arguments.length?(this._y=t,this):this._y},wu=Kn.prototype=te.prototype;wu.copy=function(){var t,n,e=new te(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ne(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ne(n));return e},wu.add=uu,wu.addAll=Vn,wu.cover=su,wu.data=cu,wu.extent=lu,wu.find=fu,wu.remove=pu,wu.removeAll=Gn,wu.root=du,wu.size=gu,wu.visit=_u,wu.visitAfter=vu,wu.x=yu,wu.y=mu;var xu,bu=function(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]},Mu=function(t){return t=bu(Math.abs(t)),t?t[1]:NaN},Au=function(t,n){return function(e,r){for(var i=e.length,o=[],a=0,u=t[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),o.push(e.substring(i-=u,i+u)),!((s+=u+1)>r));)u=t[a=(a+1)%t.length];return o.reverse().join(n)}},ku=function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}},Nu=function(t,n){var e=bu(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Tu={"":function(t,n){t:for(var e,r=(t=t.toPrecision(n)).length,i=1,o=-1;i0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Nu(100*t,n)},r:Nu,s:function(t,n){var e=bu(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(xu=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+bu(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Cu=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;ee.prototype=re.prototype,re.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Su,Du,Eu,Uu=function(t){return t},Pu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Fu=function(t){function n(t){function n(t){var n,i,u,l=_,w=v;if("c"===g)w=y(t)+w,t="";else{var x=(t=+t)<0;if(t=y(Math.abs(t),d),x&&0==+t&&(x=!1),l=(x?"("===c?c:"-":"-"===c||"("===c?"":c)+l,w=w+("s"===g?Pu[8+xu/3]:"")+(x&&"("===c?")":""),m)for(n=-1,i=t.length;++n(u=t.charCodeAt(n))||u>57){w=(46===u?o+t.slice(n+1):t.slice(n))+w,t=t.slice(0,n);break}}p&&!h&&(t=r(t,1/0));var b=l.length+t.length+w.length,M=b>1)+l+t+w+M.slice(b);break;default:t=M+l+t+w}return a(t)}var e=(t=ee(t)).fill,s=t.align,c=t.sign,l=t.symbol,h=t.zero,f=t.width,p=t.comma,d=t.precision,g=t.type,_="$"===l?i[0]:"#"===l&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===l?i[1]:/[%p]/.test(g)?u:"",y=Tu[g],m=!g||/[defgprs%]/.test(g);return d=null==d?g?6:12:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}function e(t,e){var r=n((t=ee(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Mu(e)/3))),o=Math.pow(10,-i),a=Pu[8+i/3];return function(t){return r(o*t)+a}}var r=t.grouping&&t.thousands?Au(t.grouping,t.thousands):Uu,i=t.currency,o=t.decimal,a=t.numerals?ku(t.numerals):Uu,u=t.percent||"%";return{format:n,formatPrefix:e}};!function(t){Su=Fu(t),Du=Su.format,Eu=Su.formatPrefix}({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Hu=function(t){return Math.max(0,-Mu(Math.abs(t)))},Lu=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Mu(n)/3)))-Mu(Math.abs(t)))},Yu=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Mu(n)-Mu(t))+1},Ou=function(){return new ie};ie.prototype={constructor:ie,reset:function(){this.s=this.t=0},add:function(t){oe(ju,t,this.t),oe(this,ju.s,this.s),this.s?this.t+=ju.t:this.s=ju.t},valueOf:function(){return this.s}};var ju=new ie,zu=Math.PI,Iu=zu/2,qu=zu/180,$u=(Math.abs,Math.atan2),Xu=Math.cos,Bu=Math.sin,Ru=Math.sqrt;Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Xu(30*qu);se(function(t){return Ru(2/(1+t))}).invert=ce(function(t){return 2*ue(t/2)}),se(function(t){return(t=ae(t))&&t/Bu(t)}).invert=ce(function(t){return t});var Wu=function(){return this.eachAfter(le)},Zu=function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},Gu=function(t){for(var n,e,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),n=i.children)for(e=0,r=n.length;e=0;)e+=r[i].value;n.value=e})},Qu=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},Ku=function(t){for(var n=this,e=he(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ts=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},ns=function(){var t=[];return this.each(function(n){t.push(n)}),t},es=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},rs=function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n};ve.prototype=fe.prototype={constructor:ve,count:Wu,each:Zu,eachAfter:Gu,eachBefore:Vu,sum:Ju,sort:Qu,path:Ku,ancestors:ts,descendants:ns,leaves:es,links:rs,copy:pe};ye.prototype=Object.create(ve.prototype);var is={},os=Array.prototype,as=os.map,us=os.slice,ss=function(t){return function(){return t}},cs=function(t){return+t},ls=[0,1],hs=function(t,n,r){var i,o=t[0],a=t[t.length-1],u=e(o,a,null==n?10:n);switch((r=ee(null==r?",f":r)).type){case"s":var s=Math.max(Math.abs(o),Math.abs(a));return null!=r.precision||isNaN(i=Lu(u,s))||(r.precision=i),Eu(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=Yu(u,Math.max(Math.abs(o),Math.abs(a))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=Hu(u))||(r.precision=i-2*("%"===r.type))}return Du(r)},fs=function(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0?t>1?Pe(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):gs:null};var _s=6e4,vs=6048e5,ys=Pe(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),ms=Pe(function(t){t.setTime(Math.floor(t/_s)*_s)},function(t,n){t.setTime(+t+n*_s)},function(t,n){return(n-t)/_s},function(t){return t.getMinutes()}),ws=Pe(function(t){var n=t.getTimezoneOffset()*_s%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),xs=Pe(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*_s)/864e5},function(t){return t.getDate()-1}),bs=Fe(0),Ms=Fe(1),As=(Fe(2),Fe(3),Fe(4),Fe(5),Fe(6),Pe(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),ks=Pe(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});ks.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Pe(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};Pe(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*_s)},function(t,n){return(n-t)/_s},function(t){return t.getUTCMinutes()}),Pe(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()});var Ns=Pe(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Ts=He(0),Cs=He(1),Ss=(He(2),He(3),He(4),He(5),He(6),Pe(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Pe(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));Ss.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Pe(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Ds,Es,Us,Ps,Fs,Hs={"-":"",_:" ",0:"0"},Ls=/^\s*\d+/,Ys=/^%/,Os=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;!function(t){Ds=je(t),Es=Ds.format,Us=Ds.parse,Ps=Ds.utcFormat,Fs=Ds.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||Ps("%Y-%m-%dT%H:%M:%S.%LZ"),+new Date("2000-01-01T00:00:00.000Z")||Fs("%Y-%m-%dT%H:%M:%S.%LZ");var js=1e3,zs=60*js,Is=60*zs,qs=24*Is,$s=7*qs,Xs=30*qs,Bs=365*qs,Rs=function(){return Yr(ks,As,bs,xs,ws,ms,ys,gs,Es).domain([new Date(2e3,0,1),new Date(2e3,0,2)])},Ws=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})};Ws("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Ws("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),Ws("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),Ws("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),ca(Ft(300,.5,0),Ft(-240,.5,1));ca(Ft(-100,.75,.35),Ft(80,1.5,.8)),ca(Ft(260,.75,.35),Ft(80,1.5,.8)),Ft();var Zs=function(t){return function(){return t}};Or.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Vs=function(t){return new Or(t)},Gs=function(){function t(t){var u,s,c,l=t.length,h=!1;for(null==i&&(a=o(c=zn())),u=0;u<=l;++u)!(u0&&(a=As.offset(a,-1),u=As.offset(u,1));var s=r(n,1),c=i(n,1);return t.scales.x.domain([a,u]).nice(),t.scales.y.domain([s,c]).nice(),t}},{key:"plots",value:function(t,n,e){function r(n,e,r){return{plot:["o-chart__plot","o-chart__plot--"+s.slug(e,"-"),"o-chart__plot--"+s.slug(r,"-")],line:["o-chart__line","stroke-"+s.slug(r,"-")],dots:["o-chart__dot","fill-"+s.slug(r,"-"),"stroke-"+t.colors.background],bar:["o-chart__bar","fill-"+s.slug(r,"-")]}[n].join(" ")}function i(){return n.g.selectAll(".o-chart__plot").remove(),n.plots=n.g.selectAll(".o-chart__plot").data(e).enter().append("g").attr("class",function(){var t=co(this).data()[0];return s.plots.classes("plot",t.label,t.label)}),n.plots.each(function(t){s.plots[t.type](co(this))}),n}function o(n){n.append("path").attr("class",function(t){return s.plots.classes("line","",t.color)}).attr("d",function(n){return t.plots.line(n.data)}),n.selectAll(".o-chart__dot").data(function(t){return t.data}).enter().append("circle").attrs({cx:t.plots.line.x(),cy:t.plots.line.y(),r:tc.DOTS_RADIUS}).attr("class",function(t){var t=co(this.parentNode).data()[0];return s.plots.classes("dots","",t.color)})}function a(n){var r=e.filter(function(t){return"bar"===t.type}),i=n.data()[0],o=Math.max(0,i.data.length),a=t.right/o*tc.BAR_GAP/r.length,u=s.plots.classes("bar","",i.color),c=a*(r.map(function(t){return t.label}).indexOf(i.label)+1)-a*r.length/2;n.selectAll(".o-chart__bar").data(function(t){return i.data}).enter().append("rect").attrs({class:u,width:a,x:function(n){return t.scales.x(s.timeParse(n[0]))-c},y:function(n){return t.scales.y(Math.max(0,n[1]))},height:function(n){return Math.abs(Math.min(t.scales.y(0),t.bottom)-t.scales.y(n[1]))}})}function u(){return s.plots.create()}var s=this;return s.plots.create=i,s.plots.line=o,s.plots.bar=a,s.plots.update=u,s.plots.classes=r,s.plots}},{key:"axis",value:function(t,n){function e(n){return{axis_top:["o-chart__axis","o-chart__axis--x","o-chart__axis--top"],axis_bottom:["o-chart__axis","o-chart__axis--x","o-chart__axis--bottom"],axis_left:["o-chart__axis","o-chart__axis--y","o-chart__axis--left"],axis_right:["o-chart__axis","o-chart__axis--y","o-chart__axis--right"],label_top:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--x","o-chart__label--top"],label_bottom:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--x","o-chart__label--bottom"],label_left:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--y","o-chart__label--left"],label_right:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--y","o-chart__label--right"],ticks:["tick","fill-"+t.colors.axis],line_x:["o-chart__axis-gap--x","stroke-"+t.colors.axis],line_y:["o-chart__axis-gap--y","stroke-"+t.colors.axis]}[n].join(" ")}function r(){return n.axis={},n.axis.x=n.g.append("g").attr("class",s.axis.classes("axis_bottom")),n.axis.y=n.g.append("g").attr("class",s.axis.classes("axis_left")),s.axis.update(),s.axis.modify(),s.axis.labels()}function i(){return n.axis.x.call(t.axis.x).attr("transform",s.translate(0,t.innerHeight)),n.axis.y.call(t.axis.y),n.axis.x.select(".o-chart__axis-gap--x").attrs({x1:0,y1:0,y2:0,x2:t.innerWidth}),n.axis.y.select(".o-chart__axis-gap--y").attrs({x1:0,y1:0,x2:0,y2:t.innerHeight}),n.g.selectAll(".tick").attr("class",s.axis.classes("ticks")),n.g.select(".o-chart__label--x").attr("transform",function(){var n=co(this).select("text"),e=t.left+t.innerWidth/2,r=t.height-n.node().getBBox().height;return s.translate(e,r)}),n.g.select(".o-chart__label--y").attr("transform",function(){var n=0-t.margin[3]+co(this).node().getBBox().height,e=t.innerHeight/2;return[s.translate(n,e),"rotate(-90)"].join(" ")}),n}function o(){return n.axis.x.label=n.g.append("g").attr("class",s.axis.classes("label_bottom")),n.axis.x.label.append("text").attrs({"text-anchor":"middle"}),n.axis.y.label=n.g.append("g").attr("class",s.axis.classes("label_left")),n.axis.y.label.append("text").attrs({"text-anchor":"middle"}),s.axis.text(),n}function a(){n.g.select(".o-chart__label--x").select("text").text(t.labels.axis.x),n.g.select(".o-chart__label--y").select("text").text(t.labels.axis.y),s.axis.update()}function u(){n.axis.x.append("line").attrs({x1:0,y1:0,y2:0,x2:t.innerWidth,class:s.axis.classes("line_x")}),n.axis.x.select(".domain").attr("display","none"),n.axis.y.append("line").attrs({x1:0,y1:0,x2:0,y2:t.innerHeight,class:s.axis.classes("line_y")}),n.axis.y.select(".domain").attr("display","none")}var s=this;return s.axis.create=r,s.axis.update=i,s.axis.labels=o,s.axis.text=a,s.axis.modify=u,s.axis.classes=e,s.axis}}]),t}();return function(){function t(){nc(this,t)}return ec(t,[{key:"charts",value:function(t,n){return new rc(t,n).init()}}]),t}()}(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnljby5kaXN0LmpzIiwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2Jpc2VjdG9yLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9heGlzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRpc3BhdGNoL3NyYy9kaXNwYXRjaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NyZWF0b3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rvci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yQWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VudGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc29ydC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hdHRyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3N0eWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NsYXNzZWQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vdGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JhaXNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2xvd2VyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luc2VydC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yZW1vdmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGlzcGF0Y2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2xhYi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY3ViZWhlbGl4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvc3RyaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY3ViZWhlbGl4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NjaGVkdWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHdlZW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0clR3ZWVuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9kdXJhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL2Vhc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9vbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3JlbW92ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc3R5bGVUd2Vlbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9jdWJpYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vdHJhbnNpdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvYnJ1c2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xsZWN0aW9uL3NyYy9tYXAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvc2V0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvZHN2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9hZGQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvcXVhZHRyZWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hZGRlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL21hdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9jb3VudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9wYXRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWV1ZS9zcmMvcXVldWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnRpbnVvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2xpbmVhci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy93ZWVrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2xvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvRm9ybWF0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGltZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbW9ub3RvbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL3NyYy9zZWxlY3Rpb24vYXR0cnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL3NyYy9zZWxlY3Rpb24vc3R5bGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi1tdWx0aS9zcmMvc2VsZWN0aW9uL3Byb3BlcnRpZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2FzY2VuZGluZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21pbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9hcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9pZGVudGl0eS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9tYXRjaGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RBbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZmlsdGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NwYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2V4aXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbWVyZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb3JkZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2FsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW1wdHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZWFjaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3dpbmRvdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hcHBlbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGF0dW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL21hdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdmFsdWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2ludGVycnVwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vaW50ZXJydXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9tZXJnZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdEFsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3RyYW5zaXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcG9seS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9iYWNrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2VsYXN0aWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9tYXRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvY3N2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvdHN2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZXh0ZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9maW5kLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9yb290LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXRBZnRlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdERlY2ltYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdE51bWVyYWxzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFR5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2lkZW50aXR5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2xvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvbkZpeGVkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYm91bmRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9seWdvbkNvbnRhaW5zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbGVuZ3RoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9hcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9tZWFzdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9yZXNhbXBsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsRXF1YWxBcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hCZWZvcmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaEFmdGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9zb3J0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2FuY2VzdG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9kZXNjZW5kYW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9sZWF2ZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9hcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY29uc3RhbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL251bWJlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGlja0Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbmljZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taWxsaXNlY29uZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kdXJhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9zZWNvbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY2F0ZWdvcnkxMC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY2F0ZWdvcnkyMGIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NhdGVnb3J5MjBjLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jYXRlZ29yeTIwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jdWJlaGVsaXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3JhaW5ib3cuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXZvcm9ub2kvc3JjL0RpYWdyYW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL2luZGV4LmpzIiwiLi4vLi4vc3JjL2pzL21vZHVsZXMvby1jaGFydHMuY29uc3RhbnRzLmpzIiwiLi4vLi4vc3JjL2pzL21vZHVsZXMvby1jaGFydHMuanMiLCIuLi8uLi9zcmMvanMvbnljby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmIChjb21wYXJlLmxlbmd0aCA9PT0gMSkgY29tcGFyZSA9IGFzY2VuZGluZ0NvbXBhcmF0b3IoY29tcGFyZSk7XG4gIHJldHVybiB7XG4gICAgbGVmdDogZnVuY3Rpb24oYSwgeCwgbG8sIGhpKSB7XG4gICAgICBpZiAobG8gPT0gbnVsbCkgbG8gPSAwO1xuICAgICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgICB3aGlsZSAobG8gPCBoaSkge1xuICAgICAgICB2YXIgbWlkID0gbG8gKyBoaSA+Pj4gMTtcbiAgICAgICAgaWYgKGNvbXBhcmUoYVttaWRdLCB4KSA8IDApIGxvID0gbWlkICsgMTtcbiAgICAgICAgZWxzZSBoaSA9IG1pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsbztcbiAgICB9LFxuICAgIHJpZ2h0OiBmdW5jdGlvbihhLCB4LCBsbywgaGkpIHtcbiAgICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICAgIHZhciBtaWQgPSBsbyArIGhpID4+PiAxO1xuICAgICAgICBpZiAoY29tcGFyZShhW21pZF0sIHgpID4gMCkgaGkgPSBtaWQ7XG4gICAgICAgIGVsc2UgbG8gPSBtaWQgKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxvO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nQ29tcGFyYXRvcihmKSB7XG4gIHJldHVybiBmdW5jdGlvbihkLCB4KSB7XG4gICAgcmV0dXJuIGFzY2VuZGluZyhmKGQpLCB4KTtcbiAgfTtcbn1cbiIsInZhciBlMTAgPSBNYXRoLnNxcnQoNTApLFxuICAgIGU1ID0gTWF0aC5zcXJ0KDEwKSxcbiAgICBlMiA9IE1hdGguc3FydCgyKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIHZhciByZXZlcnNlID0gc3RvcCA8IHN0YXJ0LFxuICAgICAgaSA9IC0xLFxuICAgICAgbixcbiAgICAgIHRpY2tzLFxuICAgICAgc3RlcDtcblxuICBpZiAocmV2ZXJzZSkgbiA9IHN0YXJ0LCBzdGFydCA9IHN0b3AsIHN0b3AgPSBuO1xuXG4gIGlmICgoc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSkgPT09IDAgfHwgIWlzRmluaXRlKHN0ZXApKSByZXR1cm4gW107XG5cbiAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgc3RhcnQgPSBNYXRoLmNlaWwoc3RhcnQgLyBzdGVwKTtcbiAgICBzdG9wID0gTWF0aC5mbG9vcihzdG9wIC8gc3RlcCk7XG4gICAgdGlja3MgPSBuZXcgQXJyYXkobiA9IE1hdGguY2VpbChzdG9wIC0gc3RhcnQgKyAxKSk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHRpY2tzW2ldID0gKHN0YXJ0ICsgaSkgKiBzdGVwO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAqIHN0ZXApO1xuICAgIHN0b3AgPSBNYXRoLmNlaWwoc3RvcCAqIHN0ZXApO1xuICAgIHRpY2tzID0gbmV3IEFycmF5KG4gPSBNYXRoLmNlaWwoc3RhcnQgLSBzdG9wICsgMSkpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aWNrc1tpXSA9IChzdGFydCAtIGkpIC8gc3RlcDtcbiAgfVxuXG4gIGlmIChyZXZlcnNlKSB0aWNrcy5yZXZlcnNlKCk7XG5cbiAgcmV0dXJuIHRpY2tzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAgPSAoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHBvd2VyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzdGVwKSAvIE1hdGguTE4xMCksXG4gICAgICBlcnJvciA9IHN0ZXAgLyBNYXRoLnBvdygxMCwgcG93ZXIpO1xuICByZXR1cm4gcG93ZXIgPj0gMFxuICAgICAgPyAoZXJyb3IgPj0gZTEwID8gMTAgOiBlcnJvciA+PSBlNSA/IDUgOiBlcnJvciA+PSBlMiA/IDIgOiAxKSAqIE1hdGgucG93KDEwLCBwb3dlcilcbiAgICAgIDogLU1hdGgucG93KDEwLCAtcG93ZXIpIC8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrU3RlcChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAwID0gTWF0aC5hYnMoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHN0ZXAxID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2coc3RlcDApIC8gTWF0aC5MTjEwKSksXG4gICAgICBlcnJvciA9IHN0ZXAwIC8gc3RlcDE7XG4gIGlmIChlcnJvciA+PSBlMTApIHN0ZXAxICo9IDEwO1xuICBlbHNlIGlmIChlcnJvciA+PSBlNSkgc3RlcDEgKj0gNTtcbiAgZWxzZSBpZiAoZXJyb3IgPj0gZTIpIHN0ZXAxICo9IDI7XG4gIHJldHVybiBzdG9wIDwgc3RhcnQgPyAtc3RlcDEgOiBzdGVwMTtcbn1cbiIsImltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHlcIjtcblxudmFyIHRvcCA9IDEsXG4gICAgcmlnaHQgPSAyLFxuICAgIGJvdHRvbSA9IDMsXG4gICAgbGVmdCA9IDQsXG4gICAgZXBzaWxvbiA9IDFlLTY7XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZVgoeCkge1xuICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyAoeCArIDAuNSkgKyBcIiwwKVwiO1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVZKHkpIHtcbiAgcmV0dXJuIFwidHJhbnNsYXRlKDAsXCIgKyAoeSArIDAuNSkgKyBcIilcIjtcbn1cblxuZnVuY3Rpb24gY2VudGVyKHNjYWxlKSB7XG4gIHZhciBvZmZzZXQgPSBNYXRoLm1heCgwLCBzY2FsZS5iYW5kd2lkdGgoKSAtIDEpIC8gMjsgLy8gQWRqdXN0IGZvciAwLjVweCBvZmZzZXQuXG4gIGlmIChzY2FsZS5yb3VuZCgpKSBvZmZzZXQgPSBNYXRoLnJvdW5kKG9mZnNldCk7XG4gIHJldHVybiBmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIHNjYWxlKGQpICsgb2Zmc2V0O1xuICB9O1xufVxuXG5mdW5jdGlvbiBlbnRlcmluZygpIHtcbiAgcmV0dXJuICF0aGlzLl9fYXhpcztcbn1cblxuZnVuY3Rpb24gYXhpcyhvcmllbnQsIHNjYWxlKSB7XG4gIHZhciB0aWNrQXJndW1lbnRzID0gW10sXG4gICAgICB0aWNrVmFsdWVzID0gbnVsbCxcbiAgICAgIHRpY2tGb3JtYXQgPSBudWxsLFxuICAgICAgdGlja1NpemVJbm5lciA9IDYsXG4gICAgICB0aWNrU2l6ZU91dGVyID0gNixcbiAgICAgIHRpY2tQYWRkaW5nID0gMyxcbiAgICAgIGsgPSBvcmllbnQgPT09IHRvcCB8fCBvcmllbnQgPT09IGxlZnQgPyAtMSA6IDEsXG4gICAgICB4ID0gb3JpZW50ID09PSBsZWZ0IHx8IG9yaWVudCA9PT0gcmlnaHQgPyBcInhcIiA6IFwieVwiLFxuICAgICAgdHJhbnNmb3JtID0gb3JpZW50ID09PSB0b3AgfHwgb3JpZW50ID09PSBib3R0b20gPyB0cmFuc2xhdGVYIDogdHJhbnNsYXRlWTtcblxuICBmdW5jdGlvbiBheGlzKGNvbnRleHQpIHtcbiAgICB2YXIgdmFsdWVzID0gdGlja1ZhbHVlcyA9PSBudWxsID8gKHNjYWxlLnRpY2tzID8gc2NhbGUudGlja3MuYXBwbHkoc2NhbGUsIHRpY2tBcmd1bWVudHMpIDogc2NhbGUuZG9tYWluKCkpIDogdGlja1ZhbHVlcyxcbiAgICAgICAgZm9ybWF0ID0gdGlja0Zvcm1hdCA9PSBudWxsID8gKHNjYWxlLnRpY2tGb3JtYXQgPyBzY2FsZS50aWNrRm9ybWF0LmFwcGx5KHNjYWxlLCB0aWNrQXJndW1lbnRzKSA6IGlkZW50aXR5KSA6IHRpY2tGb3JtYXQsXG4gICAgICAgIHNwYWNpbmcgPSBNYXRoLm1heCh0aWNrU2l6ZUlubmVyLCAwKSArIHRpY2tQYWRkaW5nLFxuICAgICAgICByYW5nZSA9IHNjYWxlLnJhbmdlKCksXG4gICAgICAgIHJhbmdlMCA9IHJhbmdlWzBdICsgMC41LFxuICAgICAgICByYW5nZTEgPSByYW5nZVtyYW5nZS5sZW5ndGggLSAxXSArIDAuNSxcbiAgICAgICAgcG9zaXRpb24gPSAoc2NhbGUuYmFuZHdpZHRoID8gY2VudGVyIDogaWRlbnRpdHkpKHNjYWxlLmNvcHkoKSksXG4gICAgICAgIHNlbGVjdGlvbiA9IGNvbnRleHQuc2VsZWN0aW9uID8gY29udGV4dC5zZWxlY3Rpb24oKSA6IGNvbnRleHQsXG4gICAgICAgIHBhdGggPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLmRvbWFpblwiKS5kYXRhKFtudWxsXSksXG4gICAgICAgIHRpY2sgPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLnRpY2tcIikuZGF0YSh2YWx1ZXMsIHNjYWxlKS5vcmRlcigpLFxuICAgICAgICB0aWNrRXhpdCA9IHRpY2suZXhpdCgpLFxuICAgICAgICB0aWNrRW50ZXIgPSB0aWNrLmVudGVyKCkuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0aWNrXCIpLFxuICAgICAgICBsaW5lID0gdGljay5zZWxlY3QoXCJsaW5lXCIpLFxuICAgICAgICB0ZXh0ID0gdGljay5zZWxlY3QoXCJ0ZXh0XCIpO1xuXG4gICAgcGF0aCA9IHBhdGgubWVyZ2UocGF0aC5lbnRlcigpLmluc2VydChcInBhdGhcIiwgXCIudGlja1wiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwiZG9tYWluXCIpXG4gICAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzAwMFwiKSk7XG5cbiAgICB0aWNrID0gdGljay5tZXJnZSh0aWNrRW50ZXIpO1xuXG4gICAgbGluZSA9IGxpbmUubWVyZ2UodGlja0VudGVyLmFwcGVuZChcImxpbmVcIilcbiAgICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjMDAwXCIpXG4gICAgICAgIC5hdHRyKHggKyBcIjJcIiwgayAqIHRpY2tTaXplSW5uZXIpKTtcblxuICAgIHRleHQgPSB0ZXh0Lm1lcmdlKHRpY2tFbnRlci5hcHBlbmQoXCJ0ZXh0XCIpXG4gICAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIiMwMDBcIilcbiAgICAgICAgLmF0dHIoeCwgayAqIHNwYWNpbmcpXG4gICAgICAgIC5hdHRyKFwiZHlcIiwgb3JpZW50ID09PSB0b3AgPyBcIjBlbVwiIDogb3JpZW50ID09PSBib3R0b20gPyBcIjAuNzFlbVwiIDogXCIwLjMyZW1cIikpO1xuXG4gICAgaWYgKGNvbnRleHQgIT09IHNlbGVjdGlvbikge1xuICAgICAgcGF0aCA9IHBhdGgudHJhbnNpdGlvbihjb250ZXh0KTtcbiAgICAgIHRpY2sgPSB0aWNrLnRyYW5zaXRpb24oY29udGV4dCk7XG4gICAgICBsaW5lID0gbGluZS50cmFuc2l0aW9uKGNvbnRleHQpO1xuICAgICAgdGV4dCA9IHRleHQudHJhbnNpdGlvbihjb250ZXh0KTtcblxuICAgICAgdGlja0V4aXQgPSB0aWNrRXhpdC50cmFuc2l0aW9uKGNvbnRleHQpXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gaXNGaW5pdGUoZCA9IHBvc2l0aW9uKGQpKSA/IHRyYW5zZm9ybShkKSA6IHRoaXMuZ2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIpOyB9KTtcblxuICAgICAgdGlja0VudGVyXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyB2YXIgcCA9IHRoaXMucGFyZW50Tm9kZS5fX2F4aXM7IHJldHVybiB0cmFuc2Zvcm0ocCAmJiBpc0Zpbml0ZShwID0gcChkKSkgPyBwIDogcG9zaXRpb24oZCkpOyB9KTtcbiAgICB9XG5cbiAgICB0aWNrRXhpdC5yZW1vdmUoKTtcblxuICAgIHBhdGhcbiAgICAgICAgLmF0dHIoXCJkXCIsIG9yaWVudCA9PT0gbGVmdCB8fCBvcmllbnQgPT0gcmlnaHRcbiAgICAgICAgICAgID8gXCJNXCIgKyBrICogdGlja1NpemVPdXRlciArIFwiLFwiICsgcmFuZ2UwICsgXCJIMC41VlwiICsgcmFuZ2UxICsgXCJIXCIgKyBrICogdGlja1NpemVPdXRlclxuICAgICAgICAgICAgOiBcIk1cIiArIHJhbmdlMCArIFwiLFwiICsgayAqIHRpY2tTaXplT3V0ZXIgKyBcIlYwLjVIXCIgKyByYW5nZTEgKyBcIlZcIiArIGsgKiB0aWNrU2l6ZU91dGVyKTtcblxuICAgIHRpY2tcbiAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIDEpXG4gICAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHRyYW5zZm9ybShwb3NpdGlvbihkKSk7IH0pO1xuXG4gICAgbGluZVxuICAgICAgICAuYXR0cih4ICsgXCIyXCIsIGsgKiB0aWNrU2l6ZUlubmVyKTtcblxuICAgIHRleHRcbiAgICAgICAgLmF0dHIoeCwgayAqIHNwYWNpbmcpXG4gICAgICAgIC50ZXh0KGZvcm1hdCk7XG5cbiAgICBzZWxlY3Rpb24uZmlsdGVyKGVudGVyaW5nKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXG4gICAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIDEwKVxuICAgICAgICAuYXR0cihcImZvbnQtZmFtaWx5XCIsIFwic2Fucy1zZXJpZlwiKVxuICAgICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIG9yaWVudCA9PT0gcmlnaHQgPyBcInN0YXJ0XCIgOiBvcmllbnQgPT09IGxlZnQgPyBcImVuZFwiIDogXCJtaWRkbGVcIik7XG5cbiAgICBzZWxlY3Rpb25cbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7IHRoaXMuX19heGlzID0gcG9zaXRpb247IH0pO1xuICB9XG5cbiAgYXhpcy5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzY2FsZSA9IF8sIGF4aXMpIDogc2NhbGU7XG4gIH07XG5cbiAgYXhpcy50aWNrcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpLCBheGlzO1xuICB9O1xuXG4gIGF4aXMudGlja0FyZ3VtZW50cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrQXJndW1lbnRzID0gXyA9PSBudWxsID8gW10gOiBzbGljZS5jYWxsKF8pLCBheGlzKSA6IHRpY2tBcmd1bWVudHMuc2xpY2UoKTtcbiAgfTtcblxuICBheGlzLnRpY2tWYWx1ZXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1ZhbHVlcyA9IF8gPT0gbnVsbCA/IG51bGwgOiBzbGljZS5jYWxsKF8pLCBheGlzKSA6IHRpY2tWYWx1ZXMgJiYgdGlja1ZhbHVlcy5zbGljZSgpO1xuICB9O1xuXG4gIGF4aXMudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrRm9ybWF0ID0gXywgYXhpcykgOiB0aWNrRm9ybWF0O1xuICB9O1xuXG4gIGF4aXMudGlja1NpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1NpemVJbm5lciA9IHRpY2tTaXplT3V0ZXIgPSArXywgYXhpcykgOiB0aWNrU2l6ZUlubmVyO1xuICB9O1xuXG4gIGF4aXMudGlja1NpemVJbm5lciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrU2l6ZUlubmVyID0gK18sIGF4aXMpIDogdGlja1NpemVJbm5lcjtcbiAgfTtcblxuICBheGlzLnRpY2tTaXplT3V0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1NpemVPdXRlciA9ICtfLCBheGlzKSA6IHRpY2tTaXplT3V0ZXI7XG4gIH07XG5cbiAgYXhpcy50aWNrUGFkZGluZyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrUGFkZGluZyA9ICtfLCBheGlzKSA6IHRpY2tQYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBheGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc1RvcChzY2FsZSkge1xuICByZXR1cm4gYXhpcyh0b3AsIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNSaWdodChzY2FsZSkge1xuICByZXR1cm4gYXhpcyhyaWdodCwgc2NhbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc0JvdHRvbShzY2FsZSkge1xuICByZXR1cm4gYXhpcyhib3R0b20sIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNMZWZ0KHNjYWxlKSB7XG4gIHJldHVybiBheGlzKGxlZnQsIHNjYWxlKTtcbn1cbiIsInZhciBub29wID0ge3ZhbHVlOiBmdW5jdGlvbigpIHt9fTtcblxuZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aCwgXyA9IHt9LCB0OyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEodCA9IGFyZ3VtZW50c1tpXSArIFwiXCIpIHx8ICh0IGluIF8pKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpc3BhdGNoO1xuIiwiaW1wb3J0IG5hbWVzcGFjZSBmcm9tIFwiLi9uYW1lc3BhY2VcIjtcbmltcG9ydCB7eGh0bWx9IGZyb20gXCIuL25hbWVzcGFjZXNcIjtcblxuZnVuY3Rpb24gY3JlYXRvckluaGVyaXQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGRvY3VtZW50ID0gdGhpcy5vd25lckRvY3VtZW50LFxuICAgICAgICB1cmkgPSB0aGlzLm5hbWVzcGFjZVVSSTtcbiAgICByZXR1cm4gdXJpID09PSB4aHRtbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJID09PSB4aHRtbFxuICAgICAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSlcbiAgICAgICAgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModXJpLCBuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRvckZpeGVkKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcbiAgcmV0dXJuIChmdWxsbmFtZS5sb2NhbFxuICAgICAgPyBjcmVhdG9yRml4ZWRcbiAgICAgIDogY3JlYXRvckluaGVyaXQpKGZ1bGxuYW1lKTtcbn1cbiIsInZhciBmaWx0ZXJFdmVudHMgPSB7fTtcblxuZXhwb3J0IHZhciBldmVudCA9IG51bGw7XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGlmICghKFwib25tb3VzZWVudGVyXCIgaW4gZWxlbWVudCkpIHtcbiAgICBmaWx0ZXJFdmVudHMgPSB7bW91c2VlbnRlcjogXCJtb3VzZW92ZXJcIiwgbW91c2VsZWF2ZTogXCJtb3VzZW91dFwifTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJDb250ZXh0TGlzdGVuZXIobGlzdGVuZXIsIGluZGV4LCBncm91cCkge1xuICBsaXN0ZW5lciA9IGNvbnRleHRMaXN0ZW5lcihsaXN0ZW5lciwgaW5kZXgsIGdyb3VwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgdmFyIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgIGlmICghcmVsYXRlZCB8fCAocmVsYXRlZCAhPT0gdGhpcyAmJiAhKHJlbGF0ZWQuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykgJiA4KSkpIHtcbiAgICAgIGxpc3RlbmVyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udGV4dExpc3RlbmVyKGxpc3RlbmVyLCBpbmRleCwgZ3JvdXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50MSkge1xuICAgIHZhciBldmVudDAgPSBldmVudDsgLy8gRXZlbnRzIGNhbiBiZSByZWVudHJhbnQgKGUuZy4sIGZvY3VzKS5cbiAgICBldmVudCA9IGV2ZW50MTtcbiAgICB0cnkge1xuICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCB0aGlzLl9fZGF0YV9fLCBpbmRleCwgZ3JvdXApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBldmVudCA9IGV2ZW50MDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVtb3ZlKHR5cGVuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb247XG4gICAgaWYgKCFvbikgcmV0dXJuO1xuICAgIGZvciAodmFyIGogPSAwLCBpID0gLTEsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChvID0gb25bal0sICghdHlwZW5hbWUudHlwZSB8fCBvLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUpICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLmNhcHR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bKytpXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgrK2kpIG9uLmxlbmd0aCA9IGk7XG4gICAgZWxzZSBkZWxldGUgdGhpcy5fX29uO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbkFkZCh0eXBlbmFtZSwgdmFsdWUsIGNhcHR1cmUpIHtcbiAgdmFyIHdyYXAgPSBmaWx0ZXJFdmVudHMuaGFzT3duUHJvcGVydHkodHlwZW5hbWUudHlwZSkgPyBmaWx0ZXJDb250ZXh0TGlzdGVuZXIgOiBjb250ZXh0TGlzdGVuZXI7XG4gIHJldHVybiBmdW5jdGlvbihkLCBpLCBncm91cCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbiwgbywgbGlzdGVuZXIgPSB3cmFwKHZhbHVlLCBpLCBncm91cCk7XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgICAgaWYgKChvID0gb25bal0pLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUgJiYgby5uYW1lID09PSB0eXBlbmFtZS5uYW1lKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIsIG8uY2FwdHVyZSk7XG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIgPSBsaXN0ZW5lciwgby5jYXB0dXJlID0gY2FwdHVyZSk7XG4gICAgICAgIG8udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodHlwZW5hbWUudHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgIG8gPSB7dHlwZTogdHlwZW5hbWUudHlwZSwgbmFtZTogdHlwZW5hbWUubmFtZSwgdmFsdWU6IHZhbHVlLCBsaXN0ZW5lcjogbGlzdGVuZXIsIGNhcHR1cmU6IGNhcHR1cmV9O1xuICAgIGlmICghb24pIHRoaXMuX19vbiA9IFtvXTtcbiAgICBlbHNlIG9uLnB1c2gobyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGVuYW1lLCB2YWx1ZSwgY2FwdHVyZSkge1xuICB2YXIgdHlwZW5hbWVzID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiKSwgaSwgbiA9IHR5cGVuYW1lcy5sZW5ndGgsIHQ7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIG9uID0gdGhpcy5ub2RlKCkuX19vbjtcbiAgICBpZiAob24pIGZvciAodmFyIGogPSAwLCBtID0gb24ubGVuZ3RoLCBvOyBqIDwgbTsgKytqKSB7XG4gICAgICBmb3IgKGkgPSAwLCBvID0gb25bal07IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKCh0ID0gdHlwZW5hbWVzW2ldKS50eXBlID09PSBvLnR5cGUgJiYgdC5uYW1lID09PSBvLm5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBvbiA9IHZhbHVlID8gb25BZGQgOiBvblJlbW92ZTtcbiAgaWYgKGNhcHR1cmUgPT0gbnVsbCkgY2FwdHVyZSA9IGZhbHNlO1xuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB0aGlzLmVhY2gob24odHlwZW5hbWVzW2ldLCB2YWx1ZSwgY2FwdHVyZSkpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbUV2ZW50KGV2ZW50MSwgbGlzdGVuZXIsIHRoYXQsIGFyZ3MpIHtcbiAgdmFyIGV2ZW50MCA9IGV2ZW50O1xuICBldmVudDEuc291cmNlRXZlbnQgPSBldmVudDtcbiAgZXZlbnQgPSBldmVudDE7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9IGZpbmFsbHkge1xuICAgIGV2ZW50ID0gZXZlbnQwO1xuICB9XG59XG4iLCJmdW5jdGlvbiBub25lKCkge31cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBub25lIDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIH07XG59XG4iLCJmdW5jdGlvbiBlbXB0eSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPT0gbnVsbCA/IGVtcHR5IDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gIH07XG59XG4iLCJpbXBvcnQgc3BhcnNlIGZyb20gXCIuL3NwYXJzZVwiO1xuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9lbnRlciB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW50ZXJOb2RlKHBhcmVudCwgZGF0dW0pIHtcbiAgdGhpcy5vd25lckRvY3VtZW50ID0gcGFyZW50Lm93bmVyRG9jdW1lbnQ7XG4gIHRoaXMubmFtZXNwYWNlVVJJID0gcGFyZW50Lm5hbWVzcGFjZVVSSTtcbiAgdGhpcy5fbmV4dCA9IG51bGw7XG4gIHRoaXMuX3BhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5fX2RhdGFfXyA9IGRhdHVtO1xufVxuXG5FbnRlck5vZGUucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRW50ZXJOb2RlLFxuICBhcHBlbmRDaGlsZDogZnVuY3Rpb24oY2hpbGQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIHRoaXMuX25leHQpOyB9LFxuICBpbnNlcnRCZWZvcmU6IGZ1bmN0aW9uKGNoaWxkLCBuZXh0KSB7IHJldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCBuZXh0KTsgfSxcbiAgcXVlcnlTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsgfSxcbiAgcXVlcnlTZWxlY3RvckFsbDogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsgfVxufTtcbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHtFbnRlck5vZGV9IGZyb20gXCIuL2VudGVyXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4uL2NvbnN0YW50XCI7XG5cbnZhciBrZXlQcmVmaXggPSBcIiRcIjsgLy8gUHJvdGVjdCBhZ2FpbnN0IGtleXMgbGlrZSDigJxfX3Byb3RvX1/igJ0uXG5cbmZ1bmN0aW9uIGJpbmRJbmRleChwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhKSB7XG4gIHZhciBpID0gMCxcbiAgICAgIG5vZGUsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZml0IGludG8gdXBkYXRlLlxuICAvLyBQdXQgYW55IG51bGwgbm9kZXMgaW50byBlbnRlci5cbiAgLy8gUHV0IGFueSByZW1haW5pbmcgZGF0YSBpbnRvIGVudGVyLlxuICBmb3IgKDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGRvbuKAmXQgZml0IGludG8gZXhpdC5cbiAgZm9yICg7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJpbmRLZXkocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSwga2V5KSB7XG4gIHZhciBpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVCeUtleVZhbHVlID0ge30sXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGtleVZhbHVlcyA9IG5ldyBBcnJheShncm91cExlbmd0aCksXG4gICAgICBrZXlWYWx1ZTtcblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggbm9kZS5cbiAgLy8gSWYgbXVsdGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBrZXksIHRoZSBkdXBsaWNhdGVzIGFyZSBhZGRlZCB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGtleVZhbHVlc1tpXSA9IGtleVZhbHVlID0ga2V5UHJlZml4ICsga2V5LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApO1xuICAgICAgaWYgKGtleVZhbHVlIGluIG5vZGVCeUtleVZhbHVlKSB7XG4gICAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZUJ5S2V5VmFsdWVba2V5VmFsdWVdID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggZGF0dW0uXG4gIC8vIElmIHRoZXJlIGEgbm9kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXksIGpvaW4gYW5kIGFkZCBpdCB0byB1cGRhdGUuXG4gIC8vIElmIHRoZXJlIGlzIG5vdCAob3IgdGhlIGtleSBpcyBhIGR1cGxpY2F0ZSksIGFkZCBpdCB0byBlbnRlci5cbiAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGtleVZhbHVlID0ga2V5UHJlZml4ICsga2V5LmNhbGwocGFyZW50LCBkYXRhW2ldLCBpLCBkYXRhKTtcbiAgICBpZiAobm9kZSA9IG5vZGVCeUtleVZhbHVlW2tleVZhbHVlXSkge1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgbm9kZUJ5S2V5VmFsdWVba2V5VmFsdWVdID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGFueSByZW1haW5pbmcgbm9kZXMgdGhhdCB3ZXJlIG5vdCBib3VuZCB0byBkYXRhIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChub2RlQnlLZXlWYWx1ZVtrZXlWYWx1ZXNbaV1dID09PSBub2RlKSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIGRhdGEgPSBuZXcgQXJyYXkodGhpcy5zaXplKCkpLCBqID0gLTE7XG4gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKGQpIHsgZGF0YVsrK2pdID0gZDsgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgYmluZCA9IGtleSA/IGJpbmRLZXkgOiBiaW5kSW5kZXgsXG4gICAgICBwYXJlbnRzID0gdGhpcy5fcGFyZW50cyxcbiAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHZhbHVlID0gY29uc3RhbnQodmFsdWUpO1xuXG4gIGZvciAodmFyIG0gPSBncm91cHMubGVuZ3RoLCB1cGRhdGUgPSBuZXcgQXJyYXkobSksIGVudGVyID0gbmV3IEFycmF5KG0pLCBleGl0ID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW2pdLFxuICAgICAgICBncm91cCA9IGdyb3Vwc1tqXSxcbiAgICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICAgIGRhdGEgPSB2YWx1ZS5jYWxsKHBhcmVudCwgcGFyZW50ICYmIHBhcmVudC5fX2RhdGFfXywgaiwgcGFyZW50cyksXG4gICAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZW50ZXJHcm91cCA9IGVudGVyW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICB1cGRhdGVHcm91cCA9IHVwZGF0ZVtqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgZXhpdEdyb3VwID0gZXhpdFtqXSA9IG5ldyBBcnJheShncm91cExlbmd0aCk7XG5cbiAgICBiaW5kKHBhcmVudCwgZ3JvdXAsIGVudGVyR3JvdXAsIHVwZGF0ZUdyb3VwLCBleGl0R3JvdXAsIGRhdGEsIGtleSk7XG5cbiAgICAvLyBOb3cgY29ubmVjdCB0aGUgZW50ZXIgbm9kZXMgdG8gdGhlaXIgZm9sbG93aW5nIHVwZGF0ZSBub2RlLCBzdWNoIHRoYXRcbiAgICAvLyBhcHBlbmRDaGlsZCBjYW4gaW5zZXJ0IHRoZSBtYXRlcmlhbGl6ZWQgZW50ZXIgbm9kZSBiZWZvcmUgdGhpcyBub2RlLFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmVudCBub2RlLlxuICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAwLCBwcmV2aW91cywgbmV4dDsgaTAgPCBkYXRhTGVuZ3RoOyArK2kwKSB7XG4gICAgICBpZiAocHJldmlvdXMgPSBlbnRlckdyb3VwW2kwXSkge1xuICAgICAgICBpZiAoaTAgPj0gaTEpIGkxID0gaTAgKyAxO1xuICAgICAgICB3aGlsZSAoIShuZXh0ID0gdXBkYXRlR3JvdXBbaTFdKSAmJiArK2kxIDwgZGF0YUxlbmd0aCk7XG4gICAgICAgIHByZXZpb3VzLl9uZXh0ID0gbmV4dCB8fCBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZSA9IG5ldyBTZWxlY3Rpb24odXBkYXRlLCBwYXJlbnRzKTtcbiAgdXBkYXRlLl9lbnRlciA9IGVudGVyO1xuICB1cGRhdGUuX2V4aXQgPSBleGl0O1xuICByZXR1cm4gdXBkYXRlO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgaWYgKCFjb21wYXJlKSBjb21wYXJlID0gYXNjZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGNvbXBhcmVOb2RlKGEsIGIpIHtcbiAgICByZXR1cm4gYSAmJiBiID8gY29tcGFyZShhLl9fZGF0YV9fLCBiLl9fZGF0YV9fKSA6ICFhIC0gIWI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzb3J0Z3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzb3J0Z3JvdXAgPSBzb3J0Z3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzb3J0Z3JvdXBbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0Z3JvdXAuc29ydChjb21wYXJlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzb3J0Z3JvdXBzLCB0aGlzLl9wYXJlbnRzKS5vcmRlcigpO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59XG4iLCJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuLi9uYW1lc3BhY2VcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnROUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdik7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgcmV0dXJuIGZ1bGxuYW1lLmxvY2FsXG4gICAgICAgID8gbm9kZS5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpXG4gICAgICAgIDogbm9kZS5nZXRBdHRyaWJ1dGUoZnVsbG5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbilcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKSkoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvd1wiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUNvbnN0YW50KG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gICAgZWxzZSB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHYsIHByaW9yaXR5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICAgID8gc3R5bGVSZW1vdmUgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBzdHlsZUZ1bmN0aW9uXG4gICAgICAgICAgICA6IHN0eWxlQ29uc3RhbnQpKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSlcbiAgICAgIDogc3R5bGVWYWx1ZSh0aGlzLm5vZGUoKSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZVZhbHVlKG5vZGUsIG5hbWUpIHtcbiAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKVxuICAgICAgfHwgZGVmYXVsdFZpZXcobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xufVxuIiwiZnVuY3Rpb24gcHJvcGVydHlSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZGVsZXRlIHRoaXNbbmFtZV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5Q29uc3RhbnQobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIGRlbGV0ZSB0aGlzW25hbWVdO1xuICAgIGVsc2UgdGhpc1tuYW1lXSA9IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IHByb3BlcnR5UmVtb3ZlIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHByb3BlcnR5RnVuY3Rpb25cbiAgICAgICAgICA6IHByb3BlcnR5Q29uc3RhbnQpKG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKClbbmFtZV07XG59XG4iLCJmdW5jdGlvbiBjbGFzc0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnRyaW0oKS5zcGxpdCgvXnxcXHMrLyk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzTGlzdChub2RlKSB7XG4gIHJldHVybiBub2RlLmNsYXNzTGlzdCB8fCBuZXcgQ2xhc3NMaXN0KG5vZGUpO1xufVxuXG5mdW5jdGlvbiBDbGFzc0xpc3Qobm9kZSkge1xuICB0aGlzLl9ub2RlID0gbm9kZTtcbiAgdGhpcy5fbmFtZXMgPSBjbGFzc0FycmF5KG5vZGUuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIik7XG59XG5cbkNsYXNzTGlzdC5wcm90b3R5cGUgPSB7XG4gIGFkZDogZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBpID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICBpZiAoaSA8IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnB1c2gobmFtZSk7XG4gICAgICB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIHRoaXMuX25hbWVzLmpvaW4oXCIgXCIpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZTogZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBpID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICB0aGlzLl9uYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIHRoaXMuX25hbWVzLmpvaW4oXCIgXCIpKTtcbiAgICB9XG4gIH0sXG4gIGNvbnRhaW5zOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSkgPj0gMDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY2xhc3NlZEFkZChub2RlLCBuYW1lcykge1xuICB2YXIgbGlzdCA9IGNsYXNzTGlzdChub2RlKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbikgbGlzdC5hZGQobmFtZXNbaV0pO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkUmVtb3ZlKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LnJlbW92ZShuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRUcnVlKG5hbWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjbGFzc2VkQWRkKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZEZhbHNlKG5hbWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjbGFzc2VkUmVtb3ZlKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZEZ1bmN0aW9uKG5hbWVzLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgKHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgPyBjbGFzc2VkQWRkIDogY2xhc3NlZFJlbW92ZSkodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgbmFtZXMgPSBjbGFzc0FycmF5KG5hbWUgKyBcIlwiKTtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgbGlzdCA9IGNsYXNzTGlzdCh0aGlzLm5vZGUoKSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKCFsaXN0LmNvbnRhaW5zKG5hbWVzW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gY2xhc3NlZEZ1bmN0aW9uIDogdmFsdWVcbiAgICAgID8gY2xhc3NlZFRydWVcbiAgICAgIDogY2xhc3NlZEZhbHNlKShuYW1lcywgdmFsdWUpKTtcbn1cbiIsImZ1bmN0aW9uIHRleHRSZW1vdmUoKSB7XG4gIHRoaXMudGV4dENvbnRlbnQgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiB0ZXh0Q29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGV4dEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gdGV4dFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gdGV4dEZ1bmN0aW9uXG4gICAgICAgICAgOiB0ZXh0Q29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkudGV4dENvbnRlbnQ7XG59XG4iLCJmdW5jdGlvbiBodG1sUmVtb3ZlKCkge1xuICB0aGlzLmlubmVySFRNTCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGh0bWxDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaHRtbEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2ID09IG51bGwgPyBcIlwiIDogdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IGh0bWxSZW1vdmUgOiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGh0bWxGdW5jdGlvblxuICAgICAgICAgIDogaHRtbENvbnN0YW50KSh2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpLmlubmVySFRNTDtcbn1cbiIsImZ1bmN0aW9uIHJhaXNlKCkge1xuICBpZiAodGhpcy5uZXh0U2libGluZykgdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyYWlzZSk7XG59XG4iLCJmdW5jdGlvbiBsb3dlcigpIHtcbiAgaWYgKHRoaXMucHJldmlvdXNTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsIHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gobG93ZXIpO1xufVxuIiwiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3JcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3JcIjtcblxuZnVuY3Rpb24gY29uc3RhbnROdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgYmVmb3JlKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSksXG4gICAgICBzZWxlY3QgPSBiZWZvcmUgPT0gbnVsbCA/IGNvbnN0YW50TnVsbCA6IHR5cGVvZiBiZWZvcmUgPT09IFwiZnVuY3Rpb25cIiA/IGJlZm9yZSA6IHNlbGVjdG9yKGJlZm9yZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IG51bGwpO1xuICB9KTtcbn1cbiIsImZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyZW1vdmUpO1xufVxuIiwiaW1wb3J0IGRlZmF1bHRWaWV3IGZyb20gXCIuLi93aW5kb3dcIjtcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChub2RlLCB0eXBlLCBwYXJhbXMpIHtcbiAgdmFyIHdpbmRvdyA9IGRlZmF1bHRWaWV3KG5vZGUpLFxuICAgICAgZXZlbnQgPSB3aW5kb3cuQ3VzdG9tRXZlbnQ7XG5cbiAgaWYgKHR5cGVvZiBldmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZXZlbnQgPSBuZXcgZXZlbnQodHlwZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGlmIChwYXJhbXMpIGV2ZW50LmluaXRFdmVudCh0eXBlLCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUpLCBldmVudC5kZXRhaWwgPSBwYXJhbXMuZGV0YWlsO1xuICAgIGVsc2UgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gIH1cblxuICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaENvbnN0YW50KHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hGdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KHRoaXMsIHR5cGUsIHBhcmFtcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiBwYXJhbXMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBkaXNwYXRjaEZ1bmN0aW9uXG4gICAgICA6IGRpc3BhdGNoQ29uc3RhbnQpKHR5cGUsIHBhcmFtcykpO1xufVxuIiwiaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdEFsbCBmcm9tIFwiLi9zZWxlY3RBbGxcIjtcbmltcG9ydCBzZWxlY3Rpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXRhIGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW50ZXIgZnJvbSBcIi4vZW50ZXJcIjtcbmltcG9ydCBzZWxlY3Rpb25fZXhpdCBmcm9tIFwiLi9leGl0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX21lcmdlIGZyb20gXCIuL21lcmdlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29yZGVyIGZyb20gXCIuL29yZGVyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NvcnQgZnJvbSBcIi4vc29ydFwiO1xuaW1wb3J0IHNlbGVjdGlvbl9jYWxsIGZyb20gXCIuL2NhbGxcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZXMgZnJvbSBcIi4vbm9kZXNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZSBmcm9tIFwiLi9ub2RlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NpemUgZnJvbSBcIi4vc2l6ZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbXB0eSBmcm9tIFwiLi9lbXB0eVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9lYWNoIGZyb20gXCIuL2VhY2hcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXR0ciBmcm9tIFwiLi9hdHRyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlIGZyb20gXCIuL3N0eWxlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3Byb3BlcnR5IGZyb20gXCIuL3Byb3BlcnR5XCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NsYXNzZWQgZnJvbSBcIi4vY2xhc3NlZFwiO1xuaW1wb3J0IHNlbGVjdGlvbl90ZXh0IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCBzZWxlY3Rpb25faHRtbCBmcm9tIFwiLi9odG1sXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JhaXNlIGZyb20gXCIuL3JhaXNlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2xvd2VyIGZyb20gXCIuL2xvd2VyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2FwcGVuZCBmcm9tIFwiLi9hcHBlbmRcIjtcbmltcG9ydCBzZWxlY3Rpb25faW5zZXJ0IGZyb20gXCIuL2luc2VydFwiO1xuaW1wb3J0IHNlbGVjdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdHVtIGZyb20gXCIuL2RhdHVtXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29uIGZyb20gXCIuL29uXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Rpc3BhdGNoIGZyb20gXCIuL2Rpc3BhdGNoXCI7XG5cbmV4cG9ydCB2YXIgcm9vdCA9IFtudWxsXTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGlvbihncm91cHMsIHBhcmVudHMpIHtcbiAgdGhpcy5fZ3JvdXBzID0gZ3JvdXBzO1xuICB0aGlzLl9wYXJlbnRzID0gcGFyZW50cztcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCByb290KTtcbn1cblxuU2VsZWN0aW9uLnByb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZWxlY3Rpb24sXG4gIHNlbGVjdDogc2VsZWN0aW9uX3NlbGVjdCxcbiAgc2VsZWN0QWxsOiBzZWxlY3Rpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHNlbGVjdGlvbl9maWx0ZXIsXG4gIGRhdGE6IHNlbGVjdGlvbl9kYXRhLFxuICBlbnRlcjogc2VsZWN0aW9uX2VudGVyLFxuICBleGl0OiBzZWxlY3Rpb25fZXhpdCxcbiAgbWVyZ2U6IHNlbGVjdGlvbl9tZXJnZSxcbiAgb3JkZXI6IHNlbGVjdGlvbl9vcmRlcixcbiAgc29ydDogc2VsZWN0aW9uX3NvcnQsXG4gIGNhbGw6IHNlbGVjdGlvbl9jYWxsLFxuICBub2Rlczogc2VsZWN0aW9uX25vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fbm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3NpemUsXG4gIGVtcHR5OiBzZWxlY3Rpb25fZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9lYWNoLFxuICBhdHRyOiBzZWxlY3Rpb25fYXR0cixcbiAgc3R5bGU6IHNlbGVjdGlvbl9zdHlsZSxcbiAgcHJvcGVydHk6IHNlbGVjdGlvbl9wcm9wZXJ0eSxcbiAgY2xhc3NlZDogc2VsZWN0aW9uX2NsYXNzZWQsXG4gIHRleHQ6IHNlbGVjdGlvbl90ZXh0LFxuICBodG1sOiBzZWxlY3Rpb25faHRtbCxcbiAgcmFpc2U6IHNlbGVjdGlvbl9yYWlzZSxcbiAgbG93ZXI6IHNlbGVjdGlvbl9sb3dlcixcbiAgYXBwZW5kOiBzZWxlY3Rpb25fYXBwZW5kLFxuICBpbnNlcnQ6IHNlbGVjdGlvbl9pbnNlcnQsXG4gIHJlbW92ZTogc2VsZWN0aW9uX3JlbW92ZSxcbiAgZGF0dW06IHNlbGVjdGlvbl9kYXR1bSxcbiAgb246IHNlbGVjdGlvbl9vbixcbiAgZGlzcGF0Y2g6IHNlbGVjdGlvbl9kaXNwYXRjaFxufTtcblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0aW9uO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29uc3RydWN0b3IsIGZhY3RvcnksIHByb3RvdHlwZSkge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBmYWN0b3J5LnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgcHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQocGFyZW50LCBkZWZpbml0aW9uKSB7XG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpO1xuICBmb3IgKHZhciBrZXkgaW4gZGVmaW5pdGlvbikgcHJvdG90eXBlW2tleV0gPSBkZWZpbml0aW9uW2tleV07XG4gIHJldHVybiBwcm90b3R5cGU7XG59XG4iLCJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yKCkge31cblxuZXhwb3J0IHZhciBkYXJrZXIgPSAwLjc7XG5leHBvcnQgdmFyIGJyaWdodGVyID0gMSAvIGRhcmtlcjtcblxudmFyIHJlSSA9IFwiXFxcXHMqKFsrLV0/XFxcXGQrKVxcXFxzKlwiLFxuICAgIHJlTiA9IFwiXFxcXHMqKFsrLV0/XFxcXGQqXFxcXC4/XFxcXGQrKD86W2VFXVsrLV0/XFxcXGQrKT8pXFxcXHMqXCIsXG4gICAgcmVQID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPyklXFxcXHMqXCIsXG4gICAgcmVIZXgzID0gL14jKFswLTlhLWZdezN9KSQvLFxuICAgIHJlSGV4NiA9IC9eIyhbMC05YS1mXXs2fSkkLyxcbiAgICByZVJnYkludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVJLCByZUksIHJlSV0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYlBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUF0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFJbnRlZ2VyID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZUksIHJlSSwgcmVJLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiYVxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsXFxcXChcIiArIFtyZU4sIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsYVBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXmhzbGFcXFxcKFwiICsgW3JlTiwgcmVQLCByZVAsIHJlTl0gKyBcIlxcXFwpJFwiKTtcblxudmFyIG5hbWVkID0ge1xuICBhbGljZWJsdWU6IDB4ZjBmOGZmLFxuICBhbnRpcXVld2hpdGU6IDB4ZmFlYmQ3LFxuICBhcXVhOiAweDAwZmZmZixcbiAgYXF1YW1hcmluZTogMHg3ZmZmZDQsXG4gIGF6dXJlOiAweGYwZmZmZixcbiAgYmVpZ2U6IDB4ZjVmNWRjLFxuICBiaXNxdWU6IDB4ZmZlNGM0LFxuICBibGFjazogMHgwMDAwMDAsXG4gIGJsYW5jaGVkYWxtb25kOiAweGZmZWJjZCxcbiAgYmx1ZTogMHgwMDAwZmYsXG4gIGJsdWV2aW9sZXQ6IDB4OGEyYmUyLFxuICBicm93bjogMHhhNTJhMmEsXG4gIGJ1cmx5d29vZDogMHhkZWI4ODcsXG4gIGNhZGV0Ymx1ZTogMHg1ZjllYTAsXG4gIGNoYXJ0cmV1c2U6IDB4N2ZmZjAwLFxuICBjaG9jb2xhdGU6IDB4ZDI2OTFlLFxuICBjb3JhbDogMHhmZjdmNTAsXG4gIGNvcm5mbG93ZXJibHVlOiAweDY0OTVlZCxcbiAgY29ybnNpbGs6IDB4ZmZmOGRjLFxuICBjcmltc29uOiAweGRjMTQzYyxcbiAgY3lhbjogMHgwMGZmZmYsXG4gIGRhcmtibHVlOiAweDAwMDA4YixcbiAgZGFya2N5YW46IDB4MDA4YjhiLFxuICBkYXJrZ29sZGVucm9kOiAweGI4ODYwYixcbiAgZGFya2dyYXk6IDB4YTlhOWE5LFxuICBkYXJrZ3JlZW46IDB4MDA2NDAwLFxuICBkYXJrZ3JleTogMHhhOWE5YTksXG4gIGRhcmtraGFraTogMHhiZGI3NmIsXG4gIGRhcmttYWdlbnRhOiAweDhiMDA4YixcbiAgZGFya29saXZlZ3JlZW46IDB4NTU2YjJmLFxuICBkYXJrb3JhbmdlOiAweGZmOGMwMCxcbiAgZGFya29yY2hpZDogMHg5OTMyY2MsXG4gIGRhcmtyZWQ6IDB4OGIwMDAwLFxuICBkYXJrc2FsbW9uOiAweGU5OTY3YSxcbiAgZGFya3NlYWdyZWVuOiAweDhmYmM4ZixcbiAgZGFya3NsYXRlYmx1ZTogMHg0ODNkOGIsXG4gIGRhcmtzbGF0ZWdyYXk6IDB4MmY0ZjRmLFxuICBkYXJrc2xhdGVncmV5OiAweDJmNGY0ZixcbiAgZGFya3R1cnF1b2lzZTogMHgwMGNlZDEsXG4gIGRhcmt2aW9sZXQ6IDB4OTQwMGQzLFxuICBkZWVwcGluazogMHhmZjE0OTMsXG4gIGRlZXBza3libHVlOiAweDAwYmZmZixcbiAgZGltZ3JheTogMHg2OTY5NjksXG4gIGRpbWdyZXk6IDB4Njk2OTY5LFxuICBkb2RnZXJibHVlOiAweDFlOTBmZixcbiAgZmlyZWJyaWNrOiAweGIyMjIyMixcbiAgZmxvcmFsd2hpdGU6IDB4ZmZmYWYwLFxuICBmb3Jlc3RncmVlbjogMHgyMjhiMjIsXG4gIGZ1Y2hzaWE6IDB4ZmYwMGZmLFxuICBnYWluc2Jvcm86IDB4ZGNkY2RjLFxuICBnaG9zdHdoaXRlOiAweGY4ZjhmZixcbiAgZ29sZDogMHhmZmQ3MDAsXG4gIGdvbGRlbnJvZDogMHhkYWE1MjAsXG4gIGdyYXk6IDB4ODA4MDgwLFxuICBncmVlbjogMHgwMDgwMDAsXG4gIGdyZWVueWVsbG93OiAweGFkZmYyZixcbiAgZ3JleTogMHg4MDgwODAsXG4gIGhvbmV5ZGV3OiAweGYwZmZmMCxcbiAgaG90cGluazogMHhmZjY5YjQsXG4gIGluZGlhbnJlZDogMHhjZDVjNWMsXG4gIGluZGlnbzogMHg0YjAwODIsXG4gIGl2b3J5OiAweGZmZmZmMCxcbiAga2hha2k6IDB4ZjBlNjhjLFxuICBsYXZlbmRlcjogMHhlNmU2ZmEsXG4gIGxhdmVuZGVyYmx1c2g6IDB4ZmZmMGY1LFxuICBsYXduZ3JlZW46IDB4N2NmYzAwLFxuICBsZW1vbmNoaWZmb246IDB4ZmZmYWNkLFxuICBsaWdodGJsdWU6IDB4YWRkOGU2LFxuICBsaWdodGNvcmFsOiAweGYwODA4MCxcbiAgbGlnaHRjeWFuOiAweGUwZmZmZixcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IDB4ZmFmYWQyLFxuICBsaWdodGdyYXk6IDB4ZDNkM2QzLFxuICBsaWdodGdyZWVuOiAweDkwZWU5MCxcbiAgbGlnaHRncmV5OiAweGQzZDNkMyxcbiAgbGlnaHRwaW5rOiAweGZmYjZjMSxcbiAgbGlnaHRzYWxtb246IDB4ZmZhMDdhLFxuICBsaWdodHNlYWdyZWVuOiAweDIwYjJhYSxcbiAgbGlnaHRza3libHVlOiAweDg3Y2VmYSxcbiAgbGlnaHRzbGF0ZWdyYXk6IDB4Nzc4ODk5LFxuICBsaWdodHNsYXRlZ3JleTogMHg3Nzg4OTksXG4gIGxpZ2h0c3RlZWxibHVlOiAweGIwYzRkZSxcbiAgbGlnaHR5ZWxsb3c6IDB4ZmZmZmUwLFxuICBsaW1lOiAweDAwZmYwMCxcbiAgbGltZWdyZWVuOiAweDMyY2QzMixcbiAgbGluZW46IDB4ZmFmMGU2LFxuICBtYWdlbnRhOiAweGZmMDBmZixcbiAgbWFyb29uOiAweDgwMDAwMCxcbiAgbWVkaXVtYXF1YW1hcmluZTogMHg2NmNkYWEsXG4gIG1lZGl1bWJsdWU6IDB4MDAwMGNkLFxuICBtZWRpdW1vcmNoaWQ6IDB4YmE1NWQzLFxuICBtZWRpdW1wdXJwbGU6IDB4OTM3MGRiLFxuICBtZWRpdW1zZWFncmVlbjogMHgzY2IzNzEsXG4gIG1lZGl1bXNsYXRlYmx1ZTogMHg3YjY4ZWUsXG4gIG1lZGl1bXNwcmluZ2dyZWVuOiAweDAwZmE5YSxcbiAgbWVkaXVtdHVycXVvaXNlOiAweDQ4ZDFjYyxcbiAgbWVkaXVtdmlvbGV0cmVkOiAweGM3MTU4NSxcbiAgbWlkbmlnaHRibHVlOiAweDE5MTk3MCxcbiAgbWludGNyZWFtOiAweGY1ZmZmYSxcbiAgbWlzdHlyb3NlOiAweGZmZTRlMSxcbiAgbW9jY2FzaW46IDB4ZmZlNGI1LFxuICBuYXZham93aGl0ZTogMHhmZmRlYWQsXG4gIG5hdnk6IDB4MDAwMDgwLFxuICBvbGRsYWNlOiAweGZkZjVlNixcbiAgb2xpdmU6IDB4ODA4MDAwLFxuICBvbGl2ZWRyYWI6IDB4NmI4ZTIzLFxuICBvcmFuZ2U6IDB4ZmZhNTAwLFxuICBvcmFuZ2VyZWQ6IDB4ZmY0NTAwLFxuICBvcmNoaWQ6IDB4ZGE3MGQ2LFxuICBwYWxlZ29sZGVucm9kOiAweGVlZThhYSxcbiAgcGFsZWdyZWVuOiAweDk4ZmI5OCxcbiAgcGFsZXR1cnF1b2lzZTogMHhhZmVlZWUsXG4gIHBhbGV2aW9sZXRyZWQ6IDB4ZGI3MDkzLFxuICBwYXBheWF3aGlwOiAweGZmZWZkNSxcbiAgcGVhY2hwdWZmOiAweGZmZGFiOSxcbiAgcGVydTogMHhjZDg1M2YsXG4gIHBpbms6IDB4ZmZjMGNiLFxuICBwbHVtOiAweGRkYTBkZCxcbiAgcG93ZGVyYmx1ZTogMHhiMGUwZTYsXG4gIHB1cnBsZTogMHg4MDAwODAsXG4gIHJlYmVjY2FwdXJwbGU6IDB4NjYzMzk5LFxuICByZWQ6IDB4ZmYwMDAwLFxuICByb3N5YnJvd246IDB4YmM4ZjhmLFxuICByb3lhbGJsdWU6IDB4NDE2OWUxLFxuICBzYWRkbGVicm93bjogMHg4YjQ1MTMsXG4gIHNhbG1vbjogMHhmYTgwNzIsXG4gIHNhbmR5YnJvd246IDB4ZjRhNDYwLFxuICBzZWFncmVlbjogMHgyZThiNTcsXG4gIHNlYXNoZWxsOiAweGZmZjVlZSxcbiAgc2llbm5hOiAweGEwNTIyZCxcbiAgc2lsdmVyOiAweGMwYzBjMCxcbiAgc2t5Ymx1ZTogMHg4N2NlZWIsXG4gIHNsYXRlYmx1ZTogMHg2YTVhY2QsXG4gIHNsYXRlZ3JheTogMHg3MDgwOTAsXG4gIHNsYXRlZ3JleTogMHg3MDgwOTAsXG4gIHNub3c6IDB4ZmZmYWZhLFxuICBzcHJpbmdncmVlbjogMHgwMGZmN2YsXG4gIHN0ZWVsYmx1ZTogMHg0NjgyYjQsXG4gIHRhbjogMHhkMmI0OGMsXG4gIHRlYWw6IDB4MDA4MDgwLFxuICB0aGlzdGxlOiAweGQ4YmZkOCxcbiAgdG9tYXRvOiAweGZmNjM0NyxcbiAgdHVycXVvaXNlOiAweDQwZTBkMCxcbiAgdmlvbGV0OiAweGVlODJlZSxcbiAgd2hlYXQ6IDB4ZjVkZWIzLFxuICB3aGl0ZTogMHhmZmZmZmYsXG4gIHdoaXRlc21va2U6IDB4ZjVmNWY1LFxuICB5ZWxsb3c6IDB4ZmZmZjAwLFxuICB5ZWxsb3dncmVlbjogMHg5YWNkMzJcbn07XG5cbmRlZmluZShDb2xvciwgY29sb3IsIHtcbiAgZGlzcGxheWFibGU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZ2IoKSArIFwiXCI7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb2xvcihmb3JtYXQpIHtcbiAgdmFyIG07XG4gIGZvcm1hdCA9IChmb3JtYXQgKyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIChtID0gcmVIZXgzLmV4ZWMoZm9ybWF0KSkgPyAobSA9IHBhcnNlSW50KG1bMV0sIDE2KSwgbmV3IFJnYigobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweDBmMCksIChtID4+IDQgJiAweGYpIHwgKG0gJiAweGYwKSwgKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSwgMSkpIC8vICNmMDBcbiAgICAgIDogKG0gPSByZUhleDYuZXhlYyhmb3JtYXQpKSA/IHJnYm4ocGFyc2VJbnQobVsxXSwgMTYpKSAvLyAjZmYwMDAwXG4gICAgICA6IChtID0gcmVSZ2JJbnRlZ2VyLmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0sIG1bMl0sIG1bM10sIDEpIC8vIHJnYigyNTUsIDAsIDApXG4gICAgICA6IChtID0gcmVSZ2JQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIDEpIC8vIHJnYigxMDAlLCAwJSwgMCUpXG4gICAgICA6IChtID0gcmVSZ2JhSW50ZWdlci5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdLCBtWzJdLCBtWzNdLCBtWzRdKSAvLyByZ2JhKDI1NSwgMCwgMCwgMSlcbiAgICAgIDogKG0gPSByZVJnYmFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyByZ2JhKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIG1bNF0pIC8vIHJnYigxMDAlLCAwJSwgMCUsIDEpXG4gICAgICA6IChtID0gcmVIc2xQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIDEpIC8vIGhzbCgxMjAsIDUwJSwgNTAlKVxuICAgICAgOiAobSA9IHJlSHNsYVBlcmNlbnQuZXhlYyhmb3JtYXQpKSA/IGhzbGEobVsxXSwgbVsyXSAvIDEwMCwgbVszXSAvIDEwMCwgbVs0XSkgLy8gaHNsYSgxMjAsIDUwJSwgNTAlLCAxKVxuICAgICAgOiBuYW1lZC5oYXNPd25Qcm9wZXJ0eShmb3JtYXQpID8gcmdibihuYW1lZFtmb3JtYXRdKVxuICAgICAgOiBmb3JtYXQgPT09IFwidHJhbnNwYXJlbnRcIiA/IG5ldyBSZ2IoTmFOLCBOYU4sIE5hTiwgMClcbiAgICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcmdibihuKSB7XG4gIHJldHVybiBuZXcgUmdiKG4gPj4gMTYgJiAweGZmLCBuID4+IDggJiAweGZmLCBuICYgMHhmZiwgMSk7XG59XG5cbmZ1bmN0aW9uIHJnYmEociwgZywgYiwgYSkge1xuICBpZiAoYSA8PSAwKSByID0gZyA9IGIgPSBOYU47XG4gIHJldHVybiBuZXcgUmdiKHIsIGcsIGIsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQ29udmVydChvKSB7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IFJnYjtcbiAgbyA9IG8ucmdiKCk7XG4gIHJldHVybiBuZXcgUmdiKG8uciwgby5nLCBvLmIsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHJnYkNvbnZlcnQocikgOiBuZXcgUmdiKHIsIGcsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJnYihyLCBnLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMuciA9ICtyO1xuICB0aGlzLmcgPSArZztcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoUmdiLCByZ2IsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMuciAmJiB0aGlzLnIgPD0gMjU1KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmcgJiYgdGhpcy5nIDw9IDI1NSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5iICYmIHRoaXMuYiA8PSAyNTUpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYSA9IHRoaXMub3BhY2l0eTsgYSA9IGlzTmFOKGEpID8gMSA6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIGEpKTtcbiAgICByZXR1cm4gKGEgPT09IDEgPyBcInJnYihcIiA6IFwicmdiYShcIilcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5yKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5nKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5iKSB8fCAwKSlcbiAgICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbiAgfVxufSkpO1xuXG5mdW5jdGlvbiBoc2xhKGgsIHMsIGwsIGEpIHtcbiAgaWYgKGEgPD0gMCkgaCA9IHMgPSBsID0gTmFOO1xuICBlbHNlIGlmIChsIDw9IDAgfHwgbCA+PSAxKSBoID0gcyA9IE5hTjtcbiAgZWxzZSBpZiAocyA8PSAwKSBoID0gTmFOO1xuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG5ldyBIc2woby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIENvbG9yKSkgbyA9IGNvbG9yKG8pO1xuICBpZiAoIW8pIHJldHVybiBuZXcgSHNsO1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG87XG4gIG8gPSBvLnJnYigpO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbWluID0gTWF0aC5taW4ociwgZywgYiksXG4gICAgICBtYXggPSBNYXRoLm1heChyLCBnLCBiKSxcbiAgICAgIGggPSBOYU4sXG4gICAgICBzID0gbWF4IC0gbWluLFxuICAgICAgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKHMpIHtcbiAgICBpZiAociA9PT0gbWF4KSBoID0gKGcgLSBiKSAvIHMgKyAoZyA8IGIpICogNjtcbiAgICBlbHNlIGlmIChnID09PSBtYXgpIGggPSAoYiAtIHIpIC8gcyArIDI7XG4gICAgZWxzZSBoID0gKHIgLSBnKSAvIHMgKyA0O1xuICAgIHMgLz0gbCA8IDAuNSA/IG1heCArIG1pbiA6IDIgLSBtYXggLSBtaW47XG4gICAgaCAqPSA2MDtcbiAgfSBlbHNlIHtcbiAgICBzID0gbCA+IDAgJiYgbCA8IDEgPyAwIDogaDtcbiAgfVxuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoc2xDb252ZXJ0KGgpIDogbmV3IEhzbChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmZ1bmN0aW9uIEhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoSHNsLCBoc2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBIc2wodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSB0aGlzLmggJSAzNjAgKyAodGhpcy5oIDwgMCkgKiAzNjAsXG4gICAgICAgIHMgPSBpc05hTihoKSB8fCBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyxcbiAgICAgICAgbCA9IHRoaXMubCxcbiAgICAgICAgbTIgPSBsICsgKGwgPCAwLjUgPyBsIDogMSAtIGwpICogcyxcbiAgICAgICAgbTEgPSAyICogbCAtIG0yO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgaHNsMnJnYihoID49IDI0MCA/IGggLSAyNDAgOiBoICsgMTIwLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoIDwgMTIwID8gaCArIDI0MCA6IGggLSAxMjAsIG0xLCBtMiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMucyAmJiB0aGlzLnMgPD0gMSB8fCBpc05hTih0aGlzLnMpKVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmwgJiYgdGhpcy5sIDw9IDEpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH1cbn0pKTtcblxuLyogRnJvbSBGdkQgMTMuMzcsIENTUyBDb2xvciBNb2R1bGUgTGV2ZWwgMyAqL1xuZnVuY3Rpb24gaHNsMnJnYihoLCBtMSwgbTIpIHtcbiAgcmV0dXJuIChoIDwgNjAgPyBtMSArIChtMiAtIG0xKSAqIGggLyA2MFxuICAgICAgOiBoIDwgMTgwID8gbTJcbiAgICAgIDogaCA8IDI0MCA/IG0xICsgKG0yIC0gbTEpICogKDI0MCAtIGgpIC8gNjBcbiAgICAgIDogbTEpICogMjU1O1xufVxuIiwiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lXCI7XG5pbXBvcnQge0NvbG9yLCByZ2JDb252ZXJ0LCBSZ2J9IGZyb20gXCIuL2NvbG9yXCI7XG5pbXBvcnQge2RlZzJyYWQsIHJhZDJkZWd9IGZyb20gXCIuL21hdGhcIjtcblxudmFyIEtuID0gMTgsXG4gICAgWG4gPSAwLjk1MDQ3MCwgLy8gRDY1IHN0YW5kYXJkIHJlZmVyZW50XG4gICAgWW4gPSAxLFxuICAgIFpuID0gMS4wODg4MzAsXG4gICAgdDAgPSA0IC8gMjksXG4gICAgdDEgPSA2IC8gMjksXG4gICAgdDIgPSAzICogdDEgKiB0MSxcbiAgICB0MyA9IHQxICogdDEgKiB0MTtcblxuZnVuY3Rpb24gbGFiQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgTGFiKSByZXR1cm4gbmV3IExhYihvLmwsIG8uYSwgby5iLCBvLm9wYWNpdHkpO1xuICBpZiAobyBpbnN0YW5jZW9mIEhjbCkge1xuICAgIHZhciBoID0gby5oICogZGVnMnJhZDtcbiAgICByZXR1cm4gbmV3IExhYihvLmwsIE1hdGguY29zKGgpICogby5jLCBNYXRoLnNpbihoKSAqIG8uYywgby5vcGFjaXR5KTtcbiAgfVxuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciBiID0gcmdiMnh5eihvLnIpLFxuICAgICAgYSA9IHJnYjJ4eXooby5nKSxcbiAgICAgIGwgPSByZ2IyeHl6KG8uYiksXG4gICAgICB4ID0geHl6MmxhYigoMC40MTI0NTY0ICogYiArIDAuMzU3NTc2MSAqIGEgKyAwLjE4MDQzNzUgKiBsKSAvIFhuKSxcbiAgICAgIHkgPSB4eXoybGFiKCgwLjIxMjY3MjkgKiBiICsgMC43MTUxNTIyICogYSArIDAuMDcyMTc1MCAqIGwpIC8gWW4pLFxuICAgICAgeiA9IHh5ejJsYWIoKDAuMDE5MzMzOSAqIGIgKyAwLjExOTE5MjAgKiBhICsgMC45NTAzMDQxICogbCkgLyBabik7XG4gIHJldHVybiBuZXcgTGFiKDExNiAqIHkgLSAxNiwgNTAwICogKHggLSB5KSwgMjAwICogKHkgLSB6KSwgby5vcGFjaXR5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFiKGwsIGEsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBsYWJDb252ZXJ0KGwpIDogbmV3IExhYihsLCBhLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMYWIobCwgYSwgYiwgb3BhY2l0eSkge1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5hID0gK2E7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKExhYiwgbGFiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgKyBLbiAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgLSBLbiAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB5ID0gKHRoaXMubCArIDE2KSAvIDExNixcbiAgICAgICAgeCA9IGlzTmFOKHRoaXMuYSkgPyB5IDogeSArIHRoaXMuYSAvIDUwMCxcbiAgICAgICAgeiA9IGlzTmFOKHRoaXMuYikgPyB5IDogeSAtIHRoaXMuYiAvIDIwMDtcbiAgICB5ID0gWW4gKiBsYWIyeHl6KHkpO1xuICAgIHggPSBYbiAqIGxhYjJ4eXooeCk7XG4gICAgeiA9IFpuICogbGFiMnh5eih6KTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIHh5ejJyZ2IoIDMuMjQwNDU0MiAqIHggLSAxLjUzNzEzODUgKiB5IC0gMC40OTg1MzE0ICogeiksIC8vIEQ2NSAtPiBzUkdCXG4gICAgICB4eXoycmdiKC0wLjk2OTI2NjAgKiB4ICsgMS44NzYwMTA4ICogeSArIDAuMDQxNTU2MCAqIHopLFxuICAgICAgeHl6MnJnYiggMC4wNTU2NDM0ICogeCAtIDAuMjA0MDI1OSAqIHkgKyAxLjA1NzIyNTIgKiB6KSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcblxuZnVuY3Rpb24geHl6MmxhYih0KSB7XG4gIHJldHVybiB0ID4gdDMgPyBNYXRoLnBvdyh0LCAxIC8gMykgOiB0IC8gdDIgKyB0MDtcbn1cblxuZnVuY3Rpb24gbGFiMnh5eih0KSB7XG4gIHJldHVybiB0ID4gdDEgPyB0ICogdCAqIHQgOiB0MiAqICh0IC0gdDApO1xufVxuXG5mdW5jdGlvbiB4eXoycmdiKHgpIHtcbiAgcmV0dXJuIDI1NSAqICh4IDw9IDAuMDAzMTMwOCA/IDEyLjkyICogeCA6IDEuMDU1ICogTWF0aC5wb3coeCwgMSAvIDIuNCkgLSAwLjA1NSk7XG59XG5cbmZ1bmN0aW9uIHJnYjJ4eXooeCkge1xuICByZXR1cm4gKHggLz0gMjU1KSA8PSAwLjA0MDQ1ID8geCAvIDEyLjkyIDogTWF0aC5wb3coKHggKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbn1cblxuZnVuY3Rpb24gaGNsQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgSGNsKSByZXR1cm4gbmV3IEhjbChvLmgsIG8uYywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgTGFiKSkgbyA9IGxhYkNvbnZlcnQobyk7XG4gIHZhciBoID0gTWF0aC5hdGFuMihvLmIsIG8uYSkgKiByYWQyZGVnO1xuICByZXR1cm4gbmV3IEhjbChoIDwgMCA/IGggKyAzNjAgOiBoLCBNYXRoLnNxcnQoby5hICogby5hICsgby5iICogby5iKSwgby5sLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGNsKGgsIGMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoY2xDb252ZXJ0KGgpIDogbmV3IEhjbChoLCBjLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIY2woaCwgYywgbCwgb3BhY2l0eSkge1xuICB0aGlzLmggPSAraDtcbiAgdGhpcy5jID0gK2M7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKEhjbCwgaGNsLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sICsgS24gKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sIC0gS24gKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBsYWJDb252ZXJ0KHRoaXMpLnJnYigpO1xuICB9XG59KSk7XG4iLCJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmVcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3JcIjtcbmltcG9ydCB7ZGVnMnJhZCwgcmFkMmRlZ30gZnJvbSBcIi4vbWF0aFwiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIHJhZDJkZWcgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiBkZWcycmFkLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiIsImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBsaW5lYXIoYSwgZCkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgdCAqIGQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4cG9uZW50aWFsKGEsIGIsIHkpIHtcbiAgcmV0dXJuIGEgPSBNYXRoLnBvdyhhLCB5KSwgYiA9IE1hdGgucG93KGIsIHkpIC0gYSwgeSA9IDEgLyB5LCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGEgKyB0ICogYiwgeSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodWUoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkID4gMTgwIHx8IGQgPCAtMTgwID8gZCAtIDM2MCAqIE1hdGgucm91bmQoZCAvIDM2MCkgOiBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2FtbWEoeSkge1xuICByZXR1cm4gKHkgPSAreSkgPT09IDEgPyBub2dhbW1hIDogZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBiIC0gYSA/IGV4cG9uZW50aWFsKGEsIGIsIHkpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vZ2FtbWEoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuIiwiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXJcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiIsImltcG9ydCBkZWNvbXBvc2UsIHtpZGVudGl0eX0gZnJvbSBcIi4vZGVjb21wb3NlXCI7XG5cbnZhciBjc3NOb2RlLFxuICAgIGNzc1Jvb3QsXG4gICAgY3NzVmlldyxcbiAgICBzdmdOb2RlO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ModmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBcIm5vbmVcIikgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIWNzc05vZGUpIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiRElWXCIpLCBjc3NSb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBjc3NWaWV3ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIGNzc05vZGUuc3R5bGUudHJhbnNmb3JtID0gdmFsdWU7XG4gIHZhbHVlID0gY3NzVmlldy5nZXRDb21wdXRlZFN0eWxlKGNzc1Jvb3QuYXBwZW5kQ2hpbGQoY3NzTm9kZSksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJ0cmFuc2Zvcm1cIik7XG4gIGNzc1Jvb3QucmVtb3ZlQ2hpbGQoY3NzTm9kZSk7XG4gIHZhbHVlID0gdmFsdWUuc2xpY2UoNywgLTEpLnNwbGl0KFwiLFwiKTtcbiAgcmV0dXJuIGRlY29tcG9zZSgrdmFsdWVbMF0sICt2YWx1ZVsxXSwgK3ZhbHVlWzJdLCArdmFsdWVbM10sICt2YWx1ZVs0XSwgK3ZhbHVlWzVdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3ZnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghc3ZnTm9kZSkgc3ZnTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiZ1wiKTtcbiAgc3ZnTm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgdmFsdWUpO1xuICBpZiAoISh2YWx1ZSA9IHN2Z05vZGUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSkpIHJldHVybiBpZGVudGl0eTtcbiAgdmFsdWUgPSB2YWx1ZS5tYXRyaXg7XG4gIHJldHVybiBkZWNvbXBvc2UodmFsdWUuYSwgdmFsdWUuYiwgdmFsdWUuYywgdmFsdWUuZCwgdmFsdWUuZSwgdmFsdWUuZik7XG59XG4iLCJpbXBvcnQgbnVtYmVyIGZyb20gXCIuLi9udW1iZXJcIjtcbmltcG9ydCB7cGFyc2VDc3MsIHBhcnNlU3ZnfSBmcm9tIFwiLi9wYXJzZVwiO1xuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZSwgcHhDb21tYSwgcHhQYXJlbiwgZGVnUGFyZW4pIHtcblxuICBmdW5jdGlvbiBwb3Aocykge1xuICAgIHJldHVybiBzLmxlbmd0aCA/IHMucG9wKCkgKyBcIiBcIiA6IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2goXCJ0cmFuc2xhdGUoXCIsIG51bGwsIHB4Q29tbWEsIG51bGwsIHB4UGFyZW4pO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiB8fCB5Yikge1xuICAgICAgcy5wdXNoKFwidHJhbnNsYXRlKFwiICsgeGIgKyBweENvbW1hICsgeWIgKyBweFBhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb3RhdGUoYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBpZiAoYSAtIGIgPiAxODApIGIgKz0gMzYwOyBlbHNlIGlmIChiIC0gYSA+IDE4MCkgYSArPSAzNjA7IC8vIHNob3J0ZXN0IHBhdGhcbiAgICAgIHEucHVzaCh7aTogcy5wdXNoKHBvcChzKSArIFwicm90YXRlKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2tld1goYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiICsgYiArIGRlZ1BhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4YSwgeWEsIHhiLCB5YiwgcywgcSkge1xuICAgIGlmICh4YSAhPT0geGIgfHwgeWEgIT09IHliKSB7XG4gICAgICB2YXIgaSA9IHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiLCBudWxsLCBcIixcIiwgbnVsbCwgXCIpXCIpO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiAhPT0gMSB8fCB5YiAhPT0gMSkge1xuICAgICAgcy5wdXNoKHBvcChzKSArIFwic2NhbGUoXCIgKyB4YiArIFwiLFwiICsgeWIgKyBcIilcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICB2YXIgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuICAgIGEgPSBwYXJzZShhKSwgYiA9IHBhcnNlKGIpO1xuICAgIHRyYW5zbGF0ZShhLnRyYW5zbGF0ZVgsIGEudHJhbnNsYXRlWSwgYi50cmFuc2xhdGVYLCBiLnRyYW5zbGF0ZVksIHMsIHEpO1xuICAgIHJvdGF0ZShhLnJvdGF0ZSwgYi5yb3RhdGUsIHMsIHEpO1xuICAgIHNrZXdYKGEuc2tld1gsIGIuc2tld1gsIHMsIHEpO1xuICAgIHNjYWxlKGEuc2NhbGVYLCBhLnNjYWxlWSwgYi5zY2FsZVgsIGIuc2NhbGVZLCBzLCBxKTtcbiAgICBhID0gYiA9IG51bGw7IC8vIGdjXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBpID0gLTEsIG4gPSBxLmxlbmd0aCwgbztcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZUNzcywgXCJweCwgXCIsIFwicHgpXCIsIFwiZGVnKVwiKTtcbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZVN2ZywgXCIsIFwiLCBcIilcIiwgXCIpXCIpO1xuIiwiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvclwiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIiwidmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSBcImZ1bmN0aW9uXCIgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBmdW5jdGlvbihmKSB7IHNldFRpbWVvdXQoZiwgMTcpOyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICByZXR1cm4gY2xvY2tOb3cgfHwgKHNldEZyYW1lKGNsZWFyTm93KSwgY2xvY2tOb3cgPSBjbG9jay5ub3coKSArIGNsb2NrU2tldyk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyTm93KCkge1xuICBjbG9ja05vdyA9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZXIoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lckZsdXNoKCkge1xuICBub3coKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUsIGlmIG5vdCBhbHJlYWR5IHNldC5cbiAgKytmcmFtZTsgLy8gUHJldGVuZCB3ZeKAmXZlIHNldCBhbiBhbGFybSwgaWYgd2UgaGF2ZW7igJl0IGFscmVhZHkuXG4gIHZhciB0ID0gdGFza0hlYWQsIGU7XG4gIHdoaWxlICh0KSB7XG4gICAgaWYgKChlID0gY2xvY2tOb3cgLSB0Ll90aW1lKSA+PSAwKSB0Ll9jYWxsLmNhbGwobnVsbCwgZSk7XG4gICAgdCA9IHQuX25leHQ7XG4gIH1cbiAgLS1mcmFtZTtcbn1cblxuZnVuY3Rpb24gd2FrZSgpIHtcbiAgY2xvY2tOb3cgPSAoY2xvY2tMYXN0ID0gY2xvY2subm93KCkpICsgY2xvY2tTa2V3O1xuICBmcmFtZSA9IHRpbWVvdXQgPSAwO1xuICB0cnkge1xuICAgIHRpbWVyRmx1c2goKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcmFtZSA9IDA7XG4gICAgbmFwKCk7XG4gICAgY2xvY2tOb3cgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBva2UoKSB7XG4gIHZhciBub3cgPSBjbG9jay5ub3coKSwgZGVsYXkgPSBub3cgLSBjbG9ja0xhc3Q7XG4gIGlmIChkZWxheSA+IHBva2VEZWxheSkgY2xvY2tTa2V3IC09IGRlbGF5LCBjbG9ja0xhc3QgPSBub3c7XG59XG5cbmZ1bmN0aW9uIG5hcCgpIHtcbiAgdmFyIHQwLCB0MSA9IHRhc2tIZWFkLCB0MiwgdGltZSA9IEluZmluaXR5O1xuICB3aGlsZSAodDEpIHtcbiAgICBpZiAodDEuX2NhbGwpIHtcbiAgICAgIGlmICh0aW1lID4gdDEuX3RpbWUpIHRpbWUgPSB0MS5fdGltZTtcbiAgICAgIHQwID0gdDEsIHQxID0gdDEuX25leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQyID0gdDEuX25leHQsIHQxLl9uZXh0ID0gbnVsbDtcbiAgICAgIHQxID0gdDAgPyB0MC5fbmV4dCA9IHQyIDogdGFza0hlYWQgPSB0MjtcbiAgICB9XG4gIH1cbiAgdGFza1RhaWwgPSB0MDtcbiAgc2xlZXAodGltZSk7XG59XG5cbmZ1bmN0aW9uIHNsZWVwKHRpbWUpIHtcbiAgaWYgKGZyYW1lKSByZXR1cm47IC8vIFNvb25lc3QgYWxhcm0gYWxyZWFkeSBzZXQsIG9yIHdpbGwgYmUuXG4gIGlmICh0aW1lb3V0KSB0aW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB2YXIgZGVsYXkgPSB0aW1lIC0gY2xvY2tOb3c7XG4gIGlmIChkZWxheSA+IDI0KSB7XG4gICAgaWYgKHRpbWUgPCBJbmZpbml0eSkgdGltZW91dCA9IHNldFRpbWVvdXQod2FrZSwgZGVsYXkpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9ja05vdywgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHt0aW1lciwgdGltZW91dH0gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBlbXB0eU9uID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcImVuZFwiLCBcImludGVycnVwdFwiKTtcbnZhciBlbXB0eVR3ZWVuID0gW107XG5cbmV4cG9ydCB2YXIgQ1JFQVRFRCA9IDA7XG5leHBvcnQgdmFyIFNDSEVEVUxFRCA9IDE7XG5leHBvcnQgdmFyIFNUQVJUSU5HID0gMjtcbmV4cG9ydCB2YXIgU1RBUlRFRCA9IDM7XG5leHBvcnQgdmFyIFJVTk5JTkcgPSA0O1xuZXhwb3J0IHZhciBFTkRJTkcgPSA1O1xuZXhwb3J0IHZhciBFTkRFRCA9IDY7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUsIGlkLCBpbmRleCwgZ3JvdXAsIHRpbWluZykge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb247XG4gIGlmICghc2NoZWR1bGVzKSBub2RlLl9fdHJhbnNpdGlvbiA9IHt9O1xuICBlbHNlIGlmIChpZCBpbiBzY2hlZHVsZXMpIHJldHVybjtcbiAgY3JlYXRlKG5vZGUsIGlkLCB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBpbmRleDogaW5kZXgsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBncm91cDogZ3JvdXAsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBvbjogZW1wdHlPbixcbiAgICB0d2VlbjogZW1wdHlUd2VlbixcbiAgICB0aW1lOiB0aW1pbmcudGltZSxcbiAgICBkZWxheTogdGltaW5nLmRlbGF5LFxuICAgIGR1cmF0aW9uOiB0aW1pbmcuZHVyYXRpb24sXG4gICAgZWFzZTogdGltaW5nLmVhc2UsXG4gICAgdGltZXI6IG51bGwsXG4gICAgc3RhdGU6IENSRUFURURcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlIHx8ICEoc2NoZWR1bGUgPSBzY2hlZHVsZVtpZF0pIHx8IHNjaGVkdWxlLnN0YXRlID4gQ1JFQVRFRCkgdGhyb3cgbmV3IEVycm9yKFwidG9vIGxhdGVcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgaWYgKCFzY2hlZHVsZSB8fCAhKHNjaGVkdWxlID0gc2NoZWR1bGVbaWRdKSB8fCBzY2hlZHVsZS5zdGF0ZSA+IFNUQVJUSU5HKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZVwiKTtcbiAgcmV0dXJuIHNjaGVkdWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlIHx8ICEoc2NoZWR1bGUgPSBzY2hlZHVsZVtpZF0pKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZVwiKTtcbiAgcmV0dXJuIHNjaGVkdWxlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGUobm9kZSwgaWQsIHNlbGYpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgdHdlZW47XG5cbiAgLy8gSW5pdGlhbGl6ZSB0aGUgc2VsZiB0aW1lciB3aGVuIHRoZSB0cmFuc2l0aW9uIGlzIGNyZWF0ZWQuXG4gIC8vIE5vdGUgdGhlIGFjdHVhbCBkZWxheSBpcyBub3Qga25vd24gdW50aWwgdGhlIGZpcnN0IGNhbGxiYWNrIVxuICBzY2hlZHVsZXNbaWRdID0gc2VsZjtcbiAgc2VsZi50aW1lciA9IHRpbWVyKHNjaGVkdWxlLCAwLCBzZWxmLnRpbWUpO1xuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKGVsYXBzZWQpIHtcbiAgICBzZWxmLnN0YXRlID0gU0NIRURVTEVEO1xuICAgIHNlbGYudGltZXIucmVzdGFydChzdGFydCwgc2VsZi5kZWxheSwgc2VsZi50aW1lKTtcblxuICAgIC8vIElmIHRoZSBlbGFwc2VkIGRlbGF5IGlzIGxlc3MgdGhhbiBvdXIgZmlyc3Qgc2xlZXAsIHN0YXJ0IGltbWVkaWF0ZWx5LlxuICAgIGlmIChzZWxmLmRlbGF5IDw9IGVsYXBzZWQpIHN0YXJ0KGVsYXBzZWQgLSBzZWxmLmRlbGF5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGVsYXBzZWQpIHtcbiAgICB2YXIgaSwgaiwgbiwgbztcblxuICAgIC8vIElmIHRoZSBzdGF0ZSBpcyBub3QgU0NIRURVTEVELCB0aGVuIHdlIHByZXZpb3VzbHkgZXJyb3JlZCBvbiBzdGFydC5cbiAgICBpZiAoc2VsZi5zdGF0ZSAhPT0gU0NIRURVTEVEKSByZXR1cm4gc3RvcCgpO1xuXG4gICAgZm9yIChpIGluIHNjaGVkdWxlcykge1xuICAgICAgbyA9IHNjaGVkdWxlc1tpXTtcbiAgICAgIGlmIChvLm5hbWUgIT09IHNlbGYubmFtZSkgY29udGludWU7XG5cbiAgICAgIC8vIFdoaWxlIHRoaXMgZWxlbWVudCBhbHJlYWR5IGhhcyBhIHN0YXJ0aW5nIHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgZnJhbWUsXG4gICAgICAvLyBkZWZlciBzdGFydGluZyBhbiBpbnRlcnJ1cHRpbmcgdHJhbnNpdGlvbiB1bnRpbCB0aGF0IHRyYW5zaXRpb24gaGFzIGFcbiAgICAgIC8vIGNoYW5jZSB0byB0aWNrIChhbmQgcG9zc2libHkgZW5kKTsgc2VlIGQzL2QzLXRyYW5zaXRpb24jNTQhXG4gICAgICBpZiAoby5zdGF0ZSA9PT0gU1RBUlRFRCkgcmV0dXJuIHRpbWVvdXQoc3RhcnQpO1xuXG4gICAgICAvLyBJbnRlcnJ1cHQgdGhlIGFjdGl2ZSB0cmFuc2l0aW9uLCBpZiBhbnkuXG4gICAgICAvLyBEaXNwYXRjaCB0aGUgaW50ZXJydXB0IGV2ZW50LlxuICAgICAgaWYgKG8uc3RhdGUgPT09IFJVTk5JTkcpIHtcbiAgICAgICAgby5zdGF0ZSA9IEVOREVEO1xuICAgICAgICBvLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgby5vbi5jYWxsKFwiaW50ZXJydXB0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIG8uaW5kZXgsIG8uZ3JvdXApO1xuICAgICAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICAgICAgfVxuXG4gICAgICAvLyBDYW5jZWwgYW55IHByZS1lbXB0ZWQgdHJhbnNpdGlvbnMuIE5vIGludGVycnVwdCBldmVudCBpcyBkaXNwYXRjaGVkXG4gICAgICAvLyBiZWNhdXNlIHRoZSBjYW5jZWxsZWQgdHJhbnNpdGlvbnMgbmV2ZXIgc3RhcnRlZC4gTm90ZSB0aGF0IHRoaXMgYWxzb1xuICAgICAgLy8gcmVtb3ZlcyB0aGlzIHRyYW5zaXRpb24gZnJvbSB0aGUgcGVuZGluZyBsaXN0IVxuICAgICAgZWxzZSBpZiAoK2kgPCBpZCkge1xuICAgICAgICBvLnN0YXRlID0gRU5ERUQ7XG4gICAgICAgIG8udGltZXIuc3RvcCgpO1xuICAgICAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlZmVyIHRoZSBmaXJzdCB0aWNrIHRvIGVuZCBvZiB0aGUgY3VycmVudCBmcmFtZTsgc2VlIGQzL2QzIzE1NzYuXG4gICAgLy8gTm90ZSB0aGUgdHJhbnNpdGlvbiBtYXkgYmUgY2FuY2VsZWQgYWZ0ZXIgc3RhcnQgYW5kIGJlZm9yZSB0aGUgZmlyc3QgdGljayFcbiAgICAvLyBOb3RlIHRoaXMgbXVzdCBiZSBzY2hlZHVsZWQgYmVmb3JlIHRoZSBzdGFydCBldmVudDsgc2VlIGQzL2QzLXRyYW5zaXRpb24jMTYhXG4gICAgLy8gQXNzdW1pbmcgdGhpcyBpcyBzdWNjZXNzZnVsLCBzdWJzZXF1ZW50IGNhbGxiYWNrcyBnbyBzdHJhaWdodCB0byB0aWNrLlxuICAgIHRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoc2VsZi5zdGF0ZSA9PT0gU1RBUlRFRCkge1xuICAgICAgICBzZWxmLnN0YXRlID0gUlVOTklORztcbiAgICAgICAgc2VsZi50aW1lci5yZXN0YXJ0KHRpY2ssIHNlbGYuZGVsYXksIHNlbGYudGltZSk7XG4gICAgICAgIHRpY2soZWxhcHNlZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBEaXNwYXRjaCB0aGUgc3RhcnQgZXZlbnQuXG4gICAgLy8gTm90ZSB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIHR3ZWVuIGFyZSBpbml0aWFsaXplZC5cbiAgICBzZWxmLnN0YXRlID0gU1RBUlRJTkc7XG4gICAgc2VsZi5vbi5jYWxsKFwic3RhcnRcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCk7XG4gICAgaWYgKHNlbGYuc3RhdGUgIT09IFNUQVJUSU5HKSByZXR1cm47IC8vIGludGVycnVwdGVkXG4gICAgc2VsZi5zdGF0ZSA9IFNUQVJURUQ7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSB0d2VlbiwgZGVsZXRpbmcgbnVsbCB0d2Vlbi5cbiAgICB0d2VlbiA9IG5ldyBBcnJheShuID0gc2VsZi50d2Vlbi5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGogPSAtMTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG8gPSBzZWxmLnR3ZWVuW2ldLnZhbHVlLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCkpIHtcbiAgICAgICAgdHdlZW5bKytqXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIHR3ZWVuLmxlbmd0aCA9IGogKyAxO1xuICB9XG5cbiAgZnVuY3Rpb24gdGljayhlbGFwc2VkKSB7XG4gICAgdmFyIHQgPSBlbGFwc2VkIDwgc2VsZi5kdXJhdGlvbiA/IHNlbGYuZWFzZS5jYWxsKG51bGwsIGVsYXBzZWQgLyBzZWxmLmR1cmF0aW9uKSA6IChzZWxmLnRpbWVyLnJlc3RhcnQoc3RvcCksIHNlbGYuc3RhdGUgPSBFTkRJTkcsIDEpLFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSB0d2Vlbi5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgdHdlZW5baV0uY2FsbChudWxsLCB0KTtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0aGUgZW5kIGV2ZW50LlxuICAgIGlmIChzZWxmLnN0YXRlID09PSBFTkRJTkcpIHtcbiAgICAgIHNlbGYub24uY2FsbChcImVuZFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKTtcbiAgICAgIHN0b3AoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIHNlbGYuc3RhdGUgPSBFTkRFRDtcbiAgICBzZWxmLnRpbWVyLnN0b3AoKTtcbiAgICBkZWxldGUgc2NoZWR1bGVzW2lkXTtcbiAgICBmb3IgKHZhciBpIGluIHNjaGVkdWxlcykgcmV0dXJuOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgZGVsZXRlIG5vZGUuX190cmFuc2l0aW9uO1xuICB9XG59XG4iLCJpbXBvcnQge2dldCwgc2V0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5mdW5jdGlvbiB0d2VlblJlbW92ZShpZCwgbmFtZSkge1xuICB2YXIgdHdlZW4wLCB0d2VlbjE7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICB0d2VlbiA9IHNjaGVkdWxlLnR3ZWVuO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCB0d2VlbiB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCB0d2VlbiBhbmQgd2XigJlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAodHdlZW4gIT09IHR3ZWVuMCkge1xuICAgICAgdHdlZW4xID0gdHdlZW4wID0gdHdlZW47XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR3ZWVuMS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKHR3ZWVuMVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdHdlZW4xID0gdHdlZW4xLnNsaWNlKCk7XG4gICAgICAgICAgdHdlZW4xLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHNjaGVkdWxlLnR3ZWVuID0gdHdlZW4xO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0d2VlbkZ1bmN0aW9uKGlkLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgdHdlZW4wLCB0d2VlbjE7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgdHdlZW4gPSBzY2hlZHVsZS50d2VlbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgdHdlZW4gd2l0aCB0aGUgcHJldmlvdXMgbm9kZSxcbiAgICAvLyBqdXN0IGFzc2lnbiB0aGUgdXBkYXRlZCBzaGFyZWQgdHdlZW4gYW5kIHdl4oCZcmUgZG9uZSFcbiAgICAvLyBPdGhlcndpc2UsIGNvcHktb24td3JpdGUuXG4gICAgaWYgKHR3ZWVuICE9PSB0d2VlbjApIHtcbiAgICAgIHR3ZWVuMSA9ICh0d2VlbjAgPSB0d2Vlbikuc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIHQgPSB7bmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlfSwgaSA9IDAsIG4gPSB0d2VlbjEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICh0d2VlbjFbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHR3ZWVuMVtpXSA9IHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpID09PSBuKSB0d2VlbjEucHVzaCh0KTtcbiAgICB9XG5cbiAgICBzY2hlZHVsZS50d2VlbiA9IHR3ZWVuMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgbmFtZSArPSBcIlwiO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciB0d2VlbiA9IGdldCh0aGlzLm5vZGUoKSwgaWQpLnR3ZWVuO1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHdlZW4ubGVuZ3RoLCB0OyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKHQgPSB0d2VlbltpXSkubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gdC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsID8gdHdlZW5SZW1vdmUgOiB0d2VlbkZ1bmN0aW9uKShpZCwgbmFtZSwgdmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR3ZWVuVmFsdWUodHJhbnNpdGlvbiwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGlkID0gdHJhbnNpdGlvbi5faWQ7XG5cbiAgdHJhbnNpdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCk7XG4gICAgKHNjaGVkdWxlLnZhbHVlIHx8IChzY2hlZHVsZS52YWx1ZSA9IHt9KSlbbmFtZV0gPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBnZXQobm9kZSwgaWQpLnZhbHVlW25hbWVdO1xuICB9O1xufVxuIiwiaW1wb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZyBhcyBpbnRlcnBvbGF0ZVRyYW5zZm9ybX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge25hbWVzcGFjZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHt0d2VlblZhbHVlfSBmcm9tIFwiLi90d2VlblwiO1xuaW1wb3J0IGludGVycG9sYXRlIGZyb20gXCIuL2ludGVycG9sYXRlXCI7XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmVOUyhmdWxsbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnQobmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlMSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwID8gaW50ZXJwb2xhdGUwXG4gICAgICAgIDogaW50ZXJwb2xhdGUwID0gaW50ZXJwb2xhdGUodmFsdWUwMCA9IHZhbHVlMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50TlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZTEpIHtcbiAgdmFyIHZhbHVlMDAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyRnVuY3Rpb24obmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgdmFsdWUxMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTAsIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgcmV0dXJuIHZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uTlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwLCB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICBpZiAodmFsdWUxID09IG51bGwpIHJldHVybiB2b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICB2YWx1ZTAgPSB0aGlzLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpLCBpID0gZnVsbG5hbWUgPT09IFwidHJhbnNmb3JtXCIgPyBpbnRlcnBvbGF0ZVRyYW5zZm9ybSA6IGludGVycG9sYXRlO1xuICByZXR1cm4gdGhpcy5hdHRyVHdlZW4obmFtZSwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckZ1bmN0aW9uTlMgOiBhdHRyRnVuY3Rpb24pKGZ1bGxuYW1lLCBpLCB0d2VlblZhbHVlKHRoaXMsIFwiYXR0ci5cIiArIG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdmFsdWUgPT0gbnVsbCA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJSZW1vdmVOUyA6IGF0dHJSZW1vdmUpKGZ1bGxuYW1lKVxuICAgICAgOiAoZnVsbG5hbWUubG9jYWwgPyBhdHRyQ29uc3RhbnROUyA6IGF0dHJDb25zdGFudCkoZnVsbG5hbWUsIGksIHZhbHVlICsgXCJcIikpO1xufVxuIiwiaW1wb3J0IHtuYW1lc3BhY2V9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcblxuZnVuY3Rpb24gYXR0clR3ZWVuTlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBub2RlID0gdGhpcywgaSA9IHZhbHVlLmFwcGx5KG5vZGUsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGkgJiYgZnVuY3Rpb24odCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIGkodCkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZnVuY3Rpb24gYXR0clR3ZWVuKG5hbWUsIHZhbHVlKSB7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBub2RlID0gdGhpcywgaSA9IHZhbHVlLmFwcGx5KG5vZGUsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGkgJiYgZnVuY3Rpb24odCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgaSh0KSk7XG4gICAgfTtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIga2V5ID0gXCJhdHRyLlwiICsgbmFtZTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgKGZ1bGxuYW1lLmxvY2FsID8gYXR0clR3ZWVuTlMgOiBhdHRyVHdlZW4pKGZ1bGxuYW1lLCB2YWx1ZSkpO1xufVxuIiwiaW1wb3J0IHtnZXQsIGluaXR9IGZyb20gXCIuL3NjaGVkdWxlXCI7XG5cbmZ1bmN0aW9uIGRlbGF5RnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBpbml0KHRoaXMsIGlkKS5kZWxheSA9ICt2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWxheUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPSArdmFsdWUsIGZ1bmN0aW9uKCkge1xuICAgIGluaXQodGhpcywgaWQpLmRlbGF5ID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGRlbGF5RnVuY3Rpb25cbiAgICAgICAgICA6IGRlbGF5Q29uc3RhbnQpKGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmRlbGF5O1xufVxuIiwiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZnVuY3Rpb24gZHVyYXRpb25GdW5jdGlvbihpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZHVyYXRpb24gPSArdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZHVyYXRpb25Db25zdGFudChpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID0gK3ZhbHVlLCBmdW5jdGlvbigpIHtcbiAgICBzZXQodGhpcywgaWQpLmR1cmF0aW9uID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGR1cmF0aW9uRnVuY3Rpb25cbiAgICAgICAgICA6IGR1cmF0aW9uQ29uc3RhbnQpKGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmR1cmF0aW9uO1xufVxuIiwiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZnVuY3Rpb24gZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZWFzZSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmVhc2U7XG59XG4iLCJpbXBvcnQge2dldCwgc2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5mdW5jdGlvbiBzdGFydChuYW1lKSB7XG4gIHJldHVybiAobmFtZSArIFwiXCIpLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykuZXZlcnkoZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4gIXQgfHwgdCA9PT0gXCJzdGFydFwiO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25GdW5jdGlvbihpZCwgbmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG9uMCwgb24xLCBzaXQgPSBzdGFydChuYW1lKSA/IGluaXQgOiBzZXQ7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzaXQodGhpcywgaWQpLFxuICAgICAgICBvbiA9IHNjaGVkdWxlLm9uO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmIChvbiAhPT0gb24wKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKG5hbWUsIGxpc3RlbmVyKTtcblxuICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBsaXN0ZW5lcikge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDJcbiAgICAgID8gZ2V0KHRoaXMubm9kZSgpLCBpZCkub24ub24obmFtZSlcbiAgICAgIDogdGhpcy5lYWNoKG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSk7XG59XG4iLCJmdW5jdGlvbiByZW1vdmVGdW5jdGlvbihpZCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgICBmb3IgKHZhciBpIGluIHRoaXMuX190cmFuc2l0aW9uKSBpZiAoK2kgIT09IGlkKSByZXR1cm47XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMub24oXCJlbmQucmVtb3ZlXCIsIHJlbW92ZUZ1bmN0aW9uKHRoaXMuX2lkKSk7XG59XG4iLCJpbXBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzIGFzIGludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7c3R5bGV9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW5cIjtcbmltcG9ydCBpbnRlcnBvbGF0ZSBmcm9tIFwiLi9pbnRlcnBvbGF0ZVwiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lLCBpbnRlcnBvbGF0ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVSZW1vdmVFbmQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMCA9IHN0eWxlKHRoaXMsIG5hbWUpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgdmFsdWUxID0gKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSksIHN0eWxlKHRoaXMsIG5hbWUpKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwICYmIHZhbHVlMSA9PT0gdmFsdWUxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHZhbHVlMDAgPSB2YWx1ZTAsIHZhbHVlMTAgPSB2YWx1ZTEpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGkgPSAobmFtZSArPSBcIlwiKSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGludGVycG9sYXRlVHJhbnNmb3JtIDogaW50ZXJwb2xhdGU7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdGhpc1xuICAgICAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlUmVtb3ZlKG5hbWUsIGkpKVxuICAgICAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIHN0eWxlUmVtb3ZlRW5kKG5hbWUpKVxuICAgICAgOiB0aGlzLnN0eWxlVHdlZW4obmFtZSwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHN0eWxlRnVuY3Rpb24obmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcInN0eWxlLlwiICsgbmFtZSwgdmFsdWUpKVxuICAgICAgICAgIDogc3R5bGVDb25zdGFudChuYW1lLCBpLCB2YWx1ZSArIFwiXCIpLCBwcmlvcml0eSk7XG59XG4iLCJmdW5jdGlvbiBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMsIGkgPSB2YWx1ZS5hcHBseShub2RlLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBpICYmIGZ1bmN0aW9uKHQpIHtcbiAgICAgIG5vZGUuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgaSh0KSwgcHJpb3JpdHkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciBrZXkgPSBcInN0eWxlLlwiICsgKG5hbWUgKz0gXCJcIik7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikgcmV0dXJuIChrZXkgPSB0aGlzLnR3ZWVuKGtleSkpICYmIGtleS5fdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdGhpcy50d2VlbihrZXksIG51bGwpO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSk7XG59XG4iLCJpbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuXCI7XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWUxID09IG51bGwgPyBcIlwiIDogdmFsdWUxO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdGhpcy50d2VlbihcInRleHRcIiwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gdGV4dEZ1bmN0aW9uKHR3ZWVuVmFsdWUodGhpcywgXCJ0ZXh0XCIsIHZhbHVlKSlcbiAgICAgIDogdGV4dENvbnN0YW50KHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiKSk7XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0ciBmcm9tIFwiLi9hdHRyXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9hdHRyVHdlZW4gZnJvbSBcIi4vYXR0clR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9kZWxheSBmcm9tIFwiLi9kZWxheVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb25cIjtcbmltcG9ydCB0cmFuc2l0aW9uX2Vhc2UgZnJvbSBcIi4vZWFzZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHRyYW5zaXRpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2VcIjtcbmltcG9ydCB0cmFuc2l0aW9uX29uIGZyb20gXCIuL29uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fc3R5bGVUd2VlbiBmcm9tIFwiLi9zdHlsZVR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90ZXh0IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHdlZW4gZnJvbSBcIi4vdHdlZW5cIjtcblxudmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFRyYW5zaXRpb24oZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCkge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xuICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgdGhpcy5faWQgPSBpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3Rpb24oKS50cmFuc2l0aW9uKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuXG52YXIgc2VsZWN0aW9uX3Byb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGU7XG5cblRyYW5zaXRpb24ucHJvdG90eXBlID0gdHJhbnNpdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2l0aW9uLFxuICBzZWxlY3Q6IHRyYW5zaXRpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHRyYW5zaXRpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHRyYW5zaXRpb25fZmlsdGVyLFxuICBtZXJnZTogdHJhbnNpdGlvbl9tZXJnZSxcbiAgc2VsZWN0aW9uOiB0cmFuc2l0aW9uX3NlbGVjdGlvbixcbiAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbl90cmFuc2l0aW9uLFxuICBjYWxsOiBzZWxlY3Rpb25fcHJvdG90eXBlLmNhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9wcm90b3R5cGUuc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9wcm90b3R5cGUuZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9wcm90b3R5cGUuZWFjaCxcbiAgb246IHRyYW5zaXRpb25fb24sXG4gIGF0dHI6IHRyYW5zaXRpb25fYXR0cixcbiAgYXR0clR3ZWVuOiB0cmFuc2l0aW9uX2F0dHJUd2VlbixcbiAgc3R5bGU6IHRyYW5zaXRpb25fc3R5bGUsXG4gIHN0eWxlVHdlZW46IHRyYW5zaXRpb25fc3R5bGVUd2VlbixcbiAgdGV4dDogdHJhbnNpdGlvbl90ZXh0LFxuICByZW1vdmU6IHRyYW5zaXRpb25fcmVtb3ZlLFxuICB0d2VlbjogdHJhbnNpdGlvbl90d2VlbixcbiAgZGVsYXk6IHRyYW5zaXRpb25fZGVsYXksXG4gIGR1cmF0aW9uOiB0cmFuc2l0aW9uX2R1cmF0aW9uLFxuICBlYXNlOiB0cmFuc2l0aW9uX2Vhc2Vcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gY3ViaWNJbih0KSB7XG4gIHJldHVybiB0ICogdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY091dCh0KSB7XG4gIHJldHVybiAtLXQgKiB0ICogdCArIDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY0luT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgKiB0IDogKHQgLT0gMikgKiB0ICogdCArIDIpIC8gMjtcbn1cbiIsImltcG9ydCB7VHJhbnNpdGlvbiwgbmV3SWR9IGZyb20gXCIuLi90cmFuc2l0aW9uL2luZGV4XCI7XG5pbXBvcnQgc2NoZWR1bGUgZnJvbSBcIi4uL3RyYW5zaXRpb24vc2NoZWR1bGVcIjtcbmltcG9ydCB7ZWFzZUN1YmljSW5PdXR9IGZyb20gXCJkMy1lYXNlXCI7XG5pbXBvcnQge25vd30gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBkZWZhdWx0VGltaW5nID0ge1xuICB0aW1lOiBudWxsLCAvLyBTZXQgb24gdXNlLlxuICBkZWxheTogMCxcbiAgZHVyYXRpb246IDI1MCxcbiAgZWFzZTogZWFzZUN1YmljSW5PdXRcbn07XG5cbmZ1bmN0aW9uIGluaGVyaXQobm9kZSwgaWQpIHtcbiAgdmFyIHRpbWluZztcbiAgd2hpbGUgKCEodGltaW5nID0gbm9kZS5fX3RyYW5zaXRpb24pIHx8ICEodGltaW5nID0gdGltaW5nW2lkXSkpIHtcbiAgICBpZiAoIShub2RlID0gbm9kZS5wYXJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRUaW1pbmcudGltZSA9IG5vdygpLCBkZWZhdWx0VGltaW5nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGltaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBpZCxcbiAgICAgIHRpbWluZztcblxuICBpZiAobmFtZSBpbnN0YW5jZW9mIFRyYW5zaXRpb24pIHtcbiAgICBpZCA9IG5hbWUuX2lkLCBuYW1lID0gbmFtZS5fbmFtZTtcbiAgfSBlbHNlIHtcbiAgICBpZCA9IG5ld0lkKCksICh0aW1pbmcgPSBkZWZhdWx0VGltaW5nKS50aW1lID0gbm93KCksIG5hbWUgPSBuYW1lID09IG51bGwgPyBudWxsIDogbmFtZSArIFwiXCI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZCwgaSwgZ3JvdXAsIHRpbWluZyB8fCBpbmhlcml0KG5vZGUsIGlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKGdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge2RyYWdEaXNhYmxlLCBkcmFnRW5hYmxlfSBmcm9tIFwiZDMtZHJhZ1wiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2N1c3RvbUV2ZW50LCBldmVudCwgbW91c2UsIHNlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtpbnRlcnJ1cHR9IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBCcnVzaEV2ZW50IGZyb20gXCIuL2V2ZW50XCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnRcIjtcblxudmFyIE1PREVfRFJBRyA9IHtuYW1lOiBcImRyYWdcIn0sXG4gICAgTU9ERV9TUEFDRSA9IHtuYW1lOiBcInNwYWNlXCJ9LFxuICAgIE1PREVfSEFORExFID0ge25hbWU6IFwiaGFuZGxlXCJ9LFxuICAgIE1PREVfQ0VOVEVSID0ge25hbWU6IFwiY2VudGVyXCJ9O1xuXG52YXIgWCA9IHtcbiAgbmFtZTogXCJ4XCIsXG4gIGhhbmRsZXM6IFtcImVcIiwgXCJ3XCJdLm1hcCh0eXBlKSxcbiAgaW5wdXQ6IGZ1bmN0aW9uKHgsIGUpIHsgcmV0dXJuIHggJiYgW1t4WzBdLCBlWzBdWzFdXSwgW3hbMV0sIGVbMV1bMV1dXTsgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHkgJiYgW3h5WzBdWzBdLCB4eVsxXVswXV07IH1cbn07XG5cbnZhciBZID0ge1xuICBuYW1lOiBcInlcIixcbiAgaGFuZGxlczogW1wiblwiLCBcInNcIl0ubWFwKHR5cGUpLFxuICBpbnB1dDogZnVuY3Rpb24oeSwgZSkgeyByZXR1cm4geSAmJiBbW2VbMF1bMF0sIHlbMF1dLCBbZVsxXVswXSwgeVsxXV1dOyB9LFxuICBvdXRwdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eSAmJiBbeHlbMF1bMV0sIHh5WzFdWzFdXTsgfVxufTtcblxudmFyIFhZID0ge1xuICBuYW1lOiBcInh5XCIsXG4gIGhhbmRsZXM6IFtcIm5cIiwgXCJlXCIsIFwic1wiLCBcIndcIiwgXCJud1wiLCBcIm5lXCIsIFwic2VcIiwgXCJzd1wiXS5tYXAodHlwZSksXG4gIGlucHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHk7IH0sXG4gIG91dHB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5OyB9XG59O1xuXG52YXIgY3Vyc29ycyA9IHtcbiAgb3ZlcmxheTogXCJjcm9zc2hhaXJcIixcbiAgc2VsZWN0aW9uOiBcIm1vdmVcIixcbiAgbjogXCJucy1yZXNpemVcIixcbiAgZTogXCJldy1yZXNpemVcIixcbiAgczogXCJucy1yZXNpemVcIixcbiAgdzogXCJldy1yZXNpemVcIixcbiAgbnc6IFwibndzZS1yZXNpemVcIixcbiAgbmU6IFwibmVzdy1yZXNpemVcIixcbiAgc2U6IFwibndzZS1yZXNpemVcIixcbiAgc3c6IFwibmVzdy1yZXNpemVcIlxufTtcblxudmFyIGZsaXBYID0ge1xuICBlOiBcIndcIixcbiAgdzogXCJlXCIsXG4gIG53OiBcIm5lXCIsXG4gIG5lOiBcIm53XCIsXG4gIHNlOiBcInN3XCIsXG4gIHN3OiBcInNlXCJcbn07XG5cbnZhciBmbGlwWSA9IHtcbiAgbjogXCJzXCIsXG4gIHM6IFwiblwiLFxuICBudzogXCJzd1wiLFxuICBuZTogXCJzZVwiLFxuICBzZTogXCJuZVwiLFxuICBzdzogXCJud1wiXG59O1xuXG52YXIgc2lnbnNYID0ge1xuICBvdmVybGF5OiArMSxcbiAgc2VsZWN0aW9uOiArMSxcbiAgbjogbnVsbCxcbiAgZTogKzEsXG4gIHM6IG51bGwsXG4gIHc6IC0xLFxuICBudzogLTEsXG4gIG5lOiArMSxcbiAgc2U6ICsxLFxuICBzdzogLTFcbn07XG5cbnZhciBzaWduc1kgPSB7XG4gIG92ZXJsYXk6ICsxLFxuICBzZWxlY3Rpb246ICsxLFxuICBuOiAtMSxcbiAgZTogbnVsbCxcbiAgczogKzEsXG4gIHc6IG51bGwsXG4gIG53OiAtMSxcbiAgbmU6IC0xLFxuICBzZTogKzEsXG4gIHN3OiArMVxufTtcblxuZnVuY3Rpb24gdHlwZSh0KSB7XG4gIHJldHVybiB7dHlwZTogdH07XG59XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcigpIHtcbiAgcmV0dXJuICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFeHRlbnQoKSB7XG4gIHZhciBzdmcgPSB0aGlzLm93bmVyU1ZHRWxlbWVudCB8fCB0aGlzO1xuICByZXR1cm4gW1swLCAwXSwgW3N2Zy53aWR0aC5iYXNlVmFsLnZhbHVlLCBzdmcuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTtcbn1cblxuLy8gTGlrZSBkMy5sb2NhbCwgYnV0IHdpdGggdGhlIG5hbWUg4oCcX19icnVzaOKAnSByYXRoZXIgdGhhbiBhdXRvLWdlbmVyYXRlZC5cbmZ1bmN0aW9uIGxvY2FsKG5vZGUpIHtcbiAgd2hpbGUgKCFub2RlLl9fYnJ1c2gpIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm47XG4gIHJldHVybiBub2RlLl9fYnJ1c2g7XG59XG5cbmZ1bmN0aW9uIGVtcHR5KGV4dGVudCkge1xuICByZXR1cm4gZXh0ZW50WzBdWzBdID09PSBleHRlbnRbMV1bMF1cbiAgICAgIHx8IGV4dGVudFswXVsxXSA9PT0gZXh0ZW50WzFdWzFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJ1c2hTZWxlY3Rpb24obm9kZSkge1xuICB2YXIgc3RhdGUgPSBub2RlLl9fYnJ1c2g7XG4gIHJldHVybiBzdGF0ZSA/IHN0YXRlLmRpbS5vdXRwdXQoc3RhdGUuc2VsZWN0aW9uKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicnVzaFgoKSB7XG4gIHJldHVybiBicnVzaChYKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJydXNoWSgpIHtcbiAgcmV0dXJuIGJydXNoKFkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJydXNoKFhZKTtcbn1cblxuZnVuY3Rpb24gYnJ1c2goZGltKSB7XG4gIHZhciBleHRlbnQgPSBkZWZhdWx0RXh0ZW50LFxuICAgICAgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIGxpc3RlbmVycyA9IGRpc3BhdGNoKGJydXNoLCBcInN0YXJ0XCIsIFwiYnJ1c2hcIiwgXCJlbmRcIiksXG4gICAgICBoYW5kbGVTaXplID0gNixcbiAgICAgIHRvdWNoZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGJydXNoKGdyb3VwKSB7XG4gICAgdmFyIG92ZXJsYXkgPSBncm91cFxuICAgICAgICAucHJvcGVydHkoXCJfX2JydXNoXCIsIGluaXRpYWxpemUpXG4gICAgICAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgIC5kYXRhKFt0eXBlKFwib3ZlcmxheVwiKV0pO1xuXG4gICAgb3ZlcmxheS5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcIm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLm92ZXJsYXkpXG4gICAgICAubWVyZ2Uob3ZlcmxheSlcbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGV4dGVudCA9IGxvY2FsKHRoaXMpLmV4dGVudDtcbiAgICAgICAgICBzZWxlY3QodGhpcylcbiAgICAgICAgICAgICAgLmF0dHIoXCJ4XCIsIGV4dGVudFswXVswXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ5XCIsIGV4dGVudFswXVsxXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBleHRlbnRbMV1bMF0gLSBleHRlbnRbMF1bMF0pXG4gICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGV4dGVudFsxXVsxXSAtIGV4dGVudFswXVsxXSk7XG4gICAgICAgIH0pO1xuXG4gICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvblwiKVxuICAgICAgLmRhdGEoW3R5cGUoXCJzZWxlY3Rpb25cIildKVxuICAgICAgLmVudGVyKCkuYXBwZW5kKFwicmVjdFwiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwic2VsZWN0aW9uXCIpXG4gICAgICAgIC5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMuc2VsZWN0aW9uKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCIjNzc3XCIpXG4gICAgICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIDAuMylcbiAgICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjZmZmXCIpXG4gICAgICAgIC5hdHRyKFwic2hhcGUtcmVuZGVyaW5nXCIsIFwiY3Jpc3BFZGdlc1wiKTtcblxuICAgIHZhciBoYW5kbGUgPSBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAuZGF0YShkaW0uaGFuZGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlOyB9KTtcblxuICAgIGhhbmRsZS5leGl0KCkucmVtb3ZlKCk7XG5cbiAgICBoYW5kbGUuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gXCJoYW5kbGUgaGFuZGxlLS1cIiArIGQudHlwZTsgfSlcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gY3Vyc29yc1tkLnR5cGVdOyB9KTtcblxuICAgIGdyb3VwXG4gICAgICAgIC5lYWNoKHJlZHJhdylcbiAgICAgICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIilcbiAgICAgICAgLm9uKFwibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2hcIiwgc3RhcnRlZCk7XG4gIH1cblxuICBicnVzaC5tb3ZlID0gZnVuY3Rpb24oZ3JvdXAsIHNlbGVjdGlvbikge1xuICAgIGlmIChncm91cC5zZWxlY3Rpb24pIHtcbiAgICAgIGdyb3VwXG4gICAgICAgICAgLm9uKFwic3RhcnQuYnJ1c2hcIiwgZnVuY3Rpb24oKSB7IGVtaXR0ZXIodGhpcywgYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCk7IH0pXG4gICAgICAgICAgLm9uKFwiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaFwiLCBmdW5jdGlvbigpIHsgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLmVuZCgpOyB9KVxuICAgICAgICAgIC50d2VlbihcImJydXNoXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHN0YXRlID0gdGhhdC5fX2JydXNoLFxuICAgICAgICAgICAgICAgIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3VtZW50cyksXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMCA9IHN0YXRlLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24xID0gZGltLmlucHV0KHR5cGVvZiBzZWxlY3Rpb24gPT09IFwiZnVuY3Rpb25cIiA/IHNlbGVjdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogc2VsZWN0aW9uLCBzdGF0ZS5leHRlbnQpLFxuICAgICAgICAgICAgICAgIGkgPSBpbnRlcnBvbGF0ZShzZWxlY3Rpb24wLCBzZWxlY3Rpb24xKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gdHdlZW4odCkge1xuICAgICAgICAgICAgICBzdGF0ZS5zZWxlY3Rpb24gPSB0ID09PSAxICYmIGVtcHR5KHNlbGVjdGlvbjEpID8gbnVsbCA6IGkodCk7XG4gICAgICAgICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24wICYmIHNlbGVjdGlvbjEgPyB0d2VlbiA6IHR3ZWVuKDEpO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cFxuICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgICAgc3RhdGUgPSB0aGF0Ll9fYnJ1c2gsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhhdCwgYXJncykgOiBzZWxlY3Rpb24sIHN0YXRlLmV4dGVudCksXG4gICAgICAgICAgICAgICAgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJncykuYmVmb3Jlc3RhcnQoKTtcblxuICAgICAgICAgICAgaW50ZXJydXB0KHRoYXQpO1xuICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uMSA9PSBudWxsIHx8IGVtcHR5KHNlbGVjdGlvbjEpID8gbnVsbCA6IHNlbGVjdGlvbjE7XG4gICAgICAgICAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgICAgICAgIGVtaXQuc3RhcnQoKS5icnVzaCgpLmVuZCgpO1xuICAgICAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiByZWRyYXcoKSB7XG4gICAgdmFyIGdyb3VwID0gc2VsZWN0KHRoaXMpLFxuICAgICAgICBzZWxlY3Rpb24gPSBsb2NhbCh0aGlzKS5zZWxlY3Rpb247XG5cbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuc2VsZWN0aW9uXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBzZWxlY3Rpb25bMF1bMF0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIHNlbGVjdGlvblswXVsxXSlcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIHNlbGVjdGlvblsxXVswXSAtIHNlbGVjdGlvblswXVswXSlcbiAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBzZWxlY3Rpb25bMV1bMV0gLSBzZWxlY3Rpb25bMF1bMV0pO1xuXG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGVbZC50eXBlLmxlbmd0aCAtIDFdID09PSBcImVcIiA/IHNlbGVjdGlvblsxXVswXSAtIGhhbmRsZVNpemUgLyAyIDogc2VsZWN0aW9uWzBdWzBdIC0gaGFuZGxlU2l6ZSAvIDI7IH0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZVswXSA9PT0gXCJzXCIgPyBzZWxlY3Rpb25bMV1bMV0gLSBoYW5kbGVTaXplIC8gMiA6IHNlbGVjdGlvblswXVsxXSAtIGhhbmRsZVNpemUgLyAyOyB9KVxuICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcIm5cIiB8fCBkLnR5cGUgPT09IFwic1wiID8gc2VsZWN0aW9uWzFdWzBdIC0gc2VsZWN0aW9uWzBdWzBdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcImVcIiB8fCBkLnR5cGUgPT09IFwid1wiID8gc2VsZWN0aW9uWzFdWzFdIC0gc2VsZWN0aW9uWzBdWzFdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvbiwuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBcIm5vbmVcIilcbiAgICAgICAgICAuYXR0cihcInhcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcInlcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdHRlcih0aGF0LCBhcmdzKSB7XG4gICAgcmV0dXJuIHRoYXQuX19icnVzaC5lbWl0dGVyIHx8IG5ldyBFbWl0dGVyKHRoYXQsIGFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gRW1pdHRlcih0aGF0LCBhcmdzKSB7XG4gICAgdGhpcy50aGF0ID0gdGhhdDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMuc3RhdGUgPSB0aGF0Ll9fYnJ1c2g7XG4gICAgdGhpcy5hY3RpdmUgPSAwO1xuICB9XG5cbiAgRW1pdHRlci5wcm90b3R5cGUgPSB7XG4gICAgYmVmb3Jlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCsrdGhpcy5hY3RpdmUgPT09IDEpIHRoaXMuc3RhdGUuZW1pdHRlciA9IHRoaXMsIHRoaXMuc3RhcnRpbmcgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5zdGFydGluZykgdGhpcy5zdGFydGluZyA9IGZhbHNlLCB0aGlzLmVtaXQoXCJzdGFydFwiKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgYnJ1c2g6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5lbWl0KFwiYnJ1c2hcIik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aGlzLmFjdGl2ZSA9PT0gMCkgZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlciwgdGhpcy5lbWl0KFwiZW5kXCIpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICBjdXN0b21FdmVudChuZXcgQnJ1c2hFdmVudChicnVzaCwgdHlwZSwgZGltLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLCBsaXN0ZW5lcnMuYXBwbHksIGxpc3RlbmVycywgW3R5cGUsIHRoaXMudGhhdCwgdGhpcy5hcmdzXSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHN0YXJ0ZWQoKSB7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMpIHsgaWYgKGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA8IGV2ZW50LnRvdWNoZXMubGVuZ3RoKSByZXR1cm4gbm9ldmVudCgpOyB9XG4gICAgZWxzZSBpZiAodG91Y2hlbmRpbmcpIHJldHVybjtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG5cbiAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIHR5cGUgPSBldmVudC50YXJnZXQuX19kYXRhX18udHlwZSxcbiAgICAgICAgbW9kZSA9IChldmVudC5tZXRhS2V5ID8gdHlwZSA9IFwib3ZlcmxheVwiIDogdHlwZSkgPT09IFwic2VsZWN0aW9uXCIgPyBNT0RFX0RSQUcgOiAoZXZlbnQuYWx0S2V5ID8gTU9ERV9DRU5URVIgOiBNT0RFX0hBTkRMRSksXG4gICAgICAgIHNpZ25YID0gZGltID09PSBZID8gbnVsbCA6IHNpZ25zWFt0eXBlXSxcbiAgICAgICAgc2lnblkgPSBkaW0gPT09IFggPyBudWxsIDogc2lnbnNZW3R5cGVdLFxuICAgICAgICBzdGF0ZSA9IGxvY2FsKHRoYXQpLFxuICAgICAgICBleHRlbnQgPSBzdGF0ZS5leHRlbnQsXG4gICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbixcbiAgICAgICAgVyA9IGV4dGVudFswXVswXSwgdzAsIHcxLFxuICAgICAgICBOID0gZXh0ZW50WzBdWzFdLCBuMCwgbjEsXG4gICAgICAgIEUgPSBleHRlbnRbMV1bMF0sIGUwLCBlMSxcbiAgICAgICAgUyA9IGV4dGVudFsxXVsxXSwgczAsIHMxLFxuICAgICAgICBkeCxcbiAgICAgICAgZHksXG4gICAgICAgIG1vdmluZyxcbiAgICAgICAgc2hpZnRpbmcgPSBzaWduWCAmJiBzaWduWSAmJiBldmVudC5zaGlmdEtleSxcbiAgICAgICAgbG9ja1gsXG4gICAgICAgIGxvY2tZLFxuICAgICAgICBwb2ludDAgPSBtb3VzZSh0aGF0KSxcbiAgICAgICAgcG9pbnQgPSBwb2ludDAsXG4gICAgICAgIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKTtcblxuICAgIGlmICh0eXBlID09PSBcIm92ZXJsYXlcIikge1xuICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uID0gW1xuICAgICAgICBbdzAgPSBkaW0gPT09IFkgPyBXIDogcG9pbnQwWzBdLCBuMCA9IGRpbSA9PT0gWCA/IE4gOiBwb2ludDBbMV1dLFxuICAgICAgICBbZTAgPSBkaW0gPT09IFkgPyBFIDogdzAsIHMwID0gZGltID09PSBYID8gUyA6IG4wXVxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdzAgPSBzZWxlY3Rpb25bMF1bMF07XG4gICAgICBuMCA9IHNlbGVjdGlvblswXVsxXTtcbiAgICAgIGUwID0gc2VsZWN0aW9uWzFdWzBdO1xuICAgICAgczAgPSBzZWxlY3Rpb25bMV1bMV07XG4gICAgfVxuXG4gICAgdzEgPSB3MDtcbiAgICBuMSA9IG4wO1xuICAgIGUxID0gZTA7XG4gICAgczEgPSBzMDtcblxuICAgIHZhciBncm91cCA9IHNlbGVjdCh0aGF0KVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKTtcblxuICAgIHZhciBvdmVybGF5ID0gZ3JvdXAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG5cbiAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgZ3JvdXBcbiAgICAgICAgICAub24oXCJ0b3VjaG1vdmUuYnJ1c2hcIiwgbW92ZWQsIHRydWUpXG4gICAgICAgICAgLm9uKFwidG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2hcIiwgZW5kZWQsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdmlldyA9IHNlbGVjdChldmVudC52aWV3KVxuICAgICAgICAgIC5vbihcImtleWRvd24uYnJ1c2hcIiwga2V5ZG93bmVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcImtleXVwLmJydXNoXCIsIGtleXVwcGVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcIm1vdXNlbW92ZS5icnVzaFwiLCBtb3ZlZCwgdHJ1ZSlcbiAgICAgICAgICAub24oXCJtb3VzZXVwLmJydXNoXCIsIGVuZGVkLCB0cnVlKTtcblxuICAgICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgfVxuXG4gICAgbm9wcm9wYWdhdGlvbigpO1xuICAgIGludGVycnVwdCh0aGF0KTtcbiAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICBlbWl0LnN0YXJ0KCk7XG5cbiAgICBmdW5jdGlvbiBtb3ZlZCgpIHtcbiAgICAgIHZhciBwb2ludDEgPSBtb3VzZSh0aGF0KTtcbiAgICAgIGlmIChzaGlmdGluZyAmJiAhbG9ja1ggJiYgIWxvY2tZKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhwb2ludDFbMF0gLSBwb2ludFswXSkgPiBNYXRoLmFicyhwb2ludDFbMV0gLSBwb2ludFsxXSkpIGxvY2tZID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBsb2NrWCA9IHRydWU7XG4gICAgICB9XG4gICAgICBwb2ludCA9IHBvaW50MTtcbiAgICAgIG1vdmluZyA9IHRydWU7XG4gICAgICBub2V2ZW50KCk7XG4gICAgICBtb3ZlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW92ZSgpIHtcbiAgICAgIHZhciB0O1xuXG4gICAgICBkeCA9IHBvaW50WzBdIC0gcG9pbnQwWzBdO1xuICAgICAgZHkgPSBwb2ludFsxXSAtIHBvaW50MFsxXTtcblxuICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIGNhc2UgTU9ERV9TUEFDRTpcbiAgICAgICAgY2FzZSBNT0RFX0RSQUc6IHtcbiAgICAgICAgICBpZiAoc2lnblgpIGR4ID0gTWF0aC5tYXgoVyAtIHcwLCBNYXRoLm1pbihFIC0gZTAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMCArIGR4O1xuICAgICAgICAgIGlmIChzaWduWSkgZHkgPSBNYXRoLm1heChOIC0gbjAsIE1hdGgubWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCArIGR5LCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0hBTkRMRToge1xuICAgICAgICAgIGlmIChzaWduWCA8IDApIGR4ID0gTWF0aC5tYXgoVyAtIHcwLCBNYXRoLm1pbihFIC0gdzAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMDtcbiAgICAgICAgICBlbHNlIGlmIChzaWduWCA+IDApIGR4ID0gTWF0aC5tYXgoVyAtIGUwLCBNYXRoLm1pbihFIC0gZTAsIGR4KSksIHcxID0gdzAsIGUxID0gZTAgKyBkeDtcbiAgICAgICAgICBpZiAoc2lnblkgPCAwKSBkeSA9IE1hdGgubWF4KE4gLSBuMCwgTWF0aC5taW4oUyAtIG4wLCBkeSkpLCBuMSA9IG4wICsgZHksIHMxID0gczA7XG4gICAgICAgICAgZWxzZSBpZiAoc2lnblkgPiAwKSBkeSA9IE1hdGgubWF4KE4gLSBzMCwgTWF0aC5taW4oUyAtIHMwLCBkeSkpLCBuMSA9IG4wLCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0NFTlRFUjoge1xuICAgICAgICAgIGlmIChzaWduWCkgdzEgPSBNYXRoLm1heChXLCBNYXRoLm1pbihFLCB3MCAtIGR4ICogc2lnblgpKSwgZTEgPSBNYXRoLm1heChXLCBNYXRoLm1pbihFLCBlMCArIGR4ICogc2lnblgpKTtcbiAgICAgICAgICBpZiAoc2lnblkpIG4xID0gTWF0aC5tYXgoTiwgTWF0aC5taW4oUywgbjAgLSBkeSAqIHNpZ25ZKSksIHMxID0gTWF0aC5tYXgoTiwgTWF0aC5taW4oUywgczAgKyBkeSAqIHNpZ25ZKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGUxIDwgdzEpIHtcbiAgICAgICAgc2lnblggKj0gLTE7XG4gICAgICAgIHQgPSB3MCwgdzAgPSBlMCwgZTAgPSB0O1xuICAgICAgICB0ID0gdzEsIHcxID0gZTEsIGUxID0gdDtcbiAgICAgICAgaWYgKHR5cGUgaW4gZmxpcFgpIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGUgPSBmbGlwWFt0eXBlXV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoczEgPCBuMSkge1xuICAgICAgICBzaWduWSAqPSAtMTtcbiAgICAgICAgdCA9IG4wLCBuMCA9IHMwLCBzMCA9IHQ7XG4gICAgICAgIHQgPSBuMSwgbjEgPSBzMSwgczEgPSB0O1xuICAgICAgICBpZiAodHlwZSBpbiBmbGlwWSkgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnNbdHlwZSA9IGZsaXBZW3R5cGVdXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24pIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjsgLy8gTWF5IGJlIHNldCBieSBicnVzaC5tb3ZlIVxuICAgICAgaWYgKGxvY2tYKSB3MSA9IHNlbGVjdGlvblswXVswXSwgZTEgPSBzZWxlY3Rpb25bMV1bMF07XG4gICAgICBpZiAobG9ja1kpIG4xID0gc2VsZWN0aW9uWzBdWzFdLCBzMSA9IHNlbGVjdGlvblsxXVsxXTtcblxuICAgICAgaWYgKHNlbGVjdGlvblswXVswXSAhPT0gdzFcbiAgICAgICAgICB8fCBzZWxlY3Rpb25bMF1bMV0gIT09IG4xXG4gICAgICAgICAgfHwgc2VsZWN0aW9uWzFdWzBdICE9PSBlMVxuICAgICAgICAgIHx8IHNlbGVjdGlvblsxXVsxXSAhPT0gczEpIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gW1t3MSwgbjFdLCBbZTEsIHMxXV07XG4gICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kZWQoKSB7XG4gICAgICBub3Byb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgICAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgNTAwKTsgLy8gR2hvc3QgY2xpY2tzIGFyZSBkZWxheWVkIVxuICAgICAgICBncm91cC5vbihcInRvdWNobW92ZS5icnVzaCB0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaFwiLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYWdFbmFibGUoZXZlbnQudmlldywgbW92aW5nKTtcbiAgICAgICAgdmlldy5vbihcImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2hcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgICBncm91cC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJhbGxcIik7XG4gICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5vdmVybGF5KTtcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24pIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjsgLy8gTWF5IGJlIHNldCBieSBicnVzaC5tb3ZlIChvbiBzdGFydCkhXG4gICAgICBpZiAoZW1wdHkoc2VsZWN0aW9uKSkgc3RhdGUuc2VsZWN0aW9uID0gbnVsbCwgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgICBlbWl0LmVuZCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleWRvd25lZCgpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIDE2OiB7IC8vIFNISUZUXG4gICAgICAgICAgc2hpZnRpbmcgPSBzaWduWCAmJiBzaWduWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDE4OiB7IC8vIEFMVFxuICAgICAgICAgIGlmIChtb2RlID09PSBNT0RFX0hBTkRMRSkge1xuICAgICAgICAgICAgaWYgKHNpZ25YKSBlMCA9IGUxIC0gZHggKiBzaWduWCwgdzAgPSB3MSArIGR4ICogc2lnblg7XG4gICAgICAgICAgICBpZiAoc2lnblkpIHMwID0gczEgLSBkeSAqIHNpZ25ZLCBuMCA9IG4xICsgZHkgKiBzaWduWTtcbiAgICAgICAgICAgIG1vZGUgPSBNT0RFX0NFTlRFUjtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzMjogeyAvLyBTUEFDRTsgdGFrZXMgcHJpb3JpdHkgb3ZlciBBTFRcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9IQU5ETEUgfHwgbW9kZSA9PT0gTU9ERV9DRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTEgLSBkeDsgZWxzZSBpZiAoc2lnblggPiAwKSB3MCA9IHcxIC0gZHg7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxIC0gZHk7IGVsc2UgaWYgKHNpZ25ZID4gMCkgbjAgPSBuMSAtIGR5O1xuICAgICAgICAgICAgbW9kZSA9IE1PREVfU1BBQ0U7XG4gICAgICAgICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiByZXR1cm47XG4gICAgICB9XG4gICAgICBub2V2ZW50KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga2V5dXBwZWQoKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSAxNjogeyAvLyBTSElGVFxuICAgICAgICAgIGlmIChzaGlmdGluZykge1xuICAgICAgICAgICAgbG9ja1ggPSBsb2NrWSA9IHNoaWZ0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxOyBlbHNlIGlmIChzaWduWCA+IDApIHcwID0gdzE7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzI6IHsgLy8gU1BBQ0VcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICBpZiAoc2lnblgpIGUwID0gZTEgLSBkeCAqIHNpZ25YLCB3MCA9IHcxICsgZHggKiBzaWduWDtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZKSBzMCA9IHMxIC0gZHkgKiBzaWduWSwgbjAgPSBuMSArIGR5ICogc2lnblk7XG4gICAgICAgICAgICAgIG1vZGUgPSBNT0RFX0NFTlRFUjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTE7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MTtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgczAgPSBzMTsgZWxzZSBpZiAoc2lnblkgPiAwKSBuMCA9IG4xO1xuICAgICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX19icnVzaCB8fCB7c2VsZWN0aW9uOiBudWxsfTtcbiAgICBzdGF0ZS5leHRlbnQgPSBleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBzdGF0ZS5kaW0gPSBkaW07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgYnJ1c2guZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4dGVudCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoW1srX1swXVswXSwgK19bMF1bMV1dLCBbK19bMV1bMF0sICtfWzFdWzFdXV0pLCBicnVzaCkgOiBleHRlbnQ7XG4gIH07XG5cbiAgYnJ1c2guZmlsdGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZpbHRlciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgYnJ1c2gpIDogZmlsdGVyO1xuICB9O1xuXG4gIGJydXNoLmhhbmRsZVNpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaGFuZGxlU2l6ZSA9ICtfLCBicnVzaCkgOiBoYW5kbGVTaXplO1xuICB9O1xuXG4gIGJydXNoLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IGJydXNoIDogdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIGJydXNoO1xufVxuIiwidmFyIHBpID0gTWF0aC5QSSxcbiAgICB0YXUgPSAyICogcGksXG4gICAgZXBzaWxvbiA9IDFlLTYsXG4gICAgdGF1RXBzaWxvbiA9IHRhdSAtIGVwc2lsb247XG5cbmZ1bmN0aW9uIFBhdGgoKSB7XG4gIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5feDEgPSB0aGlzLl95MSA9IG51bGw7IC8vIGVuZCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5fID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIG5ldyBQYXRoO1xufVxuXG5QYXRoLnByb3RvdHlwZSA9IHBhdGgucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogUGF0aCxcbiAgbW92ZVRvOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl94MSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5feDEgPSB0aGlzLl94MCwgdGhpcy5feTEgPSB0aGlzLl95MDtcbiAgICAgIHRoaXMuXyArPSBcIlpcIjtcbiAgICB9XG4gIH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkxcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBxdWFkcmF0aWNDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gXCJRXCIgKyAoK3gxKSArIFwiLFwiICsgKCt5MSkgKyBcIixcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBiZXppZXJDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkNcIiArICgreDEpICsgXCIsXCIgKyAoK3kxKSArIFwiLFwiICsgKCt4MikgKyBcIixcIiArICgreTIpICsgXCIsXCIgKyAodGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MSA9ICt5KTtcbiAgfSxcbiAgYXJjVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCByKSB7XG4gICAgeDEgPSAreDEsIHkxID0gK3kxLCB4MiA9ICt4MiwgeTIgPSAreTIsIHIgPSArcjtcbiAgICB2YXIgeDAgPSB0aGlzLl94MSxcbiAgICAgICAgeTAgPSB0aGlzLl95MSxcbiAgICAgICAgeDIxID0geDIgLSB4MSxcbiAgICAgICAgeTIxID0geTIgLSB5MSxcbiAgICAgICAgeDAxID0geDAgLSB4MSxcbiAgICAgICAgeTAxID0geTAgLSB5MSxcbiAgICAgICAgbDAxXzIgPSB4MDEgKiB4MDEgKyB5MDEgKiB5MDE7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDEseTEpLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4MCx5MCk/IERvIG5vdGhpbmcuXG4gICAgZWxzZSBpZiAoIShsMDFfMiA+IGVwc2lsb24pKSB7fVxuXG4gICAgLy8gT3IsIGFyZSAoeDAseTApLCAoeDEseTEpIGFuZCAoeDIseTIpIGNvbGxpbmVhcj9cbiAgICAvLyBFcXVpdmFsZW50bHksIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4Mix5Mik/XG4gICAgLy8gT3IsIGlzIHRoZSByYWRpdXMgemVybz8gTGluZSB0byAoeDEseTEpLlxuICAgIGVsc2UgaWYgKCEoTWF0aC5hYnMoeTAxICogeDIxIC0geTIxICogeDAxKSA+IGVwc2lsb24pIHx8ICFyKSB7XG4gICAgICB0aGlzLl8gKz0gXCJMXCIgKyAodGhpcy5feDEgPSB4MSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxKTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGRyYXcgYW4gYXJjIVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHgyMCA9IHgyIC0geDAsXG4gICAgICAgICAgeTIwID0geTIgLSB5MCxcbiAgICAgICAgICBsMjFfMiA9IHgyMSAqIHgyMSArIHkyMSAqIHkyMSxcbiAgICAgICAgICBsMjBfMiA9IHgyMCAqIHgyMCArIHkyMCAqIHkyMCxcbiAgICAgICAgICBsMjEgPSBNYXRoLnNxcnQobDIxXzIpLFxuICAgICAgICAgIGwwMSA9IE1hdGguc3FydChsMDFfMiksXG4gICAgICAgICAgbCA9IHIgKiBNYXRoLnRhbigocGkgLSBNYXRoLmFjb3MoKGwyMV8yICsgbDAxXzIgLSBsMjBfMikgLyAoMiAqIGwyMSAqIGwwMSkpKSAvIDIpLFxuICAgICAgICAgIHQwMSA9IGwgLyBsMDEsXG4gICAgICAgICAgdDIxID0gbCAvIGwyMTtcblxuICAgICAgLy8gSWYgdGhlIHN0YXJ0IHRhbmdlbnQgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCAoeDAseTApLCBsaW5lIHRvLlxuICAgICAgaWYgKE1hdGguYWJzKHQwMSAtIDEpID4gZXBzaWxvbikge1xuICAgICAgICB0aGlzLl8gKz0gXCJMXCIgKyAoeDEgKyB0MDEgKiB4MDEpICsgXCIsXCIgKyAoeTEgKyB0MDEgKiB5MDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwwLFwiICsgKCsoeTAxICogeDIwID4geDAxICogeTIwKSkgKyBcIixcIiArICh0aGlzLl94MSA9IHgxICsgdDIxICogeDIxKSArIFwiLFwiICsgKHRoaXMuX3kxID0geTEgKyB0MjEgKiB5MjEpO1xuICAgIH1cbiAgfSxcbiAgYXJjOiBmdW5jdGlvbih4LCB5LCByLCBhMCwgYTEsIGNjdykge1xuICAgIHggPSAreCwgeSA9ICt5LCByID0gK3I7XG4gICAgdmFyIGR4ID0gciAqIE1hdGguY29zKGEwKSxcbiAgICAgICAgZHkgPSByICogTWF0aC5zaW4oYTApLFxuICAgICAgICB4MCA9IHggKyBkeCxcbiAgICAgICAgeTAgPSB5ICsgZHksXG4gICAgICAgIGN3ID0gMSBeIGNjdyxcbiAgICAgICAgZGEgPSBjY3cgPyBhMCAtIGExIDogYTEgLSBhMDtcblxuICAgIC8vIElzIHRoZSByYWRpdXMgbmVnYXRpdmU/IEVycm9yLlxuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwibmVnYXRpdmUgcmFkaXVzOiBcIiArIHIpO1xuXG4gICAgLy8gSXMgdGhpcyBwYXRoIGVtcHR5PyBNb3ZlIHRvICh4MCx5MCkuXG4gICAgaWYgKHRoaXMuX3gxID09PSBudWxsKSB7XG4gICAgICB0aGlzLl8gKz0gXCJNXCIgKyB4MCArIFwiLFwiICsgeTA7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MCx5MCkgbm90IGNvaW5jaWRlbnQgd2l0aCB0aGUgcHJldmlvdXMgcG9pbnQ/IExpbmUgdG8gKHgwLHkwKS5cbiAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLl94MSAtIHgwKSA+IGVwc2lsb24gfHwgTWF0aC5hYnModGhpcy5feTEgLSB5MCkgPiBlcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJMXCIgKyB4MCArIFwiLFwiICsgeTA7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhpcyBhcmMgZW1wdHk/IFdl4oCZcmUgZG9uZS5cbiAgICBpZiAoIXIpIHJldHVybjtcblxuICAgIC8vIERvZXMgdGhlIGFuZ2xlIGdvIHRoZSB3cm9uZyB3YXk/IEZsaXAgdGhlIGRpcmVjdGlvbi5cbiAgICBpZiAoZGEgPCAwKSBkYSA9IGRhICUgdGF1ICsgdGF1O1xuXG4gICAgLy8gSXMgdGhpcyBhIGNvbXBsZXRlIGNpcmNsZT8gRHJhdyB0d28gYXJjcyB0byBjb21wbGV0ZSB0aGUgY2lyY2xlLlxuICAgIGlmIChkYSA+IHRhdUVwc2lsb24pIHtcbiAgICAgIHRoaXMuXyArPSBcIkFcIiArIHIgKyBcIixcIiArIHIgKyBcIiwwLDEsXCIgKyBjdyArIFwiLFwiICsgKHggLSBkeCkgKyBcIixcIiArICh5IC0gZHkpICsgXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwxLFwiICsgY3cgKyBcIixcIiArICh0aGlzLl94MSA9IHgwKSArIFwiLFwiICsgKHRoaXMuX3kxID0geTApO1xuICAgIH1cblxuICAgIC8vIElzIHRoaXMgYXJjIG5vbi1lbXB0eT8gRHJhdyBhbiBhcmMhXG4gICAgZWxzZSBpZiAoZGEgPiBlcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCxcIiArICgrKGRhID49IHBpKSkgKyBcIixcIiArIGN3ICsgXCIsXCIgKyAodGhpcy5feDEgPSB4ICsgciAqIE1hdGguY29zKGExKSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkgKyByICogTWF0aC5zaW4oYTEpKTtcbiAgICB9XG4gIH0sXG4gIHJlY3Q6IGZ1bmN0aW9uKHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLl8gKz0gXCJNXCIgKyAodGhpcy5feDAgPSB0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kwID0gdGhpcy5feTEgPSAreSkgKyBcImhcIiArICgrdykgKyBcInZcIiArICgraCkgKyBcImhcIiArICgtdykgKyBcIlpcIjtcbiAgfSxcbiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl87XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHBhdGg7XG4iLCJleHBvcnQgdmFyIHByZWZpeCA9IFwiJFwiO1xuXG5mdW5jdGlvbiBNYXAoKSB7fVxuXG5NYXAucHJvdG90eXBlID0gbWFwLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE1hcCxcbiAgaGFzOiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gKHByZWZpeCArIGtleSkgaW4gdGhpcztcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gdGhpc1twcmVmaXggKyBrZXldO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzW3ByZWZpeCArIGtleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBwcmVmaXggKyBrZXk7XG4gICAgcmV0dXJuIHByb3BlcnR5IGluIHRoaXMgJiYgZGVsZXRlIHRoaXNbcHJvcGVydHldO1xuICB9LFxuICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIGRlbGV0ZSB0aGlzW3Byb3BlcnR5XTtcbiAgfSxcbiAga2V5czogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkga2V5cy5wdXNoKHByb3BlcnR5LnNsaWNlKDEpKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfSxcbiAgdmFsdWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIHZhbHVlcy5wdXNoKHRoaXNbcHJvcGVydHldKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LFxuICBlbnRyaWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSBlbnRyaWVzLnB1c2goe2tleTogcHJvcGVydHkuc2xpY2UoMSksIHZhbHVlOiB0aGlzW3Byb3BlcnR5XX0pO1xuICAgIHJldHVybiBlbnRyaWVzO1xuICB9LFxuICBzaXplOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2l6ZSA9IDA7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpICsrc2l6ZTtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGVhY2g6IGZ1bmN0aW9uKGYpIHtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkgZih0aGlzW3Byb3BlcnR5XSwgcHJvcGVydHkuc2xpY2UoMSksIHRoaXMpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBtYXAob2JqZWN0LCBmKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwO1xuXG4gIC8vIENvcHkgY29uc3RydWN0b3IuXG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNYXApIG9iamVjdC5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsgbWFwLnNldChrZXksIHZhbHVlKTsgfSk7XG5cbiAgLy8gSW5kZXggYXJyYXkgYnkgbnVtZXJpYyBpbmRleCBvciBzcGVjaWZpZWQga2V5IGZ1bmN0aW9uLlxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICB2YXIgaSA9IC0xLFxuICAgICAgICBuID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgICAgbztcblxuICAgIGlmIChmID09IG51bGwpIHdoaWxlICgrK2kgPCBuKSBtYXAuc2V0KGksIG9iamVjdFtpXSk7XG4gICAgZWxzZSB3aGlsZSAoKytpIDwgbikgbWFwLnNldChmKG8gPSBvYmplY3RbaV0sIGksIG9iamVjdCksIG8pO1xuICB9XG5cbiAgLy8gQ29udmVydCBvYmplY3QgdG8gbWFwLlxuICBlbHNlIGlmIChvYmplY3QpIGZvciAodmFyIGtleSBpbiBvYmplY3QpIG1hcC5zZXQoa2V5LCBvYmplY3Rba2V5XSk7XG5cbiAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwO1xuIiwiaW1wb3J0IHtkZWZhdWx0IGFzIG1hcCwgcHJlZml4fSBmcm9tIFwiLi9tYXBcIjtcblxuZnVuY3Rpb24gU2V0KCkge31cblxudmFyIHByb3RvID0gbWFwLnByb3RvdHlwZTtcblxuU2V0LnByb3RvdHlwZSA9IHNldC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZXQsXG4gIGhhczogcHJvdG8uaGFzLFxuICBhZGQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFsdWUgKz0gXCJcIjtcbiAgICB0aGlzW3ByZWZpeCArIHZhbHVlXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmU6IHByb3RvLnJlbW92ZSxcbiAgY2xlYXI6IHByb3RvLmNsZWFyLFxuICB2YWx1ZXM6IHByb3RvLmtleXMsXG4gIHNpemU6IHByb3RvLnNpemUsXG4gIGVtcHR5OiBwcm90by5lbXB0eSxcbiAgZWFjaDogcHJvdG8uZWFjaFxufTtcblxuZnVuY3Rpb24gc2V0KG9iamVjdCwgZikge1xuICB2YXIgc2V0ID0gbmV3IFNldDtcblxuICAvLyBDb3B5IGNvbnN0cnVjdG9yLlxuICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2V0KSBvYmplY3QuZWFjaChmdW5jdGlvbih2YWx1ZSkgeyBzZXQuYWRkKHZhbHVlKTsgfSk7XG5cbiAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaXTigJlzIGFuIGFycmF5LlxuICBlbHNlIGlmIChvYmplY3QpIHtcbiAgICB2YXIgaSA9IC0xLCBuID0gb2JqZWN0Lmxlbmd0aDtcbiAgICBpZiAoZiA9PSBudWxsKSB3aGlsZSAoKytpIDwgbikgc2V0LmFkZChvYmplY3RbaV0pO1xuICAgIGVsc2Ugd2hpbGUgKCsraSA8IG4pIHNldC5hZGQoZihvYmplY3RbaV0sIGksIG9iamVjdCkpO1xuICB9XG5cbiAgcmV0dXJuIHNldDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0O1xuIiwiZnVuY3Rpb24gb2JqZWN0Q29udmVydGVyKGNvbHVtbnMpIHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbihcImRcIiwgXCJyZXR1cm4ge1wiICsgY29sdW1ucy5tYXAoZnVuY3Rpb24obmFtZSwgaSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShuYW1lKSArIFwiOiBkW1wiICsgaSArIFwiXVwiO1xuICB9KS5qb2luKFwiLFwiKSArIFwifVwiKTtcbn1cblxuZnVuY3Rpb24gY3VzdG9tQ29udmVydGVyKGNvbHVtbnMsIGYpIHtcbiAgdmFyIG9iamVjdCA9IG9iamVjdENvbnZlcnRlcihjb2x1bW5zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJvdywgaSkge1xuICAgIHJldHVybiBmKG9iamVjdChyb3cpLCBpLCBjb2x1bW5zKTtcbiAgfTtcbn1cblxuLy8gQ29tcHV0ZSB1bmlxdWUgY29sdW1ucyBpbiBvcmRlciBvZiBkaXNjb3ZlcnkuXG5mdW5jdGlvbiBpbmZlckNvbHVtbnMocm93cykge1xuICB2YXIgY29sdW1uU2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgIGNvbHVtbnMgPSBbXTtcblxuICByb3dzLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgZm9yICh2YXIgY29sdW1uIGluIHJvdykge1xuICAgICAgaWYgKCEoY29sdW1uIGluIGNvbHVtblNldCkpIHtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtblNldFtjb2x1bW5dID0gY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb2x1bW5zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWxpbWl0ZXIpIHtcbiAgdmFyIHJlRm9ybWF0ID0gbmV3IFJlZ0V4cChcIltcXFwiXCIgKyBkZWxpbWl0ZXIgKyBcIlxcblxccl1cIiksXG4gICAgICBkZWxpbWl0ZXJDb2RlID0gZGVsaW1pdGVyLmNoYXJDb2RlQXQoMCk7XG5cbiAgZnVuY3Rpb24gcGFyc2UodGV4dCwgZikge1xuICAgIHZhciBjb252ZXJ0LCBjb2x1bW5zLCByb3dzID0gcGFyc2VSb3dzKHRleHQsIGZ1bmN0aW9uKHJvdywgaSkge1xuICAgICAgaWYgKGNvbnZlcnQpIHJldHVybiBjb252ZXJ0KHJvdywgaSAtIDEpO1xuICAgICAgY29sdW1ucyA9IHJvdywgY29udmVydCA9IGYgPyBjdXN0b21Db252ZXJ0ZXIocm93LCBmKSA6IG9iamVjdENvbnZlcnRlcihyb3cpO1xuICAgIH0pO1xuICAgIHJvd3MuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVJvd3ModGV4dCwgZikge1xuICAgIHZhciBFT0wgPSB7fSwgLy8gc2VudGluZWwgdmFsdWUgZm9yIGVuZC1vZi1saW5lXG4gICAgICAgIEVPRiA9IHt9LCAvLyBzZW50aW5lbCB2YWx1ZSBmb3IgZW5kLW9mLWZpbGVcbiAgICAgICAgcm93cyA9IFtdLCAvLyBvdXRwdXQgcm93c1xuICAgICAgICBOID0gdGV4dC5sZW5ndGgsXG4gICAgICAgIEkgPSAwLCAvLyBjdXJyZW50IGNoYXJhY3RlciBpbmRleFxuICAgICAgICBuID0gMCwgLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgICAgdCwgLy8gdGhlIGN1cnJlbnQgdG9rZW5cbiAgICAgICAgZW9sOyAvLyBpcyB0aGUgY3VycmVudCB0b2tlbiBmb2xsb3dlZCBieSBFT0w/XG5cbiAgICBmdW5jdGlvbiB0b2tlbigpIHtcbiAgICAgIGlmIChJID49IE4pIHJldHVybiBFT0Y7IC8vIHNwZWNpYWwgY2FzZTogZW5kIG9mIGZpbGVcbiAgICAgIGlmIChlb2wpIHJldHVybiBlb2wgPSBmYWxzZSwgRU9MOyAvLyBzcGVjaWFsIGNhc2U6IGVuZCBvZiBsaW5lXG5cbiAgICAgIC8vIHNwZWNpYWwgY2FzZTogcXVvdGVzXG4gICAgICB2YXIgaiA9IEksIGM7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KGopID09PSAzNCkge1xuICAgICAgICB2YXIgaSA9IGo7XG4gICAgICAgIHdoaWxlIChpKysgPCBOKSB7XG4gICAgICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChpKSA9PT0gMzQpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSArIDEpICE9PSAzNCkgYnJlYWs7XG4gICAgICAgICAgICArK2k7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEkgPSBpICsgMjtcbiAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICAgIGlmIChjID09PSAxMykge1xuICAgICAgICAgIGVvbCA9IHRydWU7XG4gICAgICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChpICsgMikgPT09IDEwKSArK0k7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gMTApIHtcbiAgICAgICAgICBlb2wgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGogKyAxLCBpKS5yZXBsYWNlKC9cIlwiL2csIFwiXFxcIlwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gY29tbW9uIGNhc2U6IGZpbmQgbmV4dCBkZWxpbWl0ZXIgb3IgbmV3bGluZVxuICAgICAgd2hpbGUgKEkgPCBOKSB7XG4gICAgICAgIHZhciBrID0gMTtcbiAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChJKyspO1xuICAgICAgICBpZiAoYyA9PT0gMTApIGVvbCA9IHRydWU7IC8vIFxcblxuICAgICAgICBlbHNlIGlmIChjID09PSAxMykgeyBlb2wgPSB0cnVlOyBpZiAodGV4dC5jaGFyQ29kZUF0KEkpID09PSAxMCkgKytJLCArK2s7IH0gLy8gXFxyfFxcclxcblxuICAgICAgICBlbHNlIGlmIChjICE9PSBkZWxpbWl0ZXJDb2RlKSBjb250aW51ZTtcbiAgICAgICAgcmV0dXJuIHRleHQuc2xpY2UoaiwgSSAtIGspO1xuICAgICAgfVxuXG4gICAgICAvLyBzcGVjaWFsIGNhc2U6IGxhc3QgdG9rZW4gYmVmb3JlIEVPRlxuICAgICAgcmV0dXJuIHRleHQuc2xpY2Uoaik7XG4gICAgfVxuXG4gICAgd2hpbGUgKCh0ID0gdG9rZW4oKSkgIT09IEVPRikge1xuICAgICAgdmFyIGEgPSBbXTtcbiAgICAgIHdoaWxlICh0ICE9PSBFT0wgJiYgdCAhPT0gRU9GKSB7XG4gICAgICAgIGEucHVzaCh0KTtcbiAgICAgICAgdCA9IHRva2VuKCk7XG4gICAgICB9XG4gICAgICBpZiAoZiAmJiAoYSA9IGYoYSwgbisrKSkgPT0gbnVsbCkgY29udGludWU7XG4gICAgICByb3dzLnB1c2goYSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXQocm93cywgY29sdW1ucykge1xuICAgIGlmIChjb2x1bW5zID09IG51bGwpIGNvbHVtbnMgPSBpbmZlckNvbHVtbnMocm93cyk7XG4gICAgcmV0dXJuIFtjb2x1bW5zLm1hcChmb3JtYXRWYWx1ZSkuam9pbihkZWxpbWl0ZXIpXS5jb25jYXQocm93cy5tYXAoZnVuY3Rpb24ocm93KSB7XG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRWYWx1ZShyb3dbY29sdW1uXSk7XG4gICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgfSkpLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRSb3dzKHJvd3MpIHtcbiAgICByZXR1cm4gcm93cy5tYXAoZm9ybWF0Um93KS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0Um93KHJvdykge1xuICAgIHJldHVybiByb3cubWFwKGZvcm1hdFZhbHVlKS5qb2luKGRlbGltaXRlcik7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRWYWx1ZSh0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/IFwiXCJcbiAgICAgICAgOiByZUZvcm1hdC50ZXN0KHRleHQgKz0gXCJcIikgPyBcIlxcXCJcIiArIHRleHQucmVwbGFjZSgvXFxcIi9nLCBcIlxcXCJcXFwiXCIpICsgXCJcXFwiXCJcbiAgICAgICAgOiB0ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgcGFyc2VSb3dzOiBwYXJzZVJvd3MsXG4gICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgZm9ybWF0Um93czogZm9ybWF0Um93c1xuICB9O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICB2YXIgeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCksXG4gICAgICB5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKTtcbiAgcmV0dXJuIGFkZCh0aGlzLmNvdmVyKHgsIHkpLCB4LCB5LCBkKTtcbn1cblxuZnVuY3Rpb24gYWRkKHRyZWUsIHgsIHksIGQpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gdHJlZTsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0cmVlLl9yb290LFxuICAgICAgbGVhZiA9IHtkYXRhOiBkfSxcbiAgICAgIHgwID0gdHJlZS5feDAsXG4gICAgICB5MCA9IHRyZWUuX3kwLFxuICAgICAgeDEgPSB0cmVlLl94MSxcbiAgICAgIHkxID0gdHJlZS5feTEsXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgeHAsXG4gICAgICB5cCxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0cmVlLl9yb290ID0gbGVhZiwgdHJlZTtcblxuICAvLyBGaW5kIHRoZSBleGlzdGluZyBsZWFmIGZvciB0aGUgbmV3IHBvaW50LCBvciBhZGQgaXQuXG4gIHdoaWxlIChub2RlLmxlbmd0aCkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmIChwYXJlbnQgPSBub2RlLCAhKG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xuICB9XG5cbiAgLy8gSXMgdGhlIG5ldyBwb2ludCBpcyBleGFjdGx5IGNvaW5jaWRlbnQgd2l0aCB0aGUgZXhpc3RpbmcgcG9pbnQ/XG4gIHhwID0gK3RyZWUuX3guY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICB5cCA9ICt0cmVlLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKTtcbiAgaWYgKHggPT09IHhwICYmIHkgPT09IHlwKSByZXR1cm4gbGVhZi5uZXh0ID0gbm9kZSwgcGFyZW50ID8gcGFyZW50W2ldID0gbGVhZiA6IHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIE90aGVyd2lzZSwgc3BsaXQgdGhlIGxlYWYgbm9kZSB1bnRpbCB0aGUgb2xkIGFuZCBuZXcgcG9pbnQgYXJlIHNlcGFyYXRlZC5cbiAgZG8ge1xuICAgIHBhcmVudCA9IHBhcmVudCA/IHBhcmVudFtpXSA9IG5ldyBBcnJheSg0KSA6IHRyZWUuX3Jvb3QgPSBuZXcgQXJyYXkoNCk7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gIH0gd2hpbGUgKChpID0gYm90dG9tIDw8IDEgfCByaWdodCkgPT09IChqID0gKHlwID49IHltKSA8PCAxIHwgKHhwID49IHhtKSkpO1xuICByZXR1cm4gcGFyZW50W2pdID0gbm9kZSwgcGFyZW50W2ldID0gbGVhZiwgdHJlZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbChkYXRhKSB7XG4gIHZhciBkLCBpLCBuID0gZGF0YS5sZW5ndGgsXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHh6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeXogPSBuZXcgQXJyYXkobiksXG4gICAgICB4MCA9IEluZmluaXR5LFxuICAgICAgeTAgPSBJbmZpbml0eSxcbiAgICAgIHgxID0gLUluZmluaXR5LFxuICAgICAgeTEgPSAtSW5maW5pdHk7XG5cbiAgLy8gQ29tcHV0ZSB0aGUgcG9pbnRzIGFuZCB0aGVpciBleHRlbnQuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCA9IGRhdGFbaV0pKSB8fCBpc05hTih5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKSkpIGNvbnRpbnVlO1xuICAgIHh6W2ldID0geDtcbiAgICB5eltpXSA9IHk7XG4gICAgaWYgKHggPCB4MCkgeDAgPSB4O1xuICAgIGlmICh4ID4geDEpIHgxID0geDtcbiAgICBpZiAoeSA8IHkwKSB5MCA9IHk7XG4gICAgaWYgKHkgPiB5MSkgeTEgPSB5O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgd2VyZSBubyAodmFsaWQpIHBvaW50cywgaW5oZXJpdCB0aGUgZXhpc3RpbmcgZXh0ZW50LlxuICBpZiAoeDEgPCB4MCkgeDAgPSB0aGlzLl94MCwgeDEgPSB0aGlzLl94MTtcbiAgaWYgKHkxIDwgeTApIHkwID0gdGhpcy5feTAsIHkxID0gdGhpcy5feTE7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHJldGFpbmVyLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBuZXh0LFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0aGlzO1xuXG4gIC8vIEZpbmQgdGhlIGxlYWYgbm9kZSBmb3IgdGhlIHBvaW50LlxuICAvLyBXaGlsZSBkZXNjZW5kaW5nLCBhbHNvIHJldGFpbiB0aGUgZGVlcGVzdCBwYXJlbnQgd2l0aCBhIG5vbi1yZW1vdmVkIHNpYmxpbmcuXG4gIGlmIChub2RlLmxlbmd0aCkgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAoIShwYXJlbnQgPSBub2RlLCBub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBicmVhaztcbiAgICBpZiAocGFyZW50WyhpICsgMSkgJiAzXSB8fCBwYXJlbnRbKGkgKyAyKSAmIDNdIHx8IHBhcmVudFsoaSArIDMpICYgM10pIHJldGFpbmVyID0gcGFyZW50LCBqID0gaTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHBvaW50IHRvIHJlbW92ZS5cbiAgd2hpbGUgKG5vZGUuZGF0YSAhPT0gZCkgaWYgKCEocHJldmlvdXMgPSBub2RlLCBub2RlID0gbm9kZS5uZXh0KSkgcmV0dXJuIHRoaXM7XG4gIGlmIChuZXh0ID0gbm9kZS5uZXh0KSBkZWxldGUgbm9kZS5uZXh0O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb2luY2lkZW50IHBvaW50cywgcmVtb3ZlIGp1c3QgdGhlIHBvaW50LlxuICBpZiAocHJldmlvdXMpIHJldHVybiAobmV4dCA/IHByZXZpb3VzLm5leHQgPSBuZXh0IDogZGVsZXRlIHByZXZpb3VzLm5leHQpLCB0aGlzO1xuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHJvb3QgcG9pbnQsIHJlbW92ZSBpdC5cbiAgaWYgKCFwYXJlbnQpIHJldHVybiB0aGlzLl9yb290ID0gbmV4dCwgdGhpcztcblxuICAvLyBSZW1vdmUgdGhpcyBsZWFmLlxuICBuZXh0ID8gcGFyZW50W2ldID0gbmV4dCA6IGRlbGV0ZSBwYXJlbnRbaV07XG5cbiAgLy8gSWYgdGhlIHBhcmVudCBub3cgY29udGFpbnMgZXhhY3RseSBvbmUgbGVhZiwgY29sbGFwc2Ugc3VwZXJmbHVvdXMgcGFyZW50cy5cbiAgaWYgKChub2RlID0gcGFyZW50WzBdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzNdKVxuICAgICAgJiYgbm9kZSA9PT0gKHBhcmVudFszXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFswXSlcbiAgICAgICYmICFub2RlLmxlbmd0aCkge1xuICAgIGlmIChyZXRhaW5lcikgcmV0YWluZXJbal0gPSBub2RlO1xuICAgIGVsc2UgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFsbChkYXRhKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpIHRoaXMucmVtb3ZlKGRhdGFbaV0pO1xuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0WChkKSB7XG4gIHJldHVybiBkWzBdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3ggPSBfLCB0aGlzKSA6IHRoaXMuX3g7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFkoZCkge1xuICByZXR1cm4gZFsxXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95ID0gXywgdGhpcykgOiB0aGlzLl95O1xufVxuIiwiaW1wb3J0IHRyZWVfYWRkLCB7YWRkQWxsIGFzIHRyZWVfYWRkQWxsfSBmcm9tIFwiLi9hZGRcIjtcbmltcG9ydCB0cmVlX2NvdmVyIGZyb20gXCIuL2NvdmVyXCI7XG5pbXBvcnQgdHJlZV9kYXRhIGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB0cmVlX2V4dGVudCBmcm9tIFwiLi9leHRlbnRcIjtcbmltcG9ydCB0cmVlX2ZpbmQgZnJvbSBcIi4vZmluZFwiO1xuaW1wb3J0IHRyZWVfcmVtb3ZlLCB7cmVtb3ZlQWxsIGFzIHRyZWVfcmVtb3ZlQWxsfSBmcm9tIFwiLi9yZW1vdmVcIjtcbmltcG9ydCB0cmVlX3Jvb3QgZnJvbSBcIi4vcm9vdFwiO1xuaW1wb3J0IHRyZWVfc2l6ZSBmcm9tIFwiLi9zaXplXCI7XG5pbXBvcnQgdHJlZV92aXNpdCBmcm9tIFwiLi92aXNpdFwiO1xuaW1wb3J0IHRyZWVfdmlzaXRBZnRlciBmcm9tIFwiLi92aXNpdEFmdGVyXCI7XG5pbXBvcnQgdHJlZV94LCB7ZGVmYXVsdFh9IGZyb20gXCIuL3hcIjtcbmltcG9ydCB0cmVlX3ksIHtkZWZhdWx0WX0gZnJvbSBcIi4veVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSB0cmVlX2FkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHRyZWVfcmVtb3ZlQWxsO1xudHJlZVByb3RvLnJvb3QgPSB0cmVlX3Jvb3Q7XG50cmVlUHJvdG8uc2l6ZSA9IHRyZWVfc2l6ZTtcbnRyZWVQcm90by52aXNpdCA9IHRyZWVfdmlzaXQ7XG50cmVlUHJvdG8udmlzaXRBZnRlciA9IHRyZWVfdmlzaXRBZnRlcjtcbnRyZWVQcm90by54ID0gdHJlZV94O1xudHJlZVByb3RvLnkgPSB0cmVlX3k7XG4iLCJpbXBvcnQgZm9ybWF0VHlwZXMgZnJvbSBcIi4vZm9ybWF0VHlwZXNcIjtcblxuLy8gW1tmaWxsXWFsaWduXVtzaWduXVtzeW1ib2xdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxudmFyIHJlID0gL14oPzooLik/KFs8Pj1eXSkpPyhbK1xcLVxcKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyhbYS16JV0pPyQvaTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICByZXR1cm4gbmV3IEZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5mdW5jdGlvbiBGb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gIGlmICghKG1hdGNoID0gcmUuZXhlYyhzcGVjaWZpZXIpKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBmb3JtYXQ6IFwiICsgc3BlY2lmaWVyKTtcblxuICB2YXIgbWF0Y2gsXG4gICAgICBmaWxsID0gbWF0Y2hbMV0gfHwgXCIgXCIsXG4gICAgICBhbGlnbiA9IG1hdGNoWzJdIHx8IFwiPlwiLFxuICAgICAgc2lnbiA9IG1hdGNoWzNdIHx8IFwiLVwiLFxuICAgICAgc3ltYm9sID0gbWF0Y2hbNF0gfHwgXCJcIixcbiAgICAgIHplcm8gPSAhIW1hdGNoWzVdLFxuICAgICAgd2lkdGggPSBtYXRjaFs2XSAmJiArbWF0Y2hbNl0sXG4gICAgICBjb21tYSA9ICEhbWF0Y2hbN10sXG4gICAgICBwcmVjaXNpb24gPSBtYXRjaFs4XSAmJiArbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgICB0eXBlID0gbWF0Y2hbOV0gfHwgXCJcIjtcblxuICAvLyBUaGUgXCJuXCIgdHlwZSBpcyBhbiBhbGlhcyBmb3IgXCIsZ1wiLlxuICBpZiAodHlwZSA9PT0gXCJuXCIpIGNvbW1hID0gdHJ1ZSwgdHlwZSA9IFwiZ1wiO1xuXG4gIC8vIE1hcCBpbnZhbGlkIHR5cGVzIHRvIHRoZSBkZWZhdWx0IGZvcm1hdC5cbiAgZWxzZSBpZiAoIWZvcm1hdFR5cGVzW3R5cGVdKSB0eXBlID0gXCJcIjtcblxuICAvLyBJZiB6ZXJvIGZpbGwgaXMgc3BlY2lmaWVkLCBwYWRkaW5nIGdvZXMgYWZ0ZXIgc2lnbiBhbmQgYmVmb3JlIGRpZ2l0cy5cbiAgaWYgKHplcm8gfHwgKGZpbGwgPT09IFwiMFwiICYmIGFsaWduID09PSBcIj1cIikpIHplcm8gPSB0cnVlLCBmaWxsID0gXCIwXCIsIGFsaWduID0gXCI9XCI7XG5cbiAgdGhpcy5maWxsID0gZmlsbDtcbiAgdGhpcy5hbGlnbiA9IGFsaWduO1xuICB0aGlzLnNpZ24gPSBzaWduO1xuICB0aGlzLnN5bWJvbCA9IHN5bWJvbDtcbiAgdGhpcy56ZXJvID0gemVybztcbiAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB0aGlzLmNvbW1hID0gY29tbWE7XG4gIHRoaXMucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xufVxuXG5Gb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZpbGxcbiAgICAgICsgdGhpcy5hbGlnblxuICAgICAgKyB0aGlzLnNpZ25cbiAgICAgICsgdGhpcy5zeW1ib2xcbiAgICAgICsgKHRoaXMuemVybyA/IFwiMFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMud2lkdGggPT0gbnVsbCA/IFwiXCIgOiBNYXRoLm1heCgxLCB0aGlzLndpZHRoIHwgMCkpXG4gICAgICArICh0aGlzLmNvbW1hID8gXCIsXCIgOiBcIlwiKVxuICAgICAgKyAodGhpcy5wcmVjaXNpb24gPT0gbnVsbCA/IFwiXCIgOiBcIi5cIiArIE1hdGgubWF4KDAsIHRoaXMucHJlY2lzaW9uIHwgMCkpXG4gICAgICArIHRoaXMudHlwZTtcbn07XG4iLCIvLyBBZGRzIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgd2l0aCB0d2ljZSB0aGUgbm9ybWFsIHByZWNpc2lvbi5cbi8vIFJlZmVyZW5jZTogSi4gUi4gU2hld2NodWssIEFkYXB0aXZlIFByZWNpc2lvbiBGbG9hdGluZy1Qb2ludCBBcml0aG1ldGljIGFuZFxuLy8gRmFzdCBSb2J1c3QgR2VvbWV0cmljIFByZWRpY2F0ZXMsIERpc2NyZXRlICYgQ29tcHV0YXRpb25hbCBHZW9tZXRyeSAxOCgzKVxuLy8gMzA14oCTMzYzICgxOTk3KS5cbi8vIENvZGUgYWRhcHRlZCBmcm9tIEdlb2dyYXBoaWNMaWIgYnkgQ2hhcmxlcyBGLiBGLiBLYXJuZXksXG4vLyBodHRwOi8vZ2VvZ3JhcGhpY2xpYi5zb3VyY2Vmb3JnZS5uZXQvXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IEFkZGVyO1xufVxuXG5mdW5jdGlvbiBBZGRlcigpIHtcbiAgdGhpcy5yZXNldCgpO1xufVxuXG5BZGRlci5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBBZGRlcixcbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucyA9IC8vIHJvdW5kZWQgdmFsdWVcbiAgICB0aGlzLnQgPSAwOyAvLyBleGFjdCBlcnJvclxuICB9LFxuICBhZGQ6IGZ1bmN0aW9uKHkpIHtcbiAgICBhZGQodGVtcCwgeSwgdGhpcy50KTtcbiAgICBhZGQodGhpcywgdGVtcC5zLCB0aGlzLnMpO1xuICAgIGlmICh0aGlzLnMpIHRoaXMudCArPSB0ZW1wLnQ7XG4gICAgZWxzZSB0aGlzLnMgPSB0ZW1wLnQ7XG4gIH0sXG4gIHZhbHVlT2Y6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnM7XG4gIH1cbn07XG5cbnZhciB0ZW1wID0gbmV3IEFkZGVyO1xuXG5mdW5jdGlvbiBhZGQoYWRkZXIsIGEsIGIpIHtcbiAgdmFyIHggPSBhZGRlci5zID0gYSArIGIsXG4gICAgICBidiA9IHggLSBhLFxuICAgICAgYXYgPSB4IC0gYnY7XG4gIGFkZGVyLnQgPSAoYSAtIGF2KSArIChiIC0gYnYpO1xufVxuIiwiZXhwb3J0IHZhciBlcHNpbG9uID0gMWUtNjtcbmV4cG9ydCB2YXIgZXBzaWxvbjIgPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHF1YXJ0ZXJQaSA9IHBpIC8gNDtcbmV4cG9ydCB2YXIgdGF1ID0gcGkgKiAyO1xuXG5leHBvcnQgdmFyIGRlZ3JlZXMgPSAxODAgLyBwaTtcbmV4cG9ydCB2YXIgcmFkaWFucyA9IHBpIC8gMTgwO1xuXG5leHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuID0gTWF0aC5hdGFuO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBjZWlsID0gTWF0aC5jZWlsO1xuZXhwb3J0IHZhciBleHAgPSBNYXRoLmV4cDtcbmV4cG9ydCB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuZXhwb3J0IHZhciBsb2cgPSBNYXRoLmxvZztcbmV4cG9ydCB2YXIgcG93ID0gTWF0aC5wb3c7XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzaWduID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9O1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuZXhwb3J0IHZhciB0YW4gPSBNYXRoLnRhbjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gaGFsZlBpIDogeCA8IC0xID8gLWhhbGZQaSA6IE1hdGguYXNpbih4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhdmVyc2luKHgpIHtcbiAgcmV0dXJuICh4ID0gc2luKHggLyAyKSkgKiB4O1xufVxuIiwiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxSYXcoc2NhbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgY3ggPSBjb3MoeCksXG4gICAgICAgIGN5ID0gY29zKHkpLFxuICAgICAgICBrID0gc2NhbGUoY3ggKiBjeSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGsgKiBjeSAqIHNpbih4KSxcbiAgICAgIGsgKiBzaW4oeSlcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxJbnZlcnQoYW5nbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgeiA9IHNxcnQoeCAqIHggKyB5ICogeSksXG4gICAgICAgIGMgPSBhbmdsZSh6KSxcbiAgICAgICAgc2MgPSBzaW4oYyksXG4gICAgICAgIGNjID0gY29zKGMpO1xuICAgIHJldHVybiBbXG4gICAgICBhdGFuMih4ICogc2MsIHogKiBjYyksXG4gICAgICBhc2luKHogJiYgeSAqIHNjIC8geilcbiAgICBdO1xuICB9XG59XG4iLCJmdW5jdGlvbiBjb3VudChub2RlKSB7XG4gIHZhciBzdW0gPSAwLFxuICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKCFpKSBzdW0gPSAxO1xuICBlbHNlIHdoaWxlICgtLWkgPj0gMCkgc3VtICs9IGNoaWxkcmVuW2ldLnZhbHVlO1xuICBub2RlLnZhbHVlID0gc3VtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEFmdGVyKGNvdW50KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGVuZCkge1xuICB2YXIgc3RhcnQgPSB0aGlzLFxuICAgICAgYW5jZXN0b3IgPSBsZWFzdENvbW1vbkFuY2VzdG9yKHN0YXJ0LCBlbmQpLFxuICAgICAgbm9kZXMgPSBbc3RhcnRdO1xuICB3aGlsZSAoc3RhcnQgIT09IGFuY2VzdG9yKSB7XG4gICAgc3RhcnQgPSBzdGFydC5wYXJlbnQ7XG4gICAgbm9kZXMucHVzaChzdGFydCk7XG4gIH1cbiAgdmFyIGsgPSBub2Rlcy5sZW5ndGg7XG4gIHdoaWxlIChlbmQgIT09IGFuY2VzdG9yKSB7XG4gICAgbm9kZXMuc3BsaWNlKGssIDAsIGVuZCk7XG4gICAgZW5kID0gZW5kLnBhcmVudDtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5cbmZ1bmN0aW9uIGxlYXN0Q29tbW9uQW5jZXN0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIGE7XG4gIHZhciBhTm9kZXMgPSBhLmFuY2VzdG9ycygpLFxuICAgICAgYk5vZGVzID0gYi5hbmNlc3RvcnMoKSxcbiAgICAgIGMgPSBudWxsO1xuICBhID0gYU5vZGVzLnBvcCgpO1xuICBiID0gYk5vZGVzLnBvcCgpO1xuICB3aGlsZSAoYSA9PT0gYikge1xuICAgIGMgPSBhO1xuICAgIGEgPSBhTm9kZXMucG9wKCk7XG4gICAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgfVxuICByZXR1cm4gYztcbn1cbiIsImltcG9ydCBub2RlX2NvdW50IGZyb20gXCIuL2NvdW50XCI7XG5pbXBvcnQgbm9kZV9lYWNoIGZyb20gXCIuL2VhY2hcIjtcbmltcG9ydCBub2RlX2VhY2hCZWZvcmUgZnJvbSBcIi4vZWFjaEJlZm9yZVwiO1xuaW1wb3J0IG5vZGVfZWFjaEFmdGVyIGZyb20gXCIuL2VhY2hBZnRlclwiO1xuaW1wb3J0IG5vZGVfc3VtIGZyb20gXCIuL3N1bVwiO1xuaW1wb3J0IG5vZGVfc29ydCBmcm9tIFwiLi9zb3J0XCI7XG5pbXBvcnQgbm9kZV9wYXRoIGZyb20gXCIuL3BhdGhcIjtcbmltcG9ydCBub2RlX2FuY2VzdG9ycyBmcm9tIFwiLi9hbmNlc3RvcnNcIjtcbmltcG9ydCBub2RlX2Rlc2NlbmRhbnRzIGZyb20gXCIuL2Rlc2NlbmRhbnRzXCI7XG5pbXBvcnQgbm9kZV9sZWF2ZXMgZnJvbSBcIi4vbGVhdmVzXCI7XG5pbXBvcnQgbm9kZV9saW5rcyBmcm9tIFwiLi9saW5rc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoaWVyYXJjaHkoZGF0YSwgY2hpbGRyZW4pIHtcbiAgdmFyIHJvb3QgPSBuZXcgTm9kZShkYXRhKSxcbiAgICAgIHZhbHVlZCA9ICtkYXRhLnZhbHVlICYmIChyb290LnZhbHVlID0gZGF0YS52YWx1ZSksXG4gICAgICBub2RlLFxuICAgICAgbm9kZXMgPSBbcm9vdF0sXG4gICAgICBjaGlsZCxcbiAgICAgIGNoaWxkcyxcbiAgICAgIGksXG4gICAgICBuO1xuXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSBjaGlsZHJlbiA9IGRlZmF1bHRDaGlsZHJlbjtcblxuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgaWYgKHZhbHVlZCkgbm9kZS52YWx1ZSA9ICtub2RlLmRhdGEudmFsdWU7XG4gICAgaWYgKChjaGlsZHMgPSBjaGlsZHJlbihub2RlLmRhdGEpKSAmJiAobiA9IGNoaWxkcy5sZW5ndGgpKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gbmV3IEFycmF5KG4pO1xuICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldID0gbmV3IE5vZGUoY2hpbGRzW2ldKSk7XG4gICAgICAgIGNoaWxkLnBhcmVudCA9IG5vZGU7XG4gICAgICAgIGNoaWxkLmRlcHRoID0gbm9kZS5kZXB0aCArIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJvb3QuZWFjaEJlZm9yZShjb21wdXRlSGVpZ2h0KTtcbn1cblxuZnVuY3Rpb24gbm9kZV9jb3B5KCkge1xuICByZXR1cm4gaGllcmFyY2h5KHRoaXMpLmVhY2hCZWZvcmUoY29weURhdGEpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q2hpbGRyZW4oZCkge1xuICByZXR1cm4gZC5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gY29weURhdGEobm9kZSkge1xuICBub2RlLmRhdGEgPSBub2RlLmRhdGEuZGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVIZWlnaHQobm9kZSkge1xuICB2YXIgaGVpZ2h0ID0gMDtcbiAgZG8gbm9kZS5oZWlnaHQgPSBoZWlnaHQ7XG4gIHdoaWxlICgobm9kZSA9IG5vZGUucGFyZW50KSAmJiAobm9kZS5oZWlnaHQgPCArK2hlaWdodCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTm9kZShkYXRhKSB7XG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMuZGVwdGggPVxuICB0aGlzLmhlaWdodCA9IDA7XG4gIHRoaXMucGFyZW50ID0gbnVsbDtcbn1cblxuTm9kZS5wcm90b3R5cGUgPSBoaWVyYXJjaHkucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogTm9kZSxcbiAgY291bnQ6IG5vZGVfY291bnQsXG4gIGVhY2g6IG5vZGVfZWFjaCxcbiAgZWFjaEFmdGVyOiBub2RlX2VhY2hBZnRlcixcbiAgZWFjaEJlZm9yZTogbm9kZV9lYWNoQmVmb3JlLFxuICBzdW06IG5vZGVfc3VtLFxuICBzb3J0OiBub2RlX3NvcnQsXG4gIHBhdGg6IG5vZGVfcGF0aCxcbiAgYW5jZXN0b3JzOiBub2RlX2FuY2VzdG9ycyxcbiAgZGVzY2VuZGFudHM6IG5vZGVfZGVzY2VuZGFudHMsXG4gIGxlYXZlczogbm9kZV9sZWF2ZXMsXG4gIGxpbmtzOiBub2RlX2xpbmtzLFxuICBjb3B5OiBub2RlX2NvcHlcbn07XG4iLCJpbXBvcnQge05vZGV9IGZyb20gXCIuL2hpZXJhcmNoeS9pbmRleFwiO1xuXG5mdW5jdGlvbiBkZWZhdWx0U2VwYXJhdGlvbihhLCBiKSB7XG4gIHJldHVybiBhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMjtcbn1cblxuLy8gZnVuY3Rpb24gcmFkaWFsU2VwYXJhdGlvbihhLCBiKSB7XG4vLyAgIHJldHVybiAoYS5wYXJlbnQgPT09IGIucGFyZW50ID8gMSA6IDIpIC8gYS5kZXB0aDtcbi8vIH1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRyYXZlcnNlIHRoZSBsZWZ0IGNvbnRvdXIgb2YgYSBzdWJ0cmVlIChvclxuLy8gc3ViZm9yZXN0KS4gSXQgcmV0dXJucyB0aGUgc3VjY2Vzc29yIG9mIHYgb24gdGhpcyBjb250b3VyLiBUaGlzIHN1Y2Nlc3NvciBpc1xuLy8gZWl0aGVyIGdpdmVuIGJ5IHRoZSBsZWZ0bW9zdCBjaGlsZCBvZiB2IG9yIGJ5IHRoZSB0aHJlYWQgb2Ygdi4gVGhlIGZ1bmN0aW9uXG4vLyByZXR1cm5zIG51bGwgaWYgYW5kIG9ubHkgaWYgdiBpcyBvbiB0aGUgaGlnaGVzdCBsZXZlbCBvZiBpdHMgc3VidHJlZS5cbmZ1bmN0aW9uIG5leHRMZWZ0KHYpIHtcbiAgdmFyIGNoaWxkcmVuID0gdi5jaGlsZHJlbjtcbiAgcmV0dXJuIGNoaWxkcmVuID8gY2hpbGRyZW5bMF0gOiB2LnQ7XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gd29ya3MgYW5hbG9nb3VzbHkgdG8gbmV4dExlZnQuXG5mdW5jdGlvbiBuZXh0UmlnaHQodikge1xuICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXSA6IHYudDtcbn1cblxuLy8gU2hpZnRzIHRoZSBjdXJyZW50IHN1YnRyZWUgcm9vdGVkIGF0IHcrLiBUaGlzIGlzIGRvbmUgYnkgaW5jcmVhc2luZ1xuLy8gcHJlbGltKHcrKSBhbmQgbW9kKHcrKSBieSBzaGlmdC5cbmZ1bmN0aW9uIG1vdmVTdWJ0cmVlKHdtLCB3cCwgc2hpZnQpIHtcbiAgdmFyIGNoYW5nZSA9IHNoaWZ0IC8gKHdwLmkgLSB3bS5pKTtcbiAgd3AuYyAtPSBjaGFuZ2U7XG4gIHdwLnMgKz0gc2hpZnQ7XG4gIHdtLmMgKz0gY2hhbmdlO1xuICB3cC56ICs9IHNoaWZ0O1xuICB3cC5tICs9IHNoaWZ0O1xufVxuXG4vLyBBbGwgb3RoZXIgc2hpZnRzLCBhcHBsaWVkIHRvIHRoZSBzbWFsbGVyIHN1YnRyZWVzIGJldHdlZW4gdy0gYW5kIHcrLCBhcmVcbi8vIHBlcmZvcm1lZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBwcmVwYXJlIHRoZSBzaGlmdHMsIHdlIGhhdmUgdG8gYWRqdXN0XG4vLyBjaGFuZ2UodyspLCBzaGlmdCh3KyksIGFuZCBjaGFuZ2Uody0pLlxuZnVuY3Rpb24gZXhlY3V0ZVNoaWZ0cyh2KSB7XG4gIHZhciBzaGlmdCA9IDAsXG4gICAgICBjaGFuZ2UgPSAwLFxuICAgICAgY2hpbGRyZW4gPSB2LmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgIHc7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIHcgPSBjaGlsZHJlbltpXTtcbiAgICB3LnogKz0gc2hpZnQ7XG4gICAgdy5tICs9IHNoaWZ0O1xuICAgIHNoaWZ0ICs9IHcucyArIChjaGFuZ2UgKz0gdy5jKTtcbiAgfVxufVxuXG4vLyBJZiB2aS3igJlzIGFuY2VzdG9yIGlzIGEgc2libGluZyBvZiB2LCByZXR1cm5zIHZpLeKAmXMgYW5jZXN0b3IuIE90aGVyd2lzZSxcbi8vIHJldHVybnMgdGhlIHNwZWNpZmllZCAoZGVmYXVsdCkgYW5jZXN0b3IuXG5mdW5jdGlvbiBuZXh0QW5jZXN0b3IodmltLCB2LCBhbmNlc3Rvcikge1xuICByZXR1cm4gdmltLmEucGFyZW50ID09PSB2LnBhcmVudCA/IHZpbS5hIDogYW5jZXN0b3I7XG59XG5cbmZ1bmN0aW9uIFRyZWVOb2RlKG5vZGUsIGkpIHtcbiAgdGhpcy5fID0gbm9kZTtcbiAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB0aGlzLmNoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5BID0gbnVsbDsgLy8gZGVmYXVsdCBhbmNlc3RvclxuICB0aGlzLmEgPSB0aGlzOyAvLyBhbmNlc3RvclxuICB0aGlzLnogPSAwOyAvLyBwcmVsaW1cbiAgdGhpcy5tID0gMDsgLy8gbW9kXG4gIHRoaXMuYyA9IDA7IC8vIGNoYW5nZVxuICB0aGlzLnMgPSAwOyAvLyBzaGlmdFxuICB0aGlzLnQgPSBudWxsOyAvLyB0aHJlYWRcbiAgdGhpcy5pID0gaTsgLy8gbnVtYmVyXG59XG5cblRyZWVOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTm9kZS5wcm90b3R5cGUpO1xuXG5mdW5jdGlvbiB0cmVlUm9vdChyb290KSB7XG4gIHZhciB0cmVlID0gbmV3IFRyZWVOb2RlKHJvb3QsIDApLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVzID0gW3RyZWVdLFxuICAgICAgY2hpbGQsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGksXG4gICAgICBuO1xuXG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBpZiAoY2hpbGRyZW4gPSBub2RlLl8uY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBuZXcgQXJyYXkobiA9IGNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV0gPSBuZXcgVHJlZU5vZGUoY2hpbGRyZW5baV0sIGkpKTtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAodHJlZS5wYXJlbnQgPSBuZXcgVHJlZU5vZGUobnVsbCwgMCkpLmNoaWxkcmVuID0gW3RyZWVdO1xuICByZXR1cm4gdHJlZTtcbn1cblxuLy8gTm9kZS1saW5rIHRyZWUgZGlhZ3JhbSB1c2luZyB0aGUgUmVpbmdvbGQtVGlsZm9yZCBcInRpZHlcIiBhbGdvcml0aG1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VwYXJhdGlvbiA9IGRlZmF1bHRTZXBhcmF0aW9uLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgbm9kZVNpemUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIHRyZWUocm9vdCkge1xuICAgIHZhciB0ID0gdHJlZVJvb3Qocm9vdCk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBsYXlvdXQgdXNpbmcgQnVjaGhlaW0gZXQgYWwu4oCZcyBhbGdvcml0aG0uXG4gICAgdC5lYWNoQWZ0ZXIoZmlyc3RXYWxrKSwgdC5wYXJlbnQubSA9IC10Lno7XG4gICAgdC5lYWNoQmVmb3JlKHNlY29uZFdhbGspO1xuXG4gICAgLy8gSWYgYSBmaXhlZCBub2RlIHNpemUgaXMgc3BlY2lmaWVkLCBzY2FsZSB4IGFuZCB5LlxuICAgIGlmIChub2RlU2l6ZSkgcm9vdC5lYWNoQmVmb3JlKHNpemVOb2RlKTtcblxuICAgIC8vIElmIGEgZml4ZWQgdHJlZSBzaXplIGlzIHNwZWNpZmllZCwgc2NhbGUgeCBhbmQgeSBiYXNlZCBvbiB0aGUgZXh0ZW50LlxuICAgIC8vIENvbXB1dGUgdGhlIGxlZnQtbW9zdCwgcmlnaHQtbW9zdCwgYW5kIGRlcHRoLW1vc3Qgbm9kZXMgZm9yIGV4dGVudHMuXG4gICAgZWxzZSB7XG4gICAgICB2YXIgbGVmdCA9IHJvb3QsXG4gICAgICAgICAgcmlnaHQgPSByb290LFxuICAgICAgICAgIGJvdHRvbSA9IHJvb3Q7XG4gICAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS54IDwgbGVmdC54KSBsZWZ0ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUueCA+IHJpZ2h0LngpIHJpZ2h0ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUuZGVwdGggPiBib3R0b20uZGVwdGgpIGJvdHRvbSA9IG5vZGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBzID0gbGVmdCA9PT0gcmlnaHQgPyAxIDogc2VwYXJhdGlvbihsZWZ0LCByaWdodCkgLyAyLFxuICAgICAgICAgIHR4ID0gcyAtIGxlZnQueCxcbiAgICAgICAgICBreCA9IGR4IC8gKHJpZ2h0LnggKyBzICsgdHgpLFxuICAgICAgICAgIGt5ID0gZHkgLyAoYm90dG9tLmRlcHRoIHx8IDEpO1xuICAgICAgcm9vdC5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgbm9kZS54ID0gKG5vZGUueCArIHR4KSAqIGt4O1xuICAgICAgICBub2RlLnkgPSBub2RlLmRlcHRoICoga3k7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8vIENvbXB1dGVzIGEgcHJlbGltaW5hcnkgeC1jb29yZGluYXRlIGZvciB2LiBCZWZvcmUgdGhhdCwgRklSU1QgV0FMSyBpc1xuICAvLyBhcHBsaWVkIHJlY3Vyc2l2ZWx5IHRvIHRoZSBjaGlsZHJlbiBvZiB2LCBhcyB3ZWxsIGFzIHRoZSBmdW5jdGlvblxuICAvLyBBUFBPUlRJT04uIEFmdGVyIHNwYWNpbmcgb3V0IHRoZSBjaGlsZHJlbiBieSBjYWxsaW5nIEVYRUNVVEUgU0hJRlRTLCB0aGVcbiAgLy8gbm9kZSB2IGlzIHBsYWNlZCB0byB0aGUgbWlkcG9pbnQgb2YgaXRzIG91dGVybW9zdCBjaGlsZHJlbi5cbiAgZnVuY3Rpb24gZmlyc3RXYWxrKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuLFxuICAgICAgICBzaWJsaW5ncyA9IHYucGFyZW50LmNoaWxkcmVuLFxuICAgICAgICB3ID0gdi5pID8gc2libGluZ3Nbdi5pIC0gMV0gOiBudWxsO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgZXhlY3V0ZVNoaWZ0cyh2KTtcbiAgICAgIHZhciBtaWRwb2ludCA9IChjaGlsZHJlblswXS56ICsgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0ueikgLyAyO1xuICAgICAgaWYgKHcpIHtcbiAgICAgICAgdi56ID0gdy56ICsgc2VwYXJhdGlvbih2Ll8sIHcuXyk7XG4gICAgICAgIHYubSA9IHYueiAtIG1pZHBvaW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdi56ID0gbWlkcG9pbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh3KSB7XG4gICAgICB2LnogPSB3LnogKyBzZXBhcmF0aW9uKHYuXywgdy5fKTtcbiAgICB9XG4gICAgdi5wYXJlbnQuQSA9IGFwcG9ydGlvbih2LCB3LCB2LnBhcmVudC5BIHx8IHNpYmxpbmdzWzBdKTtcbiAgfVxuXG4gIC8vIENvbXB1dGVzIGFsbCByZWFsIHgtY29vcmRpbmF0ZXMgYnkgc3VtbWluZyB1cCB0aGUgbW9kaWZpZXJzIHJlY3Vyc2l2ZWx5LlxuICBmdW5jdGlvbiBzZWNvbmRXYWxrKHYpIHtcbiAgICB2Ll8ueCA9IHYueiArIHYucGFyZW50Lm07XG4gICAgdi5tICs9IHYucGFyZW50Lm07XG4gIH1cblxuICAvLyBUaGUgY29yZSBvZiB0aGUgYWxnb3JpdGhtLiBIZXJlLCBhIG5ldyBzdWJ0cmVlIGlzIGNvbWJpbmVkIHdpdGggdGhlXG4gIC8vIHByZXZpb3VzIHN1YnRyZWVzLiBUaHJlYWRzIGFyZSB1c2VkIHRvIHRyYXZlcnNlIHRoZSBpbnNpZGUgYW5kIG91dHNpZGVcbiAgLy8gY29udG91cnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWUgdXAgdG8gdGhlIGhpZ2hlc3QgY29tbW9uIGxldmVsLiBUaGVcbiAgLy8gdmVydGljZXMgdXNlZCBmb3IgdGhlIHRyYXZlcnNhbHMgYXJlIHZpKywgdmktLCB2by0sIGFuZCB2byssIHdoZXJlIHRoZVxuICAvLyBzdXBlcnNjcmlwdCBvIG1lYW5zIG91dHNpZGUgYW5kIGkgbWVhbnMgaW5zaWRlLCB0aGUgc3Vic2NyaXB0IC0gbWVhbnMgbGVmdFxuICAvLyBzdWJ0cmVlIGFuZCArIG1lYW5zIHJpZ2h0IHN1YnRyZWUuIEZvciBzdW1taW5nIHVwIHRoZSBtb2RpZmllcnMgYWxvbmcgdGhlXG4gIC8vIGNvbnRvdXIsIHdlIHVzZSByZXNwZWN0aXZlIHZhcmlhYmxlcyBzaSssIHNpLSwgc28tLCBhbmQgc28rLiBXaGVuZXZlciB0d29cbiAgLy8gbm9kZXMgb2YgdGhlIGluc2lkZSBjb250b3VycyBjb25mbGljdCwgd2UgY29tcHV0ZSB0aGUgbGVmdCBvbmUgb2YgdGhlXG4gIC8vIGdyZWF0ZXN0IHVuY29tbW9uIGFuY2VzdG9ycyB1c2luZyB0aGUgZnVuY3Rpb24gQU5DRVNUT1IgYW5kIGNhbGwgTU9WRVxuICAvLyBTVUJUUkVFIHRvIHNoaWZ0IHRoZSBzdWJ0cmVlIGFuZCBwcmVwYXJlIHRoZSBzaGlmdHMgb2Ygc21hbGxlciBzdWJ0cmVlcy5cbiAgLy8gRmluYWxseSwgd2UgYWRkIGEgbmV3IHRocmVhZCAoaWYgbmVjZXNzYXJ5KS5cbiAgZnVuY3Rpb24gYXBwb3J0aW9uKHYsIHcsIGFuY2VzdG9yKSB7XG4gICAgaWYgKHcpIHtcbiAgICAgIHZhciB2aXAgPSB2LFxuICAgICAgICAgIHZvcCA9IHYsXG4gICAgICAgICAgdmltID0gdyxcbiAgICAgICAgICB2b20gPSB2aXAucGFyZW50LmNoaWxkcmVuWzBdLFxuICAgICAgICAgIHNpcCA9IHZpcC5tLFxuICAgICAgICAgIHNvcCA9IHZvcC5tLFxuICAgICAgICAgIHNpbSA9IHZpbS5tLFxuICAgICAgICAgIHNvbSA9IHZvbS5tLFxuICAgICAgICAgIHNoaWZ0O1xuICAgICAgd2hpbGUgKHZpbSA9IG5leHRSaWdodCh2aW0pLCB2aXAgPSBuZXh0TGVmdCh2aXApLCB2aW0gJiYgdmlwKSB7XG4gICAgICAgIHZvbSA9IG5leHRMZWZ0KHZvbSk7XG4gICAgICAgIHZvcCA9IG5leHRSaWdodCh2b3ApO1xuICAgICAgICB2b3AuYSA9IHY7XG4gICAgICAgIHNoaWZ0ID0gdmltLnogKyBzaW0gLSB2aXAueiAtIHNpcCArIHNlcGFyYXRpb24odmltLl8sIHZpcC5fKTtcbiAgICAgICAgaWYgKHNoaWZ0ID4gMCkge1xuICAgICAgICAgIG1vdmVTdWJ0cmVlKG5leHRBbmNlc3Rvcih2aW0sIHYsIGFuY2VzdG9yKSwgdiwgc2hpZnQpO1xuICAgICAgICAgIHNpcCArPSBzaGlmdDtcbiAgICAgICAgICBzb3AgKz0gc2hpZnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2ltICs9IHZpbS5tO1xuICAgICAgICBzaXAgKz0gdmlwLm07XG4gICAgICAgIHNvbSArPSB2b20ubTtcbiAgICAgICAgc29wICs9IHZvcC5tO1xuICAgICAgfVxuICAgICAgaWYgKHZpbSAmJiAhbmV4dFJpZ2h0KHZvcCkpIHtcbiAgICAgICAgdm9wLnQgPSB2aW07XG4gICAgICAgIHZvcC5tICs9IHNpbSAtIHNvcDtcbiAgICAgIH1cbiAgICAgIGlmICh2aXAgJiYgIW5leHRMZWZ0KHZvbSkpIHtcbiAgICAgICAgdm9tLnQgPSB2aXA7XG4gICAgICAgIHZvbS5tICs9IHNpcCAtIHNvbTtcbiAgICAgICAgYW5jZXN0b3IgPSB2O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYW5jZXN0b3I7XG4gIH1cblxuICBmdW5jdGlvbiBzaXplTm9kZShub2RlKSB7XG4gICAgbm9kZS54ICo9IGR4O1xuICAgIG5vZGUueSA9IG5vZGUuZGVwdGggKiBkeTtcbiAgfVxuXG4gIHRyZWUuc2VwYXJhdGlvbiA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzZXBhcmF0aW9uID0geCwgdHJlZSkgOiBzZXBhcmF0aW9uO1xuICB9O1xuXG4gIHRyZWUuc2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IGZhbHNlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCB0cmVlKSA6IChub2RlU2l6ZSA/IG51bGwgOiBbZHgsIGR5XSk7XG4gIH07XG5cbiAgdHJlZS5ub2RlU2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IHRydWUsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWUpIDogKG5vZGVTaXplID8gW2R4LCBkeV0gOiBudWxsKTtcbiAgfTtcblxuICByZXR1cm4gdHJlZTtcbn1cbiIsImltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5cbnZhciBub2Fib3J0ID0ge307XG5cbmZ1bmN0aW9uIFF1ZXVlKHNpemUpIHtcbiAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl9lcnJvciA9IG51bGw7XG4gIHRoaXMuX3Rhc2tzID0gW107XG4gIHRoaXMuX2RhdGEgPSBbXTtcbiAgdGhpcy5fd2FpdGluZyA9XG4gIHRoaXMuX2FjdGl2ZSA9XG4gIHRoaXMuX2VuZGVkID1cbiAgdGhpcy5fc3RhcnQgPSAwOyAvLyBpbnNpZGUgYSBzeW5jaHJvbm91cyB0YXNrIGNhbGxiYWNrP1xufVxuXG5RdWV1ZS5wcm90b3R5cGUgPSBxdWV1ZS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBRdWV1ZSxcbiAgZGVmZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrXCIpO1xuICAgIGlmICh0aGlzLl9jYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJkZWZlciBhZnRlciBhd2FpdFwiKTtcbiAgICBpZiAodGhpcy5fZXJyb3IgIT0gbnVsbCkgcmV0dXJuIHRoaXM7XG4gICAgdmFyIHQgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdC5wdXNoKGNhbGxiYWNrKTtcbiAgICArK3RoaXMuX3dhaXRpbmcsIHRoaXMuX3Rhc2tzLnB1c2godCk7XG4gICAgcG9rZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgYWJvcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9lcnJvciA9PSBudWxsKSBhYm9ydCh0aGlzLCBuZXcgRXJyb3IoXCJhYm9ydFwiKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGF3YWl0OiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFja1wiKTtcbiAgICBpZiAodGhpcy5fY2FsbCkgdGhyb3cgbmV3IEVycm9yKFwibXVsdGlwbGUgYXdhaXRcIik7XG4gICAgdGhpcy5fY2FsbCA9IGZ1bmN0aW9uKGVycm9yLCByZXN1bHRzKSB7IGNhbGxiYWNrLmFwcGx5KG51bGwsIFtlcnJvcl0uY29uY2F0KHJlc3VsdHMpKTsgfTtcbiAgICBtYXliZU5vdGlmeSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgYXdhaXRBbGw6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrXCIpO1xuICAgIGlmICh0aGlzLl9jYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJtdWx0aXBsZSBhd2FpdFwiKTtcbiAgICB0aGlzLl9jYWxsID0gY2FsbGJhY2s7XG4gICAgbWF5YmVOb3RpZnkodGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHBva2UocSkge1xuICBpZiAoIXEuX3N0YXJ0KSB7XG4gICAgdHJ5IHsgc3RhcnQocSk7IH0gLy8gbGV0IHRoZSBjdXJyZW50IHRhc2sgY29tcGxldGVcbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKHEuX3Rhc2tzW3EuX2VuZGVkICsgcS5fYWN0aXZlIC0gMV0pIGFib3J0KHEsIGUpOyAvLyB0YXNrIGVycm9yZWQgc3luY2hyb25vdXNseVxuICAgICAgZWxzZSBpZiAoIXEuX2RhdGEpIHRocm93IGU7IC8vIGF3YWl0IGNhbGxiYWNrIGVycm9yZWQgc3luY2hyb25vdXNseVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydChxKSB7XG4gIHdoaWxlIChxLl9zdGFydCA9IHEuX3dhaXRpbmcgJiYgcS5fYWN0aXZlIDwgcS5fc2l6ZSkge1xuICAgIHZhciBpID0gcS5fZW5kZWQgKyBxLl9hY3RpdmUsXG4gICAgICAgIHQgPSBxLl90YXNrc1tpXSxcbiAgICAgICAgaiA9IHQubGVuZ3RoIC0gMSxcbiAgICAgICAgYyA9IHRbal07XG4gICAgdFtqXSA9IGVuZChxLCBpKTtcbiAgICAtLXEuX3dhaXRpbmcsICsrcS5fYWN0aXZlO1xuICAgIHQgPSBjLmFwcGx5KG51bGwsIHQpO1xuICAgIGlmICghcS5fdGFza3NbaV0pIGNvbnRpbnVlOyAvLyB0YXNrIGZpbmlzaGVkIHN5bmNocm9ub3VzbHlcbiAgICBxLl90YXNrc1tpXSA9IHQgfHwgbm9hYm9ydDtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmQocSwgaSkge1xuICByZXR1cm4gZnVuY3Rpb24oZSwgcikge1xuICAgIGlmICghcS5fdGFza3NbaV0pIHJldHVybjsgLy8gaWdub3JlIG11bHRpcGxlIGNhbGxiYWNrc1xuICAgIC0tcS5fYWN0aXZlLCArK3EuX2VuZGVkO1xuICAgIHEuX3Rhc2tzW2ldID0gbnVsbDtcbiAgICBpZiAocS5fZXJyb3IgIT0gbnVsbCkgcmV0dXJuOyAvLyBpZ25vcmUgc2Vjb25kYXJ5IGVycm9yc1xuICAgIGlmIChlICE9IG51bGwpIHtcbiAgICAgIGFib3J0KHEsIGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBxLl9kYXRhW2ldID0gcjtcbiAgICAgIGlmIChxLl93YWl0aW5nKSBwb2tlKHEpO1xuICAgICAgZWxzZSBtYXliZU5vdGlmeShxKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFib3J0KHEsIGUpIHtcbiAgdmFyIGkgPSBxLl90YXNrcy5sZW5ndGgsIHQ7XG4gIHEuX2Vycm9yID0gZTsgLy8gaWdub3JlIGFjdGl2ZSBjYWxsYmFja3NcbiAgcS5fZGF0YSA9IHVuZGVmaW5lZDsgLy8gYWxsb3cgZ2NcbiAgcS5fd2FpdGluZyA9IE5hTjsgLy8gcHJldmVudCBzdGFydGluZ1xuXG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGlmICh0ID0gcS5fdGFza3NbaV0pIHtcbiAgICAgIHEuX3Rhc2tzW2ldID0gbnVsbDtcbiAgICAgIGlmICh0LmFib3J0KSB7XG4gICAgICAgIHRyeSB7IHQuYWJvcnQoKTsgfVxuICAgICAgICBjYXRjaCAoZSkgeyAvKiBpZ25vcmUgKi8gfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHEuX2FjdGl2ZSA9IE5hTjsgLy8gYWxsb3cgbm90aWZpY2F0aW9uXG4gIG1heWJlTm90aWZ5KHEpO1xufVxuXG5mdW5jdGlvbiBtYXliZU5vdGlmeShxKSB7XG4gIGlmICghcS5fYWN0aXZlICYmIHEuX2NhbGwpIHtcbiAgICB2YXIgZCA9IHEuX2RhdGE7XG4gICAgcS5fZGF0YSA9IHVuZGVmaW5lZDsgLy8gYWxsb3cgZ2NcbiAgICBxLl9jYWxsKHEuX2Vycm9yLCBkKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWV1ZShjb25jdXJyZW5jeSkge1xuICBpZiAoY29uY3VycmVuY3kgPT0gbnVsbCkgY29uY3VycmVuY3kgPSBJbmZpbml0eTtcbiAgZWxzZSBpZiAoISgoY29uY3VycmVuY3kgPSArY29uY3VycmVuY3kpID49IDEpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNvbmN1cnJlbmN5XCIpO1xuICByZXR1cm4gbmV3IFF1ZXVlKGNvbmN1cnJlbmN5KTtcbn1cbiIsImltcG9ydCB7YmlzZWN0fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGUgYXMgaW50ZXJwb2xhdGVWYWx1ZSwgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge21hcCwgc2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyXCI7XG5cbnZhciB1bml0ID0gWzAsIDFdO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVpbnRlcnBvbGF0ZUxpbmVhcihhLCBiKSB7XG4gIHJldHVybiAoYiAtPSAoYSA9ICthKSlcbiAgICAgID8gZnVuY3Rpb24oeCkgeyByZXR1cm4gKHggLSBhKSAvIGI7IH1cbiAgICAgIDogY29uc3RhbnQoYik7XG59XG5cbmZ1bmN0aW9uIGRlaW50ZXJwb2xhdGVDbGFtcChkZWludGVycG9sYXRlKSB7XG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIGQgPSBkZWludGVycG9sYXRlKGEgPSArYSwgYiA9ICtiKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4geCA8PSBhID8gMCA6IHggPj0gYiA/IDEgOiBkKHgpOyB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWludGVycG9sYXRlQ2xhbXAocmVpbnRlcnBvbGF0ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oYSwgYikge1xuICAgIHZhciByID0gcmVpbnRlcnBvbGF0ZShhID0gK2EsIGIgPSArYik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQgPD0gMCA/IGEgOiB0ID49IDEgPyBiIDogcih0KTsgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYmltYXAoZG9tYWluLCByYW5nZSwgZGVpbnRlcnBvbGF0ZSwgcmVpbnRlcnBvbGF0ZSkge1xuICB2YXIgZDAgPSBkb21haW5bMF0sIGQxID0gZG9tYWluWzFdLCByMCA9IHJhbmdlWzBdLCByMSA9IHJhbmdlWzFdO1xuICBpZiAoZDEgPCBkMCkgZDAgPSBkZWludGVycG9sYXRlKGQxLCBkMCksIHIwID0gcmVpbnRlcnBvbGF0ZShyMSwgcjApO1xuICBlbHNlIGQwID0gZGVpbnRlcnBvbGF0ZShkMCwgZDEpLCByMCA9IHJlaW50ZXJwb2xhdGUocjAsIHIxKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHIwKGQwKHgpKTsgfTtcbn1cblxuZnVuY3Rpb24gcG9seW1hcChkb21haW4sIHJhbmdlLCBkZWludGVycG9sYXRlLCByZWludGVycG9sYXRlKSB7XG4gIHZhciBqID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoKSAtIDEsXG4gICAgICBkID0gbmV3IEFycmF5KGopLFxuICAgICAgciA9IG5ldyBBcnJheShqKSxcbiAgICAgIGkgPSAtMTtcblxuICAvLyBSZXZlcnNlIGRlc2NlbmRpbmcgZG9tYWlucy5cbiAgaWYgKGRvbWFpbltqXSA8IGRvbWFpblswXSkge1xuICAgIGRvbWFpbiA9IGRvbWFpbi5zbGljZSgpLnJldmVyc2UoKTtcbiAgICByYW5nZSA9IHJhbmdlLnNsaWNlKCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgd2hpbGUgKCsraSA8IGopIHtcbiAgICBkW2ldID0gZGVpbnRlcnBvbGF0ZShkb21haW5baV0sIGRvbWFpbltpICsgMV0pO1xuICAgIHJbaV0gPSByZWludGVycG9sYXRlKHJhbmdlW2ldLCByYW5nZVtpICsgMV0pO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICB2YXIgaSA9IGJpc2VjdChkb21haW4sIHgsIDEsIGopIC0gMTtcbiAgICByZXR1cm4gcltpXShkW2ldKHgpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkoc291cmNlLCB0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldFxuICAgICAgLmRvbWFpbihzb3VyY2UuZG9tYWluKCkpXG4gICAgICAucmFuZ2Uoc291cmNlLnJhbmdlKCkpXG4gICAgICAuaW50ZXJwb2xhdGUoc291cmNlLmludGVycG9sYXRlKCkpXG4gICAgICAuY2xhbXAoc291cmNlLmNsYW1wKCkpO1xufVxuXG4vLyBkZWludGVycG9sYXRlKGEsIGIpKHgpIHRha2VzIGEgZG9tYWluIHZhbHVlIHggaW4gW2EsYl0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHQgaW4gWzAsMV0uXG4vLyByZWludGVycG9sYXRlKGEsIGIpKHQpIHRha2VzIGEgcGFyYW1ldGVyIHQgaW4gWzAsMV0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluIHZhbHVlIHggaW4gW2EsYl0uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250aW51b3VzKGRlaW50ZXJwb2xhdGUsIHJlaW50ZXJwb2xhdGUpIHtcbiAgdmFyIGRvbWFpbiA9IHVuaXQsXG4gICAgICByYW5nZSA9IHVuaXQsXG4gICAgICBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlVmFsdWUsXG4gICAgICBjbGFtcCA9IGZhbHNlLFxuICAgICAgcGllY2V3aXNlLFxuICAgICAgb3V0cHV0LFxuICAgICAgaW5wdXQ7XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICBwaWVjZXdpc2UgPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGgpID4gMiA/IHBvbHltYXAgOiBiaW1hcDtcbiAgICBvdXRwdXQgPSBpbnB1dCA9IG51bGw7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiAob3V0cHV0IHx8IChvdXRwdXQgPSBwaWVjZXdpc2UoZG9tYWluLCByYW5nZSwgY2xhbXAgPyBkZWludGVycG9sYXRlQ2xhbXAoZGVpbnRlcnBvbGF0ZSkgOiBkZWludGVycG9sYXRlLCBpbnRlcnBvbGF0ZSkpKSgreCk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIChpbnB1dCB8fCAoaW5wdXQgPSBwaWVjZXdpc2UocmFuZ2UsIGRvbWFpbiwgZGVpbnRlcnBvbGF0ZUxpbmVhciwgY2xhbXAgPyByZWludGVycG9sYXRlQ2xhbXAocmVpbnRlcnBvbGF0ZSkgOiByZWludGVycG9sYXRlKSkpKCt5KTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluID0gbWFwLmNhbGwoXywgbnVtYmVyKSwgcmVzY2FsZSgpKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gc2xpY2UuY2FsbChfKSwgcmVzY2FsZSgpKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gcmFuZ2UgPSBzbGljZS5jYWxsKF8pLCBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlUm91bmQsIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5jbGFtcCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGFtcCA9ICEhXywgcmVzY2FsZSgpKSA6IGNsYW1wO1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRlID0gXywgcmVzY2FsZSgpKSA6IGludGVycG9sYXRlO1xuICB9O1xuXG4gIHJldHVybiByZXNjYWxlKCk7XG59XG4iLCJpbXBvcnQge3RpY2tzLCB0aWNrSW5jcmVtZW50fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVOdW1iZXIgYXMgcmVpbnRlcnBvbGF0ZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2RlZmF1bHQgYXMgY29udGludW91cywgY29weSwgZGVpbnRlcnBvbGF0ZUxpbmVhciBhcyBkZWludGVycG9sYXRlfSBmcm9tIFwiLi9jb250aW51b3VzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gdGlja0Zvcm1hdChkb21haW4oKSwgY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpLFxuICAgICAgICBpMCA9IDAsXG4gICAgICAgIGkxID0gZC5sZW5ndGggLSAxLFxuICAgICAgICBzdGFydCA9IGRbaTBdLFxuICAgICAgICBzdG9wID0gZFtpMV0sXG4gICAgICAgIHN0ZXA7XG5cbiAgICBpZiAoc3RvcCA8IHN0YXJ0KSB7XG4gICAgICBzdGVwID0gc3RhcnQsIHN0YXJ0ID0gc3RvcCwgc3RvcCA9IHN0ZXA7XG4gICAgICBzdGVwID0gaTAsIGkwID0gaTEsIGkxID0gc3RlcDtcbiAgICB9XG5cbiAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuXG4gICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICBzdGFydCA9IE1hdGguZmxvb3Ioc3RhcnQgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuICAgIH0gZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICBkW2kwXSA9IE1hdGguZmxvb3Ioc3RhcnQgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBkW2kxXSA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgZG9tYWluKGQpO1xuICAgIH0gZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgIGRbaTBdID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgZFtpMV0gPSBNYXRoLmZsb29yKHN0b3AgKiBzdGVwKSAvIHN0ZXA7XG4gICAgICBkb21haW4oZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKGRlaW50ZXJwb2xhdGUsIHJlaW50ZXJwb2xhdGUpO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY29weShzY2FsZSwgbGluZWFyKCkpO1xuICB9O1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIiwidmFyIHQwID0gbmV3IERhdGUsXG4gICAgdDEgPSBuZXcgRGF0ZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV3SW50ZXJ2YWwoZmxvb3JpLCBvZmZzZXRpLCBjb3VudCwgZmllbGQpIHtcblxuICBmdW5jdGlvbiBpbnRlcnZhbChkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfVxuXG4gIGludGVydmFsLmZsb29yID0gaW50ZXJ2YWw7XG5cbiAgaW50ZXJ2YWwuY2VpbCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZShkYXRlIC0gMSkpLCBvZmZzZXRpKGRhdGUsIDEpLCBmbG9vcmkoZGF0ZSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucm91bmQgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgdmFyIGQwID0gaW50ZXJ2YWwoZGF0ZSksXG4gICAgICAgIGQxID0gaW50ZXJ2YWwuY2VpbChkYXRlKTtcbiAgICByZXR1cm4gZGF0ZSAtIGQwIDwgZDEgLSBkYXRlID8gZDAgOiBkMTtcbiAgfTtcblxuICBpbnRlcnZhbC5vZmZzZXQgPSBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgcmV0dXJuIG9mZnNldGkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSwgc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICB2YXIgcmFuZ2UgPSBbXTtcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBkbyByYW5nZS5wdXNoKG5ldyBEYXRlKCtzdGFydCkpOyB3aGlsZSAob2Zmc2V0aShzdGFydCwgc3RlcCksIGZsb29yaShzdGFydCksIHN0YXJ0IDwgc3RvcClcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgaW50ZXJ2YWwuZmlsdGVyID0gZnVuY3Rpb24odGVzdCkge1xuICAgIHJldHVybiBuZXdJbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoZmxvb3JpKGRhdGUpLCAhdGVzdChkYXRlKSkgZGF0ZS5zZXRUaW1lKGRhdGUgLSAxKTtcbiAgICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoLS1zdGVwID49IDApIHdoaWxlIChvZmZzZXRpKGRhdGUsIDEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgIH0pO1xuICB9O1xuXG4gIGlmIChjb3VudCkge1xuICAgIGludGVydmFsLmNvdW50ID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgICAgdDAuc2V0VGltZSgrc3RhcnQpLCB0MS5zZXRUaW1lKCtlbmQpO1xuICAgICAgZmxvb3JpKHQwKSwgZmxvb3JpKHQxKTtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvdW50KHQwLCB0MSkpO1xuICAgIH07XG5cbiAgICBpbnRlcnZhbC5ldmVyeSA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgIHN0ZXAgPSBNYXRoLmZsb29yKHN0ZXApO1xuICAgICAgcmV0dXJuICFpc0Zpbml0ZShzdGVwKSB8fCAhKHN0ZXAgPiAwKSA/IG51bGxcbiAgICAgICAgICA6ICEoc3RlcCA+IDEpID8gaW50ZXJ2YWxcbiAgICAgICAgICA6IGludGVydmFsLmZpbHRlcihmaWVsZFxuICAgICAgICAgICAgICA/IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGZpZWxkKGQpICUgc3RlcCA9PT0gMDsgfVxuICAgICAgICAgICAgICA6IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGludGVydmFsLmNvdW50KDAsIGQpICUgc3RlcCA9PT0gMDsgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnZhbDtcbn1cbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG5mdW5jdGlvbiB3ZWVrZGF5KGkpIHtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAoZGF0ZS5nZXREYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwICogNyk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0IC0gKGVuZC5nZXRUaW1lem9uZU9mZnNldCgpIC0gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiBkdXJhdGlvbk1pbnV0ZSkgLyBkdXJhdGlvbldlZWs7XG4gIH0pO1xufVxuXG5leHBvcnQgdmFyIHN1bmRheSA9IHdlZWtkYXkoMCk7XG5leHBvcnQgdmFyIG1vbmRheSA9IHdlZWtkYXkoMSk7XG5leHBvcnQgdmFyIHR1ZXNkYXkgPSB3ZWVrZGF5KDIpO1xuZXhwb3J0IHZhciB3ZWRuZXNkYXkgPSB3ZWVrZGF5KDMpO1xuZXhwb3J0IHZhciB0aHVyc2RheSA9IHdlZWtkYXkoNCk7XG5leHBvcnQgdmFyIGZyaWRheSA9IHdlZWtkYXkoNSk7XG5leHBvcnQgdmFyIHNhdHVyZGF5ID0gd2Vla2RheSg2KTtcblxuZXhwb3J0IHZhciBzdW5kYXlzID0gc3VuZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBtb25kYXlzID0gbW9uZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB0dWVzZGF5cyA9IHR1ZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHdlZG5lc2RheXMgPSB3ZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHRodXJzZGF5cyA9IHRodXJzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBmcmlkYXlzID0gZnJpZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBzYXR1cmRheXMgPSBzYXR1cmRheS5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbldlZWt9IGZyb20gXCIuL2R1cmF0aW9uXCI7XG5cbmZ1bmN0aW9uIHV0Y1dlZWtkYXkoaSkge1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIChkYXRlLmdldFVUQ0RheSgpICsgNyAtIGkpICUgNyk7XG4gICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25XZWVrO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciB1dGNTdW5kYXkgPSB1dGNXZWVrZGF5KDApO1xuZXhwb3J0IHZhciB1dGNNb25kYXkgPSB1dGNXZWVrZGF5KDEpO1xuZXhwb3J0IHZhciB1dGNUdWVzZGF5ID0gdXRjV2Vla2RheSgyKTtcbmV4cG9ydCB2YXIgdXRjV2VkbmVzZGF5ID0gdXRjV2Vla2RheSgzKTtcbmV4cG9ydCB2YXIgdXRjVGh1cnNkYXkgPSB1dGNXZWVrZGF5KDQpO1xuZXhwb3J0IHZhciB1dGNGcmlkYXkgPSB1dGNXZWVrZGF5KDUpO1xuZXhwb3J0IHZhciB1dGNTYXR1cmRheSA9IHV0Y1dlZWtkYXkoNik7XG5cbmV4cG9ydCB2YXIgdXRjU3VuZGF5cyA9IHV0Y1N1bmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjTW9uZGF5cyA9IHV0Y01vbmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjVHVlc2RheXMgPSB1dGNUdWVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNXZWRuZXNkYXlzID0gdXRjV2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNUaHVyc2RheXMgPSB1dGNUaHVyc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjRnJpZGF5cyA9IHV0Y0ZyaWRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjU2F0dXJkYXlzID0gdXRjU2F0dXJkYXkucmFuZ2U7XG4iLCJpbXBvcnQge3RpbWVEYXksIHRpbWVTdW5kYXksIHRpbWVNb25kYXksIHRpbWVZZWFyLCB1dGNEYXksIHV0Y1N1bmRheSwgdXRjTW9uZGF5LCB1dGNZZWFyfSBmcm9tIFwiZDMtdGltZVwiO1xuXG5mdW5jdGlvbiBsb2NhbERhdGUoZCkge1xuICBpZiAoMCA8PSBkLnkgJiYgZC55IDwgMTAwKSB7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgtMSwgZC5tLCBkLmQsIGQuSCwgZC5NLCBkLlMsIGQuTCk7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkLnkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShkLnksIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpO1xufVxuXG5mdW5jdGlvbiB1dGNEYXRlKGQpIHtcbiAgaWYgKDAgPD0gZC55ICYmIGQueSA8IDEwMCkge1xuICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoLTEsIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpKTtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGQueSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGQueSwgZC5tLCBkLmQsIGQuSCwgZC5NLCBkLlMsIGQuTCkpO1xufVxuXG5mdW5jdGlvbiBuZXdZZWFyKHkpIHtcbiAgcmV0dXJuIHt5OiB5LCBtOiAwLCBkOiAxLCBIOiAwLCBNOiAwLCBTOiAwLCBMOiAwfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0TG9jYWxlKGxvY2FsZSkge1xuICB2YXIgbG9jYWxlX2RhdGVUaW1lID0gbG9jYWxlLmRhdGVUaW1lLFxuICAgICAgbG9jYWxlX2RhdGUgPSBsb2NhbGUuZGF0ZSxcbiAgICAgIGxvY2FsZV90aW1lID0gbG9jYWxlLnRpbWUsXG4gICAgICBsb2NhbGVfcGVyaW9kcyA9IGxvY2FsZS5wZXJpb2RzLFxuICAgICAgbG9jYWxlX3dlZWtkYXlzID0gbG9jYWxlLmRheXMsXG4gICAgICBsb2NhbGVfc2hvcnRXZWVrZGF5cyA9IGxvY2FsZS5zaG9ydERheXMsXG4gICAgICBsb2NhbGVfbW9udGhzID0gbG9jYWxlLm1vbnRocyxcbiAgICAgIGxvY2FsZV9zaG9ydE1vbnRocyA9IGxvY2FsZS5zaG9ydE1vbnRocztcblxuICB2YXIgcGVyaW9kUmUgPSBmb3JtYXRSZShsb2NhbGVfcGVyaW9kcyksXG4gICAgICBwZXJpb2RMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3BlcmlvZHMpLFxuICAgICAgd2Vla2RheVJlID0gZm9ybWF0UmUobG9jYWxlX3dlZWtkYXlzKSxcbiAgICAgIHdlZWtkYXlMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3dlZWtkYXlzKSxcbiAgICAgIHNob3J0V2Vla2RheVJlID0gZm9ybWF0UmUobG9jYWxlX3Nob3J0V2Vla2RheXMpLFxuICAgICAgc2hvcnRXZWVrZGF5TG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9zaG9ydFdlZWtkYXlzKSxcbiAgICAgIG1vbnRoUmUgPSBmb3JtYXRSZShsb2NhbGVfbW9udGhzKSxcbiAgICAgIG1vbnRoTG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9tb250aHMpLFxuICAgICAgc2hvcnRNb250aFJlID0gZm9ybWF0UmUobG9jYWxlX3Nob3J0TW9udGhzKSxcbiAgICAgIHNob3J0TW9udGhMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3Nob3J0TW9udGhzKTtcblxuICB2YXIgZm9ybWF0cyA9IHtcbiAgICBcImFcIjogZm9ybWF0U2hvcnRXZWVrZGF5LFxuICAgIFwiQVwiOiBmb3JtYXRXZWVrZGF5LFxuICAgIFwiYlwiOiBmb3JtYXRTaG9ydE1vbnRoLFxuICAgIFwiQlwiOiBmb3JtYXRNb250aCxcbiAgICBcImNcIjogbnVsbCxcbiAgICBcImRcIjogZm9ybWF0RGF5T2ZNb250aCxcbiAgICBcImVcIjogZm9ybWF0RGF5T2ZNb250aCxcbiAgICBcIkhcIjogZm9ybWF0SG91cjI0LFxuICAgIFwiSVwiOiBmb3JtYXRIb3VyMTIsXG4gICAgXCJqXCI6IGZvcm1hdERheU9mWWVhcixcbiAgICBcIkxcIjogZm9ybWF0TWlsbGlzZWNvbmRzLFxuICAgIFwibVwiOiBmb3JtYXRNb250aE51bWJlcixcbiAgICBcIk1cIjogZm9ybWF0TWludXRlcyxcbiAgICBcInBcIjogZm9ybWF0UGVyaW9kLFxuICAgIFwiU1wiOiBmb3JtYXRTZWNvbmRzLFxuICAgIFwiVVwiOiBmb3JtYXRXZWVrTnVtYmVyU3VuZGF5LFxuICAgIFwid1wiOiBmb3JtYXRXZWVrZGF5TnVtYmVyLFxuICAgIFwiV1wiOiBmb3JtYXRXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBudWxsLFxuICAgIFwiWFwiOiBudWxsLFxuICAgIFwieVwiOiBmb3JtYXRZZWFyLFxuICAgIFwiWVwiOiBmb3JtYXRGdWxsWWVhcixcbiAgICBcIlpcIjogZm9ybWF0Wm9uZSxcbiAgICBcIiVcIjogZm9ybWF0TGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICB2YXIgdXRjRm9ybWF0cyA9IHtcbiAgICBcImFcIjogZm9ybWF0VVRDU2hvcnRXZWVrZGF5LFxuICAgIFwiQVwiOiBmb3JtYXRVVENXZWVrZGF5LFxuICAgIFwiYlwiOiBmb3JtYXRVVENTaG9ydE1vbnRoLFxuICAgIFwiQlwiOiBmb3JtYXRVVENNb250aCxcbiAgICBcImNcIjogbnVsbCxcbiAgICBcImRcIjogZm9ybWF0VVRDRGF5T2ZNb250aCxcbiAgICBcImVcIjogZm9ybWF0VVRDRGF5T2ZNb250aCxcbiAgICBcIkhcIjogZm9ybWF0VVRDSG91cjI0LFxuICAgIFwiSVwiOiBmb3JtYXRVVENIb3VyMTIsXG4gICAgXCJqXCI6IGZvcm1hdFVUQ0RheU9mWWVhcixcbiAgICBcIkxcIjogZm9ybWF0VVRDTWlsbGlzZWNvbmRzLFxuICAgIFwibVwiOiBmb3JtYXRVVENNb250aE51bWJlcixcbiAgICBcIk1cIjogZm9ybWF0VVRDTWludXRlcyxcbiAgICBcInBcIjogZm9ybWF0VVRDUGVyaW9kLFxuICAgIFwiU1wiOiBmb3JtYXRVVENTZWNvbmRzLFxuICAgIFwiVVwiOiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5LFxuICAgIFwid1wiOiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyLFxuICAgIFwiV1wiOiBmb3JtYXRVVENXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBudWxsLFxuICAgIFwiWFwiOiBudWxsLFxuICAgIFwieVwiOiBmb3JtYXRVVENZZWFyLFxuICAgIFwiWVwiOiBmb3JtYXRVVENGdWxsWWVhcixcbiAgICBcIlpcIjogZm9ybWF0VVRDWm9uZSxcbiAgICBcIiVcIjogZm9ybWF0TGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICB2YXIgcGFyc2VzID0ge1xuICAgIFwiYVwiOiBwYXJzZVNob3J0V2Vla2RheSxcbiAgICBcIkFcIjogcGFyc2VXZWVrZGF5LFxuICAgIFwiYlwiOiBwYXJzZVNob3J0TW9udGgsXG4gICAgXCJCXCI6IHBhcnNlTW9udGgsXG4gICAgXCJjXCI6IHBhcnNlTG9jYWxlRGF0ZVRpbWUsXG4gICAgXCJkXCI6IHBhcnNlRGF5T2ZNb250aCxcbiAgICBcImVcIjogcGFyc2VEYXlPZk1vbnRoLFxuICAgIFwiSFwiOiBwYXJzZUhvdXIyNCxcbiAgICBcIklcIjogcGFyc2VIb3VyMjQsXG4gICAgXCJqXCI6IHBhcnNlRGF5T2ZZZWFyLFxuICAgIFwiTFwiOiBwYXJzZU1pbGxpc2Vjb25kcyxcbiAgICBcIm1cIjogcGFyc2VNb250aE51bWJlcixcbiAgICBcIk1cIjogcGFyc2VNaW51dGVzLFxuICAgIFwicFwiOiBwYXJzZVBlcmlvZCxcbiAgICBcIlNcIjogcGFyc2VTZWNvbmRzLFxuICAgIFwiVVwiOiBwYXJzZVdlZWtOdW1iZXJTdW5kYXksXG4gICAgXCJ3XCI6IHBhcnNlV2Vla2RheU51bWJlcixcbiAgICBcIldcIjogcGFyc2VXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBwYXJzZUxvY2FsZURhdGUsXG4gICAgXCJYXCI6IHBhcnNlTG9jYWxlVGltZSxcbiAgICBcInlcIjogcGFyc2VZZWFyLFxuICAgIFwiWVwiOiBwYXJzZUZ1bGxZZWFyLFxuICAgIFwiWlwiOiBwYXJzZVpvbmUsXG4gICAgXCIlXCI6IHBhcnNlTGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICAvLyBUaGVzZSByZWN1cnNpdmUgZGlyZWN0aXZlIGRlZmluaXRpb25zIG11c3QgYmUgZGVmZXJyZWQuXG4gIGZvcm1hdHMueCA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZSwgZm9ybWF0cyk7XG4gIGZvcm1hdHMuWCA9IG5ld0Zvcm1hdChsb2NhbGVfdGltZSwgZm9ybWF0cyk7XG4gIGZvcm1hdHMuYyA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZVRpbWUsIGZvcm1hdHMpO1xuICB1dGNGb3JtYXRzLnggPSBuZXdGb3JtYXQobG9jYWxlX2RhdGUsIHV0Y0Zvcm1hdHMpO1xuICB1dGNGb3JtYXRzLlggPSBuZXdGb3JtYXQobG9jYWxlX3RpbWUsIHV0Y0Zvcm1hdHMpO1xuICB1dGNGb3JtYXRzLmMgPSBuZXdGb3JtYXQobG9jYWxlX2RhdGVUaW1lLCB1dGNGb3JtYXRzKTtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyLCBmb3JtYXRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGRhdGUpIHtcbiAgICAgIHZhciBzdHJpbmcgPSBbXSxcbiAgICAgICAgICBpID0gLTEsXG4gICAgICAgICAgaiA9IDAsXG4gICAgICAgICAgbiA9IHNwZWNpZmllci5sZW5ndGgsXG4gICAgICAgICAgYyxcbiAgICAgICAgICBwYWQsXG4gICAgICAgICAgZm9ybWF0O1xuXG4gICAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSk7XG5cbiAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgIGlmIChzcGVjaWZpZXIuY2hhckNvZGVBdChpKSA9PT0gMzcpIHtcbiAgICAgICAgICBzdHJpbmcucHVzaChzcGVjaWZpZXIuc2xpY2UoaiwgaSkpO1xuICAgICAgICAgIGlmICgocGFkID0gcGFkc1tjID0gc3BlY2lmaWVyLmNoYXJBdCgrK2kpXSkgIT0gbnVsbCkgYyA9IHNwZWNpZmllci5jaGFyQXQoKytpKTtcbiAgICAgICAgICBlbHNlIHBhZCA9IGMgPT09IFwiZVwiID8gXCIgXCIgOiBcIjBcIjtcbiAgICAgICAgICBpZiAoZm9ybWF0ID0gZm9ybWF0c1tjXSkgYyA9IGZvcm1hdChkYXRlLCBwYWQpO1xuICAgICAgICAgIHN0cmluZy5wdXNoKGMpO1xuICAgICAgICAgIGogPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdHJpbmcucHVzaChzcGVjaWZpZXIuc2xpY2UoaiwgaSkpO1xuICAgICAgcmV0dXJuIHN0cmluZy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBuZXdQYXJzZShzcGVjaWZpZXIsIG5ld0RhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgZCA9IG5ld1llYXIoMTkwMCksXG4gICAgICAgICAgaSA9IHBhcnNlU3BlY2lmaWVyKGQsIHNwZWNpZmllciwgc3RyaW5nICs9IFwiXCIsIDApO1xuICAgICAgaWYgKGkgIT0gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIFRoZSBhbS1wbSBmbGFnIGlzIDAgZm9yIEFNLCBhbmQgMSBmb3IgUE0uXG4gICAgICBpZiAoXCJwXCIgaW4gZCkgZC5IID0gZC5IICUgMTIgKyBkLnAgKiAxMjtcblxuICAgICAgLy8gQ29udmVydCBkYXktb2Ytd2VlayBhbmQgd2Vlay1vZi15ZWFyIHRvIGRheS1vZi15ZWFyLlxuICAgICAgaWYgKFwiV1wiIGluIGQgfHwgXCJVXCIgaW4gZCkge1xuICAgICAgICBpZiAoIShcIndcIiBpbiBkKSkgZC53ID0gXCJXXCIgaW4gZCA/IDEgOiAwO1xuICAgICAgICB2YXIgZGF5ID0gXCJaXCIgaW4gZCA/IHV0Y0RhdGUobmV3WWVhcihkLnkpKS5nZXRVVENEYXkoKSA6IG5ld0RhdGUobmV3WWVhcihkLnkpKS5nZXREYXkoKTtcbiAgICAgICAgZC5tID0gMDtcbiAgICAgICAgZC5kID0gXCJXXCIgaW4gZCA/IChkLncgKyA2KSAlIDcgKyBkLlcgKiA3IC0gKGRheSArIDUpICUgNyA6IGQudyArIGQuVSAqIDcgLSAoZGF5ICsgNikgJSA3O1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBhIHRpbWUgem9uZSBpcyBzcGVjaWZpZWQsIGFsbCBmaWVsZHMgYXJlIGludGVycHJldGVkIGFzIFVUQyBhbmQgdGhlblxuICAgICAgLy8gb2Zmc2V0IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHRpbWUgem9uZS5cbiAgICAgIGlmIChcIlpcIiBpbiBkKSB7XG4gICAgICAgIGQuSCArPSBkLlogLyAxMDAgfCAwO1xuICAgICAgICBkLk0gKz0gZC5aICUgMTAwO1xuICAgICAgICByZXR1cm4gdXRjRGF0ZShkKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCBhbGwgZmllbGRzIGFyZSBpbiBsb2NhbCB0aW1lLlxuICAgICAgcmV0dXJuIG5ld0RhdGUoZCk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3BlY2lmaWVyKGQsIHNwZWNpZmllciwgc3RyaW5nLCBqKSB7XG4gICAgdmFyIGkgPSAwLFxuICAgICAgICBuID0gc3BlY2lmaWVyLmxlbmd0aCxcbiAgICAgICAgbSA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgIGMsXG4gICAgICAgIHBhcnNlO1xuXG4gICAgd2hpbGUgKGkgPCBuKSB7XG4gICAgICBpZiAoaiA+PSBtKSByZXR1cm4gLTE7XG4gICAgICBjID0gc3BlY2lmaWVyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIGlmIChjID09PSAzNykge1xuICAgICAgICBjID0gc3BlY2lmaWVyLmNoYXJBdChpKyspO1xuICAgICAgICBwYXJzZSA9IHBhcnNlc1tjIGluIHBhZHMgPyBzcGVjaWZpZXIuY2hhckF0KGkrKykgOiBjXTtcbiAgICAgICAgaWYgKCFwYXJzZSB8fCAoKGogPSBwYXJzZShkLCBzdHJpbmcsIGopKSA8IDApKSByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGMgIT0gc3RyaW5nLmNoYXJDb2RlQXQoaisrKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGo7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVBlcmlvZChkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHBlcmlvZFJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgICByZXR1cm4gbiA/IChkLnAgPSBwZXJpb2RMb29rdXBbblswXS50b0xvd2VyQ2FzZSgpXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTaG9ydFdlZWtkYXkoZCwgc3RyaW5nLCBpKSB7XG4gICAgdmFyIG4gPSBzaG9ydFdlZWtkYXlSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC53ID0gc2hvcnRXZWVrZGF5TG9va3VwW25bMF0udG9Mb3dlckNhc2UoKV0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHdlZWtkYXlSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC53ID0gd2Vla2RheUxvb2t1cFtuWzBdLnRvTG93ZXJDYXNlKCldLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVNob3J0TW9udGgoZCwgc3RyaW5nLCBpKSB7XG4gICAgdmFyIG4gPSBzaG9ydE1vbnRoUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSkpO1xuICAgIHJldHVybiBuID8gKGQubSA9IHNob3J0TW9udGhMb29rdXBbblswXS50b0xvd2VyQ2FzZSgpXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VNb250aChkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IG1vbnRoUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSkpO1xuICAgIHJldHVybiBuID8gKGQubSA9IG1vbnRoTG9va3VwW25bMF0udG9Mb3dlckNhc2UoKV0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV9kYXRlVGltZSwgc3RyaW5nLCBpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZShkLCBzdHJpbmcsIGkpIHtcbiAgICByZXR1cm4gcGFyc2VTcGVjaWZpZXIoZCwgbG9jYWxlX2RhdGUsIHN0cmluZywgaSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUxvY2FsZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV90aW1lLCBzdHJpbmcsIGkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3Nob3J0V2Vla2RheXNbZC5nZXREYXkoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3dlZWtkYXlzW2QuZ2V0RGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRNb250aChkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydE1vbnRoc1tkLmdldE1vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0TW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfbW9udGhzW2QuZ2V0TW9udGgoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQZXJpb2QoZCkge1xuICAgIHJldHVybiBsb2NhbGVfcGVyaW9kc1srKGQuZ2V0SG91cnMoKSA+PSAxMildO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDU2hvcnRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3Nob3J0V2Vla2RheXNbZC5nZXRVVENEYXkoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRVVENXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3dlZWtkYXlzW2QuZ2V0VVRDRGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDU2hvcnRNb250aChkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydE1vbnRoc1tkLmdldFVUQ01vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDTW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfbW9udGhzW2QuZ2V0VVRDTW9udGgoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRVVENQZXJpb2QoZCkge1xuICAgIHJldHVybiBsb2NhbGVfcGVyaW9kc1srKGQuZ2V0VVRDSG91cnMoKSA+PSAxMildO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmb3JtYXQ6IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICAgICAgdmFyIGYgPSBuZXdGb3JtYXQoc3BlY2lmaWVyICs9IFwiXCIsIGZvcm1hdHMpO1xuICAgICAgZi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIGY7XG4gICAgfSxcbiAgICBwYXJzZTogZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gICAgICB2YXIgcCA9IG5ld1BhcnNlKHNwZWNpZmllciArPSBcIlwiLCBsb2NhbERhdGUpO1xuICAgICAgcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIHA7XG4gICAgfSxcbiAgICB1dGNGb3JtYXQ6IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICAgICAgdmFyIGYgPSBuZXdGb3JtYXQoc3BlY2lmaWVyICs9IFwiXCIsIHV0Y0Zvcm1hdHMpO1xuICAgICAgZi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIGY7XG4gICAgfSxcbiAgICB1dGNQYXJzZTogZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gICAgICB2YXIgcCA9IG5ld1BhcnNlKHNwZWNpZmllciwgdXRjRGF0ZSk7XG4gICAgICBwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzcGVjaWZpZXI7IH07XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG59XG5cbnZhciBwYWRzID0ge1wiLVwiOiBcIlwiLCBcIl9cIjogXCIgXCIsIFwiMFwiOiBcIjBcIn0sXG4gICAgbnVtYmVyUmUgPSAvXlxccypcXGQrLywgLy8gbm90ZTogaWdub3JlcyBuZXh0IGRpcmVjdGl2ZVxuICAgIHBlcmNlbnRSZSA9IC9eJS8sXG4gICAgcmVxdW90ZVJlID0gL1tcXFxcXFxeXFwkXFwqXFwrXFw/XFx8XFxbXFxdXFwoXFwpXFwuXFx7XFx9XS9nO1xuXG5mdW5jdGlvbiBwYWQodmFsdWUsIGZpbGwsIHdpZHRoKSB7XG4gIHZhciBzaWduID0gdmFsdWUgPCAwID8gXCItXCIgOiBcIlwiLFxuICAgICAgc3RyaW5nID0gKHNpZ24gPyAtdmFsdWUgOiB2YWx1ZSkgKyBcIlwiLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgcmV0dXJuIHNpZ24gKyAobGVuZ3RoIDwgd2lkdGggPyBuZXcgQXJyYXkod2lkdGggLSBsZW5ndGggKyAxKS5qb2luKGZpbGwpICsgc3RyaW5nIDogc3RyaW5nKTtcbn1cblxuZnVuY3Rpb24gcmVxdW90ZShzKSB7XG4gIHJldHVybiBzLnJlcGxhY2UocmVxdW90ZVJlLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmUobmFtZXMpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoXCJeKD86XCIgKyBuYW1lcy5tYXAocmVxdW90ZSkuam9pbihcInxcIikgKyBcIilcIiwgXCJpXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRMb29rdXAobmFtZXMpIHtcbiAgdmFyIG1hcCA9IHt9LCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBtYXBbbmFtZXNbaV0udG9Mb3dlckNhc2UoKV0gPSBpO1xuICByZXR1cm4gbWFwO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdlZWtkYXlOdW1iZXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDEpKTtcbiAgcmV0dXJuIG4gPyAoZC53ID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrTnVtYmVyU3VuZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgcmV0dXJuIG4gPyAoZC5VID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrTnVtYmVyTW9uZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgcmV0dXJuIG4gPyAoZC5XID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VGdWxsWWVhcihkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgNCkpO1xuICByZXR1cm4gbiA/IChkLnkgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVllYXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC55ID0gK25bMF0gKyAoK25bMF0gPiA2OCA/IDE5MDAgOiAyMDAwKSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVpvbmUoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gL14oWil8KFsrLV1cXGRcXGQpKD86XFw6PyhcXGRcXGQpKT8vLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyA2KSk7XG4gIHJldHVybiBuID8gKGQuWiA9IG5bMV0gPyAwIDogLShuWzJdICsgKG5bM10gfHwgXCIwMFwiKSksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNb250aE51bWJlcihkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLm0gPSBuWzBdIC0gMSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZURheU9mTW9udGgoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5kID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXlPZlllYXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDMpKTtcbiAgcmV0dXJuIG4gPyAoZC5tID0gMCwgZC5kID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIb3VyMjQoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5IID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNaW51dGVzKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQuTSA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2Vjb25kcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLlMgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1pbGxpc2Vjb25kcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMykpO1xuICByZXR1cm4gbiA/IChkLkwgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxpdGVyYWxQZXJjZW50KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IHBlcmNlbnRSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMSkpO1xuICByZXR1cm4gbiA/IGkgKyBuWzBdLmxlbmd0aCA6IC0xO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXlPZk1vbnRoKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldERhdGUoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEhvdXIyNChkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRIb3VycygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0SG91cjEyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdERheU9mWWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoMSArIHRpbWVEYXkuY291bnQodGltZVllYXIoZCksIGQpLCBwLCAzKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRzKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldE1pbGxpc2Vjb25kcygpLCBwLCAzKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TW9udGhOdW1iZXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0TW9udGgoKSArIDEsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaW51dGVzKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldE1pbnV0ZXMoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0U2Vjb25kcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla051bWJlclN1bmRheShkLCBwKSB7XG4gIHJldHVybiBwYWQodGltZVN1bmRheS5jb3VudCh0aW1lWWVhcihkKSwgZCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRXZWVrZGF5TnVtYmVyKGQpIHtcbiAgcmV0dXJuIGQuZ2V0RGF5KCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFdlZWtOdW1iZXJNb25kYXkoZCwgcCkge1xuICByZXR1cm4gcGFkKHRpbWVNb25kYXkuY291bnQodGltZVllYXIoZCksIGQpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0WWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRGdWxsWWVhcigpICUgMTAwLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RnVsbFllYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0RnVsbFllYXIoKSAlIDEwMDAwLCBwLCA0KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0Wm9uZShkKSB7XG4gIHZhciB6ID0gZC5nZXRUaW1lem9uZU9mZnNldCgpO1xuICByZXR1cm4gKHogPiAwID8gXCItXCIgOiAoeiAqPSAtMSwgXCIrXCIpKVxuICAgICAgKyBwYWQoeiAvIDYwIHwgMCwgXCIwXCIsIDIpXG4gICAgICArIHBhZCh6ICUgNjAsIFwiMFwiLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDRGF5T2ZNb250aChkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENEYXRlKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENIb3VyMjQoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDSG91cnMoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0hvdXIxMihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENIb3VycygpICUgMTIgfHwgMTIsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENEYXlPZlllYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKDEgKyB1dGNEYXkuY291bnQodXRjWWVhcihkKSwgZCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENNaWxsaXNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENNb250aE51bWJlcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENNb250aCgpICsgMSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ01pbnV0ZXMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDTWludXRlcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDU2Vjb25kcyhkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENTZWNvbmRzKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5KGQsIHApIHtcbiAgcmV0dXJuIHBhZCh1dGNTdW5kYXkuY291bnQodXRjWWVhcihkKSwgZCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyKGQpIHtcbiAgcmV0dXJuIGQuZ2V0VVRDRGF5KCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1dlZWtOdW1iZXJNb25kYXkoZCwgcCkge1xuICByZXR1cm4gcGFkKHV0Y01vbmRheS5jb3VudCh1dGNZZWFyKGQpLCBkKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1llYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDRnVsbFllYXIoKSAlIDEwMCwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0Z1bGxZZWFyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDAwMCwgcCwgNCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1pvbmUoKSB7XG4gIHJldHVybiBcIiswMDAwXCI7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdExpdGVyYWxQZXJjZW50KCkge1xuICByZXR1cm4gXCIlXCI7XG59XG4iLCJpbXBvcnQge3V0Y0Zvcm1hdH0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZVwiO1xuXG5leHBvcnQgdmFyIGlzb1NwZWNpZmllciA9IFwiJVktJW0tJWRUJUg6JU06JVMuJUxaXCI7XG5cbmZ1bmN0aW9uIGZvcm1hdElzb05hdGl2ZShkYXRlKSB7XG4gIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG59XG5cbnZhciBmb3JtYXRJc28gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ1xuICAgID8gZm9ybWF0SXNvTmF0aXZlXG4gICAgOiB1dGNGb3JtYXQoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0SXNvO1xuIiwiaW1wb3J0IHtpc29TcGVjaWZpZXJ9IGZyb20gXCIuL2lzb0Zvcm1hdFwiO1xuaW1wb3J0IHt1dGNQYXJzZX0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZVwiO1xuXG5mdW5jdGlvbiBwYXJzZUlzb05hdGl2ZShzdHJpbmcpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcpO1xuICByZXR1cm4gaXNOYU4oZGF0ZSkgPyBudWxsIDogZGF0ZTtcbn1cblxudmFyIHBhcnNlSXNvID0gK25ldyBEYXRlKFwiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaXCIpXG4gICAgPyBwYXJzZUlzb05hdGl2ZVxuICAgIDogdXRjUGFyc2UoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJc287XG4iLCJpbXBvcnQge2Jpc2VjdG9yLCB0aWNrU3RlcH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2ludGVycG9sYXRlTnVtYmVyIGFzIHJlaW50ZXJwb2xhdGV9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHt0aW1lWWVhciwgdGltZU1vbnRoLCB0aW1lV2VlaywgdGltZURheSwgdGltZUhvdXIsIHRpbWVNaW51dGUsIHRpbWVTZWNvbmQsIHRpbWVNaWxsaXNlY29uZH0gZnJvbSBcImQzLXRpbWVcIjtcbmltcG9ydCB7dGltZUZvcm1hdH0gZnJvbSBcImQzLXRpbWUtZm9ybWF0XCI7XG5pbXBvcnQge21hcH0gZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCB7ZGVmYXVsdCBhcyBjb250aW51b3VzLCBjb3B5LCBkZWludGVycG9sYXRlTGluZWFyIGFzIGRlaW50ZXJwb2xhdGV9IGZyb20gXCIuL2NvbnRpbnVvdXNcIjtcbmltcG9ydCBuaWNlIGZyb20gXCIuL25pY2VcIjtcblxudmFyIGR1cmF0aW9uU2Vjb25kID0gMTAwMCxcbiAgICBkdXJhdGlvbk1pbnV0ZSA9IGR1cmF0aW9uU2Vjb25kICogNjAsXG4gICAgZHVyYXRpb25Ib3VyID0gZHVyYXRpb25NaW51dGUgKiA2MCxcbiAgICBkdXJhdGlvbkRheSA9IGR1cmF0aW9uSG91ciAqIDI0LFxuICAgIGR1cmF0aW9uV2VlayA9IGR1cmF0aW9uRGF5ICogNyxcbiAgICBkdXJhdGlvbk1vbnRoID0gZHVyYXRpb25EYXkgKiAzMCxcbiAgICBkdXJhdGlvblllYXIgPSBkdXJhdGlvbkRheSAqIDM2NTtcblxuZnVuY3Rpb24gZGF0ZSh0KSB7XG4gIHJldHVybiBuZXcgRGF0ZSh0KTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyKHQpIHtcbiAgcmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlID8gK3QgOiArbmV3IERhdGUoK3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsZW5kYXIoeWVhciwgbW9udGgsIHdlZWssIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBmb3JtYXQpIHtcbiAgdmFyIHNjYWxlID0gY29udGludW91cyhkZWludGVycG9sYXRlLCByZWludGVycG9sYXRlKSxcbiAgICAgIGludmVydCA9IHNjYWxlLmludmVydCxcbiAgICAgIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICB2YXIgZm9ybWF0TWlsbGlzZWNvbmQgPSBmb3JtYXQoXCIuJUxcIiksXG4gICAgICBmb3JtYXRTZWNvbmQgPSBmb3JtYXQoXCI6JVNcIiksXG4gICAgICBmb3JtYXRNaW51dGUgPSBmb3JtYXQoXCIlSTolTVwiKSxcbiAgICAgIGZvcm1hdEhvdXIgPSBmb3JtYXQoXCIlSSAlcFwiKSxcbiAgICAgIGZvcm1hdERheSA9IGZvcm1hdChcIiVhICVkXCIpLFxuICAgICAgZm9ybWF0V2VlayA9IGZvcm1hdChcIiViICVkXCIpLFxuICAgICAgZm9ybWF0TW9udGggPSBmb3JtYXQoXCIlQlwiKSxcbiAgICAgIGZvcm1hdFllYXIgPSBmb3JtYXQoXCIlWVwiKTtcblxuICB2YXIgdGlja0ludGVydmFscyA9IFtcbiAgICBbc2Vjb25kLCAgMSwgICAgICBkdXJhdGlvblNlY29uZF0sXG4gICAgW3NlY29uZCwgIDUsICA1ICogZHVyYXRpb25TZWNvbmRdLFxuICAgIFtzZWNvbmQsIDE1LCAxNSAqIGR1cmF0aW9uU2Vjb25kXSxcbiAgICBbc2Vjb25kLCAzMCwgMzAgKiBkdXJhdGlvblNlY29uZF0sXG4gICAgW21pbnV0ZSwgIDEsICAgICAgZHVyYXRpb25NaW51dGVdLFxuICAgIFttaW51dGUsICA1LCAgNSAqIGR1cmF0aW9uTWludXRlXSxcbiAgICBbbWludXRlLCAxNSwgMTUgKiBkdXJhdGlvbk1pbnV0ZV0sXG4gICAgW21pbnV0ZSwgMzAsIDMwICogZHVyYXRpb25NaW51dGVdLFxuICAgIFsgIGhvdXIsICAxLCAgICAgIGR1cmF0aW9uSG91ciAgXSxcbiAgICBbICBob3VyLCAgMywgIDMgKiBkdXJhdGlvbkhvdXIgIF0sXG4gICAgWyAgaG91ciwgIDYsICA2ICogZHVyYXRpb25Ib3VyICBdLFxuICAgIFsgIGhvdXIsIDEyLCAxMiAqIGR1cmF0aW9uSG91ciAgXSxcbiAgICBbICAgZGF5LCAgMSwgICAgICBkdXJhdGlvbkRheSAgIF0sXG4gICAgWyAgIGRheSwgIDIsICAyICogZHVyYXRpb25EYXkgICBdLFxuICAgIFsgIHdlZWssICAxLCAgICAgIGR1cmF0aW9uV2VlayAgXSxcbiAgICBbIG1vbnRoLCAgMSwgICAgICBkdXJhdGlvbk1vbnRoIF0sXG4gICAgWyBtb250aCwgIDMsICAzICogZHVyYXRpb25Nb250aCBdLFxuICAgIFsgIHllYXIsICAxLCAgICAgIGR1cmF0aW9uWWVhciAgXVxuICBdO1xuXG4gIGZ1bmN0aW9uIHRpY2tGb3JtYXQoZGF0ZSkge1xuICAgIHJldHVybiAoc2Vjb25kKGRhdGUpIDwgZGF0ZSA/IGZvcm1hdE1pbGxpc2Vjb25kXG4gICAgICAgIDogbWludXRlKGRhdGUpIDwgZGF0ZSA/IGZvcm1hdFNlY29uZFxuICAgICAgICA6IGhvdXIoZGF0ZSkgPCBkYXRlID8gZm9ybWF0TWludXRlXG4gICAgICAgIDogZGF5KGRhdGUpIDwgZGF0ZSA/IGZvcm1hdEhvdXJcbiAgICAgICAgOiBtb250aChkYXRlKSA8IGRhdGUgPyAod2VlayhkYXRlKSA8IGRhdGUgPyBmb3JtYXREYXkgOiBmb3JtYXRXZWVrKVxuICAgICAgICA6IHllYXIoZGF0ZSkgPCBkYXRlID8gZm9ybWF0TW9udGhcbiAgICAgICAgOiBmb3JtYXRZZWFyKShkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2tJbnRlcnZhbChpbnRlcnZhbCwgc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICBpZiAoaW50ZXJ2YWwgPT0gbnVsbCkgaW50ZXJ2YWwgPSAxMDtcblxuICAgIC8vIElmIGEgZGVzaXJlZCB0aWNrIGNvdW50IGlzIHNwZWNpZmllZCwgcGljayBhIHJlYXNvbmFibGUgdGljayBpbnRlcnZhbFxuICAgIC8vIGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgdGhlIGRvbWFpbiBhbmQgYSByb3VnaCBlc3RpbWF0ZSBvZiB0aWNrIHNpemUuXG4gICAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaW50ZXJ2YWwgaXMgYWxyZWFkeSBhIHRpbWUgaW50ZXJ2YWwgYW5kIHVzZSBpdC5cbiAgICBpZiAodHlwZW9mIGludGVydmFsID09PSBcIm51bWJlclwiKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gTWF0aC5hYnMoc3RvcCAtIHN0YXJ0KSAvIGludGVydmFsLFxuICAgICAgICAgIGkgPSBiaXNlY3RvcihmdW5jdGlvbihpKSB7IHJldHVybiBpWzJdOyB9KS5yaWdodCh0aWNrSW50ZXJ2YWxzLCB0YXJnZXQpO1xuICAgICAgaWYgKGkgPT09IHRpY2tJbnRlcnZhbHMubGVuZ3RoKSB7XG4gICAgICAgIHN0ZXAgPSB0aWNrU3RlcChzdGFydCAvIGR1cmF0aW9uWWVhciwgc3RvcCAvIGR1cmF0aW9uWWVhciwgaW50ZXJ2YWwpO1xuICAgICAgICBpbnRlcnZhbCA9IHllYXI7XG4gICAgICB9IGVsc2UgaWYgKGkpIHtcbiAgICAgICAgaSA9IHRpY2tJbnRlcnZhbHNbdGFyZ2V0IC8gdGlja0ludGVydmFsc1tpIC0gMV1bMl0gPCB0aWNrSW50ZXJ2YWxzW2ldWzJdIC8gdGFyZ2V0ID8gaSAtIDEgOiBpXTtcbiAgICAgICAgc3RlcCA9IGlbMV07XG4gICAgICAgIGludGVydmFsID0gaVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXAgPSB0aWNrU3RlcChzdGFydCwgc3RvcCwgaW50ZXJ2YWwpO1xuICAgICAgICBpbnRlcnZhbCA9IG1pbGxpc2Vjb25kO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwID09IG51bGwgPyBpbnRlcnZhbCA6IGludGVydmFsLmV2ZXJ5KHN0ZXApO1xuICB9XG5cbiAgc2NhbGUuaW52ZXJ0ID0gZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpbnZlcnQoeSkpO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGRvbWFpbihtYXAuY2FsbChfLCBudW1iZXIpKSA6IGRvbWFpbigpLm1hcChkYXRlKTtcbiAgfTtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGludGVydmFsLCBzdGVwKSB7XG4gICAgdmFyIGQgPSBkb21haW4oKSxcbiAgICAgICAgdDAgPSBkWzBdLFxuICAgICAgICB0MSA9IGRbZC5sZW5ndGggLSAxXSxcbiAgICAgICAgciA9IHQxIDwgdDAsXG4gICAgICAgIHQ7XG4gICAgaWYgKHIpIHQgPSB0MCwgdDAgPSB0MSwgdDEgPSB0O1xuICAgIHQgPSB0aWNrSW50ZXJ2YWwoaW50ZXJ2YWwsIHQwLCB0MSwgc3RlcCk7XG4gICAgdCA9IHQgPyB0LnJhbmdlKHQwLCB0MSArIDEpIDogW107IC8vIGluY2x1c2l2ZSBzdG9wXG4gICAgcmV0dXJuIHIgPyB0LnJldmVyc2UoKSA6IHQ7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyID09IG51bGwgPyB0aWNrRm9ybWF0IDogZm9ybWF0KHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGludGVydmFsLCBzdGVwKSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gKGludGVydmFsID0gdGlja0ludGVydmFsKGludGVydmFsLCBkWzBdLCBkW2QubGVuZ3RoIC0gMV0sIHN0ZXApKVxuICAgICAgICA/IGRvbWFpbihuaWNlKGQsIGludGVydmFsKSlcbiAgICAgICAgOiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGNhbGVuZGFyKHllYXIsIG1vbnRoLCB3ZWVrLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgZm9ybWF0KSk7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNhbGVuZGFyKHRpbWVZZWFyLCB0aW1lTW9udGgsIHRpbWVXZWVrLCB0aW1lRGF5LCB0aW1lSG91ciwgdGltZU1pbnV0ZSwgdGltZVNlY29uZCwgdGltZU1pbGxpc2Vjb25kLCB0aW1lRm9ybWF0KS5kb21haW4oW25ldyBEYXRlKDIwMDAsIDAsIDEpLCBuZXcgRGF0ZSgyMDAwLCAwLCAyKV0pO1xufVxuIiwiZnVuY3Rpb24gTGluZWFyKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhci5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhcihjb250ZXh0KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiB4KHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KHApIHtcbiAgcmV0dXJuIHBbMV07XG59XG4iLCJmdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIHNsb3BlcyBvZiB0aGUgdGFuZ2VudHMgKEhlcm1pdGUtdHlwZSBpbnRlcnBvbGF0aW9uKSBiYXNlZCBvblxuLy8gdGhlIGZvbGxvd2luZyBwYXBlcjogU3RlZmZlbiwgTS4gMTk5MC4gQSBTaW1wbGUgTWV0aG9kIGZvciBNb25vdG9uaWNcbi8vIEludGVycG9sYXRpb24gaW4gT25lIERpbWVuc2lvbi4gQXN0cm9ub215IGFuZCBBc3Ryb3BoeXNpY3MsIFZvbC4gMjM5LCBOTy5cbi8vIE5PVihJSSksIFAuIDQ0MywgMTk5MC5cbmZ1bmN0aW9uIHNsb3BlMyh0aGF0LCB4MiwgeTIpIHtcbiAgdmFyIGgwID0gdGhhdC5feDEgLSB0aGF0Ll94MCxcbiAgICAgIGgxID0geDIgLSB0aGF0Ll94MSxcbiAgICAgIHMwID0gKHRoYXQuX3kxIC0gdGhhdC5feTApIC8gKGgwIHx8IGgxIDwgMCAmJiAtMCksXG4gICAgICBzMSA9ICh5MiAtIHRoYXQuX3kxKSAvIChoMSB8fCBoMCA8IDAgJiYgLTApLFxuICAgICAgcCA9IChzMCAqIGgxICsgczEgKiBoMCkgLyAoaDAgKyBoMSk7XG4gIHJldHVybiAoc2lnbihzMCkgKyBzaWduKHMxKSkgKiBNYXRoLm1pbihNYXRoLmFicyhzMCksIE1hdGguYWJzKHMxKSwgMC41ICogTWF0aC5hYnMocCkpIHx8IDA7XG59XG5cbi8vIENhbGN1bGF0ZSBhIG9uZS1zaWRlZCBzbG9wZS5cbmZ1bmN0aW9uIHNsb3BlMih0aGF0LCB0KSB7XG4gIHZhciBoID0gdGhhdC5feDEgLSB0aGF0Ll94MDtcbiAgcmV0dXJuIGggPyAoMyAqICh0aGF0Ll95MSAtIHRoYXQuX3kwKSAvIGggLSB0KSAvIDIgOiB0O1xufVxuXG4vLyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3ViaWNfSGVybWl0ZV9zcGxpbmUjUmVwcmVzZW50YXRpb25zXG4vLyBcInlvdSBjYW4gZXhwcmVzcyBjdWJpYyBIZXJtaXRlIGludGVycG9sYXRpb24gaW4gdGVybXMgb2YgY3ViaWMgQsOpemllciBjdXJ2ZXNcbi8vIHdpdGggcmVzcGVjdCB0byB0aGUgZm91ciB2YWx1ZXMgcDAsIHAwICsgbTAgLyAzLCBwMSAtIG0xIC8gMywgcDFcIi5cbmZ1bmN0aW9uIHBvaW50KHRoYXQsIHQwLCB0MSkge1xuICB2YXIgeDAgPSB0aGF0Ll94MCxcbiAgICAgIHkwID0gdGhhdC5feTAsXG4gICAgICB4MSA9IHRoYXQuX3gxLFxuICAgICAgeTEgPSB0aGF0Ll95MSxcbiAgICAgIGR4ID0gKHgxIC0geDApIC8gMztcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwICsgZHgsIHkwICsgZHggKiB0MCwgeDEgLSBkeCwgeTEgLSBkeCAqIHQxLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBNb25vdG9uZVgoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTW9ub3RvbmVYLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID1cbiAgICB0aGlzLl90MCA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsIHRoaXMuX3kxKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3QwLCBzbG9wZTIodGhpcywgdGhpcy5fdDApKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHQxID0gTmFOO1xuXG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgaWYgKHggPT09IHRoaXMuX3gxICYmIHkgPT09IHRoaXMuX3kxKSByZXR1cm47IC8vIElnbm9yZSBjb2luY2lkZW50IHBvaW50cy5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHBvaW50KHRoaXMsIHNsb3BlMih0aGlzLCB0MSA9IHNsb3BlMyh0aGlzLCB4LCB5KSksIHQxKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB0aGlzLl90MCwgdDEgPSBzbG9wZTModGhpcywgeCwgeSkpOyBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICAgIHRoaXMuX3QwID0gdDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gTW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IG5ldyBSZWZsZWN0Q29udGV4dChjb250ZXh0KTtcbn1cblxuKE1vbm90b25lWS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE1vbm90b25lWC5wcm90b3R5cGUpKS5wb2ludCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgTW9ub3RvbmVYLnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsIHksIHgpO1xufTtcblxuZnVuY3Rpb24gUmVmbGVjdENvbnRleHQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUmVmbGVjdENvbnRleHQucHJvdG90eXBlID0ge1xuICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5fY29udGV4dC5tb3ZlVG8oeSwgeCk7IH0sXG4gIGNsb3NlUGF0aDogZnVuY3Rpb24oKSB7IHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7IH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkgeyB0aGlzLl9jb250ZXh0LmxpbmVUbyh5LCB4KTsgfSxcbiAgYmV6aWVyQ3VydmVUbzogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHsgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHkxLCB4MSwgeTIsIHgyLCB5LCB4KTsgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vbm90b25lWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTW9ub3RvbmVYKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBNb25vdG9uZVkoY29udGV4dCk7XG59XG4iLCJpbXBvcnQge3NlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBhdHRyc0Z1bmN0aW9uKHNlbGVjdGlvbiwgbWFwKSB7XG4gIHJldHVybiBzZWxlY3Rpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IG1hcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBzID0gc2VsZWN0KHRoaXMpO1xuICAgIGZvciAodmFyIG5hbWUgaW4geCkgcy5hdHRyKG5hbWUsIHhbbmFtZV0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXR0cnNPYmplY3Qoc2VsZWN0aW9uLCBtYXApIHtcbiAgZm9yICh2YXIgbmFtZSBpbiBtYXApIHNlbGVjdGlvbi5hdHRyKG5hbWUsIG1hcFtuYW1lXSk7XG4gIHJldHVybiBzZWxlY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hcCkge1xuICByZXR1cm4gKHR5cGVvZiBtYXAgPT09IFwiZnVuY3Rpb25cIiA/IGF0dHJzRnVuY3Rpb24gOiBhdHRyc09iamVjdCkodGhpcywgbWFwKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmZ1bmN0aW9uIHN0eWxlc0Z1bmN0aW9uKHNlbGVjdGlvbiwgbWFwLCBwcmlvcml0eSkge1xuICByZXR1cm4gc2VsZWN0aW9uLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSBtYXAuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcyA9IHNlbGVjdCh0aGlzKTtcbiAgICBmb3IgKHZhciBuYW1lIGluIHgpIHMuc3R5bGUobmFtZSwgeFtuYW1lXSwgcHJpb3JpdHkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3R5bGVzT2JqZWN0KHNlbGVjdGlvbiwgbWFwLCBwcmlvcml0eSkge1xuICBmb3IgKHZhciBuYW1lIGluIG1hcCkgc2VsZWN0aW9uLnN0eWxlKG5hbWUsIG1hcFtuYW1lXSwgcHJpb3JpdHkpO1xuICByZXR1cm4gc2VsZWN0aW9uO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXAsIHByaW9yaXR5KSB7XG4gIHJldHVybiAodHlwZW9mIG1hcCA9PT0gXCJmdW5jdGlvblwiID8gc3R5bGVzRnVuY3Rpb24gOiBzdHlsZXNPYmplY3QpKHRoaXMsIG1hcCwgcHJpb3JpdHkgPT0gbnVsbCA/IFwiXCIgOiBwcmlvcml0eSk7XG59XG4iLCJpbXBvcnQge3NlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzRnVuY3Rpb24oc2VsZWN0aW9uLCBtYXApIHtcbiAgcmV0dXJuIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gbWFwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHMgPSBzZWxlY3QodGhpcyk7XG4gICAgZm9yICh2YXIgbmFtZSBpbiB4KSBzLnByb3BlcnR5KG5hbWUsIHhbbmFtZV0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydGllc09iamVjdChzZWxlY3Rpb24sIG1hcCkge1xuICBmb3IgKHZhciBuYW1lIGluIG1hcCkgc2VsZWN0aW9uLnByb3BlcnR5KG5hbWUsIG1hcFtuYW1lXSk7XG4gIHJldHVybiBzZWxlY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hcCkge1xuICByZXR1cm4gKHR5cGVvZiBtYXAgPT09IFwiZnVuY3Rpb25cIiA/IHByb3BlcnRpZXNGdW5jdGlvbiA6IHByb3BlcnRpZXNPYmplY3QpKHRoaXMsIG1hcCk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiIsImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5pbXBvcnQgYmlzZWN0b3IgZnJvbSBcIi4vYmlzZWN0b3JcIjtcblxudmFyIGFzY2VuZGluZ0Jpc2VjdCA9IGJpc2VjdG9yKGFzY2VuZGluZyk7XG5leHBvcnQgdmFyIGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xuZXhwb3J0IHZhciBiaXNlY3RMZWZ0ID0gYXNjZW5kaW5nQmlzZWN0LmxlZnQ7XG5leHBvcnQgZGVmYXVsdCBiaXNlY3RSaWdodDtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgdmFsdWVvZikge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1heDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiB2YWx1ZSA+IG1heCkge1xuICAgICAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkgIT0gbnVsbCAmJiB2YWx1ZSA+PSB2YWx1ZSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gQ29tcGFyZSB0aGUgcmVtYWluaW5nIHZhbHVlcy5cbiAgICAgICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgdmFsdWUgPiBtYXgpIHtcbiAgICAgICAgICAgIG1heCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXg7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgaSA9IC0xLFxuICAgICAgdmFsdWUsXG4gICAgICBtaW47XG5cbiAgaWYgKHZhbHVlb2YgPT0gbnVsbCkge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIEZpbmQgdGhlIGZpcnN0IGNvbXBhcmFibGUgdmFsdWUuXG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVzW2ldKSAhPSBudWxsICYmIHZhbHVlID49IHZhbHVlKSB7XG4gICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICB3aGlsZSAoKytpIDwgbikgeyAvLyBDb21wYXJlIHRoZSByZW1haW5pbmcgdmFsdWVzLlxuICAgICAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgbWluID4gdmFsdWUpIHtcbiAgICAgICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIEZpbmQgdGhlIGZpcnN0IGNvbXBhcmFibGUgdmFsdWUuXG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWluID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWVzW2ldLCBpLCB2YWx1ZXMpKSAhPSBudWxsICYmIG1pbiA+IHZhbHVlKSB7XG4gICAgICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluO1xufVxuIiwiZXhwb3J0IHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iLCJleHBvcnQgdmFyIHhodG1sID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3ZnOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHhodG1sOiB4aHRtbCxcbiAgeGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuICB4bWw6IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCJcbn07XG4iLCJpbXBvcnQgbmFtZXNwYWNlcyBmcm9tIFwiLi9uYW1lc3BhY2VzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIHByZWZpeCA9IG5hbWUgKz0gXCJcIiwgaSA9IHByZWZpeC5pbmRleE9mKFwiOlwiKTtcbiAgaWYgKGkgPj0gMCAmJiAocHJlZml4ID0gbmFtZS5zbGljZSgwLCBpKSkgIT09IFwieG1sbnNcIikgbmFtZSA9IG5hbWUuc2xpY2UoaSArIDEpO1xuICByZXR1cm4gbmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcmVmaXgpID8ge3NwYWNlOiBuYW1lc3BhY2VzW3ByZWZpeF0sIGxvY2FsOiBuYW1lfSA6IG5hbWU7XG59XG4iLCJ2YXIgbWF0Y2hlciA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn07XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGlmICghZWxlbWVudC5tYXRjaGVzKSB7XG4gICAgdmFyIHZlbmRvck1hdGNoZXMgPSBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvclxuICAgICAgICB8fCBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgIHx8IGVsZW1lbnQubW96TWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgIHx8IGVsZW1lbnQub01hdGNoZXNTZWxlY3RvcjtcbiAgICBtYXRjaGVyID0gZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHZlbmRvck1hdGNoZXMuY2FsbCh0aGlzLCBzZWxlY3Rvcik7XG4gICAgICB9O1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbWF0Y2hlcjtcbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNlbGVjdG9yIGZyb20gXCIuLi9zZWxlY3RvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3Ioc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBzdWJub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChzdWJub2RlID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSkge1xuICAgICAgICBpZiAoXCJfX2RhdGFfX1wiIGluIG5vZGUpIHN1Ym5vZGUuX19kYXRhX18gPSBub2RlLl9fZGF0YV9fO1xuICAgICAgICBzdWJncm91cFtpXSA9IHN1Ym5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNlbGVjdG9yQWxsIGZyb20gXCIuLi9zZWxlY3RvckFsbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzdWJncm91cHMucHVzaChzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCBwYXJlbnRzKTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4uL21hdGNoZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih1cGRhdGUpIHtcbiAgcmV0dXJuIG5ldyBBcnJheSh1cGRhdGUubGVuZ3RoKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2VcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZXhpdCB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdGlvbikge1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSBzZWxlY3Rpb24uX2dyb3VwcywgbTAgPSBncm91cHMwLmxlbmd0aCwgbTEgPSBncm91cHMxLmxlbmd0aCwgbSA9IE1hdGgubWluKG0wLCBtMSksIG1lcmdlcyA9IG5ldyBBcnJheShtMCksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAwID0gZ3JvdXBzMFtqXSwgZ3JvdXAxID0gZ3JvdXBzMVtqXSwgbiA9IGdyb3VwMC5sZW5ndGgsIG1lcmdlID0gbWVyZ2VzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cDBbaV0gfHwgZ3JvdXAxW2ldKSB7XG4gICAgICAgIG1lcmdlW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaiA8IG0wOyArK2opIHtcbiAgICBtZXJnZXNbal0gPSBncm91cHMwW2pdO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24obWVyZ2VzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IC0xLCBtID0gZ3JvdXBzLmxlbmd0aDsgKytqIDwgbTspIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IGdyb3VwLmxlbmd0aCAtIDEsIG5leHQgPSBncm91cFtpXSwgbm9kZTsgLS1pID49IDA7KSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGlmIChuZXh0ICYmIG5leHQgIT09IG5vZGUubmV4dFNpYmxpbmcpIG5leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgbmV4dCk7XG4gICAgICAgIG5leHQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50c1swXTtcbiAgYXJndW1lbnRzWzBdID0gdGhpcztcbiAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGVzID0gbmV3IEFycmF5KHRoaXMuc2l6ZSgpKSwgaSA9IC0xO1xuICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7IG5vZGVzWysraV0gPSB0aGlzOyB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAobm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7ICsrc2l6ZTsgfSk7XG4gIHJldHVybiBzaXplO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiAhdGhpcy5ub2RlKCk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSBjYWxsYmFjay5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLm93bmVyRG9jdW1lbnQgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSAvLyBub2RlIGlzIGEgTm9kZVxuICAgICAgfHwgKG5vZGUuZG9jdW1lbnQgJiYgbm9kZSkgLy8gbm9kZSBpcyBhIFdpbmRvd1xuICAgICAgfHwgbm9kZS5kZWZhdWx0VmlldzsgLy8gbm9kZSBpcyBhIERvY3VtZW50XG59XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH0pO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5wcm9wZXJ0eShcIl9fZGF0YV9fXCIsIHZhbHVlKVxuICAgICAgOiB0aGlzLm5vZGUoKS5fX2RhdGFfXztcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9uLCByb290fSBmcm9tIFwiLi9zZWxlY3Rpb24vaW5kZXhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcildXSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pXG4gICAgICA6IG5ldyBTZWxlY3Rpb24oW1tzZWxlY3Rvcl1dLCByb290KTtcbn1cbiIsImV4cG9ydCB2YXIgZGVnMnJhZCA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgdmFyIHJhZDJkZWcgPSAxODAgLyBNYXRoLlBJO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQge3JnYiBhcyBjb2xvclJnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgYmFzaXMgZnJvbSBcIi4vYmFzaXNcIjtcbmltcG9ydCBiYXNpc0Nsb3NlZCBmcm9tIFwiLi9iYXNpc0Nsb3NlZFwiO1xuaW1wb3J0IG5vZ2FtbWEsIHtnYW1tYX0gZnJvbSBcIi4vY29sb3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHJnYkdhbW1hKHkpIHtcbiAgdmFyIGNvbG9yID0gZ2FtbWEoeSk7XG5cbiAgZnVuY3Rpb24gcmdiKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IGNvbG9yKChzdGFydCA9IGNvbG9yUmdiKHN0YXJ0KSkuciwgKGVuZCA9IGNvbG9yUmdiKGVuZCkpLnIpLFxuICAgICAgICBnID0gY29sb3Ioc3RhcnQuZywgZW5kLmcpLFxuICAgICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgICBvcGFjaXR5ID0gbm9nYW1tYShzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LnIgPSByKHQpO1xuICAgICAgc3RhcnQuZyA9IGcodCk7XG4gICAgICBzdGFydC5iID0gYih0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG5cbiAgcmdiLmdhbW1hID0gcmdiR2FtbWE7XG5cbiAgcmV0dXJuIHJnYjtcbn0pKDEpO1xuXG5mdW5jdGlvbiByZ2JTcGxpbmUoc3BsaW5lKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xvcnMpIHtcbiAgICB2YXIgbiA9IGNvbG9ycy5sZW5ndGgsXG4gICAgICAgIHIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGcgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGksIGNvbG9yO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICB9XG4gICAgciA9IHNwbGluZShyKTtcbiAgICBnID0gc3BsaW5lKGcpO1xuICAgIGIgPSBzcGxpbmUoYik7XG4gICAgY29sb3Iub3BhY2l0eSA9IDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbG9yLnIgPSByKHQpO1xuICAgICAgY29sb3IuZyA9IGcodCk7XG4gICAgICBjb2xvci5iID0gYih0KTtcbiAgICAgIHJldHVybiBjb2xvciArIFwiXCI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHZhciByZ2JCYXNpcyA9IHJnYlNwbGluZShiYXNpcyk7XG5leHBvcnQgdmFyIHJnYkJhc2lzQ2xvc2VkID0gcmdiU3BsaW5lKGJhc2lzQ2xvc2VkKTtcbiIsImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBuYiA9IGIgPyBiLmxlbmd0aCA6IDAsXG4gICAgICBuYSA9IGEgPyBNYXRoLm1pbihuYiwgYS5sZW5ndGgpIDogMCxcbiAgICAgIHggPSBuZXcgQXJyYXkobmIpLFxuICAgICAgYyA9IG5ldyBBcnJheShuYiksXG4gICAgICBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuYTsgKytpKSB4W2ldID0gdmFsdWUoYVtpXSwgYltpXSk7XG4gIGZvciAoOyBpIDwgbmI7ICsraSkgY1tpXSA9IGJbaV07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgY1tpXSA9IHhbaV0odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgLT0gYSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiAtPSBhLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyBiICogdDtcbiAgfTtcbn1cbiIsImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBpID0ge30sXG4gICAgICBjID0ge30sXG4gICAgICBrO1xuXG4gIGlmIChhID09PSBudWxsIHx8IHR5cGVvZiBhICE9PSBcIm9iamVjdFwiKSBhID0ge307XG4gIGlmIChiID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSBcIm9iamVjdFwiKSBiID0ge307XG5cbiAgZm9yIChrIGluIGIpIHtcbiAgICBpZiAoayBpbiBhKSB7XG4gICAgICBpW2tdID0gdmFsdWUoYVtrXSwgYltrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNba10gPSBiW2tdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChrIGluIGkpIGNba10gPSBpW2tdKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIiwiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgcmdiIGZyb20gXCIuL3JnYlwiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgZGF0ZSBmcm9tIFwiLi9kYXRlXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlclwiO1xuaW1wb3J0IG9iamVjdCBmcm9tIFwiLi9vYmplY3RcIjtcbmltcG9ydCBzdHJpbmcgZnJvbSBcIi4vc3RyaW5nXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgdCA9IHR5cGVvZiBiLCBjO1xuICByZXR1cm4gYiA9PSBudWxsIHx8IHQgPT09IFwiYm9vbGVhblwiID8gY29uc3RhbnQoYilcbiAgICAgIDogKHQgPT09IFwibnVtYmVyXCIgPyBudW1iZXJcbiAgICAgIDogdCA9PT0gXCJzdHJpbmdcIiA/ICgoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgcmdiKSA6IHN0cmluZylcbiAgICAgIDogYiBpbnN0YW5jZW9mIGNvbG9yID8gcmdiXG4gICAgICA6IGIgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gYXJyYXlcbiAgICAgIDogdHlwZW9mIGIudmFsdWVPZiAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBiLnRvU3RyaW5nICE9PSBcImZ1bmN0aW9uXCIgfHwgaXNOYU4oYikgPyBvYmplY3RcbiAgICAgIDogbnVtYmVyKShhLCBiKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiAtPSBhLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSArIGIgKiB0KTtcbiAgfTtcbn1cbiIsInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIiwiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZnVuY3Rpb24oZWxhcHNlZCkge1xuICAgIHQuc3RvcCgpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQgKyBkZWxheSk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG4iLCJpbXBvcnQge1NUQVJUSU5HLCBFTkRJTkcsIEVOREVEfSBmcm9tIFwiLi90cmFuc2l0aW9uL3NjaGVkdWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgc2NoZWR1bGUsXG4gICAgICBhY3RpdmUsXG4gICAgICBlbXB0eSA9IHRydWUsXG4gICAgICBpO1xuXG4gIGlmICghc2NoZWR1bGVzKSByZXR1cm47XG5cbiAgbmFtZSA9IG5hbWUgPT0gbnVsbCA/IG51bGwgOiBuYW1lICsgXCJcIjtcblxuICBmb3IgKGkgaW4gc2NoZWR1bGVzKSB7XG4gICAgaWYgKChzY2hlZHVsZSA9IHNjaGVkdWxlc1tpXSkubmFtZSAhPT0gbmFtZSkgeyBlbXB0eSA9IGZhbHNlOyBjb250aW51ZTsgfVxuICAgIGFjdGl2ZSA9IHNjaGVkdWxlLnN0YXRlID4gU1RBUlRJTkcgJiYgc2NoZWR1bGUuc3RhdGUgPCBFTkRJTkc7XG4gICAgc2NoZWR1bGUuc3RhdGUgPSBFTkRFRDtcbiAgICBzY2hlZHVsZS50aW1lci5zdG9wKCk7XG4gICAgaWYgKGFjdGl2ZSkgc2NoZWR1bGUub24uY2FsbChcImludGVycnVwdFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzY2hlZHVsZS5pbmRleCwgc2NoZWR1bGUuZ3JvdXApO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gIH1cblxuICBpZiAoZW1wdHkpIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbn1cbiIsImltcG9ydCBpbnRlcnJ1cHQgZnJvbSBcIi4uL2ludGVycnVwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgaW50ZXJydXB0KHRoaXMsIG5hbWUpO1xuICB9KTtcbn1cbiIsImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZU51bWJlciwgaW50ZXJwb2xhdGVSZ2IsIGludGVycG9sYXRlU3RyaW5nfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgYztcbiAgcmV0dXJuICh0eXBlb2YgYiA9PT0gXCJudW1iZXJcIiA/IGludGVycG9sYXRlTnVtYmVyXG4gICAgICA6IGIgaW5zdGFuY2VvZiBjb2xvciA/IGludGVycG9sYXRlUmdiXG4gICAgICA6IChjID0gY29sb3IoYikpID8gKGIgPSBjLCBpbnRlcnBvbGF0ZVJnYilcbiAgICAgIDogaW50ZXJwb2xhdGVTdHJpbmcpKGEsIGIpO1xufVxuIiwiaW1wb3J0IHttYXRjaGVyfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggIT09IFwiZnVuY3Rpb25cIikgbWF0Y2ggPSBtYXRjaGVyKG1hdGNoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gW10sIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgbWF0Y2guY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpIHtcbiAgICAgICAgc3ViZ3JvdXAucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCB0aGlzLl9uYW1lLCB0aGlzLl9pZCk7XG59XG4iLCJpbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRyYW5zaXRpb24pIHtcbiAgaWYgKHRyYW5zaXRpb24uX2lkICE9PSB0aGlzLl9pZCkgdGhyb3cgbmV3IEVycm9yO1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSB0cmFuc2l0aW9uLl9ncm91cHMsIG0wID0gZ3JvdXBzMC5sZW5ndGgsIG0xID0gZ3JvdXBzMS5sZW5ndGgsIG0gPSBNYXRoLm1pbihtMCwgbTEpLCBtZXJnZXMgPSBuZXcgQXJyYXkobTApLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwMCA9IGdyb3VwczBbal0sIGdyb3VwMSA9IGdyb3VwczFbal0sIG4gPSBncm91cDAubGVuZ3RoLCBtZXJnZSA9IG1lcmdlc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXAwW2ldIHx8IGdyb3VwMVtpXSkge1xuICAgICAgICBtZXJnZVtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICg7IGogPCBtMDsgKytqKSB7XG4gICAgbWVyZ2VzW2pdID0gZ3JvdXBzMFtqXTtcbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMsIHRoaXMuX25hbWUsIHRoaXMuX2lkKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0b3J9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkID0gdGhpcy5faWQ7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3Ioc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBzdWJub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChzdWJub2RlID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSkge1xuICAgICAgICBpZiAoXCJfX2RhdGFfX1wiIGluIG5vZGUpIHN1Ym5vZGUuX19kYXRhX18gPSBub2RlLl9fZGF0YV9fO1xuICAgICAgICBzdWJncm91cFtpXSA9IHN1Ym5vZGU7XG4gICAgICAgIHNjaGVkdWxlKHN1Ymdyb3VwW2ldLCBuYW1lLCBpZCwgaSwgc3ViZ3JvdXAsIGdldChub2RlLCBpZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0b3JBbGx9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkID0gdGhpcy5faWQ7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBmb3IgKHZhciBjaGlsZHJlbiA9IHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSwgY2hpbGQsIGluaGVyaXQgPSBnZXQobm9kZSwgaWQpLCBrID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgayA8IGw7ICsraykge1xuICAgICAgICAgIGlmIChjaGlsZCA9IGNoaWxkcmVuW2tdKSB7XG4gICAgICAgICAgICBzY2hlZHVsZShjaGlsZCwgbmFtZSwgaWQsIGssIGNoaWxkcmVuLCBpbmhlcml0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3ViZ3JvdXBzLnB1c2goY2hpbGRyZW4pO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKHN1Ymdyb3VwcywgcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcblxudmFyIFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9ncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtUcmFuc2l0aW9uLCBuZXdJZH0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkMCA9IHRoaXMuX2lkLFxuICAgICAgaWQxID0gbmV3SWQoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICB2YXIgaW5oZXJpdCA9IGdldChub2RlLCBpZDApO1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZDEsIGksIGdyb3VwLCB7XG4gICAgICAgICAgdGltZTogaW5oZXJpdC50aW1lICsgaW5oZXJpdC5kZWxheSArIGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgZHVyYXRpb246IGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZWFzZTogaW5oZXJpdC5lYXNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkMSk7XG59XG4iLCJ2YXIgZXhwb25lbnQgPSAzO1xuXG5leHBvcnQgdmFyIHBvbHlJbiA9IChmdW5jdGlvbiBjdXN0b20oZSkge1xuICBlID0gK2U7XG5cbiAgZnVuY3Rpb24gcG9seUluKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codCwgZSk7XG4gIH1cblxuICBwb2x5SW4uZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbjtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5T3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5T3V0KHQpIHtcbiAgICByZXR1cm4gMSAtIE1hdGgucG93KDEgLSB0LCBlKTtcbiAgfVxuXG4gIHBvbHlPdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlPdXQ7XG59KShleHBvbmVudCk7XG5cbmV4cG9ydCB2YXIgcG9seUluT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IE1hdGgucG93KHQsIGUpIDogMiAtIE1hdGgucG93KDIgLSB0LCBlKSkgLyAyO1xuICB9XG5cbiAgcG9seUluT3V0LmV4cG9uZW50ID0gY3VzdG9tO1xuXG4gIHJldHVybiBwb2x5SW5PdXQ7XG59KShleHBvbmVudCk7XG4iLCJ2YXIgb3ZlcnNob290ID0gMS43MDE1ODtcblxuZXhwb3J0IHZhciBiYWNrSW4gPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tJbih0KSB7XG4gICAgcmV0dXJuIHQgKiB0ICogKChzICsgMSkgKiB0IC0gcyk7XG4gIH1cblxuICBiYWNrSW4ub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW47XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tPdXQodCkge1xuICAgIHJldHVybiAtLXQgKiB0ICogKChzICsgMSkgKiB0ICsgcykgKyAxO1xuICB9XG5cbiAgYmFja091dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tPdXQ7XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tJbk91dCA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luT3V0KHQpIHtcbiAgICByZXR1cm4gKCh0ICo9IDIpIDwgMSA/IHQgKiB0ICogKChzICsgMSkgKiB0IC0gcykgOiAodCAtPSAyKSAqIHQgKiAoKHMgKyAxKSAqIHQgKyBzKSArIDIpIC8gMjtcbiAgfVxuXG4gIGJhY2tJbk91dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tJbk91dDtcbn0pKG92ZXJzaG9vdCk7XG4iLCJ2YXIgdGF1ID0gMiAqIE1hdGguUEksXG4gICAgYW1wbGl0dWRlID0gMSxcbiAgICBwZXJpb2QgPSAwLjM7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY0luID0gKGZ1bmN0aW9uIGN1c3RvbShhLCBwKSB7XG4gIHZhciBzID0gTWF0aC5hc2luKDEgLyAoYSA9IE1hdGgubWF4KDEsIGEpKSkgKiAocCAvPSB0YXUpO1xuXG4gIGZ1bmN0aW9uIGVsYXN0aWNJbih0KSB7XG4gICAgcmV0dXJuIGEgKiBNYXRoLnBvdygyLCAxMCAqIC0tdCkgKiBNYXRoLnNpbigocyAtIHQpIC8gcCk7XG4gIH1cblxuICBlbGFzdGljSW4uYW1wbGl0dWRlID0gZnVuY3Rpb24oYSkgeyByZXR1cm4gY3VzdG9tKGEsIHAgKiB0YXUpOyB9O1xuICBlbGFzdGljSW4ucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljSW47XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY091dCA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljT3V0KHQpIHtcbiAgICByZXR1cm4gMSAtIGEgKiBNYXRoLnBvdygyLCAtMTAgKiAodCA9ICt0KSkgKiBNYXRoLnNpbigodCArIHMpIC8gcCk7XG4gIH1cblxuICBlbGFzdGljT3V0LmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY091dC5wZXJpb2QgPSBmdW5jdGlvbihwKSB7IHJldHVybiBjdXN0b20oYSwgcCk7IH07XG5cbiAgcmV0dXJuIGVsYXN0aWNPdXQ7XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY0luT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShhLCBwKSB7XG4gIHZhciBzID0gTWF0aC5hc2luKDEgLyAoYSA9IE1hdGgubWF4KDEsIGEpKSkgKiAocCAvPSB0YXUpO1xuXG4gIGZ1bmN0aW9uIGVsYXN0aWNJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCA9IHQgKiAyIC0gMSkgPCAwXG4gICAgICAgID8gYSAqIE1hdGgucG93KDIsIDEwICogdCkgKiBNYXRoLnNpbigocyAtIHQpIC8gcClcbiAgICAgICAgOiAyIC0gYSAqIE1hdGgucG93KDIsIC0xMCAqIHQpICogTWF0aC5zaW4oKHMgKyB0KSAvIHApKSAvIDI7XG4gIH1cblxuICBlbGFzdGljSW5PdXQuYW1wbGl0dWRlID0gZnVuY3Rpb24oYSkgeyByZXR1cm4gY3VzdG9tKGEsIHAgKiB0YXUpOyB9O1xuICBlbGFzdGljSW5PdXQucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljSW5PdXQ7XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9pbnRlcnJ1cHQgZnJvbSBcIi4vaW50ZXJydXB0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvblwiO1xuXG5zZWxlY3Rpb24ucHJvdG90eXBlLmludGVycnVwdCA9IHNlbGVjdGlvbl9pbnRlcnJ1cHQ7XG5zZWxlY3Rpb24ucHJvdG90eXBlLnRyYW5zaXRpb24gPSBzZWxlY3Rpb25fdHJhbnNpdGlvbjtcbiIsImV4cG9ydCB2YXIgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBwaSA9IE1hdGguUEk7XG5leHBvcnQgdmFyIGhhbGZQaSA9IHBpIC8gMjtcbmV4cG9ydCB2YXIgdGF1ID0gcGkgKiAyO1xuZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbiIsImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2XCI7XG5cbnZhciBjc3YgPSBkc3YoXCIsXCIpO1xuXG5leHBvcnQgdmFyIGNzdlBhcnNlID0gY3N2LnBhcnNlO1xuZXhwb3J0IHZhciBjc3ZQYXJzZVJvd3MgPSBjc3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRSb3dzID0gY3N2LmZvcm1hdFJvd3M7XG4iLCJpbXBvcnQgZHN2IGZyb20gXCIuL2RzdlwiO1xuXG52YXIgdHN2ID0gZHN2KFwiXFx0XCIpO1xuXG5leHBvcnQgdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlO1xuZXhwb3J0IHZhciB0c3ZQYXJzZVJvd3MgPSB0c3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXQgPSB0c3YuZm9ybWF0O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRSb3dzID0gdHN2LmZvcm1hdFJvd3M7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIGlmIChpc05hTih4ID0gK3gpIHx8IGlzTmFOKHkgPSAreSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MTtcblxuICAvLyBJZiB0aGUgcXVhZHRyZWUgaGFzIG5vIGV4dGVudCwgaW5pdGlhbGl6ZSB0aGVtLlxuICAvLyBJbnRlZ2VyIGV4dGVudCBhcmUgbmVjZXNzYXJ5IHNvIHRoYXQgaWYgd2UgbGF0ZXIgZG91YmxlIHRoZSBleHRlbnQsXG4gIC8vIHRoZSBleGlzdGluZyBxdWFkcmFudCBib3VuZGFyaWVzIGRvbuKAmXQgY2hhbmdlIGR1ZSB0byBmbG9hdGluZyBwb2ludCBlcnJvciFcbiAgaWYgKGlzTmFOKHgwKSkge1xuICAgIHgxID0gKHgwID0gTWF0aC5mbG9vcih4KSkgKyAxO1xuICAgIHkxID0gKHkwID0gTWF0aC5mbG9vcih5KSkgKyAxO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBkb3VibGUgcmVwZWF0ZWRseSB0byBjb3Zlci5cbiAgZWxzZSBpZiAoeDAgPiB4IHx8IHggPiB4MSB8fCB5MCA+IHkgfHwgeSA+IHkxKSB7XG4gICAgdmFyIHogPSB4MSAtIHgwLFxuICAgICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBpO1xuXG4gICAgc3dpdGNoIChpID0gKHkgPCAoeTAgKyB5MSkgLyAyKSA8PCAxIHwgKHggPCAoeDAgKyB4MSkgLyAyKSkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIGRvIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgd2hpbGUgKHogKj0gMiwgeDEgPSB4MCArIHosIHkxID0geTAgKyB6LCB4ID4geDEgfHwgeSA+IHkxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgZG8gcGFyZW50ID0gbmV3IEFycmF5KDQpLCBwYXJlbnRbaV0gPSBub2RlLCBub2RlID0gcGFyZW50O1xuICAgICAgICB3aGlsZSAoeiAqPSAyLCB4MCA9IHgxIC0geiwgeTEgPSB5MCArIHosIHgwID4geCB8fCB5ID4geTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICBkbyBwYXJlbnQgPSBuZXcgQXJyYXkoNCksIHBhcmVudFtpXSA9IG5vZGUsIG5vZGUgPSBwYXJlbnQ7XG4gICAgICAgIHdoaWxlICh6ICo9IDIsIHgxID0geDAgKyB6LCB5MCA9IHkxIC0geiwgeCA+IHgxIHx8IHkwID4geSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIGRvIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgd2hpbGUgKHogKj0gMiwgeDAgPSB4MSAtIHosIHkwID0geTEgLSB6LCB4MCA+IHggfHwgeTAgPiB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jvb3QgJiYgdGhpcy5fcm9vdC5sZW5ndGgpIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1YWR0cmVlIGNvdmVycyB0aGUgcG9pbnQgYWxyZWFkeSwganVzdCByZXR1cm4uXG4gIGVsc2UgcmV0dXJuIHRoaXM7XG5cbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGRhdGEgPSBbXTtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gZGF0YS5wdXNoKG5vZGUuZGF0YSk7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuY292ZXIoK19bMF1bMF0sICtfWzBdWzFdKS5jb3ZlcigrX1sxXVswXSwgK19bMV1bMV0pXG4gICAgICA6IGlzTmFOKHRoaXMuX3gwKSA/IHVuZGVmaW5lZCA6IFtbdGhpcy5feDAsIHRoaXMuX3kwXSwgW3RoaXMuX3gxLCB0aGlzLl95MV1dO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy54MCA9IHgwO1xuICB0aGlzLnkwID0geTA7XG4gIHRoaXMueDEgPSB4MTtcbiAgdGhpcy55MSA9IHkxO1xufVxuIiwiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgdmFyIGRhdGEsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxLFxuICAgICAgeTEsXG4gICAgICB4MixcbiAgICAgIHkyLFxuICAgICAgeDMgPSB0aGlzLl94MSxcbiAgICAgIHkzID0gdGhpcy5feTEsXG4gICAgICBxdWFkcyA9IFtdLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBxLFxuICAgICAgaTtcblxuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB4MCwgeTAsIHgzLCB5MykpO1xuICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICBlbHNlIHtcbiAgICB4MCA9IHggLSByYWRpdXMsIHkwID0geSAtIHJhZGl1cztcbiAgICB4MyA9IHggKyByYWRpdXMsIHkzID0geSArIHJhZGl1cztcbiAgICByYWRpdXMgKj0gcmFkaXVzO1xuICB9XG5cbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuXG4gICAgLy8gU3RvcCBzZWFyY2hpbmcgaWYgdGhpcyBxdWFkcmFudCBjYW7igJl0IGNvbnRhaW4gYSBjbG9zZXIgbm9kZS5cbiAgICBpZiAoIShub2RlID0gcS5ub2RlKVxuICAgICAgICB8fCAoeDEgPSBxLngwKSA+IHgzXG4gICAgICAgIHx8ICh5MSA9IHEueTApID4geTNcbiAgICAgICAgfHwgKHgyID0gcS54MSkgPCB4MFxuICAgICAgICB8fCAoeTIgPSBxLnkxKSA8IHkwKSBjb250aW51ZTtcblxuICAgIC8vIEJpc2VjdCB0aGUgY3VycmVudCBxdWFkcmFudC5cbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MSArIHgyKSAvIDIsXG4gICAgICAgICAgeW0gPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgICBxdWFkcy5wdXNoKFxuICAgICAgICBuZXcgUXVhZChub2RlWzNdLCB4bSwgeW0sIHgyLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMl0sIHgxLCB5bSwgeG0sIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsxXSwgeG0sIHkxLCB4MiwgeW0pLFxuICAgICAgICBuZXcgUXVhZChub2RlWzBdLCB4MSwgeTEsIHhtLCB5bSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFZpc2l0IHRoZSBjbG9zZXN0IHF1YWRyYW50IGZpcnN0LlxuICAgICAgaWYgKGkgPSAoeSA+PSB5bSkgPDwgMSB8ICh4ID49IHhtKSkge1xuICAgICAgICBxID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV0gPSBxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpc2l0IHRoaXMgcG9pbnQuIChWaXNpdGluZyBjb2luY2lkZW50IHBvaW50cyBpc27igJl0IG5lY2Vzc2FyeSEpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZHggPSB4IC0gK3RoaXMuX3guY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGR5ID0geSAtICt0aGlzLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgaWYgKGQyIDwgcmFkaXVzKSB7XG4gICAgICAgIHZhciBkID0gTWF0aC5zcXJ0KHJhZGl1cyA9IGQyKTtcbiAgICAgICAgeDAgPSB4IC0gZCwgeTAgPSB5IC0gZDtcbiAgICAgICAgeDMgPSB4ICsgZCwgeTMgPSB5ICsgZDtcbiAgICAgICAgZGF0YSA9IG5vZGUuZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fcm9vdDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2l6ZSA9IDA7XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvICsrc2l6ZTsgd2hpbGUgKG5vZGUgPSBub2RlLm5leHQpXG4gIH0pO1xuICByZXR1cm4gc2l6ZTtcbn1cbiIsImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgbmV4dCA9IFtdLCBxO1xuICBpZiAodGhpcy5fcm9vdCkgcXVhZHMucHVzaChuZXcgUXVhZCh0aGlzLl9yb290LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgdmFyIG5vZGUgPSBxLm5vZGU7XG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSwgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgIH1cbiAgICBuZXh0LnB1c2gocSk7XG4gIH1cbiAgd2hpbGUgKHEgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2socS5ub2RlLCBxLngwLCBxLnkwLCBxLngxLCBxLnkxKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsIi8vIENvbXB1dGVzIHRoZSBkZWNpbWFsIGNvZWZmaWNpZW50IGFuZCBleHBvbmVudCBvZiB0aGUgc3BlY2lmaWVkIG51bWJlciB4IHdpdGhcbi8vIHNpZ25pZmljYW50IGRpZ2l0cyBwLCB3aGVyZSB4IGlzIHBvc2l0aXZlIGFuZCBwIGlzIGluIFsxLCAyMV0gb3IgdW5kZWZpbmVkLlxuLy8gRm9yIGV4YW1wbGUsIGZvcm1hdERlY2ltYWwoMS4yMykgcmV0dXJucyBbXCIxMjNcIiwgMF0uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIGlmICgoaSA9ICh4ID0gcCA/IHgudG9FeHBvbmVudGlhbChwIC0gMSkgOiB4LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZihcImVcIikpIDwgMCkgcmV0dXJuIG51bGw7IC8vIE5hTiwgwrFJbmZpbml0eVxuICB2YXIgaSwgY29lZmZpY2llbnQgPSB4LnNsaWNlKDAsIGkpO1xuXG4gIC8vIFRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdG9FeHBvbmVudGlhbCBlaXRoZXIgaGFzIHRoZSBmb3JtIFxcZFxcLlxcZCtlWy0rXVxcZCtcbiAgLy8gKGUuZy4sIDEuMmUrMykgb3IgdGhlIGZvcm0gXFxkZVstK11cXGQrIChlLmcuLCAxZSszKS5cbiAgcmV0dXJuIFtcbiAgICBjb2VmZmljaWVudC5sZW5ndGggPiAxID8gY29lZmZpY2llbnRbMF0gKyBjb2VmZmljaWVudC5zbGljZSgyKSA6IGNvZWZmaWNpZW50LFxuICAgICt4LnNsaWNlKGkgKyAxKVxuICBdO1xufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgdmFyIHByZWZpeEV4cG9uZW50O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbCh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbCh4LCBNYXRoLm1heCgwLCBwICsgaSAtIDEpKVswXTsgLy8gbGVzcyB0aGFuIDF5IVxufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID0gZm9ybWF0RGVjaW1hbChNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG51bWVyYWxzKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bMC05XS9nLCBmdW5jdGlvbihpKSB7XG4gICAgICByZXR1cm4gbnVtZXJhbHNbK2ldO1xuICAgIH0pO1xuICB9O1xufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbCh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV07XG4gIHJldHVybiBleHBvbmVudCA8IDAgPyBcIjAuXCIgKyBuZXcgQXJyYXkoLWV4cG9uZW50KS5qb2luKFwiMFwiKSArIGNvZWZmaWNpZW50XG4gICAgICA6IGNvZWZmaWNpZW50Lmxlbmd0aCA+IGV4cG9uZW50ICsgMSA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGV4cG9uZW50ICsgMSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGV4cG9uZW50ICsgMSlcbiAgICAgIDogY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoZXhwb25lbnQgLSBjb2VmZmljaWVudC5sZW5ndGggKyAyKS5qb2luKFwiMFwiKTtcbn1cbiIsImltcG9ydCBmb3JtYXREZWZhdWx0IGZyb20gXCIuL2Zvcm1hdERlZmF1bHRcIjtcbmltcG9ydCBmb3JtYXRQcmVmaXhBdXRvIGZyb20gXCIuL2Zvcm1hdFByZWZpeEF1dG9cIjtcbmltcG9ydCBmb3JtYXRSb3VuZGVkIGZyb20gXCIuL2Zvcm1hdFJvdW5kZWRcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBcIlwiOiBmb3JtYXREZWZhdWx0LFxuICBcIiVcIjogZnVuY3Rpb24oeCwgcCkgeyByZXR1cm4gKHggKiAxMDApLnRvRml4ZWQocCk7IH0sXG4gIFwiYlwiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpOyB9LFxuICBcImNcIjogZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIFwiXCI7IH0sXG4gIFwiZFwiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDEwKTsgfSxcbiAgXCJlXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9FeHBvbmVudGlhbChwKTsgfSxcbiAgXCJmXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9GaXhlZChwKTsgfSxcbiAgXCJnXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9QcmVjaXNpb24ocCk7IH0sXG4gIFwib1wiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDgpOyB9LFxuICBcInBcIjogZnVuY3Rpb24oeCwgcCkgeyByZXR1cm4gZm9ybWF0Um91bmRlZCh4ICogMTAwLCBwKTsgfSxcbiAgXCJyXCI6IGZvcm1hdFJvdW5kZWQsXG4gIFwic1wiOiBmb3JtYXRQcmVmaXhBdXRvLFxuICBcIlhcIjogZnVuY3Rpb24oeCkgeyByZXR1cm4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsgfSxcbiAgXCJ4XCI6IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIE1hdGgucm91bmQoeCkudG9TdHJpbmcoMTYpOyB9XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB4ID0geC50b1ByZWNpc2lvbihwKTtcblxuICBvdXQ6IGZvciAodmFyIG4gPSB4Lmxlbmd0aCwgaSA9IDEsIGkwID0gLTEsIGkxOyBpIDwgbjsgKytpKSB7XG4gICAgc3dpdGNoICh4W2ldKSB7XG4gICAgICBjYXNlIFwiLlwiOiBpMCA9IGkxID0gaTsgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOiBpZiAoaTAgPT09IDApIGkwID0gaTsgaTEgPSBpOyBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6IGJyZWFrIG91dDtcbiAgICAgIGRlZmF1bHQ6IGlmIChpMCA+IDApIGkwID0gMDsgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGkwID4gMCA/IHguc2xpY2UoMCwgaTApICsgeC5zbGljZShpMSArIDEpIDogeDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iLCJpbXBvcnQgZm9ybWF0TG9jYWxlIGZyb20gXCIuL2xvY2FsZVwiO1xuXG52YXIgbG9jYWxlO1xuZXhwb3J0IHZhciBmb3JtYXQ7XG5leHBvcnQgdmFyIGZvcm1hdFByZWZpeDtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRlY2ltYWw6IFwiLlwiLFxuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcbmltcG9ydCBmb3JtYXRHcm91cCBmcm9tIFwiLi9mb3JtYXRHcm91cFwiO1xuaW1wb3J0IGZvcm1hdE51bWVyYWxzIGZyb20gXCIuL2Zvcm1hdE51bWVyYWxzXCI7XG5pbXBvcnQgZm9ybWF0U3BlY2lmaWVyIGZyb20gXCIuL2Zvcm1hdFNwZWNpZmllclwiO1xuaW1wb3J0IGZvcm1hdFR5cGVzIGZyb20gXCIuL2Zvcm1hdFR5cGVzXCI7XG5pbXBvcnQge3ByZWZpeEV4cG9uZW50fSBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvXCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHlcIjtcblxudmFyIHByZWZpeGVzID0gW1wieVwiLFwielwiLFwiYVwiLFwiZlwiLFwicFwiLFwiblwiLFwiwrVcIixcIm1cIixcIlwiLFwia1wiLFwiTVwiLFwiR1wiLFwiVFwiLFwiUFwiLFwiRVwiLFwiWlwiLFwiWVwiXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obG9jYWxlKSB7XG4gIHZhciBncm91cCA9IGxvY2FsZS5ncm91cGluZyAmJiBsb2NhbGUudGhvdXNhbmRzID8gZm9ybWF0R3JvdXAobG9jYWxlLmdyb3VwaW5nLCBsb2NhbGUudGhvdXNhbmRzKSA6IGlkZW50aXR5LFxuICAgICAgY3VycmVuY3kgPSBsb2NhbGUuY3VycmVuY3ksXG4gICAgICBkZWNpbWFsID0gbG9jYWxlLmRlY2ltYWwsXG4gICAgICBudW1lcmFscyA9IGxvY2FsZS5udW1lcmFscyA/IGZvcm1hdE51bWVyYWxzKGxvY2FsZS5udW1lcmFscykgOiBpZGVudGl0eSxcbiAgICAgIHBlcmNlbnQgPSBsb2NhbGUucGVyY2VudCB8fCBcIiVcIjtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyKSB7XG4gICAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICB2YXIgZmlsbCA9IHNwZWNpZmllci5maWxsLFxuICAgICAgICBhbGlnbiA9IHNwZWNpZmllci5hbGlnbixcbiAgICAgICAgc2lnbiA9IHNwZWNpZmllci5zaWduLFxuICAgICAgICBzeW1ib2wgPSBzcGVjaWZpZXIuc3ltYm9sLFxuICAgICAgICB6ZXJvID0gc3BlY2lmaWVyLnplcm8sXG4gICAgICAgIHdpZHRoID0gc3BlY2lmaWVyLndpZHRoLFxuICAgICAgICBjb21tYSA9IHNwZWNpZmllci5jb21tYSxcbiAgICAgICAgcHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbixcbiAgICAgICAgdHlwZSA9IHNwZWNpZmllci50eXBlO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgcHJlZml4IGFuZCBzdWZmaXguXG4gICAgLy8gRm9yIFNJLXByZWZpeCwgdGhlIHN1ZmZpeCBpcyBsYXppbHkgY29tcHV0ZWQuXG4gICAgdmFyIHByZWZpeCA9IHN5bWJvbCA9PT0gXCIkXCIgPyBjdXJyZW5jeVswXSA6IHN5bWJvbCA9PT0gXCIjXCIgJiYgL1tib3hYXS8udGVzdCh0eXBlKSA/IFwiMFwiICsgdHlwZS50b0xvd2VyQ2FzZSgpIDogXCJcIixcbiAgICAgICAgc3VmZml4ID0gc3ltYm9sID09PSBcIiRcIiA/IGN1cnJlbmN5WzFdIDogL1slcF0vLnRlc3QodHlwZSkgPyBwZXJjZW50IDogXCJcIjtcblxuICAgIC8vIFdoYXQgZm9ybWF0IGZ1bmN0aW9uIHNob3VsZCB3ZSB1c2U/XG4gICAgLy8gSXMgdGhpcyBhbiBpbnRlZ2VyIHR5cGU/XG4gICAgLy8gQ2FuIHRoaXMgdHlwZSBnZW5lcmF0ZSBleHBvbmVudGlhbCBub3RhdGlvbj9cbiAgICB2YXIgZm9ybWF0VHlwZSA9IGZvcm1hdFR5cGVzW3R5cGVdLFxuICAgICAgICBtYXliZVN1ZmZpeCA9ICF0eXBlIHx8IC9bZGVmZ3BycyVdLy50ZXN0KHR5cGUpO1xuXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHByZWNpc2lvbiBpZiBub3Qgc3BlY2lmaWVkLFxuICAgIC8vIG9yIGNsYW1wIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIHRvIHRoZSBzdXBwb3J0ZWQgcmFuZ2UuXG4gICAgLy8gRm9yIHNpZ25pZmljYW50IHByZWNpc2lvbiwgaXQgbXVzdCBiZSBpbiBbMSwgMjFdLlxuICAgIC8vIEZvciBmaXhlZCBwcmVjaXNpb24sIGl0IG11c3QgYmUgaW4gWzAsIDIwXS5cbiAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/ICh0eXBlID8gNiA6IDEyKVxuICAgICAgICA6IC9bZ3Byc10vLnRlc3QodHlwZSkgPyBNYXRoLm1heCgxLCBNYXRoLm1pbigyMSwgcHJlY2lzaW9uKSlcbiAgICAgICAgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigyMCwgcHJlY2lzaW9uKSk7XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQodmFsdWUpIHtcbiAgICAgIHZhciB2YWx1ZVByZWZpeCA9IHByZWZpeCxcbiAgICAgICAgICB2YWx1ZVN1ZmZpeCA9IHN1ZmZpeCxcbiAgICAgICAgICBpLCBuLCBjO1xuXG4gICAgICBpZiAodHlwZSA9PT0gXCJjXCIpIHtcbiAgICAgICAgdmFsdWVTdWZmaXggPSBmb3JtYXRUeXBlKHZhbHVlKSArIHZhbHVlU3VmZml4O1xuICAgICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9ICt2YWx1ZTtcblxuICAgICAgICAvLyBQZXJmb3JtIHRoZSBpbml0aWFsIGZvcm1hdHRpbmcuXG4gICAgICAgIHZhciB2YWx1ZU5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICAgICAgICB2YWx1ZSA9IGZvcm1hdFR5cGUoTWF0aC5hYnModmFsdWUpLCBwcmVjaXNpb24pO1xuXG4gICAgICAgIC8vIElmIGEgbmVnYXRpdmUgdmFsdWUgcm91bmRzIHRvIHplcm8gZHVyaW5nIGZvcm1hdHRpbmcsIHRyZWF0IGFzIHBvc2l0aXZlLlxuICAgICAgICBpZiAodmFsdWVOZWdhdGl2ZSAmJiArdmFsdWUgPT09IDApIHZhbHVlTmVnYXRpdmUgPSBmYWxzZTtcblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBwcmVmaXggYW5kIHN1ZmZpeC5cbiAgICAgICAgdmFsdWVQcmVmaXggPSAodmFsdWVOZWdhdGl2ZSA/IChzaWduID09PSBcIihcIiA/IHNpZ24gOiBcIi1cIikgOiBzaWduID09PSBcIi1cIiB8fCBzaWduID09PSBcIihcIiA/IFwiXCIgOiBzaWduKSArIHZhbHVlUHJlZml4O1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9IHZhbHVlU3VmZml4ICsgKHR5cGUgPT09IFwic1wiID8gcHJlZml4ZXNbOCArIHByZWZpeEV4cG9uZW50IC8gM10gOiBcIlwiKSArICh2YWx1ZU5lZ2F0aXZlICYmIHNpZ24gPT09IFwiKFwiID8gXCIpXCIgOiBcIlwiKTtcblxuICAgICAgICAvLyBCcmVhayB0aGUgZm9ybWF0dGVkIHZhbHVlIGludG8gdGhlIGludGVnZXIg4oCcdmFsdWXigJ0gcGFydCB0aGF0IGNhbiBiZVxuICAgICAgICAvLyBncm91cGVkLCBhbmQgZnJhY3Rpb25hbCBvciBleHBvbmVudGlhbCDigJxzdWZmaXjigJ0gcGFydCB0aGF0IGlzIG5vdC5cbiAgICAgICAgaWYgKG1heWJlU3VmZml4KSB7XG4gICAgICAgICAgaSA9IC0xLCBuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgICAgICBpZiAoYyA9IHZhbHVlLmNoYXJDb2RlQXQoaSksIDQ4ID4gYyB8fCBjID4gNTcpIHtcbiAgICAgICAgICAgICAgdmFsdWVTdWZmaXggPSAoYyA9PT0gNDYgPyBkZWNpbWFsICsgdmFsdWUuc2xpY2UoaSArIDEpIDogdmFsdWUuc2xpY2UoaSkpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgbm90IFwiMFwiLCBncm91cGluZyBpcyBhcHBsaWVkIGJlZm9yZSBwYWRkaW5nLlxuICAgICAgaWYgKGNvbW1hICYmICF6ZXJvKSB2YWx1ZSA9IGdyb3VwKHZhbHVlLCBJbmZpbml0eSk7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHBhZGRpbmcuXG4gICAgICB2YXIgbGVuZ3RoID0gdmFsdWVQcmVmaXgubGVuZ3RoICsgdmFsdWUubGVuZ3RoICsgdmFsdWVTdWZmaXgubGVuZ3RoLFxuICAgICAgICAgIHBhZGRpbmcgPSBsZW5ndGggPCB3aWR0aCA/IG5ldyBBcnJheSh3aWR0aCAtIGxlbmd0aCArIDEpLmpvaW4oZmlsbCkgOiBcIlwiO1xuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgXCIwXCIsIGdyb3VwaW5nIGlzIGFwcGxpZWQgYWZ0ZXIgcGFkZGluZy5cbiAgICAgIGlmIChjb21tYSAmJiB6ZXJvKSB2YWx1ZSA9IGdyb3VwKHBhZGRpbmcgKyB2YWx1ZSwgcGFkZGluZy5sZW5ndGggPyB3aWR0aCAtIHZhbHVlU3VmZml4Lmxlbmd0aCA6IEluZmluaXR5KSwgcGFkZGluZyA9IFwiXCI7XG5cbiAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBmaW5hbCBvdXRwdXQgYmFzZWQgb24gdGhlIGRlc2lyZWQgYWxpZ25tZW50LlxuICAgICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgICBjYXNlIFwiPFwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeCArIHBhZGRpbmc7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiPVwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgcGFkZGluZyArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiXlwiOiB2YWx1ZSA9IHBhZGRpbmcuc2xpY2UoMCwgbGVuZ3RoID0gcGFkZGluZy5sZW5ndGggPj4gMSkgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXggKyBwYWRkaW5nLnNsaWNlKGxlbmd0aCk7IGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiB2YWx1ZSA9IHBhZGRpbmcgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVtZXJhbHModmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllciArIFwiXCI7XG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQcmVmaXgoc3BlY2lmaWVyLCB2YWx1ZSkge1xuICAgIHZhciBmID0gbmV3Rm9ybWF0KChzcGVjaWZpZXIgPSBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSwgc3BlY2lmaWVyLnR5cGUgPSBcImZcIiwgc3BlY2lmaWVyKSksXG4gICAgICAgIGUgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCh2YWx1ZSkgLyAzKSkpICogMyxcbiAgICAgICAgayA9IE1hdGgucG93KDEwLCAtZSksXG4gICAgICAgIHByZWZpeCA9IHByZWZpeGVzWzggKyBlIC8gM107XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZihrICogdmFsdWUpICsgcHJlZml4O1xuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZvcm1hdDogbmV3Rm9ybWF0LFxuICAgIGZvcm1hdFByZWZpeDogZm9ybWF0UHJlZml4XG4gIH07XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgLWV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50KHZhbHVlKSAvIDMpKSkgKiAzIC0gZXhwb25lbnQoTWF0aC5hYnMoc3RlcCkpKTtcbn1cbiIsImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCBtYXgpIHtcbiAgc3RlcCA9IE1hdGguYWJzKHN0ZXApLCBtYXggPSBNYXRoLmFicyhtYXgpIC0gc3RlcDtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIGV4cG9uZW50KG1heCkgLSBleHBvbmVudChzdGVwKSkgKyAxO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2F0YW4yLCBjb3MsIHF1YXJ0ZXJQaSwgcmFkaWFucywgc2luLCB0YXV9IGZyb20gXCIuL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuL25vb3BcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4vc3RyZWFtXCI7XG5cbmV4cG9ydCB2YXIgYXJlYVJpbmdTdW0gPSBhZGRlcigpO1xuXG52YXIgYXJlYVN1bSA9IGFkZGVyKCksXG4gICAgbGFtYmRhMDAsXG4gICAgcGhpMDAsXG4gICAgbGFtYmRhMCxcbiAgICBjb3NQaGkwLFxuICAgIHNpblBoaTA7XG5cbmV4cG9ydCB2YXIgYXJlYVN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogbm9vcCxcbiAgbGluZUVuZDogbm9vcCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBhcmVhUmluZ1N1bS5yZXNldCgpO1xuICAgIGFyZWFTdHJlYW0ubGluZVN0YXJ0ID0gYXJlYVJpbmdTdGFydDtcbiAgICBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhUmluZ0VuZDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWFSaW5nID0gK2FyZWFSaW5nU3VtO1xuICAgIGFyZWFTdW0uYWRkKGFyZWFSaW5nIDwgMCA/IHRhdSArIGFyZWFSaW5nIDogYXJlYVJpbmcpO1xuICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5saW5lRW5kID0gdGhpcy5wb2ludCA9IG5vb3A7XG4gIH0sXG4gIHNwaGVyZTogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN1bS5hZGQodGF1KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXJlYVJpbmdTdGFydCgpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludEZpcnN0O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KGxhbWJkYTAwLCBwaGkwMCk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludEZpcnN0KGxhbWJkYSwgcGhpKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnQ7XG4gIGxhbWJkYTAwID0gbGFtYmRhLCBwaGkwMCA9IHBoaTtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zKHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGkpLCBzaW5QaGkwID0gc2luKHBoaSk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGk7IC8vIGhhbGYgdGhlIGFuZ3VsYXIgZGlzdGFuY2UgZnJvbSBzb3V0aCBwb2xlXG5cbiAgLy8gU3BoZXJpY2FsIGV4Y2VzcyBFIGZvciBhIHNwaGVyaWNhbCB0cmlhbmdsZSB3aXRoIHZlcnRpY2VzOiBzb3V0aCBwb2xlLFxuICAvLyBwcmV2aW91cyBwb2ludCwgY3VycmVudCBwb2ludC4gIFVzZXMgYSBmb3JtdWxhIGRlcml2ZWQgZnJvbSBDYWdub2xp4oCZc1xuICAvLyB0aGVvcmVtLiAgU2VlIFRvZGh1bnRlciwgU3BoZXJpY2FsIFRyaWcuICgxODcxKSwgU2VjLiAxMDMsIEVxLiAoMikuXG4gIHZhciBkTGFtYmRhID0gbGFtYmRhIC0gbGFtYmRhMCxcbiAgICAgIHNkTGFtYmRhID0gZExhbWJkYSA+PSAwID8gMSA6IC0xLFxuICAgICAgYWRMYW1iZGEgPSBzZExhbWJkYSAqIGRMYW1iZGEsXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIHNpblBoaSA9IHNpbihwaGkpLFxuICAgICAgayA9IHNpblBoaTAgKiBzaW5QaGksXG4gICAgICB1ID0gY29zUGhpMCAqIGNvc1BoaSArIGsgKiBjb3MoYWRMYW1iZGEpLFxuICAgICAgdiA9IGsgKiBzZExhbWJkYSAqIHNpbihhZExhbWJkYSk7XG4gIGFyZWFSaW5nU3VtLmFkZChhdGFuMih2LCB1KSk7XG5cbiAgLy8gQWR2YW5jZSB0aGUgcHJldmlvdXMgcG9pbnRzLlxuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zUGhpLCBzaW5QaGkwID0gc2luUGhpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QpIHtcbiAgYXJlYVN1bS5yZXNldCgpO1xuICBzdHJlYW0ob2JqZWN0LCBhcmVhU3RyZWFtKTtcbiAgcmV0dXJuIGFyZWFTdW0gKiAyO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2FyZWFTdHJlYW0sIGFyZWFSaW5nU3VtfSBmcm9tIFwiLi9hcmVhXCI7XG5pbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UsIHNwaGVyaWNhbH0gZnJvbSBcIi4vY2FydGVzaWFuXCI7XG5pbXBvcnQge2FicywgZGVncmVlcywgZXBzaWxvbiwgcmFkaWFuc30gZnJvbSBcIi4vbWF0aFwiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi9zdHJlYW1cIjtcblxudmFyIGxhbWJkYTAsIHBoaTAsIGxhbWJkYTEsIHBoaTEsIC8vIGJvdW5kc1xuICAgIGxhbWJkYTIsIC8vIHByZXZpb3VzIGxhbWJkYS1jb29yZGluYXRlXG4gICAgbGFtYmRhMDAsIHBoaTAwLCAvLyBmaXJzdCBwb2ludFxuICAgIHAwLCAvLyBwcmV2aW91cyAzRCBwb2ludFxuICAgIGRlbHRhU3VtID0gYWRkZXIoKSxcbiAgICByYW5nZXMsXG4gICAgcmFuZ2U7XG5cbnZhciBib3VuZHNTdHJlYW0gPSB7XG4gIHBvaW50OiBib3VuZHNQb2ludCxcbiAgbGluZVN0YXJ0OiBib3VuZHNMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGJvdW5kc0xpbmVFbmQsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUmluZ1BvaW50O1xuICAgIGJvdW5kc1N0cmVhbS5saW5lU3RhcnQgPSBib3VuZHNSaW5nU3RhcnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVFbmQgPSBib3VuZHNSaW5nRW5kO1xuICAgIGRlbHRhU3VtLnJlc2V0KCk7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uU3RhcnQoKTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uRW5kKCk7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUG9pbnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVTdGFydCA9IGJvdW5kc0xpbmVTdGFydDtcbiAgICBib3VuZHNTdHJlYW0ubGluZUVuZCA9IGJvdW5kc0xpbmVFbmQ7XG4gICAgaWYgKGFyZWFSaW5nU3VtIDwgMCkgbGFtYmRhMCA9IC0obGFtYmRhMSA9IDE4MCksIHBoaTAgPSAtKHBoaTEgPSA5MCk7XG4gICAgZWxzZSBpZiAoZGVsdGFTdW0gPiBlcHNpbG9uKSBwaGkxID0gOTA7XG4gICAgZWxzZSBpZiAoZGVsdGFTdW0gPCAtZXBzaWxvbikgcGhpMCA9IC05MDtcbiAgICByYW5nZVswXSA9IGxhbWJkYTAsIHJhbmdlWzFdID0gbGFtYmRhMTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYm91bmRzUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgcmFuZ2VzLnB1c2gocmFuZ2UgPSBbbGFtYmRhMCA9IGxhbWJkYSwgbGFtYmRhMSA9IGxhbWJkYV0pO1xuICBpZiAocGhpIDwgcGhpMCkgcGhpMCA9IHBoaTtcbiAgaWYgKHBoaSA+IHBoaTEpIHBoaTEgPSBwaGk7XG59XG5cbmZ1bmN0aW9uIGxpbmVQb2ludChsYW1iZGEsIHBoaSkge1xuICB2YXIgcCA9IGNhcnRlc2lhbihbbGFtYmRhICogcmFkaWFucywgcGhpICogcmFkaWFuc10pO1xuICBpZiAocDApIHtcbiAgICB2YXIgbm9ybWFsID0gY2FydGVzaWFuQ3Jvc3MocDAsIHApLFxuICAgICAgICBlcXVhdG9yaWFsID0gW25vcm1hbFsxXSwgLW5vcm1hbFswXSwgMF0sXG4gICAgICAgIGluZmxlY3Rpb24gPSBjYXJ0ZXNpYW5Dcm9zcyhlcXVhdG9yaWFsLCBub3JtYWwpO1xuICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoaW5mbGVjdGlvbik7XG4gICAgaW5mbGVjdGlvbiA9IHNwaGVyaWNhbChpbmZsZWN0aW9uKTtcbiAgICB2YXIgZGVsdGEgPSBsYW1iZGEgLSBsYW1iZGEyLFxuICAgICAgICBzaWduID0gZGVsdGEgPiAwID8gMSA6IC0xLFxuICAgICAgICBsYW1iZGFpID0gaW5mbGVjdGlvblswXSAqIGRlZ3JlZXMgKiBzaWduLFxuICAgICAgICBwaGlpLFxuICAgICAgICBhbnRpbWVyaWRpYW4gPSBhYnMoZGVsdGEpID4gMTgwO1xuICAgIGlmIChhbnRpbWVyaWRpYW4gXiAoc2lnbiAqIGxhbWJkYTIgPCBsYW1iZGFpICYmIGxhbWJkYWkgPCBzaWduICogbGFtYmRhKSkge1xuICAgICAgcGhpaSA9IGluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPiBwaGkxKSBwaGkxID0gcGhpaTtcbiAgICB9IGVsc2UgaWYgKGxhbWJkYWkgPSAobGFtYmRhaSArIDM2MCkgJSAzNjAgLSAxODAsIGFudGltZXJpZGlhbiBeIChzaWduICogbGFtYmRhMiA8IGxhbWJkYWkgJiYgbGFtYmRhaSA8IHNpZ24gKiBsYW1iZGEpKSB7XG4gICAgICBwaGlpID0gLWluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPCBwaGkwKSBwaGkwID0gcGhpaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBoaSA8IHBoaTApIHBoaTAgPSBwaGk7XG4gICAgICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbiAgICB9XG4gICAgaWYgKGFudGltZXJpZGlhbikge1xuICAgICAgaWYgKGxhbWJkYSA8IGxhbWJkYTIpIHtcbiAgICAgICAgaWYgKGFuZ2xlKGxhbWJkYTAsIGxhbWJkYSkgPiBhbmdsZShsYW1iZGEwLCBsYW1iZGExKSkgbGFtYmRhMSA9IGxhbWJkYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhbmdsZShsYW1iZGEsIGxhbWJkYTEpID4gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkpIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsYW1iZGExID49IGxhbWJkYTApIHtcbiAgICAgICAgaWYgKGxhbWJkYSA8IGxhbWJkYTApIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICAgIGlmIChsYW1iZGEgPiBsYW1iZGExKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxhbWJkYSA+IGxhbWJkYTIpIHtcbiAgICAgICAgICBpZiAoYW5nbGUobGFtYmRhMCwgbGFtYmRhKSA+IGFuZ2xlKGxhbWJkYTAsIGxhbWJkYTEpKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChhbmdsZShsYW1iZGEsIGxhbWJkYTEpID4gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkpIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmFuZ2VzLnB1c2gocmFuZ2UgPSBbbGFtYmRhMCA9IGxhbWJkYSwgbGFtYmRhMSA9IGxhbWJkYV0pO1xuICB9XG4gIGlmIChwaGkgPCBwaGkwKSBwaGkwID0gcGhpO1xuICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbiAgcDAgPSBwLCBsYW1iZGEyID0gbGFtYmRhO1xufVxuXG5mdW5jdGlvbiBib3VuZHNMaW5lU3RhcnQoKSB7XG4gIGJvdW5kc1N0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbn1cblxuZnVuY3Rpb24gYm91bmRzTGluZUVuZCgpIHtcbiAgcmFuZ2VbMF0gPSBsYW1iZGEwLCByYW5nZVsxXSA9IGxhbWJkYTE7XG4gIGJvdW5kc1N0cmVhbS5wb2ludCA9IGJvdW5kc1BvaW50O1xuICBwMCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdQb2ludChsYW1iZGEsIHBoaSkge1xuICBpZiAocDApIHtcbiAgICB2YXIgZGVsdGEgPSBsYW1iZGEgLSBsYW1iZGEyO1xuICAgIGRlbHRhU3VtLmFkZChhYnMoZGVsdGEpID4gMTgwID8gZGVsdGEgKyAoZGVsdGEgPiAwID8gMzYwIDogLTM2MCkgOiBkZWx0YSk7XG4gIH0gZWxzZSB7XG4gICAgbGFtYmRhMDAgPSBsYW1iZGEsIHBoaTAwID0gcGhpO1xuICB9XG4gIGFyZWFTdHJlYW0ucG9pbnQobGFtYmRhLCBwaGkpO1xuICBsaW5lUG9pbnQobGFtYmRhLCBwaGkpO1xufVxuXG5mdW5jdGlvbiBib3VuZHNSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ubGluZVN0YXJ0KCk7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdFbmQoKSB7XG4gIGJvdW5kc1JpbmdQb2ludChsYW1iZGEwMCwgcGhpMDApO1xuICBhcmVhU3RyZWFtLmxpbmVFbmQoKTtcbiAgaWYgKGFicyhkZWx0YVN1bSkgPiBlcHNpbG9uKSBsYW1iZGEwID0gLShsYW1iZGExID0gMTgwKTtcbiAgcmFuZ2VbMF0gPSBsYW1iZGEwLCByYW5nZVsxXSA9IGxhbWJkYTE7XG4gIHAwID0gbnVsbDtcbn1cblxuLy8gRmluZHMgdGhlIGxlZnQtcmlnaHQgZGlzdGFuY2UgYmV0d2VlbiB0d28gbG9uZ2l0dWRlcy5cbi8vIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIChsYW1iZGExIC0gbGFtYmRhMCArIDM2MMKwKSAlIDM2MMKwLCBleGNlcHQgdGhhdCB3ZSB3YW50XG4vLyB0aGUgZGlzdGFuY2UgYmV0d2VlbiDCsTE4MMKwIHRvIGJlIDM2MMKwLlxuZnVuY3Rpb24gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkge1xuICByZXR1cm4gKGxhbWJkYTEgLT0gbGFtYmRhMCkgPCAwID8gbGFtYmRhMSArIDM2MCA6IGxhbWJkYTE7XG59XG5cbmZ1bmN0aW9uIHJhbmdlQ29tcGFyZShhLCBiKSB7XG4gIHJldHVybiBhWzBdIC0gYlswXTtcbn1cblxuZnVuY3Rpb24gcmFuZ2VDb250YWlucyhyYW5nZSwgeCkge1xuICByZXR1cm4gcmFuZ2VbMF0gPD0gcmFuZ2VbMV0gPyByYW5nZVswXSA8PSB4ICYmIHggPD0gcmFuZ2VbMV0gOiB4IDwgcmFuZ2VbMF0gfHwgcmFuZ2VbMV0gPCB4O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihmZWF0dXJlKSB7XG4gIHZhciBpLCBuLCBhLCBiLCBtZXJnZWQsIGRlbHRhTWF4LCBkZWx0YTtcblxuICBwaGkxID0gbGFtYmRhMSA9IC0obGFtYmRhMCA9IHBoaTAgPSBJbmZpbml0eSk7XG4gIHJhbmdlcyA9IFtdO1xuICBzdHJlYW0oZmVhdHVyZSwgYm91bmRzU3RyZWFtKTtcblxuICAvLyBGaXJzdCwgc29ydCByYW5nZXMgYnkgdGhlaXIgbWluaW11bSBsb25naXR1ZGVzLlxuICBpZiAobiA9IHJhbmdlcy5sZW5ndGgpIHtcbiAgICByYW5nZXMuc29ydChyYW5nZUNvbXBhcmUpO1xuXG4gICAgLy8gVGhlbiwgbWVyZ2UgYW55IHJhbmdlcyB0aGF0IG92ZXJsYXAuXG4gICAgZm9yIChpID0gMSwgYSA9IHJhbmdlc1swXSwgbWVyZ2VkID0gW2FdOyBpIDwgbjsgKytpKSB7XG4gICAgICBiID0gcmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlQ29udGFpbnMoYSwgYlswXSkgfHwgcmFuZ2VDb250YWlucyhhLCBiWzFdKSkge1xuICAgICAgICBpZiAoYW5nbGUoYVswXSwgYlsxXSkgPiBhbmdsZShhWzBdLCBhWzFdKSkgYVsxXSA9IGJbMV07XG4gICAgICAgIGlmIChhbmdsZShiWzBdLCBhWzFdKSA+IGFuZ2xlKGFbMF0sIGFbMV0pKSBhWzBdID0gYlswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZC5wdXNoKGEgPSBiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5hbGx5LCBmaW5kIHRoZSBsYXJnZXN0IGdhcCBiZXR3ZWVuIHRoZSBtZXJnZWQgcmFuZ2VzLlxuICAgIC8vIFRoZSBmaW5hbCBib3VuZGluZyBib3ggd2lsbCBiZSB0aGUgaW52ZXJzZSBvZiB0aGlzIGdhcC5cbiAgICBmb3IgKGRlbHRhTWF4ID0gLUluZmluaXR5LCBuID0gbWVyZ2VkLmxlbmd0aCAtIDEsIGkgPSAwLCBhID0gbWVyZ2VkW25dOyBpIDw9IG47IGEgPSBiLCArK2kpIHtcbiAgICAgIGIgPSBtZXJnZWRbaV07XG4gICAgICBpZiAoKGRlbHRhID0gYW5nbGUoYVsxXSwgYlswXSkpID4gZGVsdGFNYXgpIGRlbHRhTWF4ID0gZGVsdGEsIGxhbWJkYTAgPSBiWzBdLCBsYW1iZGExID0gYVsxXTtcbiAgICB9XG4gIH1cblxuICByYW5nZXMgPSByYW5nZSA9IG51bGw7XG5cbiAgcmV0dXJuIGxhbWJkYTAgPT09IEluZmluaXR5IHx8IHBoaTAgPT09IEluZmluaXR5XG4gICAgICA/IFtbTmFOLCBOYU5dLCBbTmFOLCBOYU5dXVxuICAgICAgOiBbW2xhbWJkYTAsIHBoaTBdLCBbbGFtYmRhMSwgcGhpMV1dO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2V9IGZyb20gXCIuL2NhcnRlc2lhblwiO1xuaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBwaSwgcXVhcnRlclBpLCBzaW4sIHRhdX0gZnJvbSBcIi4vbWF0aFwiO1xuXG52YXIgc3VtID0gYWRkZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocG9seWdvbiwgcG9pbnQpIHtcbiAgdmFyIGxhbWJkYSA9IHBvaW50WzBdLFxuICAgICAgcGhpID0gcG9pbnRbMV0sXG4gICAgICBub3JtYWwgPSBbc2luKGxhbWJkYSksIC1jb3MobGFtYmRhKSwgMF0sXG4gICAgICBhbmdsZSA9IDAsXG4gICAgICB3aW5kaW5nID0gMDtcblxuICBzdW0ucmVzZXQoKTtcblxuICBmb3IgKHZhciBpID0gMCwgbiA9IHBvbHlnb24ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEobSA9IChyaW5nID0gcG9seWdvbltpXSkubGVuZ3RoKSkgY29udGludWU7XG4gICAgdmFyIHJpbmcsXG4gICAgICAgIG0sXG4gICAgICAgIHBvaW50MCA9IHJpbmdbbSAtIDFdLFxuICAgICAgICBsYW1iZGEwID0gcG9pbnQwWzBdLFxuICAgICAgICBwaGkwID0gcG9pbnQwWzFdIC8gMiArIHF1YXJ0ZXJQaSxcbiAgICAgICAgc2luUGhpMCA9IHNpbihwaGkwKSxcbiAgICAgICAgY29zUGhpMCA9IGNvcyhwaGkwKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqLCBsYW1iZGEwID0gbGFtYmRhMSwgc2luUGhpMCA9IHNpblBoaTEsIGNvc1BoaTAgPSBjb3NQaGkxLCBwb2ludDAgPSBwb2ludDEpIHtcbiAgICAgIHZhciBwb2ludDEgPSByaW5nW2pdLFxuICAgICAgICAgIGxhbWJkYTEgPSBwb2ludDFbMF0sXG4gICAgICAgICAgcGhpMSA9IHBvaW50MVsxXSAvIDIgKyBxdWFydGVyUGksXG4gICAgICAgICAgc2luUGhpMSA9IHNpbihwaGkxKSxcbiAgICAgICAgICBjb3NQaGkxID0gY29zKHBoaTEpLFxuICAgICAgICAgIGRlbHRhID0gbGFtYmRhMSAtIGxhbWJkYTAsXG4gICAgICAgICAgc2lnbiA9IGRlbHRhID49IDAgPyAxIDogLTEsXG4gICAgICAgICAgYWJzRGVsdGEgPSBzaWduICogZGVsdGEsXG4gICAgICAgICAgYW50aW1lcmlkaWFuID0gYWJzRGVsdGEgPiBwaSxcbiAgICAgICAgICBrID0gc2luUGhpMCAqIHNpblBoaTE7XG5cbiAgICAgIHN1bS5hZGQoYXRhbjIoayAqIHNpZ24gKiBzaW4oYWJzRGVsdGEpLCBjb3NQaGkwICogY29zUGhpMSArIGsgKiBjb3MoYWJzRGVsdGEpKSk7XG4gICAgICBhbmdsZSArPSBhbnRpbWVyaWRpYW4gPyBkZWx0YSArIHNpZ24gKiB0YXUgOiBkZWx0YTtcblxuICAgICAgLy8gQXJlIHRoZSBsb25naXR1ZGVzIGVpdGhlciBzaWRlIG9mIHRoZSBwb2ludOKAmXMgbWVyaWRpYW4gKGxhbWJkYSksXG4gICAgICAvLyBhbmQgYXJlIHRoZSBsYXRpdHVkZXMgc21hbGxlciB0aGFuIHRoZSBwYXJhbGxlbCAocGhpKT9cbiAgICAgIGlmIChhbnRpbWVyaWRpYW4gXiBsYW1iZGEwID49IGxhbWJkYSBeIGxhbWJkYTEgPj0gbGFtYmRhKSB7XG4gICAgICAgIHZhciBhcmMgPSBjYXJ0ZXNpYW5Dcm9zcyhjYXJ0ZXNpYW4ocG9pbnQwKSwgY2FydGVzaWFuKHBvaW50MSkpO1xuICAgICAgICBjYXJ0ZXNpYW5Ob3JtYWxpemVJblBsYWNlKGFyYyk7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBjYXJ0ZXNpYW5Dcm9zcyhub3JtYWwsIGFyYyk7XG4gICAgICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoaW50ZXJzZWN0aW9uKTtcbiAgICAgICAgdmFyIHBoaUFyYyA9IChhbnRpbWVyaWRpYW4gXiBkZWx0YSA+PSAwID8gLTEgOiAxKSAqIGFzaW4oaW50ZXJzZWN0aW9uWzJdKTtcbiAgICAgICAgaWYgKHBoaSA+IHBoaUFyYyB8fCBwaGkgPT09IHBoaUFyYyAmJiAoYXJjWzBdIHx8IGFyY1sxXSkpIHtcbiAgICAgICAgICB3aW5kaW5nICs9IGFudGltZXJpZGlhbiBeIGRlbHRhID49IDAgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaXJzdCwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIFNvdXRoIHBvbGUgaXMgaW5zaWRlIG9yIG91dHNpZGU6XG4gIC8vXG4gIC8vIEl0IGlzIGluc2lkZSBpZjpcbiAgLy8gKiB0aGUgcG9seWdvbiB3aW5kcyBhcm91bmQgaXQgaW4gYSBjbG9ja3dpc2UgZGlyZWN0aW9uLlxuICAvLyAqIHRoZSBwb2x5Z29uIGRvZXMgbm90IChjdW11bGF0aXZlbHkpIHdpbmQgYXJvdW5kIGl0LCBidXQgaGFzIGEgbmVnYXRpdmVcbiAgLy8gICAoY291bnRlci1jbG9ja3dpc2UpIGFyZWEuXG4gIC8vXG4gIC8vIFNlY29uZCwgY291bnQgdGhlIChzaWduZWQpIG51bWJlciBvZiB0aW1lcyBhIHNlZ21lbnQgY3Jvc3NlcyBhIGxhbWJkYVxuICAvLyBmcm9tIHRoZSBwb2ludCB0byB0aGUgU291dGggcG9sZS4gIElmIGl0IGlzIHplcm8sIHRoZW4gdGhlIHBvaW50IGlzIHRoZVxuICAvLyBzYW1lIHNpZGUgYXMgdGhlIFNvdXRoIHBvbGUuXG5cbiAgcmV0dXJuIChhbmdsZSA8IC1lcHNpbG9uIHx8IGFuZ2xlIDwgZXBzaWxvbiAmJiBzdW0gPCAtZXBzaWxvbikgXiAod2luZGluZyAmIDEpO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2FicywgYXRhbjIsIGNvcywgcmFkaWFucywgc2luLCBzcXJ0fSBmcm9tIFwiLi9tYXRoXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi9ub29wXCI7XG5pbXBvcnQgc3RyZWFtIGZyb20gXCIuL3N0cmVhbVwiO1xuXG52YXIgbGVuZ3RoU3VtID0gYWRkZXIoKSxcbiAgICBsYW1iZGEwLFxuICAgIHNpblBoaTAsXG4gICAgY29zUGhpMDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgc3BoZXJlOiBub29wLFxuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBsZW5ndGhMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogbm9vcCxcbiAgcG9seWdvbkVuZDogbm9vcFxufTtcblxuZnVuY3Rpb24gbGVuZ3RoTGluZVN0YXJ0KCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludEZpcnN0O1xuICBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IGxlbmd0aExpbmVFbmQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVFbmQoKSB7XG4gIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFN0cmVhbS5saW5lRW5kID0gbm9vcDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW4ocGhpKSwgY29zUGhpMCA9IGNvcyhwaGkpO1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIGRlbHRhID0gYWJzKGxhbWJkYSAtIGxhbWJkYTApLFxuICAgICAgY29zRGVsdGEgPSBjb3MoZGVsdGEpLFxuICAgICAgc2luRGVsdGEgPSBzaW4oZGVsdGEpLFxuICAgICAgeCA9IGNvc1BoaSAqIHNpbkRlbHRhLFxuICAgICAgeSA9IGNvc1BoaTAgKiBzaW5QaGkgLSBzaW5QaGkwICogY29zUGhpICogY29zRGVsdGEsXG4gICAgICB6ID0gc2luUGhpMCAqIHNpblBoaSArIGNvc1BoaTAgKiBjb3NQaGkgKiBjb3NEZWx0YTtcbiAgbGVuZ3RoU3VtLmFkZChhdGFuMihzcXJ0KHggKiB4ICsgeSAqIHkpLCB6KSk7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW5QaGksIGNvc1BoaTAgPSBjb3NQaGk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9iamVjdCkge1xuICBsZW5ndGhTdW0ucmVzZXQoKTtcbiAgc3RyZWFtKG9iamVjdCwgbGVuZ3RoU3RyZWFtKTtcbiAgcmV0dXJuICtsZW5ndGhTdW07XG59XG4iLCJpbXBvcnQgYWRkZXIgZnJvbSBcIi4uL2FkZGVyXCI7XG5pbXBvcnQge2Fic30gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wXCI7XG5cbnZhciBhcmVhU3VtID0gYWRkZXIoKSxcbiAgICBhcmVhUmluZ1N1bSA9IGFkZGVyKCksXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGFyZWFTdHJlYW0gPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhUmluZ1N0YXJ0O1xuICAgIGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3RyZWFtLmxpbmVTdGFydCA9IGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFTdHJlYW0ucG9pbnQgPSBub29wO1xuICAgIGFyZWFTdW0uYWRkKGFicyhhcmVhUmluZ1N1bSkpO1xuICAgIGFyZWFSaW5nU3VtLnJlc2V0KCk7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWEgPSBhcmVhU3VtIC8gMjtcbiAgICBhcmVhU3VtLnJlc2V0KCk7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFyZWFSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QoeCwgeSkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50O1xuICB4MDAgPSB4MCA9IHgsIHkwMCA9IHkwID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50KHgsIHkpIHtcbiAgYXJlYVJpbmdTdW0uYWRkKHkwICogeCAtIHgwICogeSk7XG4gIHgwID0geCwgeTAgPSB5O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KHgwMCwgeTAwKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJlYVN0cmVhbTtcbiIsImltcG9ydCBhZGRlciBmcm9tIFwiLi4vYWRkZXJcIjtcbmltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wXCI7XG5cbnZhciBsZW5ndGhTdW0gPSBhZGRlcigpLFxuICAgIGxlbmd0aFJpbmcsXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGxlbmd0aFJpbmcpIGxlbmd0aFBvaW50KHgwMCwgeTAwKTtcbiAgICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBub29wO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFJpbmcgPSB0cnVlO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gbnVsbDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuZ3RoID0gK2xlbmd0aFN1bTtcbiAgICBsZW5ndGhTdW0ucmVzZXQoKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG59O1xuXG5mdW5jdGlvbiBsZW5ndGhQb2ludEZpcnN0KHgsIHkpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG4gIHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5O1xufVxuXG5mdW5jdGlvbiBsZW5ndGhQb2ludCh4LCB5KSB7XG4gIHgwIC09IHgsIHkwIC09IHk7XG4gIGxlbmd0aFN1bS5hZGQoc3FydCh4MCAqIHgwICsgeTAgKiB5MCkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGVuZ3RoU3RyZWFtO1xuIiwiaW1wb3J0IHtjYXJ0ZXNpYW59IGZyb20gXCIuLi9jYXJ0ZXNpYW5cIjtcbmltcG9ydCB7YWJzLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCByYWRpYW5zLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcn0gZnJvbSBcIi4uL3RyYW5zZm9ybVwiO1xuXG52YXIgbWF4RGVwdGggPSAxNiwgLy8gbWF4aW11bSBkZXB0aCBvZiBzdWJkaXZpc2lvblxuICAgIGNvc01pbkRpc3RhbmNlID0gY29zKDMwICogcmFkaWFucyk7IC8vIGNvcyhtaW5pbXVtIGFuZ3VsYXIgZGlzdGFuY2UpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHByb2plY3QsIGRlbHRhMikge1xuICByZXR1cm4gK2RlbHRhMiA/IHJlc2FtcGxlKHByb2plY3QsIGRlbHRhMikgOiByZXNhbXBsZU5vbmUocHJvamVjdCk7XG59XG5cbmZ1bmN0aW9uIHJlc2FtcGxlTm9uZShwcm9qZWN0KSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lcih7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIHggPSBwcm9qZWN0KHgsIHkpO1xuICAgICAgdGhpcy5zdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVzYW1wbGUocHJvamVjdCwgZGVsdGEyKSB7XG5cbiAgZnVuY3Rpb24gcmVzYW1wbGVMaW5lVG8oeDAsIHkwLCBsYW1iZGEwLCBhMCwgYjAsIGMwLCB4MSwgeTEsIGxhbWJkYTEsIGExLCBiMSwgYzEsIGRlcHRoLCBzdHJlYW0pIHtcbiAgICB2YXIgZHggPSB4MSAtIHgwLFxuICAgICAgICBkeSA9IHkxIC0geTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgaWYgKGQyID4gNCAqIGRlbHRhMiAmJiBkZXB0aC0tKSB7XG4gICAgICB2YXIgYSA9IGEwICsgYTEsXG4gICAgICAgICAgYiA9IGIwICsgYjEsXG4gICAgICAgICAgYyA9IGMwICsgYzEsXG4gICAgICAgICAgbSA9IHNxcnQoYSAqIGEgKyBiICogYiArIGMgKiBjKSxcbiAgICAgICAgICBwaGkyID0gYXNpbihjIC89IG0pLFxuICAgICAgICAgIGxhbWJkYTIgPSBhYnMoYWJzKGMpIC0gMSkgPCBlcHNpbG9uIHx8IGFicyhsYW1iZGEwIC0gbGFtYmRhMSkgPCBlcHNpbG9uID8gKGxhbWJkYTAgKyBsYW1iZGExKSAvIDIgOiBhdGFuMihiLCBhKSxcbiAgICAgICAgICBwID0gcHJvamVjdChsYW1iZGEyLCBwaGkyKSxcbiAgICAgICAgICB4MiA9IHBbMF0sXG4gICAgICAgICAgeTIgPSBwWzFdLFxuICAgICAgICAgIGR4MiA9IHgyIC0geDAsXG4gICAgICAgICAgZHkyID0geTIgLSB5MCxcbiAgICAgICAgICBkeiA9IGR5ICogZHgyIC0gZHggKiBkeTI7XG4gICAgICBpZiAoZHogKiBkeiAvIGQyID4gZGVsdGEyIC8vIHBlcnBlbmRpY3VsYXIgcHJvamVjdGVkIGRpc3RhbmNlXG4gICAgICAgICAgfHwgYWJzKChkeCAqIGR4MiArIGR5ICogZHkyKSAvIGQyIC0gMC41KSA+IDAuMyAvLyBtaWRwb2ludCBjbG9zZSB0byBhbiBlbmRcbiAgICAgICAgICB8fCBhMCAqIGExICsgYjAgKiBiMSArIGMwICogYzEgPCBjb3NNaW5EaXN0YW5jZSkgeyAvLyBhbmd1bGFyIGRpc3RhbmNlXG4gICAgICAgIHJlc2FtcGxlTGluZVRvKHgwLCB5MCwgbGFtYmRhMCwgYTAsIGIwLCBjMCwgeDIsIHkyLCBsYW1iZGEyLCBhIC89IG0sIGIgLz0gbSwgYywgZGVwdGgsIHN0cmVhbSk7XG4gICAgICAgIHN0cmVhbS5wb2ludCh4MiwgeTIpO1xuICAgICAgICByZXNhbXBsZUxpbmVUbyh4MiwgeTIsIGxhbWJkYTIsIGEsIGIsIGMsIHgxLCB5MSwgbGFtYmRhMSwgYTEsIGIxLCBjMSwgZGVwdGgsIHN0cmVhbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgbGFtYmRhMDAsIHgwMCwgeTAwLCBhMDAsIGIwMCwgYzAwLCAvLyBmaXJzdCBwb2ludFxuICAgICAgICBsYW1iZGEwLCB4MCwgeTAsIGEwLCBiMCwgYzA7IC8vIHByZXZpb3VzIHBvaW50XG5cbiAgICB2YXIgcmVzYW1wbGVTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvblN0YXJ0KCk7IHJlc2FtcGxlU3RyZWFtLmxpbmVTdGFydCA9IHJpbmdTdGFydDsgfSxcbiAgICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvbkVuZCgpOyByZXNhbXBsZVN0cmVhbS5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7IH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgeCA9IHByb2plY3QoeCwgeSk7XG4gICAgICBzdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgeDAgPSBOYU47XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgICAgIHZhciBjID0gY2FydGVzaWFuKFtsYW1iZGEsIHBoaV0pLCBwID0gcHJvamVjdChsYW1iZGEsIHBoaSk7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwID0gcFswXSwgeTAgPSBwWzFdLCBsYW1iZGEwID0gbGFtYmRhLCBhMCA9IGNbMF0sIGIwID0gY1sxXSwgYzAgPSBjWzJdLCBtYXhEZXB0aCwgc3RyZWFtKTtcbiAgICAgIHN0cmVhbS5wb2ludCh4MCwgeTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IHBvaW50O1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByaW5nU3RhcnQoKSB7XG4gICAgICBsaW5lU3RhcnQoKTtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gcmluZ1BvaW50O1xuICAgICAgcmVzYW1wbGVTdHJlYW0ubGluZUVuZCA9IHJpbmdFbmQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gICAgICBsaW5lUG9pbnQobGFtYmRhMDAgPSBsYW1iZGEsIHBoaSksIHgwMCA9IHgwLCB5MDAgPSB5MCwgYTAwID0gYTAsIGIwMCA9IGIwLCBjMDAgPSBjMDtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwMCwgeTAwLCBsYW1iZGEwMCwgYTAwLCBiMDAsIGMwMCwgbWF4RGVwdGgsIHN0cmVhbSk7XG4gICAgICByZXNhbXBsZVN0cmVhbS5saW5lRW5kID0gbGluZUVuZDtcbiAgICAgIGxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzYW1wbGVTdHJlYW07XG4gIH07XG59XG4iLCJpbXBvcnQge2FzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQge2F6aW11dGhhbFJhdywgYXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWxcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCB2YXIgYXppbXV0aGFsRXF1YWxBcmVhUmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGN4Y3kpIHtcbiAgcmV0dXJuIHNxcnQoMiAvICgxICsgY3hjeSkpO1xufSk7XG5cbmF6aW11dGhhbEVxdWFsQXJlYVJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGFzaW4oeiAvIDIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihhemltdXRoYWxFcXVhbEFyZWFSYXcpXG4gICAgICAuc2NhbGUoMTI0Ljc1KVxuICAgICAgLmNsaXBBbmdsZSgxODAgLSAxZS0zKTtcbn1cbiIsImltcG9ydCB7YWNvcywgc2lufSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWlkaXN0YW50UmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGMpIHtcbiAgcmV0dXJuIChjID0gYWNvcyhjKSkgJiYgYyAvIHNpbihjKTtcbn0pO1xuXG5hemltdXRoYWxFcXVpZGlzdGFudFJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gejtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoNzkuNDE4OClcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgbm9kZSA9IHRoaXMsIGN1cnJlbnQsIG5leHQgPSBbbm9kZV0sIGNoaWxkcmVuLCBpLCBuO1xuICBkbyB7XG4gICAgY3VycmVudCA9IG5leHQucmV2ZXJzZSgpLCBuZXh0ID0gW107XG4gICAgd2hpbGUgKG5vZGUgPSBjdXJyZW50LnBvcCgpKSB7XG4gICAgICBjYWxsYmFjayhub2RlKSwgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuKSBmb3IgKGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5leHQucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChuZXh0Lmxlbmd0aCk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXSwgY2hpbGRyZW4sIGk7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBjYWxsYmFjayhub2RlKSwgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgIGlmIChjaGlsZHJlbikgZm9yIChpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG47XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSksIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4pIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuICB3aGlsZSAobm9kZSA9IG5leHQucG9wKCkpIHtcbiAgICBjYWxsYmFjayhub2RlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHN1bSA9ICt2YWx1ZShub2RlLmRhdGEpIHx8IDAsXG4gICAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgICBub2RlLnZhbHVlID0gc3VtO1xuICB9KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uc29ydChjb21wYXJlKTtcbiAgICB9XG4gIH0pO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV07XG4gIHdoaWxlIChub2RlID0gbm9kZS5wYXJlbnQpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZXMgPSBbXTtcbiAgdGhpcy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBsZWF2ZXMgPSBbXTtcbiAgdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGxlYXZlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsZWF2ZXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvbuKAmXQgaW5jbHVkZSB0aGUgcm9vdOKAmXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeTEgLSB5MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgxO1xuICAgIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iLCJ2YXIgYXJyYXkgPSBBcnJheS5wcm90b3R5cGU7XG5cbmV4cG9ydCB2YXIgbWFwID0gYXJyYXkubWFwO1xuZXhwb3J0IHZhciBzbGljZSA9IGFycmF5LnNsaWNlO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiAreDtcbn1cbiIsImltcG9ydCB7dGlja1N0ZXB9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtmb3JtYXQsIGZvcm1hdFByZWZpeCwgZm9ybWF0U3BlY2lmaWVyLCBwcmVjaXNpb25GaXhlZCwgcHJlY2lzaW9uUHJlZml4LCBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcImQzLWZvcm1hdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkb21haW4sIGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgdmFyIHN0YXJ0ID0gZG9tYWluWzBdLFxuICAgICAgc3RvcCA9IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV0sXG4gICAgICBzdGVwID0gdGlja1N0ZXAoc3RhcnQsIHN0b3AsIGNvdW50ID09IG51bGwgPyAxMCA6IGNvdW50KSxcbiAgICAgIHByZWNpc2lvbjtcbiAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllciA9PSBudWxsID8gXCIsZlwiIDogc3BlY2lmaWVyKTtcbiAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgIGNhc2UgXCJzXCI6IHtcbiAgICAgIHZhciB2YWx1ZSA9IE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpO1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUHJlZml4KHN0ZXAsIHZhbHVlKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb247XG4gICAgICByZXR1cm4gZm9ybWF0UHJlZml4KHNwZWNpZmllciwgdmFsdWUpO1xuICAgIH1cbiAgICBjYXNlIFwiXCI6XG4gICAgY2FzZSBcImVcIjpcbiAgICBjYXNlIFwiZ1wiOlxuICAgIGNhc2UgXCJwXCI6XG4gICAgY2FzZSBcInJcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUm91bmQoc3RlcCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RhcnQpLCBNYXRoLmFicyhzdG9wKSkpKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCJlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmXCI6XG4gICAgY2FzZSBcIiVcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uRml4ZWQoc3RlcCkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uIC0gKHNwZWNpZmllci50eXBlID09PSBcIiVcIikgKiAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3BlY2lmaWVyKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRvbWFpbiwgaW50ZXJ2YWwpIHtcbiAgZG9tYWluID0gZG9tYWluLnNsaWNlKCk7XG5cbiAgdmFyIGkwID0gMCxcbiAgICAgIGkxID0gZG9tYWluLmxlbmd0aCAtIDEsXG4gICAgICB4MCA9IGRvbWFpbltpMF0sXG4gICAgICB4MSA9IGRvbWFpbltpMV0sXG4gICAgICB0O1xuXG4gIGlmICh4MSA8IHgwKSB7XG4gICAgdCA9IGkwLCBpMCA9IGkxLCBpMSA9IHQ7XG4gICAgdCA9IHgwLCB4MCA9IHgxLCB4MSA9IHQ7XG4gIH1cblxuICBkb21haW5baTBdID0gaW50ZXJ2YWwuZmxvb3IoeDApO1xuICBkb21haW5baTFdID0gaW50ZXJ2YWwuY2VpbCh4MSk7XG4gIHJldHVybiBkb21haW47XG59XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIG1pbGxpc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gIC8vIG5vb3Bcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQgLSBzdGFydDtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG5taWxsaXNlY29uZC5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgayA9IE1hdGguZmxvb3Ioayk7XG4gIGlmICghaXNGaW5pdGUoaykgfHwgIShrID4gMCkpIHJldHVybiBudWxsO1xuICBpZiAoIShrID4gMSkpIHJldHVybiBtaWxsaXNlY29uZDtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gaykgKiBrKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBrKTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gaztcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBtaWxsaXNlY29uZDtcbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmQucmFuZ2U7XG4iLCJleHBvcnQgdmFyIGR1cmF0aW9uU2Vjb25kID0gMWUzO1xuZXhwb3J0IHZhciBkdXJhdGlvbk1pbnV0ZSA9IDZlNDtcbmV4cG9ydCB2YXIgZHVyYXRpb25Ib3VyID0gMzZlNTtcbmV4cG9ydCB2YXIgZHVyYXRpb25EYXkgPSA4NjRlNTtcbmV4cG9ydCB2YXIgZHVyYXRpb25XZWVrID0gNjA0OGU1O1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gZHVyYXRpb25TZWNvbmQpICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uU2Vjb25kO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc2Vjb25kO1xuZXhwb3J0IHZhciBzZWNvbmRzID0gc2Vjb25kLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgbWludXRlID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gZHVyYXRpb25NaW51dGUpICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbWludXRlO1xuZXhwb3J0IHZhciBtaW51dGVzID0gbWludXRlLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91ciwgZHVyYXRpb25NaW51dGV9IGZyb20gXCIuL2R1cmF0aW9uXCI7XG5cbnZhciBob3VyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICB2YXIgb2Zmc2V0ID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogZHVyYXRpb25NaW51dGUgJSBkdXJhdGlvbkhvdXI7XG4gIGlmIChvZmZzZXQgPCAwKSBvZmZzZXQgKz0gZHVyYXRpb25Ib3VyO1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcigoK2RhdGUgLSBvZmZzZXQpIC8gZHVyYXRpb25Ib3VyKSAqIGR1cmF0aW9uSG91ciArIG9mZnNldCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBob3VyO1xuZXhwb3J0IHZhciBob3VycyA9IGhvdXIucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcbmltcG9ydCB7ZHVyYXRpb25EYXksIGR1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgZGF5ID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldERhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZGF5O1xuZXhwb3J0IHZhciBkYXlzID0gZGF5LnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5cbnZhciBtb250aCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXREYXRlKDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtb250aDtcbmV4cG9ydCB2YXIgbW9udGhzID0gbW9udGgucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIHllYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxueWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHllYXI7XG5leHBvcnQgdmFyIHllYXJzID0geWVhci5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y01pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENTZWNvbmRzKDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTWludXRlO1xuZXhwb3J0IHZhciB1dGNNaW51dGVzID0gdXRjTWludXRlLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91cn0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y0hvdXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25Ib3VyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENIb3VycygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y0hvdXI7XG5leHBvcnQgdmFyIHV0Y0hvdXJzID0gdXRjSG91ci5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbkRheX0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y0RheSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjRGF5O1xuZXhwb3J0IHZhciB1dGNEYXlzID0gdXRjRGF5LnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5cbnZhciB1dGNZZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnV0Y1llYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRVVENGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1dGNZZWFyO1xuZXhwb3J0IHZhciB1dGNZZWFycyA9IHV0Y1llYXIucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIHV0Y01vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoZGF0ZS5nZXRVVENNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDTW9udGgoKSAtIHN0YXJ0LmdldFVUQ01vbnRoKCkgKyAoZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y01vbnRoO1xuZXhwb3J0IHZhciB1dGNNb250aHMgPSB1dGNNb250aC5yYW5nZTtcbiIsImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIHRpbWVGb3JtYXQ7XG5leHBvcnQgdmFyIHRpbWVQYXJzZTtcbmV4cG9ydCB2YXIgdXRjRm9ybWF0O1xuZXhwb3J0IHZhciB1dGNQYXJzZTtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRhdGVUaW1lOiBcIiV4LCAlWFwiLFxuICBkYXRlOiBcIiUtbS8lLWQvJVlcIixcbiAgdGltZTogXCIlLUk6JU06JVMgJXBcIixcbiAgcGVyaW9kczogW1wiQU1cIiwgXCJQTVwiXSxcbiAgZGF5czogW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl0sXG4gIHNob3J0RGF5czogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICBtb250aHM6IFtcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJdLFxuICBzaG9ydE1vbnRoczogW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVmYXVsdExvY2FsZShkZWZpbml0aW9uKSB7XG4gIGxvY2FsZSA9IGZvcm1hdExvY2FsZShkZWZpbml0aW9uKTtcbiAgdGltZUZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIHRpbWVQYXJzZSA9IGxvY2FsZS5wYXJzZTtcbiAgdXRjRm9ybWF0ID0gbG9jYWxlLnV0Y0Zvcm1hdDtcbiAgdXRjUGFyc2UgPSBsb2NhbGUudXRjUGFyc2U7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzKSB7XG4gIHJldHVybiBzLm1hdGNoKC8uezZ9L2cpLm1hcChmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIFwiI1wiICsgeDtcbiAgfSk7XG59XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2ZcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIzOTNiNzk1MjU0YTM2YjZlY2Y5YzllZGU2Mzc5Mzk4Y2EyNTJiNWNmNmJjZWRiOWM4YzZkMzFiZDllMzllN2JhNTJlN2NiOTQ4NDNjMzlhZDQ5NGFkNjYxNmJlNzk2OWM3YjQxNzNhNTUxOTRjZTZkYmRkZTllZDZcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDlcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRhZWM3ZThmZjdmMGVmZmJiNzgyY2EwMmM5OGRmOGFkNjI3MjhmZjk4OTY5NDY3YmRjNWIwZDU4YzU2NGJjNDljOTRlMzc3YzJmN2I2ZDI3ZjdmN2ZjN2M3YzdiY2JkMjJkYmRiOGQxN2JlY2Y5ZWRhZTVcIik7XG4iLCJpbXBvcnQge2N1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQge2ludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZyhjdWJlaGVsaXgoMzAwLCAwLjUsIDAuMCksIGN1YmVoZWxpeCgtMjQwLCAwLjUsIDEuMCkpO1xuIiwiaW1wb3J0IHtjdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmd9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuXG5leHBvcnQgdmFyIHdhcm0gPSBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmcoY3ViZWhlbGl4KC0xMDAsIDAuNzUsIDAuMzUpLCBjdWJlaGVsaXgoODAsIDEuNTAsIDAuOCkpO1xuXG5leHBvcnQgdmFyIGNvb2wgPSBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmcoY3ViZWhlbGl4KDI2MCwgMC43NSwgMC4zNSksIGN1YmVoZWxpeCg4MCwgMS41MCwgMC44KSk7XG5cbnZhciByYWluYm93ID0gY3ViZWhlbGl4KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHQpIHtcbiAgaWYgKHQgPCAwIHx8IHQgPiAxKSB0IC09IE1hdGguZmxvb3IodCk7XG4gIHZhciB0cyA9IE1hdGguYWJzKHQgLSAwLjUpO1xuICByYWluYm93LmggPSAzNjAgKiB0IC0gMTAwO1xuICByYWluYm93LnMgPSAxLjUgLSAxLjUgKiB0cztcbiAgcmFpbmJvdy5sID0gMC44IC0gMC45ICogdHM7XG4gIHJldHVybiByYWluYm93ICsgXCJcIjtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50XCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4ID0gcG9pbnRYLFxuICAgICAgeSA9IHBvaW50WSxcbiAgICAgIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbGluZShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyO1xuXG4gICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgb3V0cHV0ID0gY3VydmUoYnVmZmVyID0gcGF0aCgpKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgKytpKSB7XG4gICAgICBpZiAoIShpIDwgbiAmJiBkZWZpbmVkKGQgPSBkYXRhW2ldLCBpLCBkYXRhKSkgPT09IGRlZmluZWQwKSB7XG4gICAgICAgIGlmIChkZWZpbmVkMCA9ICFkZWZpbmVkMCkgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICBlbHNlIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIG91dHB1dC5wb2ludCgreChkLCBpLCBkYXRhKSwgK3koZCwgaSwgZGF0YSkpO1xuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5lLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHg7XG4gIH07XG5cbiAgbGluZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB5O1xuICB9O1xuXG4gIGxpbmUuZGVmaW5lZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWZpbmVkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBsaW5lKSA6IGRlZmluZWQ7XG4gIH07XG5cbiAgbGluZS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjdXJ2ZSA9IF8sIGNvbnRleHQgIT0gbnVsbCAmJiAob3V0cHV0ID0gY3VydmUoY29udGV4dCkpLCBsaW5lKSA6IGN1cnZlO1xuICB9O1xuXG4gIGxpbmUuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfID09IG51bGwgPyBjb250ZXh0ID0gb3V0cHV0ID0gbnVsbCA6IG91dHB1dCA9IGN1cnZlKGNvbnRleHQgPSBfKSwgbGluZSkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5lO1xufVxuIiwiaW1wb3J0IHthZGRCZWFjaCwgcmVtb3ZlQmVhY2h9IGZyb20gXCIuL0JlYWNoXCI7XG5pbXBvcnQge3NvcnRDZWxsSGFsZmVkZ2VzLCBjZWxsSGFsZmVkZ2VTdGFydCwgY2xpcENlbGxzfSBmcm9tIFwiLi9DZWxsXCI7XG5pbXBvcnQge2ZpcnN0Q2lyY2xlfSBmcm9tIFwiLi9DaXJjbGVcIjtcbmltcG9ydCB7Y2xpcEVkZ2VzfSBmcm9tIFwiLi9FZGdlXCI7XG5pbXBvcnQgUmVkQmxhY2tUcmVlIGZyb20gXCIuL1JlZEJsYWNrVHJlZVwiO1xuXG5leHBvcnQgdmFyIGVwc2lsb24gPSAxZS02O1xuZXhwb3J0IHZhciBlcHNpbG9uMiA9IDFlLTEyO1xuZXhwb3J0IHZhciBiZWFjaGVzO1xuZXhwb3J0IHZhciBjZWxscztcbmV4cG9ydCB2YXIgY2lyY2xlcztcbmV4cG9ydCB2YXIgZWRnZXM7XG5cbmZ1bmN0aW9uIHRyaWFuZ2xlQXJlYShhLCBiLCBjKSB7XG4gIHJldHVybiAoYVswXSAtIGNbMF0pICogKGJbMV0gLSBhWzFdKSAtIChhWzBdIC0gYlswXSkgKiAoY1sxXSAtIGFbMV0pO1xufVxuXG5mdW5jdGlvbiBsZXhpY29ncmFwaGljKGEsIGIpIHtcbiAgcmV0dXJuIGJbMV0gLSBhWzFdXG4gICAgICB8fCBiWzBdIC0gYVswXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGlhZ3JhbShzaXRlcywgZXh0ZW50KSB7XG4gIHZhciBzaXRlID0gc2l0ZXMuc29ydChsZXhpY29ncmFwaGljKS5wb3AoKSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgY2lyY2xlO1xuXG4gIGVkZ2VzID0gW107XG4gIGNlbGxzID0gbmV3IEFycmF5KHNpdGVzLmxlbmd0aCk7XG4gIGJlYWNoZXMgPSBuZXcgUmVkQmxhY2tUcmVlO1xuICBjaXJjbGVzID0gbmV3IFJlZEJsYWNrVHJlZTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNpcmNsZSA9IGZpcnN0Q2lyY2xlO1xuICAgIGlmIChzaXRlICYmICghY2lyY2xlIHx8IHNpdGVbMV0gPCBjaXJjbGUueSB8fCAoc2l0ZVsxXSA9PT0gY2lyY2xlLnkgJiYgc2l0ZVswXSA8IGNpcmNsZS54KSkpIHtcbiAgICAgIGlmIChzaXRlWzBdICE9PSB4IHx8IHNpdGVbMV0gIT09IHkpIHtcbiAgICAgICAgYWRkQmVhY2goc2l0ZSk7XG4gICAgICAgIHggPSBzaXRlWzBdLCB5ID0gc2l0ZVsxXTtcbiAgICAgIH1cbiAgICAgIHNpdGUgPSBzaXRlcy5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKGNpcmNsZSkge1xuICAgICAgcmVtb3ZlQmVhY2goY2lyY2xlLmFyYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNvcnRDZWxsSGFsZmVkZ2VzKCk7XG5cbiAgaWYgKGV4dGVudCkge1xuICAgIHZhciB4MCA9ICtleHRlbnRbMF1bMF0sXG4gICAgICAgIHkwID0gK2V4dGVudFswXVsxXSxcbiAgICAgICAgeDEgPSArZXh0ZW50WzFdWzBdLFxuICAgICAgICB5MSA9ICtleHRlbnRbMV1bMV07XG4gICAgY2xpcEVkZ2VzKHgwLCB5MCwgeDEsIHkxKTtcbiAgICBjbGlwQ2VsbHMoeDAsIHkwLCB4MSwgeTEpO1xuICB9XG5cbiAgdGhpcy5lZGdlcyA9IGVkZ2VzO1xuICB0aGlzLmNlbGxzID0gY2VsbHM7XG5cbiAgYmVhY2hlcyA9XG4gIGNpcmNsZXMgPVxuICBlZGdlcyA9XG4gIGNlbGxzID0gbnVsbDtcbn1cblxuRGlhZ3JhbS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBEaWFncmFtLFxuXG4gIHBvbHlnb25zOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWRnZXMgPSB0aGlzLmVkZ2VzO1xuXG4gICAgcmV0dXJuIHRoaXMuY2VsbHMubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgIHZhciBwb2x5Z29uID0gY2VsbC5oYWxmZWRnZXMubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIGNlbGxIYWxmZWRnZVN0YXJ0KGNlbGwsIGVkZ2VzW2ldKTsgfSk7XG4gICAgICBwb2x5Z29uLmRhdGEgPSBjZWxsLnNpdGUuZGF0YTtcbiAgICAgIHJldHVybiBwb2x5Z29uO1xuICAgIH0pO1xuICB9LFxuXG4gIHRyaWFuZ2xlczogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRyaWFuZ2xlcyA9IFtdLFxuICAgICAgICBlZGdlcyA9IHRoaXMuZWRnZXM7XG5cbiAgICB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oY2VsbCwgaSkge1xuICAgICAgaWYgKCEobSA9IChoYWxmZWRnZXMgPSBjZWxsLmhhbGZlZGdlcykubGVuZ3RoKSkgcmV0dXJuO1xuICAgICAgdmFyIHNpdGUgPSBjZWxsLnNpdGUsXG4gICAgICAgICAgaGFsZmVkZ2VzLFxuICAgICAgICAgIGogPSAtMSxcbiAgICAgICAgICBtLFxuICAgICAgICAgIHMwLFxuICAgICAgICAgIGUxID0gZWRnZXNbaGFsZmVkZ2VzW20gLSAxXV0sXG4gICAgICAgICAgczEgPSBlMS5sZWZ0ID09PSBzaXRlID8gZTEucmlnaHQgOiBlMS5sZWZ0O1xuXG4gICAgICB3aGlsZSAoKytqIDwgbSkge1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBlMSA9IGVkZ2VzW2hhbGZlZGdlc1tqXV07XG4gICAgICAgIHMxID0gZTEubGVmdCA9PT0gc2l0ZSA/IGUxLnJpZ2h0IDogZTEubGVmdDtcbiAgICAgICAgaWYgKHMwICYmIHMxICYmIGkgPCBzMC5pbmRleCAmJiBpIDwgczEuaW5kZXggJiYgdHJpYW5nbGVBcmVhKHNpdGUsIHMwLCBzMSkgPCAwKSB7XG4gICAgICAgICAgdHJpYW5nbGVzLnB1c2goW3NpdGUuZGF0YSwgczAuZGF0YSwgczEuZGF0YV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJpYW5nbGVzO1xuICB9LFxuXG4gIGxpbmtzOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoZnVuY3Rpb24oZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UucmlnaHQ7XG4gICAgfSkubWFwKGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogZWRnZS5sZWZ0LmRhdGEsXG4gICAgICAgIHRhcmdldDogZWRnZS5yaWdodC5kYXRhXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuXG4gIGZpbmQ6IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykge1xuICAgIHZhciB0aGF0ID0gdGhpcywgaTAsIGkxID0gdGhhdC5fZm91bmQgfHwgMCwgbiA9IHRoYXQuY2VsbHMubGVuZ3RoLCBjZWxsO1xuXG4gICAgLy8gVXNlIHRoZSBwcmV2aW91c2x5LWZvdW5kIGNlbGwsIG9yIHN0YXJ0IHdpdGggYW4gYXJiaXRyYXJ5IG9uZS5cbiAgICB3aGlsZSAoIShjZWxsID0gdGhhdC5jZWxsc1tpMV0pKSBpZiAoKytpMSA+PSBuKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZHggPSB4IC0gY2VsbC5zaXRlWzBdLCBkeSA9IHkgLSBjZWxsLnNpdGVbMV0sIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG5cbiAgICAvLyBUcmF2ZXJzZSB0aGUgaGFsZi1lZGdlcyB0byBmaW5kIGEgY2xvc2VyIGNlbGwsIGlmIGFueS5cbiAgICBkbyB7XG4gICAgICBjZWxsID0gdGhhdC5jZWxsc1tpMCA9IGkxXSwgaTEgPSBudWxsO1xuICAgICAgY2VsbC5oYWxmZWRnZXMuZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciBlZGdlID0gdGhhdC5lZGdlc1tlXSwgdiA9IGVkZ2UubGVmdDtcbiAgICAgICAgaWYgKCh2ID09PSBjZWxsLnNpdGUgfHwgIXYpICYmICEodiA9IGVkZ2UucmlnaHQpKSByZXR1cm47XG4gICAgICAgIHZhciB2eCA9IHggLSB2WzBdLCB2eSA9IHkgLSB2WzFdLCB2MiA9IHZ4ICogdnggKyB2eSAqIHZ5O1xuICAgICAgICBpZiAodjIgPCBkMikgZDIgPSB2MiwgaTEgPSB2LmluZGV4O1xuICAgICAgfSk7XG4gICAgfSB3aGlsZSAoaTEgIT09IG51bGwpO1xuXG4gICAgdGhhdC5fZm91bmQgPSBpMDtcblxuICAgIHJldHVybiByYWRpdXMgPT0gbnVsbCB8fCBkMiA8PSByYWRpdXMgKiByYWRpdXMgPyBjZWxsLnNpdGUgOiBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHt0cmFuc2l0aW9ufSBmcm9tIFwiZDMtdHJhbnNpdGlvblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9hdHRycyBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uL2F0dHJzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlcyBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uL3N0eWxlc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9wcm9wZXJ0aWVzIGZyb20gXCIuL3NyYy9zZWxlY3Rpb24vcHJvcGVydGllc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0cnMgZnJvbSBcIi4vc3JjL3RyYW5zaXRpb24vYXR0cnNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3N0eWxlcyBmcm9tIFwiLi9zcmMvdHJhbnNpdGlvbi9zdHlsZXNcIjtcblxuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycyA9IHNlbGVjdGlvbl9hdHRycztcbnNlbGVjdGlvbi5wcm90b3R5cGUuc3R5bGVzID0gc2VsZWN0aW9uX3N0eWxlcztcbnNlbGVjdGlvbi5wcm90b3R5cGUucHJvcGVydGllcyA9IHNlbGVjdGlvbl9wcm9wZXJ0aWVzO1xudHJhbnNpdGlvbi5wcm90b3R5cGUuYXR0cnMgPSB0cmFuc2l0aW9uX2F0dHJzO1xudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzID0gdHJhbnNpdGlvbl9zdHlsZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVFMgPSB7XG4gICdOQU1FU1BBQ0UnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAnQ0xBU1MnOiBbJ28tY2hhcnQnXSxcbiAgJ1NUWUxFJzogW1xuICAgICdmb250LXNpemU6IDEzcHgnLFxuICAgICdmb250LWZhbWlseTogSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwgLHNhbnMtc2VyaWYnLFxuICAgICdmb250LXdlaWdodDogNDAwJyxcbiAgICAnbWF4LXdpZHRoOiAxMDAlJ1xuICBdLFxuICAnRE9UU19SQURJVVMnOiA0LFxuICAnQkFSX0dBUCc6IDAuNSxcbiAgJ0xFR0VORF9NQVJHSU5fVE9QJzogNTYsXG4gICdMRUdFTkRfTUFSR0lOX0JPVFRPTSc6IDEwXG59OyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICdkMy1zZWxlY3Rpb24tbXVsdGknO1xuaW1wb3J0IHtDT05TVEFOVFMgYXMgQ09OU1RBTlRTfSBmcm9tICcuL28tY2hhcnRzLmNvbnN0YW50cyc7XG5cbmNsYXNzIG9DaGFydHMge1xuXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzLCBkYXRhKSB7XG5cbiAgICB0aGlzLmNoYXJ0ID0ge307XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgdGhpcy5jaGFydC5lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3IpO1xuICAgIHRoaXMudGltZVBhcnNlID0gZDMudGltZVBhcnNlKHRoaXMuc2V0dGluZ3MuZm9ybWF0cy50aW1lKTtcblxuICB9XG5cbiAgdHJhbnNsYXRlKHgsIHkpIHtcbiAgICByZXR1cm4gJ3RyYW5zbGF0ZSgnICsgeCArICcsJyArIHkgKyAnKSc7XG4gIH1cblxuICBzbHVnKFRleHQsIHNwYWNlKSB7XG4gICAgcmV0dXJuIFRleHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlxcdyBdKy9nLCcgJykucmVwbGFjZSgvICsvZywgc3BhY2UpO1xuICB9XG5cbiAgaW5pdCgpIHtcblxuICAgIHRoaXMucmVuZGVyKHtcbiAgICAgICdzZXR0aW5ncyc6IHRoaXMuc2V0dGluZ3MsXG4gICAgICAnY2hhcnQnOiB0aGlzLmNoYXJ0LFxuICAgICAgJ2RhdGEnOiB0aGlzLmRhdGEsXG4gICAgICAnbmFtZXNwYWNlJzogJ2NyZWF0ZSdcbiAgICB9KVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXIoe1xuICAgICAgICAnc2V0dGluZ3MnOiB0aGlzLnNldHRpbmdzLFxuICAgICAgICAnY2hhcnQnOiB0aGlzLmNoYXJ0LFxuICAgICAgICAnZGF0YSc6IHRoaXMuZGF0YSxcbiAgICAgICAgJ25hbWVzcGFjZSc6ICd1cGRhdGUnXG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG5cbiAgcmVuZGVyKGFyZ3MpIHtcblxuICAgIGxldCBzID0gYXJncy5zZXR0aW5ncztcbiAgICBsZXQgYyA9IGFyZ3MuY2hhcnQ7XG4gICAgbGV0IGQgPSBhcmdzLmRhdGE7XG4gICAgbGV0IG4gPSBhcmdzLm5hbWVzcGFjZTtcblxuICAgIGMgPSB0aGlzLnN2ZyhzLCBjKVtuXSgpO1xuICAgIHMgPSB0aGlzLmRlZmluZShzLCBkKTtcbiAgICBzID0gdGhpcy5kb21haW5zKHMsIGQpO1xuICAgIGMgPSB0aGlzLnBsb3RzKHMsIGMsIGQpW25dKCk7XG4gICAgYyA9IHRoaXMuYXhpcyhzLCBjKVtuXSgpO1xuXG4gIH1cblxuICAvLyBDcmVhdGUgU1ZHXG4gIHN2ZyhzZXR0aW5ncywgY2hhcnQpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5zdmcuY3JlYXRlID0gY3JlYXRlO1xuICAgIF90aGlzLnN2Zy51cGRhdGUgPSB1cGRhdGU7XG4gICAgX3RoaXMuc3ZnLnNlbGVjdGlvbnMgPSBzZWxlY3Rpb25zO1xuICAgIF90aGlzLnN2Zy5jbGFzc2VzID0gY2xhc3NlcztcblxuICAgIHJldHVybiBfdGhpcy5zdmc7XG5cbiAgICBmdW5jdGlvbiBjbGFzc2VzKEtFWSkge1xuXG4gICAgICBsZXQgYyA9IHtcbiAgICAgICAgJ2JhY2tncm91bmQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2JnJyxcbiAgICAgICAgICAnZmlsbC0nICsgc2V0dGluZ3MuY29sb3JzLmJhY2tncm91bmQsXG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjW0tFWV0uam9pbignICcpO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlKCkge1xuXG4gICAgICBjaGFydC5zdmcgPSBjaGFydC5lbGVtZW50LmFwcGVuZCgnc3ZnJykuYXR0cnMoe1xuICAgICAgICAneG1sbnMnOiBDT05TVEFOVFMuTkFNRVNQQUNFXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuYmcgPSBjaGFydC5zdmcuYXBwZW5kKCdyZWN0JykuYXR0cnMoe1xuICAgICAgICAnY2xhc3MnOiBfdGhpcy5zdmcuY2xhc3NlcygnYmFja2dyb3VuZCcpXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuZGVmcyA9IGNoYXJ0LnN2Zy5hcHBlbmQoJ2RlZnMnKTtcbiAgICAgIGNoYXJ0LmcgPSBjaGFydC5zdmcuYXBwZW5kKCdnJyk7XG5cbiAgICAgIHJldHVybiBfdGhpcy5zdmcudXBkYXRlKCk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LnN2ZyA9IF90aGlzLnN2Zy5zZWxlY3Rpb25zKCkuc3ZnO1xuICAgICAgY2hhcnQuZyA9IF90aGlzLnN2Zy5zZWxlY3Rpb25zKCkuZztcblxuICAgICAgc2V0dGluZ3Mud2lkdGggPSBjaGFydC5lbGVtZW50LnByb3BlcnR5KCdjbGllbnRXaWR0aCcpO1xuXG4gICAgICBjaGFydC5zdmcuYXR0cnMoe1xuICAgICAgICAnY2xhc3MnOiBDT05TVEFOVFMuQ0xBU1Muam9pbignICcpLFxuICAgICAgICAnc3R5bGUnOiBDT05TVEFOVFMuU1RZTEUuam9pbignOycpLFxuICAgICAgICAnd2lkdGgnOiBzZXR0aW5ncy53aWR0aCxcbiAgICAgICAgJ2hlaWdodCc6IHNldHRpbmdzLmhlaWdodFxuICAgICAgfSk7XG5cbiAgICAgIGNoYXJ0LmJnLmF0dHJzKHtcbiAgICAgICAgJ3dpZHRoJzogc2V0dGluZ3Mud2lkdGgsXG4gICAgICAgICdoZWlnaHQnOiBzZXR0aW5ncy5oZWlnaHRcbiAgICAgIH0pO1xuXG4gICAgICBjaGFydC5nLmF0dHJzKHtcbiAgICAgICAgJ3RyYW5zZm9ybSc6IF90aGlzLnRyYW5zbGF0ZShzZXR0aW5ncy5tYXJnaW5bM10sIHNldHRpbmdzLm1hcmdpblswXSlcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY2hhcnQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZWxlY3Rpb25zKCkge1xuXG4gICAgICBjaGFydC5zdmcgPSBjaGFydC5lbGVtZW50LnNlbGVjdCgnc3ZnJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgICdlbGVtZW50JzogY2hhcnQuZWxlbWVudCxcbiAgICAgICAgJ3N2Zyc6IGNoYXJ0LnN2ZyxcbiAgICAgICAgJ2cnOiBjaGFydC5zdmcuc2VsZWN0KCdnJylcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgZGVmaW5lKHNldHRpbmdzLCBkYXRhKSB7XG5cbiAgICAvLyB0aGlzIHVzZWQgdHAgYmUgYSBwcm9taXNlIGNoYWluLCBJJ20gbm90IHN1cmUgb2YgaXQncyBpbXBvcnRhbmNlIHRvIGJlIHNvIGFueW1vcmVcbiAgICAvLyAtIGRldm93aGlwcGl0XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZUxheW91dChzZXR0aW5ncyk7XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZVNjYWxlcyhzZXR0aW5ncyk7XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZUF4aXMoc2V0dGluZ3MpO1xuICAgIHNldHRpbmdzID0gdGhpcy5kZWZpbmVQbG90cyhzZXR0aW5ncyk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRlZmluZUxheW91dChzZXR0aW5ncykge1xuXG4gICAgc2V0dGluZ3MuaW5uZXJXaWR0aCA9IHNldHRpbmdzLndpZHRoICAtIChzZXR0aW5ncy5tYXJnaW5bMV0gKyBzZXR0aW5ncy5tYXJnaW5bM10pO1xuICAgIHNldHRpbmdzLmlubmVySGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0IC0gKHNldHRpbmdzLm1hcmdpblswXSArIHNldHRpbmdzLm1hcmdpblsyXSk7XG4gICAgc2V0dGluZ3MudG9wID0gc2V0dGluZ3MucGFkZGluZ1swXTtcbiAgICBzZXR0aW5ncy5yaWdodCA9IHNldHRpbmdzLmlubmVyV2lkdGggLSAoc2V0dGluZ3MucGFkZGluZ1sxXSArIHNldHRpbmdzLnBhZGRpbmdbM10pO1xuICAgIHNldHRpbmdzLmJvdHRvbSA9IHNldHRpbmdzLmlubmVySGVpZ2h0IC0gKHNldHRpbmdzLnBhZGRpbmdbMF0gKyBzZXR0aW5ncy5wYWRkaW5nWzJdKTtcbiAgICBzZXR0aW5ncy5sZWZ0ID0gc2V0dGluZ3MucGFkZGluZ1szXTtcblxuICAgIHJldHVybiBzZXR0aW5ncztcblxuICB9XG5cbiAgZGVmaW5lU2NhbGVzKHNldHRpbmdzKSB7XG5cbiAgICBzZXR0aW5ncy5zY2FsZXMgPSB7fTtcbiAgICBzZXR0aW5ncy5zY2FsZXMueCA9IGQzLnNjYWxlVGltZSgpXG4gICAgICAucmFuZ2UoW3NldHRpbmdzLmxlZnQsIHNldHRpbmdzLnJpZ2h0XSk7XG4gICAgc2V0dGluZ3Muc2NhbGVzLnkgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgICAucmFuZ2UoW3NldHRpbmdzLmJvdHRvbSwgc2V0dGluZ3MudG9wXSlcbiAgICAgIC5jbGFtcCh0cnVlKTtcblxuICAgIHJldHVybiBzZXR0aW5ncztcblxuICB9XG5cbiAgZGVmaW5lQXhpcyhzZXR0aW5ncykge1xuXG4gICAgc2V0dGluZ3MuYXhpcyA9IHt9O1xuICAgIHNldHRpbmdzLmF4aXMueCA9IGQzLmF4aXNCb3R0b20oKVxuICAgICAgLnNjYWxlKHNldHRpbmdzLnNjYWxlcy54KTtcbiAgICBzZXR0aW5ncy5heGlzLnkgPSBkMy5heGlzTGVmdCgpXG4gICAgICAuc2NhbGUoc2V0dGluZ3Muc2NhbGVzLnkpXG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRlZmluZVBsb3RzKHNldHRpbmdzKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgc2V0dGluZ3MucGxvdHMgPSB7fTtcbiAgICBzZXR0aW5ncy5wbG90cy5saW5lID0gZDMubGluZSgpXG4gICAgICAueChmdW5jdGlvbihkKSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5ncy5zY2FsZXMueChfdGhpcy50aW1lUGFyc2UoZFswXSkpO1xuICAgICAgfSlcbiAgICAgIC55KGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgcmV0dXJuIHNldHRpbmdzLnNjYWxlcy55KGRbMV0pO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRvbWFpbnMoc2V0dGluZ3MsIGRhdGEpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgbWluID0gZnVuY3Rpb24oZGF0YSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBkMy5taW4oZGF0YSwgZnVuY3Rpb24oZCkge1xuICAgICAgICByZXR1cm4gZDMubWluKGQuZGF0YSwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgIHJldHVybiBlW2luZGV4XTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbGV0IG1heCA9IGZ1bmN0aW9uKGRhdGEsIGluZGV4KSB7XG4gICAgICByZXR1cm4gZDMubWF4KGRhdGEsIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgcmV0dXJuIGQzLm1heChkLmRhdGEsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICByZXR1cm4gZVtpbmRleF07XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBsZXQgYmFycyA9IGRhdGEuZmlsdGVyKHggPT4geC50eXBlID09PSAnYmFyJykubGVuZ3RoO1xuXG4gICAgbGV0IHgwID0gX3RoaXMudGltZVBhcnNlKG1pbihkYXRhLCAwKSk7XG4gICAgbGV0IHgxID0gX3RoaXMudGltZVBhcnNlKG1heChkYXRhLCAwKSk7XG5cbiAgICAvLyBpZiB0aGVyZSBhcmUgYmFycyBpdCdzIG5pY2UgdG8gZ2l2ZSBlYWNoIHNpZGUgZXh0cmEgc3BhY2VcbiAgICBpZiAoYmFycyA+IDApIHtcbiAgICAgIHgwID0gZDMudGltZU1vbnRoLm9mZnNldCh4MCwgLTEpO1xuICAgICAgeDEgPSBkMy50aW1lTW9udGgub2Zmc2V0KHgxLCAxKTtcbiAgICB9XG5cbiAgICBsZXQgeTAgPSBtaW4oZGF0YSwgMSk7XG4gICAgbGV0IHkxID0gbWF4KGRhdGEsIDEpO1xuXG4gICAgc2V0dGluZ3Muc2NhbGVzLnguZG9tYWluKFt4MCwgeDFdKS5uaWNlKCk7XG4gICAgc2V0dGluZ3Muc2NhbGVzLnkuZG9tYWluKFt5MCwgeTFdKS5uaWNlKCk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIHBsb3RzKHNldHRpbmdzLCBjaGFydCwgZGF0YSkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLnBsb3RzLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBfdGhpcy5wbG90cy5saW5lID0gbGluZTtcbiAgICBfdGhpcy5wbG90cy5iYXIgPSBiYXI7XG4gICAgX3RoaXMucGxvdHMudXBkYXRlID0gdXBkYXRlO1xuICAgIF90aGlzLnBsb3RzLmNsYXNzZXMgPSBjbGFzc2VzO1xuXG4gICAgcmV0dXJuIF90aGlzLnBsb3RzO1xuXG4gICAgZnVuY3Rpb24gY2xhc3NlcyhLRVksIG5hbWUsIGlkKSB7XG5cbiAgICAgIGxldCBjID0ge1xuICAgICAgICAncGxvdCc6IFtcbiAgICAgICAgICAnby1jaGFydF9fcGxvdCcsXG4gICAgICAgICAgJ28tY2hhcnRfX3Bsb3QtLScgKyBfdGhpcy5zbHVnKG5hbWUsICctJyksXG4gICAgICAgICAgJ28tY2hhcnRfX3Bsb3QtLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpXG4gICAgICAgIF0sXG4gICAgICAgICdsaW5lJzogW1xuICAgICAgICAgICdvLWNoYXJ0X19saW5lJyxcbiAgICAgICAgICAnc3Ryb2tlLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpXG4gICAgICAgIF0sXG4gICAgICAgICdkb3RzJzogW1xuICAgICAgICAgICdvLWNoYXJ0X19kb3QnLFxuICAgICAgICAgICdmaWxsLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpLFxuICAgICAgICAgICdzdHJva2UtJyArIHNldHRpbmdzLmNvbG9ycy5iYWNrZ3JvdW5kXG4gICAgICAgIF0sXG4gICAgICAgICdiYXInOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2JhcicsXG4gICAgICAgICAgJ2ZpbGwtJyArIF90aGlzLnNsdWcoaWQsICctJyksXG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjW0tFWV0uam9pbignICcpO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlKCkge1xuXG4gICAgICAvLyByZW1vdmUgb2xkIGNvbnRhaW5lcnNcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0QWxsKCcuby1jaGFydF9fcGxvdCcpLnJlbW92ZSgpO1xuXG4gICAgICAvLyBhZGQgcGxvdCBjb250YWluZXJzXG4gICAgICBjaGFydC5wbG90cyA9IGNoYXJ0Lmcuc2VsZWN0QWxsKCcuby1jaGFydF9fcGxvdCcpXG4gICAgICAgICAgLmRhdGEoZGF0YSlcbiAgICAgICAgLmVudGVyKCkuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgbGV0IGQgPSBkMy5zZWxlY3QodGhpcykuZGF0YSgpWzBdO1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wbG90cy5jbGFzc2VzKCdwbG90JywgZC5sYWJlbCwgZC5sYWJlbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBydW4gZWFjaCBwbG90IHRocm91Z2ggaXQncyBvd24gcmVuZGVyaW5nIGZ1bmN0aW9uIGJhc2VkIG9uIHR5cGVcbiAgICAgIGNoYXJ0LnBsb3RzLmVhY2goZnVuY3Rpb24oZCkge1xuICAgICAgICBfdGhpcy5wbG90c1tkLnR5cGVdKGQzLnNlbGVjdCh0aGlzKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNoYXJ0O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZShwbG90KSB7XG5cbiAgICAgIHBsb3QuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgKGQpID0+IF90aGlzLnBsb3RzLmNsYXNzZXMoJ2xpbmUnLCAnJywgZC5jb2xvcikpXG4gICAgICAgIC5hdHRyKCdkJywgKGQpID0+IHNldHRpbmdzLnBsb3RzLmxpbmUoZC5kYXRhKSk7XG5cbiAgICAgIHBsb3Quc2VsZWN0QWxsKCcuby1jaGFydF9fZG90JylcbiAgICAgICAgICAuZGF0YSgoZCkgPT4gZC5kYXRhKVxuICAgICAgICAuZW50ZXIoKS5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRycyh7XG4gICAgICAgICAgJ2N4Jzogc2V0dGluZ3MucGxvdHMubGluZS54KCksXG4gICAgICAgICAgJ2N5Jzogc2V0dGluZ3MucGxvdHMubGluZS55KCksXG4gICAgICAgICAgJ3InOiBDT05TVEFOVFMuRE9UU19SQURJVVNcbiAgICAgICAgfSkuYXR0cignY2xhc3MnLCBmdW5jdGlvbihkKSB7XG4gICAgICAgICAgICB2YXIgZCA9IGQzLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLmRhdGEoKVswXTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5wbG90cy5jbGFzc2VzKCdkb3RzJywgJycsIGQuY29sb3IpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJhcihwbG90KSB7XG5cbiAgICAgIGxldCBiYXJzID0gZGF0YS5maWx0ZXIoeCA9PiB4LnR5cGUgPT09ICdiYXInKTsgLy8gZ2V0IGp1c3QgdGhlIGJhciBwbG90c1xuICAgICAgbGV0IHAgPSBwbG90LmRhdGEoKVswXTsgLy8gZ2V0IHRoZSBwbG90J3MgZGF0YS9jb25maWd1cmF0aW9uXG4gICAgICBsZXQgbWF4ID0gTWF0aC5tYXgoMCwgcC5kYXRhLmxlbmd0aCk7IC8vIEkgdGhpbmsgdGhlIG1heCBiZSB0aGUgbWF4IGxlbmd0aCBvZiB0aGUgbGFyZ2VzdCBwbG90P1xuICAgICAgbGV0IHdpZHRoID0gKChzZXR0aW5ncy5yaWdodCAvIG1heCkgKiBDT05TVEFOVFMuQkFSX0dBUCApIC8gYmFycy5sZW5ndGg7IC8vIGNhbGN1bGF0ZSB0aGUgd2lkdGhcbiAgICAgIGxldCBjbGFzc2VzID0gX3RoaXMucGxvdHMuY2xhc3NlcygnYmFyJywgJycsIHAuY29sb3IpOyAvLyBzZXQgdGhlIGNvbG9yXG4gICAgICBsZXQgb3JkZXIgPSAoYmFycy5tYXAoKGQpID0+IGQubGFiZWwpLmluZGV4T2YocC5sYWJlbCkpICsgMTsgLy8gZ2V0IG9yZGVyIG9mIHRoaXMgcGxvdFxuICAgICAgbGV0IG9mZnNldCA9ICh3aWR0aCAqIG9yZGVyKSAtICgod2lkdGggKiBiYXJzLmxlbmd0aCkgLyAyKTsgLy8gY2FsY3VsYXRlIHRoZSBvZmZzZXRcblxuICAgICAgcGxvdC5zZWxlY3RBbGwoJy5vLWNoYXJ0X19iYXInKVxuICAgICAgICAgIC5kYXRhKChkKSA9PiBwLmRhdGEpXG4gICAgICAgIC5lbnRlcigpLmFwcGVuZCgncmVjdCcpXG4gICAgICAgIC5hdHRycyh7XG4gICAgICAgICAgJ2NsYXNzJzogY2xhc3NlcyxcbiAgICAgICAgICAnd2lkdGgnOiB3aWR0aCxcbiAgICAgICAgICAneCc6IChkKSA9PiBzZXR0aW5ncy5zY2FsZXMueChfdGhpcy50aW1lUGFyc2UoZFswXSkpIC0gb2Zmc2V0LFxuICAgICAgICAgICd5JzogKGQpID0+IHNldHRpbmdzLnNjYWxlcy55KE1hdGgubWF4KDAsIGRbMV0pKSxcbiAgICAgICAgICAnaGVpZ2h0JzogKGQpID0+IE1hdGguYWJzKFxuICAgICAgICAgICAgTWF0aC5taW4oc2V0dGluZ3Muc2NhbGVzLnkoMCksIHNldHRpbmdzLmJvdHRvbSkgLSBzZXR0aW5ncy5zY2FsZXMueShkWzFdKVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlKCkge1xuXG4gICAgICByZXR1cm4gX3RoaXMucGxvdHMuY3JlYXRlKCk7XG5cbiAgICB9XG5cbiAgfVxuXG4gICAgLy8gQXhpc1xuICBheGlzKHNldHRpbmdzLCBjaGFydCkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLmF4aXMuY3JlYXRlID0gY3JlYXRlO1xuICAgIF90aGlzLmF4aXMudXBkYXRlID0gdXBkYXRlO1xuICAgIF90aGlzLmF4aXMubGFiZWxzID0gbGFiZWxzO1xuICAgIF90aGlzLmF4aXMudGV4dCA9IHRleHQ7XG4gICAgX3RoaXMuYXhpcy5tb2RpZnkgPSBtb2RpZnk7XG4gICAgX3RoaXMuYXhpcy5jbGFzc2VzID0gY2xhc3NlcztcblxuICAgIHJldHVybiBfdGhpcy5heGlzO1xuXG4gICAgZnVuY3Rpb24gY2xhc3NlcyhLRVkpIHtcblxuICAgICAgbGV0IGMgPSB7XG4gICAgICAgICdheGlzX3RvcCc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcycsXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS10b3AnXG4gICAgICAgIF0sXG4gICAgICAgICdheGlzX2JvdHRvbSc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcycsXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS1ib3R0b20nXG4gICAgICAgIF0sXG4gICAgICAgICdheGlzX2xlZnQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy0tbGVmdCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2F4aXNfcmlnaHQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy0tcmlnaHQnXG4gICAgICAgIF0sXG4gICAgICAgICdsYWJlbF90b3AnOiBbXG4gICAgICAgICAgJ2ZpbGwtJyArIHNldHRpbmdzLmNvbG9ycy5sYWJlbHMsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsJyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbC0tdG9wJ1xuICAgICAgICBdLFxuICAgICAgICAnbGFiZWxfYm90dG9tJzogW1xuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMubGFiZWxzLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbCcsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsLS14JyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLWJvdHRvbSdcbiAgICAgICAgXSxcbiAgICAgICAgJ2xhYmVsX2xlZnQnOiBbXG4gICAgICAgICAgJ2ZpbGwtJyArIHNldHRpbmdzLmNvbG9ycy5sYWJlbHMsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsJyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXknLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbC0tbGVmdCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2xhYmVsX3JpZ2h0JzogW1xuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMubGFiZWxzLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbCcsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXJpZ2h0J1xuICAgICAgICBdLFxuICAgICAgICAndGlja3MnOiBbXG4gICAgICAgICAgJ3RpY2snLFxuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMuYXhpc1xuICAgICAgICBdLFxuICAgICAgICAnbGluZV94JzogW1xuICAgICAgICAgICdvLWNoYXJ0X19heGlzLWdhcC0teCcsXG4gICAgICAgICAgJ3N0cm9rZS0nICsgc2V0dGluZ3MuY29sb3JzLmF4aXNcbiAgICAgICAgXSxcbiAgICAgICAgJ2xpbmVfeSc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy1nYXAtLXknLFxuICAgICAgICAgICdzdHJva2UtJyArIHNldHRpbmdzLmNvbG9ycy5heGlzXG4gICAgICAgIF1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNbS0VZXS5qb2luKCcgJyk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LmF4aXMgPSB7fTtcblxuICAgICAgY2hhcnQuYXhpcy54ID0gY2hhcnQuZy5hcHBlbmQoJ2cnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCBfdGhpcy5heGlzLmNsYXNzZXMoJ2F4aXNfYm90dG9tJykpXG5cbiAgICAgIGNoYXJ0LmF4aXMueSA9IGNoYXJ0LmcuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgX3RoaXMuYXhpcy5jbGFzc2VzKCdheGlzX2xlZnQnKSlcblxuICAgICAgX3RoaXMuYXhpcy51cGRhdGUoKTtcblxuICAgICAgX3RoaXMuYXhpcy5tb2RpZnkoKTtcblxuICAgICAgcmV0dXJuIF90aGlzLmF4aXMubGFiZWxzKCk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LmF4aXMueC5jYWxsKHNldHRpbmdzLmF4aXMueClcbiAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIF90aGlzLnRyYW5zbGF0ZSgwLCBzZXR0aW5ncy5pbm5lckhlaWdodCkpXG5cbiAgICAgIGNoYXJ0LmF4aXMueS5jYWxsKHNldHRpbmdzLmF4aXMueSk7XG5cbiAgICAgIGNoYXJ0LmF4aXMueC5zZWxlY3QoJy5vLWNoYXJ0X19heGlzLWdhcC0teCcpLmF0dHJzKHtcbiAgICAgICAgJ3gxJzogMCwgJ3kxJzogMCwgICd5Mic6IDAsXG4gICAgICAgICd4Mic6IHNldHRpbmdzLmlubmVyV2lkdGgsXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuYXhpcy55LnNlbGVjdCgnLm8tY2hhcnRfX2F4aXMtZ2FwLS15JykuYXR0cnMoe1xuICAgICAgICAneDEnOiAwLCAneTEnOiAwLCAneDInOiAwLFxuICAgICAgICAneTInOiBzZXR0aW5ncy5pbm5lckhlaWdodFxuICAgICAgfSk7XG5cbiAgICAgIGNoYXJ0Lmcuc2VsZWN0QWxsKCcudGljaycpLmF0dHIoJ2NsYXNzJywgX3RoaXMuYXhpcy5jbGFzc2VzKCd0aWNrcycpKTtcblxuICAgICAgLy8gcG9zaXRpb24gdGhlIHggYXhpcyBsYWJlbFxuICAgICAgY2hhcnQuZy5zZWxlY3QoJy5vLWNoYXJ0X19sYWJlbC0teCcpLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgeHQgPSBkMy5zZWxlY3QodGhpcykuc2VsZWN0KCd0ZXh0Jyk7XG4gICAgICAgIHZhciB4ID0gc2V0dGluZ3MubGVmdCArIChzZXR0aW5ncy5pbm5lcldpZHRoIC8gMik7XG4gICAgICAgIHZhciB5ID0gc2V0dGluZ3MuaGVpZ2h0IC0geHQubm9kZSgpLmdldEJCb3goKS5oZWlnaHRcbiAgICAgICAgcmV0dXJuIF90aGlzLnRyYW5zbGF0ZSh4LCB5KTtcbiAgICAgIH0pXG5cbiAgICAgIC8vIHBvc2l0aW9uIHRoZSB5IGF4aXMgbGFiZWxcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0KCcuby1jaGFydF9fbGFiZWwtLXknKS5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHggPSAwIC0gc2V0dGluZ3MubWFyZ2luWzNdICsgKGQzLnNlbGVjdCh0aGlzKS5ub2RlKCkuZ2V0QkJveCgpLmhlaWdodCk7XG4gICAgICAgIHZhciB5ID0gc2V0dGluZ3MuaW5uZXJIZWlnaHQgLyAyO1xuICAgICAgICByZXR1cm4gW190aGlzLnRyYW5zbGF0ZSh4LCB5KSwgJ3JvdGF0ZSgnKyAtOTAgKycpJ10uam9pbignICcpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjaGFydDtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxhYmVscygpIHtcblxuICAgICAgLy8gY3JlYXRlIGxhYmVsc1xuICAgICAgY2hhcnQuYXhpcy54LmxhYmVsID0gY2hhcnQuZy5hcHBlbmQoJ2cnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCBfdGhpcy5heGlzLmNsYXNzZXMoJ2xhYmVsX2JvdHRvbScpKTtcblxuICAgICAgY2hhcnQuYXhpcy54LmxhYmVsLmFwcGVuZCgndGV4dCcpLmF0dHJzKHtcbiAgICAgICAgJ3RleHQtYW5jaG9yJzogJ21pZGRsZSdcbiAgICAgIH0pO1xuXG4gICAgICBjaGFydC5heGlzLnkubGFiZWwgPSBjaGFydC5nLmFwcGVuZCgnZycpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsIF90aGlzLmF4aXMuY2xhc3NlcygnbGFiZWxfbGVmdCcpKTtcblxuICAgICAgY2hhcnQuYXhpcy55LmxhYmVsLmFwcGVuZCgndGV4dCcpLmF0dHJzKHtcbiAgICAgICAgJ3RleHQtYW5jaG9yJzogJ21pZGRsZSdcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5heGlzLnRleHQoKTtcblxuICAgICAgcmV0dXJuIGNoYXJ0O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGV4dCgpIHtcblxuICAgICAgLy8gQWRkIHRleHQgdG8gdGhlIGxhYmVsIGNvbnRhaW5lcnNcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0KCcuby1jaGFydF9fbGFiZWwtLXgnKS5zZWxlY3QoJ3RleHQnKVxuICAgICAgICAudGV4dChzZXR0aW5ncy5sYWJlbHMuYXhpcy54KTtcblxuICAgICAgY2hhcnQuZy5zZWxlY3QoJy5vLWNoYXJ0X19sYWJlbC0teScpLnNlbGVjdCgndGV4dCcpXG4gICAgICAgIC50ZXh0KHNldHRpbmdzLmxhYmVscy5heGlzLnkpO1xuXG4gICAgICBfdGhpcy5heGlzLnVwZGF0ZSgpO1xuXG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBuYXRpdmUgYXhpcyBzdHlsaW5nIG9mIEQzXG4gICAgZnVuY3Rpb24gbW9kaWZ5KCkge1xuXG4gICAgICAvLyBBZGQgbGluZXMgdGhhdCB2aXN1YWxseSBjb25uZWN0IHRoZSB4IGF4aXMgdG8gdGhlIGNvcm5lclxuICAgICAgY2hhcnQuYXhpcy54LmFwcGVuZCgnbGluZScpLmF0dHJzKHtcbiAgICAgICAgJ3gxJzogMCwgJ3kxJzogMCwgJ3kyJzogMCxcbiAgICAgICAgJ3gyJzogc2V0dGluZ3MuaW5uZXJXaWR0aCxcbiAgICAgICAgJ2NsYXNzJzogX3RoaXMuYXhpcy5jbGFzc2VzKCdsaW5lX3gnKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGhpZGUgdGhlIG9yaWdpbmFsIHggYXhpcyBkb21haW5cbiAgICAgIGNoYXJ0LmF4aXMueC5zZWxlY3QoJy5kb21haW4nKS5hdHRyKCdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgICAgLy8gQWRkIGxpbmVzIHRoYXQgdmlzdWFsbHkgY29ubmVjdCB0aGUgeSBheGlzIHRvIHRoZSBjb3JuZXJcbiAgICAgIGNoYXJ0LmF4aXMueS5hcHBlbmQoJ2xpbmUnKS5hdHRycyh7XG4gICAgICAgICd4MSc6IDAsICd5MSc6IDAsICd4Mic6IDAsXG4gICAgICAgICd5Mic6IHNldHRpbmdzLmlubmVySGVpZ2h0LFxuICAgICAgICAnY2xhc3MnOiBfdGhpcy5heGlzLmNsYXNzZXMoJ2xpbmVfeScpXG4gICAgICB9KTtcblxuICAgICAgLy8gaGlkZSB0aGUgb3JpZ2luYWwgeSBheGlzIGRvbWFpblxuICAgICAgY2hhcnQuYXhpcy55LnNlbGVjdCgnLmRvbWFpbicpLmF0dHIoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgfVxuXG4gIH1cblxuICAvLyBMZWdlbmRcblxufVxuXG5leHBvcnQgZGVmYXVsdCBvQ2hhcnRzOyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG9DaGFydHMgZnJvbSAnLi9tb2R1bGVzL28tY2hhcnRzJztcbi8qKiBpbXBvcnQgbW9kdWxlcyBoZXJlIGFzIHRoZXkgYXJlIHdyaXR0ZW4gKi9cblxuY2xhc3MgbnljbyB7XG5cbiAgY2hhcnRzKHNldHRpbmdzLCBkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBvQ2hhcnRzKHNldHRpbmdzLCBkYXRhKS5pbml0KCk7XG4gIH1cblxuICAvKiogYWRkIEFQSXMgaGVyZSBhcyB0aGV5IGFyZSB3cml0dGVuICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgbnljbzsiXSwibmFtZXMiOlsiYXNjZW5kaW5nQ29tcGFyYXRvciIsImYiLCJkIiwieCIsImFzY2VuZGluZyIsInRpY2tJbmNyZW1lbnQiLCJzdGFydCIsInN0b3AiLCJjb3VudCIsInN0ZXAiLCJNYXRoIiwibWF4IiwicG93ZXIiLCJmbG9vciIsImxvZyIsIkxOMTAiLCJlcnJvciIsInBvdyIsImUxMCIsImU1IiwiZTIiLCJ0aWNrU3RlcCIsInN0ZXAwIiwiYWJzIiwic3RlcDEiLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsInkiLCJjZW50ZXIiLCJzY2FsZSIsIm9mZnNldCIsImJhbmR3aWR0aCIsInJvdW5kIiwiZW50ZXJpbmciLCJ0aGlzIiwiX19heGlzIiwiYXhpcyIsIm9yaWVudCIsImNvbnRleHQiLCJ2YWx1ZXMiLCJ0aWNrVmFsdWVzIiwidGlja3MiLCJhcHBseSIsInRpY2tBcmd1bWVudHMiLCJkb21haW4iLCJmb3JtYXQiLCJ0aWNrRm9ybWF0IiwiaWRlbnRpdHkiLCJzcGFjaW5nIiwidGlja1NpemVJbm5lciIsInRpY2tQYWRkaW5nIiwicmFuZ2UiLCJyYW5nZTAiLCJyYW5nZTEiLCJsZW5ndGgiLCJwb3NpdGlvbiIsImNvcHkiLCJzZWxlY3Rpb24iLCJwYXRoIiwic2VsZWN0QWxsIiwiZGF0YSIsInRpY2siLCJvcmRlciIsInRpY2tFeGl0IiwiZXhpdCIsInRpY2tFbnRlciIsImVudGVyIiwiYXBwZW5kIiwiYXR0ciIsImxpbmUiLCJzZWxlY3QiLCJ0ZXh0IiwibWVyZ2UiLCJpbnNlcnQiLCJrIiwidG9wIiwiYm90dG9tIiwidHJhbnNpdGlvbiIsImVwc2lsb24iLCJpc0Zpbml0ZSIsInRyYW5zZm9ybSIsImdldEF0dHJpYnV0ZSIsInAiLCJwYXJlbnROb2RlIiwicmVtb3ZlIiwibGVmdCIsInJpZ2h0IiwidGlja1NpemVPdXRlciIsImZpbHRlciIsImVhY2giLCJfIiwiYXJndW1lbnRzIiwic2xpY2UiLCJjYWxsIiwidGlja1NpemUiLCJheGlzQm90dG9tIiwiYXhpc0xlZnQiLCJkaXNwYXRjaCIsInQiLCJpIiwibiIsIkVycm9yIiwiRGlzcGF0Y2giLCJwYXJzZVR5cGVuYW1lcyIsInR5cGVuYW1lcyIsInR5cGVzIiwidHJpbSIsInNwbGl0IiwibWFwIiwibmFtZSIsImluZGV4T2YiLCJoYXNPd25Qcm9wZXJ0eSIsInR5cGUiLCJnZXQiLCJjIiwidmFsdWUiLCJzZXQiLCJjYWxsYmFjayIsIm5vb3AiLCJjb25jYXQiLCJwdXNoIiwiY3JlYXRvckluaGVyaXQiLCJkb2N1bWVudCIsIm93bmVyRG9jdW1lbnQiLCJ1cmkiLCJuYW1lc3BhY2VVUkkiLCJ4aHRtbCIsImRvY3VtZW50RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJjcmVhdG9yRml4ZWQiLCJmdWxsbmFtZSIsInNwYWNlIiwibG9jYWwiLCJmaWx0ZXJDb250ZXh0TGlzdGVuZXIiLCJsaXN0ZW5lciIsImluZGV4IiwiZ3JvdXAiLCJjb250ZXh0TGlzdGVuZXIiLCJldmVudCIsInJlbGF0ZWQiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJldmVudDEiLCJldmVudDAiLCJfX2RhdGFfXyIsIm9uUmVtb3ZlIiwidHlwZW5hbWUiLCJvbiIsIl9fb24iLCJvIiwiaiIsIm0iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uQWRkIiwid3JhcCIsImZpbHRlckV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJub25lIiwiZW1wdHkiLCJFbnRlck5vZGUiLCJwYXJlbnQiLCJkYXR1bSIsIl9uZXh0IiwiX3BhcmVudCIsImJpbmRJbmRleCIsInVwZGF0ZSIsIm5vZGUiLCJncm91cExlbmd0aCIsImRhdGFMZW5ndGgiLCJiaW5kS2V5Iiwia2V5Iiwia2V5VmFsdWUiLCJub2RlQnlLZXlWYWx1ZSIsImtleVZhbHVlcyIsIkFycmF5Iiwia2V5UHJlZml4IiwiYSIsImIiLCJOYU4iLCJhdHRyUmVtb3ZlIiwicmVtb3ZlQXR0cmlidXRlIiwiYXR0clJlbW92ZU5TIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJhdHRyQ29uc3RhbnQiLCJzZXRBdHRyaWJ1dGUiLCJhdHRyQ29uc3RhbnROUyIsInNldEF0dHJpYnV0ZU5TIiwiYXR0ckZ1bmN0aW9uIiwidiIsImF0dHJGdW5jdGlvbk5TIiwic3R5bGVSZW1vdmUiLCJzdHlsZSIsInJlbW92ZVByb3BlcnR5Iiwic3R5bGVDb25zdGFudCIsInByaW9yaXR5Iiwic2V0UHJvcGVydHkiLCJzdHlsZUZ1bmN0aW9uIiwic3R5bGVWYWx1ZSIsImdldFByb3BlcnR5VmFsdWUiLCJkZWZhdWx0VmlldyIsImdldENvbXB1dGVkU3R5bGUiLCJwcm9wZXJ0eVJlbW92ZSIsInByb3BlcnR5Q29uc3RhbnQiLCJwcm9wZXJ0eUZ1bmN0aW9uIiwiY2xhc3NBcnJheSIsInN0cmluZyIsImNsYXNzTGlzdCIsIkNsYXNzTGlzdCIsIl9ub2RlIiwiX25hbWVzIiwiY2xhc3NlZEFkZCIsIm5hbWVzIiwibGlzdCIsImFkZCIsImNsYXNzZWRSZW1vdmUiLCJjbGFzc2VkVHJ1ZSIsImNsYXNzZWRGYWxzZSIsImNsYXNzZWRGdW5jdGlvbiIsInRleHRSZW1vdmUiLCJ0ZXh0Q29udGVudCIsInRleHRDb25zdGFudCIsInRleHRGdW5jdGlvbiIsImh0bWxSZW1vdmUiLCJpbm5lckhUTUwiLCJodG1sQ29uc3RhbnQiLCJodG1sRnVuY3Rpb24iLCJyYWlzZSIsIm5leHRTaWJsaW5nIiwiYXBwZW5kQ2hpbGQiLCJsb3dlciIsInByZXZpb3VzU2libGluZyIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJjb25zdGFudE51bGwiLCJyZW1vdmVDaGlsZCIsImRpc3BhdGNoRXZlbnQiLCJwYXJhbXMiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJkaXNwYXRjaENvbnN0YW50IiwiZGlzcGF0Y2hGdW5jdGlvbiIsIlNlbGVjdGlvbiIsImdyb3VwcyIsInBhcmVudHMiLCJfZ3JvdXBzIiwiX3BhcmVudHMiLCJyb290IiwiZXh0ZW5kIiwiZGVmaW5pdGlvbiIsInByb3RvdHlwZSIsIk9iamVjdCIsImNyZWF0ZSIsIkNvbG9yIiwiY29sb3IiLCJ0b0xvd2VyQ2FzZSIsInJlSGV4MyIsImV4ZWMiLCJwYXJzZUludCIsIlJnYiIsInJlSGV4NiIsInJnYm4iLCJyZVJnYkludGVnZXIiLCJyZVJnYlBlcmNlbnQiLCJyZVJnYmFJbnRlZ2VyIiwicmdiYSIsInJlUmdiYVBlcmNlbnQiLCJyZUhzbFBlcmNlbnQiLCJoc2xhIiwicmVIc2xhUGVyY2VudCIsIm5hbWVkIiwiciIsImciLCJyZ2JDb252ZXJ0IiwicmdiIiwib3BhY2l0eSIsImgiLCJzIiwibCIsIkhzbCIsImhzbENvbnZlcnQiLCJtaW4iLCJoc2wiLCJoc2wycmdiIiwibTEiLCJtMiIsImxhYkNvbnZlcnQiLCJMYWIiLCJIY2wiLCJkZWcycmFkIiwiY29zIiwic2luIiwicmdiMnh5eiIsInh5ejJsYWIiLCJYbiIsIlluIiwiWm4iLCJsYWIiLCJ0MyIsInQyIiwidDAiLCJsYWIyeHl6IiwidDEiLCJ4eXoycmdiIiwiaGNsQ29udmVydCIsImF0YW4yIiwicmFkMmRlZyIsInNxcnQiLCJoY2wiLCJjdWJlaGVsaXhDb252ZXJ0IiwiQ3ViZWhlbGl4IiwiQkNfREEiLCJFRCIsIkVCIiwiYmwiLCJFIiwiQyIsIkQiLCJjdWJlaGVsaXgiLCJsaW5lYXIiLCJleHBvbmVudGlhbCIsImh1ZSIsImNvbnN0YW50IiwiaXNOYU4iLCJnYW1tYSIsIm5vZ2FtbWEiLCJ6ZXJvIiwib25lIiwicGFyc2VDc3MiLCJjc3NOb2RlIiwiY3NzUm9vdCIsImNzc1ZpZXciLCJkZWNvbXBvc2UiLCJwYXJzZVN2ZyIsInN2Z05vZGUiLCJiYXNlVmFsIiwiY29uc29saWRhdGUiLCJtYXRyaXgiLCJlIiwiaW50ZXJwb2xhdGVUcmFuc2Zvcm0iLCJwYXJzZSIsInB4Q29tbWEiLCJweFBhcmVuIiwiZGVnUGFyZW4iLCJwb3AiLCJ0cmFuc2xhdGUiLCJ4YSIsInlhIiwieGIiLCJ5YiIsInEiLCJudW1iZXIiLCJyb3RhdGUiLCJza2V3WCIsInNjYWxlWCIsInNjYWxlWSIsImpvaW4iLCJjdWJlaGVsaXhHYW1tYSIsImVuZCIsImNvbG9yQ3ViZWhlbGl4Iiwibm93IiwiY2xvY2tOb3ciLCJzZXRGcmFtZSIsImNsZWFyTm93IiwiY2xvY2siLCJjbG9ja1NrZXciLCJUaW1lciIsIl9jYWxsIiwiX3RpbWUiLCJ0aW1lciIsImRlbGF5IiwidGltZSIsInJlc3RhcnQiLCJ0aW1lckZsdXNoIiwiZnJhbWUiLCJ0YXNrSGVhZCIsIndha2UiLCJjbG9ja0xhc3QiLCJ0aW1lb3V0IiwibmFwIiwicG9rZSIsInBva2VEZWxheSIsIkluZmluaXR5IiwidGFza1RhaWwiLCJzbGVlcCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJpbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImluaXQiLCJpZCIsInNjaGVkdWxlIiwiX190cmFuc2l0aW9uIiwic3RhdGUiLCJDUkVBVEVEIiwiU1RBUlRJTkciLCJzZWxmIiwiZWxhcHNlZCIsIlNDSEVEVUxFRCIsInNjaGVkdWxlcyIsIlNUQVJURUQiLCJSVU5OSU5HIiwiRU5ERUQiLCJ0d2VlbiIsImR1cmF0aW9uIiwiZWFzZSIsIkVORElORyIsInR3ZWVuUmVtb3ZlIiwidHdlZW4wIiwidHdlZW4xIiwic3BsaWNlIiwidHdlZW5GdW5jdGlvbiIsInR3ZWVuVmFsdWUiLCJfaWQiLCJpbnRlcnBvbGF0ZSIsInZhbHVlMSIsInZhbHVlMDAiLCJpbnRlcnBvbGF0ZTAiLCJ2YWx1ZTAiLCJnZXRBdHRyaWJ1dGVOUyIsInZhbHVlMTAiLCJhdHRyVHdlZW5OUyIsIl92YWx1ZSIsImF0dHJUd2VlbiIsImRlbGF5RnVuY3Rpb24iLCJkZWxheUNvbnN0YW50IiwiZHVyYXRpb25GdW5jdGlvbiIsImR1cmF0aW9uQ29uc3RhbnQiLCJlYXNlQ29uc3RhbnQiLCJldmVyeSIsIm9uRnVuY3Rpb24iLCJvbjAiLCJvbjEiLCJzaXQiLCJyZW1vdmVGdW5jdGlvbiIsInN0eWxlUmVtb3ZlRW5kIiwic3R5bGVUd2VlbiIsIlRyYW5zaXRpb24iLCJfbmFtZSIsIm5ld0lkIiwiY3ViaWNJbk91dCIsImluaGVyaXQiLCJ0aW1pbmciLCJkZWZhdWx0VGltaW5nIiwiUGF0aCIsIl94MCIsIl95MCIsIl94MSIsIl95MSIsIk1hcCIsIm9iamVjdCIsImlzQXJyYXkiLCJTZXQiLCJvYmplY3RDb252ZXJ0ZXIiLCJjb2x1bW5zIiwiRnVuY3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiY3VzdG9tQ29udmVydGVyIiwicm93IiwiaW5mZXJDb2x1bW5zIiwicm93cyIsImNvbHVtblNldCIsImZvckVhY2giLCJjb2x1bW4iLCJ0cmVlIiwieG0iLCJ5bSIsInhwIiwieXAiLCJfcm9vdCIsImxlYWYiLCJ4MCIsInkwIiwieDEiLCJ5MSIsIl94IiwiX3kiLCJuZXh0IiwiYWRkQWxsIiwieHoiLCJ5eiIsImNvdmVyIiwicmVtb3ZlQWxsIiwiZGVmYXVsdFgiLCJkZWZhdWx0WSIsInF1YWR0cmVlIiwibm9kZXMiLCJRdWFkdHJlZSIsInVuZGVmaW5lZCIsImxlYWZfY29weSIsImZvcm1hdFNwZWNpZmllciIsInNwZWNpZmllciIsIkZvcm1hdFNwZWNpZmllciIsIm1hdGNoIiwicmUiLCJmaWxsIiwiYWxpZ24iLCJzaWduIiwic3ltYm9sIiwid2lkdGgiLCJjb21tYSIsInByZWNpc2lvbiIsImZvcm1hdFR5cGVzIiwiQWRkZXIiLCJyZXNldCIsImFkZGVyIiwiYnYiLCJhdiIsImFjb3MiLCJwaSIsImFzaW4iLCJoYWxmUGkiLCJhemltdXRoYWxSYXciLCJjeCIsImN5IiwiYXppbXV0aGFsSW52ZXJ0IiwiYW5nbGUiLCJ6Iiwic2MiLCJjYyIsInN1bSIsImNoaWxkcmVuIiwibGVhc3RDb21tb25BbmNlc3RvciIsImFOb2RlcyIsImFuY2VzdG9ycyIsImJOb2RlcyIsImhpZXJhcmNoeSIsImNoaWxkIiwiY2hpbGRzIiwiTm9kZSIsInZhbHVlZCIsImRlZmF1bHRDaGlsZHJlbiIsImRlcHRoIiwiZWFjaEJlZm9yZSIsImNvbXB1dGVIZWlnaHQiLCJub2RlX2NvcHkiLCJjb3B5RGF0YSIsImhlaWdodCIsIlRyZWVOb2RlIiwiQSIsIl9zdGFydCIsIl90YXNrcyIsIl9lbmRlZCIsIl9hY3RpdmUiLCJhYm9ydCIsIl9kYXRhIiwiX3dhaXRpbmciLCJfc2l6ZSIsIm5vYWJvcnQiLCJfZXJyb3IiLCJtYXliZU5vdGlmeSIsImRlaW50ZXJwb2xhdGVMaW5lYXIiLCJkZWludGVycG9sYXRlQ2xhbXAiLCJkZWludGVycG9sYXRlIiwicmVpbnRlcnBvbGF0ZUNsYW1wIiwicmVpbnRlcnBvbGF0ZSIsImJpbWFwIiwiZDAiLCJkMSIsInIwIiwicjEiLCJwb2x5bWFwIiwicmV2ZXJzZSIsImJpc2VjdCIsInNvdXJjZSIsInRhcmdldCIsImNsYW1wIiwiY29udGludW91cyIsInJlc2NhbGUiLCJwaWVjZXdpc2UiLCJvdXRwdXQiLCJpbnB1dCIsInVuaXQiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiaW52ZXJ0IiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlUm91bmQiLCJsaW5lYXJpc2giLCJuaWNlIiwiaTAiLCJpMSIsImNlaWwiLCJuZXdJbnRlcnZhbCIsImZsb29yaSIsIm9mZnNldGkiLCJmaWVsZCIsImRhdGUiLCJEYXRlIiwidGVzdCIsInNldFRpbWUiLCJ3ZWVrZGF5Iiwic2V0RGF0ZSIsImdldERhdGUiLCJnZXREYXkiLCJzZXRIb3VycyIsImdldFRpbWV6b25lT2Zmc2V0IiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbldlZWsiLCJ1dGNXZWVrZGF5Iiwic2V0VVRDRGF0ZSIsImdldFVUQ0RhdGUiLCJnZXRVVENEYXkiLCJzZXRVVENIb3VycyIsImxvY2FsRGF0ZSIsIkgiLCJNIiwiUyIsIkwiLCJzZXRGdWxsWWVhciIsInV0Y0RhdGUiLCJVVEMiLCJzZXRVVENGdWxsWWVhciIsIm5ld1llYXIiLCJmb3JtYXRMb2NhbGUiLCJsb2NhbGUiLCJuZXdGb3JtYXQiLCJmb3JtYXRzIiwicGFkIiwiY2hhckNvZGVBdCIsInBhZHMiLCJjaGFyQXQiLCJuZXdQYXJzZSIsIm5ld0RhdGUiLCJwYXJzZVNwZWNpZmllciIsInciLCJkYXkiLCJXIiwiVSIsIloiLCJwYXJzZXMiLCJwYXJzZVBlcmlvZCIsInBlcmlvZFJlIiwicGVyaW9kTG9va3VwIiwicGFyc2VTaG9ydFdlZWtkYXkiLCJzaG9ydFdlZWtkYXlSZSIsInNob3J0V2Vla2RheUxvb2t1cCIsInBhcnNlV2Vla2RheSIsIndlZWtkYXlSZSIsIndlZWtkYXlMb29rdXAiLCJwYXJzZVNob3J0TW9udGgiLCJzaG9ydE1vbnRoUmUiLCJzaG9ydE1vbnRoTG9va3VwIiwicGFyc2VNb250aCIsIm1vbnRoUmUiLCJtb250aExvb2t1cCIsInBhcnNlTG9jYWxlRGF0ZVRpbWUiLCJsb2NhbGVfZGF0ZVRpbWUiLCJwYXJzZUxvY2FsZURhdGUiLCJsb2NhbGVfZGF0ZSIsInBhcnNlTG9jYWxlVGltZSIsImxvY2FsZV90aW1lIiwiZm9ybWF0U2hvcnRXZWVrZGF5IiwibG9jYWxlX3Nob3J0V2Vla2RheXMiLCJmb3JtYXRXZWVrZGF5IiwibG9jYWxlX3dlZWtkYXlzIiwiZm9ybWF0U2hvcnRNb250aCIsImxvY2FsZV9zaG9ydE1vbnRocyIsImdldE1vbnRoIiwiZm9ybWF0TW9udGgiLCJsb2NhbGVfbW9udGhzIiwiZm9ybWF0UGVyaW9kIiwibG9jYWxlX3BlcmlvZHMiLCJnZXRIb3VycyIsImZvcm1hdFVUQ1Nob3J0V2Vla2RheSIsImZvcm1hdFVUQ1dlZWtkYXkiLCJmb3JtYXRVVENTaG9ydE1vbnRoIiwiZ2V0VVRDTW9udGgiLCJmb3JtYXRVVENNb250aCIsImZvcm1hdFVUQ1BlcmlvZCIsImdldFVUQ0hvdXJzIiwiZGF0ZVRpbWUiLCJwZXJpb2RzIiwiZGF5cyIsInNob3J0RGF5cyIsIm1vbnRocyIsInNob3J0TW9udGhzIiwiZm9ybWF0UmUiLCJmb3JtYXRMb29rdXAiLCJCIiwiZm9ybWF0RGF5T2ZNb250aCIsImZvcm1hdEhvdXIyNCIsIkkiLCJmb3JtYXRIb3VyMTIiLCJmb3JtYXREYXlPZlllYXIiLCJmb3JtYXRNaWxsaXNlY29uZHMiLCJmb3JtYXRNb250aE51bWJlciIsImZvcm1hdE1pbnV0ZXMiLCJmb3JtYXRTZWNvbmRzIiwiZm9ybWF0V2Vla051bWJlclN1bmRheSIsImZvcm1hdFdlZWtkYXlOdW1iZXIiLCJmb3JtYXRXZWVrTnVtYmVyTW9uZGF5IiwiWCIsImZvcm1hdFllYXIiLCJZIiwiZm9ybWF0RnVsbFllYXIiLCJmb3JtYXRab25lIiwiJSIsImZvcm1hdExpdGVyYWxQZXJjZW50IiwidXRjRm9ybWF0cyIsImZvcm1hdFVUQ0RheU9mTW9udGgiLCJmb3JtYXRVVENIb3VyMjQiLCJmb3JtYXRVVENIb3VyMTIiLCJmb3JtYXRVVENEYXlPZlllYXIiLCJmb3JtYXRVVENNaWxsaXNlY29uZHMiLCJmb3JtYXRVVENNb250aE51bWJlciIsImZvcm1hdFVUQ01pbnV0ZXMiLCJmb3JtYXRVVENTZWNvbmRzIiwiZm9ybWF0VVRDV2Vla051bWJlclN1bmRheSIsImZvcm1hdFVUQ1dlZWtkYXlOdW1iZXIiLCJmb3JtYXRVVENXZWVrTnVtYmVyTW9uZGF5IiwiZm9ybWF0VVRDWWVhciIsImZvcm1hdFVUQ0Z1bGxZZWFyIiwiZm9ybWF0VVRDWm9uZSIsInBhcnNlRGF5T2ZNb250aCIsInBhcnNlSG91cjI0IiwicGFyc2VEYXlPZlllYXIiLCJwYXJzZU1pbGxpc2Vjb25kcyIsInBhcnNlTW9udGhOdW1iZXIiLCJwYXJzZU1pbnV0ZXMiLCJwYXJzZVNlY29uZHMiLCJwYXJzZVdlZWtOdW1iZXJTdW5kYXkiLCJwYXJzZVdlZWtkYXlOdW1iZXIiLCJwYXJzZVdlZWtOdW1iZXJNb25kYXkiLCJwYXJzZVllYXIiLCJwYXJzZUZ1bGxZZWFyIiwicGFyc2Vab25lIiwicGFyc2VMaXRlcmFsUGVyY2VudCIsInRvU3RyaW5nIiwidXRjRm9ybWF0IiwidXRjUGFyc2UiLCJyZXF1b3RlIiwicmVwbGFjZSIsInJlcXVvdGVSZSIsIlJlZ0V4cCIsIm51bWJlclJlIiwicGVyY2VudFJlIiwidGltZURheSIsInRpbWVZZWFyIiwiZ2V0TWlsbGlzZWNvbmRzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJ0aW1lU3VuZGF5IiwidGltZU1vbmRheSIsImdldEZ1bGxZZWFyIiwidXRjRGF5IiwidXRjWWVhciIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwidXRjU3VuZGF5IiwidXRjTW9uZGF5IiwiZ2V0VVRDRnVsbFllYXIiLCJmb3JtYXRJc29OYXRpdmUiLCJ0b0lTT1N0cmluZyIsInBhcnNlSXNvTmF0aXZlIiwiY2FsZW5kYXIiLCJ5ZWFyIiwibW9udGgiLCJ3ZWVrIiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiZm9ybWF0TWlsbGlzZWNvbmQiLCJmb3JtYXRTZWNvbmQiLCJmb3JtYXRNaW51dGUiLCJmb3JtYXRIb3VyIiwiZm9ybWF0RGF5IiwiZm9ybWF0V2VlayIsInRpY2tJbnRlcnZhbCIsImJpc2VjdG9yIiwidGlja0ludGVydmFscyIsImR1cmF0aW9uWWVhciIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25Ib3VyIiwiZHVyYXRpb25EYXkiLCJkdXJhdGlvbk1vbnRoIiwiTGluZWFyIiwiX2NvbnRleHQiLCJzbG9wZTMiLCJ0aGF0IiwieDIiLCJ5MiIsImgwIiwiaDEiLCJzMCIsInMxIiwic2xvcGUyIiwicG9pbnQiLCJkeCIsImJlemllckN1cnZlVG8iLCJNb25vdG9uZVgiLCJNb25vdG9uZVkiLCJSZWZsZWN0Q29udGV4dCIsImF0dHJzRnVuY3Rpb24iLCJhdHRyc09iamVjdCIsInN0eWxlc0Z1bmN0aW9uIiwic3R5bGVzT2JqZWN0IiwicHJvcGVydGllc0Z1bmN0aW9uIiwicHJvcGVydHkiLCJwcm9wZXJ0aWVzT2JqZWN0IiwiY29tcGFyZSIsImxvIiwiaGkiLCJtaWQiLCJiaXNlY3RSaWdodCIsInZhbHVlb2YiLCJjb25zdHJ1Y3RvciIsIlQiLCJhcmdzIiwic3ZnIiwieGxpbmsiLCJ4bWwiLCJ4bWxucyIsInByZWZpeCIsIm5hbWVzcGFjZXMiLCJuYW1lc3BhY2UiLCJtYXRjaGVyIiwic2VsZWN0b3IiLCJtYXRjaGVzIiwiZWxlbWVudCIsInZlbmRvck1hdGNoZXMiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInF1ZXJ5U2VsZWN0b3IiLCJzdWJncm91cHMiLCJzdWJub2RlIiwic3ViZ3JvdXAiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2VsZWN0b3JBbGwiLCJfZW50ZXIiLCJzcGFyc2UiLCJzaXplIiwiYmluZCIsImVudGVyR3JvdXAiLCJ1cGRhdGVHcm91cCIsInByZXZpb3VzIiwiX2V4aXQiLCJncm91cHMwIiwiZ3JvdXBzMSIsIm0wIiwibWVyZ2VzIiwiZ3JvdXAwIiwiZ3JvdXAxIiwiY29tcGFyZU5vZGUiLCJzb3J0Z3JvdXBzIiwic29ydGdyb3VwIiwic29ydCIsImNvbnRhaW5zIiwiY3JlYXRvciIsImJlZm9yZSIsInNlbGVjdGlvbl9zZWxlY3QiLCJzZWxlY3Rpb25fc2VsZWN0QWxsIiwic2VsZWN0aW9uX2ZpbHRlciIsInNlbGVjdGlvbl9kYXRhIiwic2VsZWN0aW9uX2VudGVyIiwic2VsZWN0aW9uX2V4aXQiLCJzZWxlY3Rpb25fbWVyZ2UiLCJzZWxlY3Rpb25fb3JkZXIiLCJzZWxlY3Rpb25fc29ydCIsInNlbGVjdGlvbl9jYWxsIiwic2VsZWN0aW9uX25vZGVzIiwic2VsZWN0aW9uX25vZGUiLCJzZWxlY3Rpb25fc2l6ZSIsInNlbGVjdGlvbl9lbXB0eSIsInNlbGVjdGlvbl9lYWNoIiwic2VsZWN0aW9uX2F0dHIiLCJzZWxlY3Rpb25fc3R5bGUiLCJzZWxlY3Rpb25fcHJvcGVydHkiLCJjbGFzc2VkIiwic2VsZWN0aW9uX2NsYXNzZWQiLCJzZWxlY3Rpb25fdGV4dCIsImh0bWwiLCJzZWxlY3Rpb25faHRtbCIsInNlbGVjdGlvbl9yYWlzZSIsInNlbGVjdGlvbl9sb3dlciIsInNlbGVjdGlvbl9hcHBlbmQiLCJzZWxlY3Rpb25faW5zZXJ0Iiwic2VsZWN0aW9uX3JlbW92ZSIsInNlbGVjdGlvbl9kYXR1bSIsInNlbGVjdGlvbl9vbiIsInNlbGVjdGlvbl9kaXNwYXRjaCIsImZhY3RvcnkiLCJyZUkiLCJyZU4iLCJyZVAiLCJhbGljZWJsdWUiLCJhbnRpcXVld2hpdGUiLCJhcXVhIiwiYXF1YW1hcmluZSIsImF6dXJlIiwiYmVpZ2UiLCJiaXNxdWUiLCJibGFjayIsImJsYW5jaGVkYWxtb25kIiwiYmx1ZSIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImNhZGV0Ymx1ZSIsImNoYXJ0cmV1c2UiLCJjaG9jb2xhdGUiLCJjb3JhbCIsImNvcm5mbG93ZXJibHVlIiwiY29ybnNpbGsiLCJjcmltc29uIiwiY3lhbiIsImRhcmtibHVlIiwiZGFya2N5YW4iLCJkYXJrZ29sZGVucm9kIiwiZGFya2dyYXkiLCJkYXJrZ3JlZW4iLCJkYXJrZ3JleSIsImRhcmtraGFraSIsImRhcmttYWdlbnRhIiwiZGFya29saXZlZ3JlZW4iLCJkYXJrb3JhbmdlIiwiZGFya29yY2hpZCIsImRhcmtyZWQiLCJkYXJrc2FsbW9uIiwiZGFya3NlYWdyZWVuIiwiZGFya3NsYXRlYmx1ZSIsImRhcmtzbGF0ZWdyYXkiLCJkYXJrc2xhdGVncmV5IiwiZGFya3R1cnF1b2lzZSIsImRhcmt2aW9sZXQiLCJkZWVwcGluayIsImRlZXBza3libHVlIiwiZGltZ3JheSIsImRpbWdyZXkiLCJkb2RnZXJibHVlIiwiZmlyZWJyaWNrIiwiZmxvcmFsd2hpdGUiLCJmb3Jlc3RncmVlbiIsImZ1Y2hzaWEiLCJnYWluc2Jvcm8iLCJnaG9zdHdoaXRlIiwiZ29sZCIsImdvbGRlbnJvZCIsImdyYXkiLCJncmVlbiIsImdyZWVueWVsbG93IiwiZ3JleSIsImhvbmV5ZGV3IiwiaG90cGluayIsImluZGlhbnJlZCIsImluZGlnbyIsIml2b3J5Iiwia2hha2kiLCJsYXZlbmRlciIsImxhdmVuZGVyYmx1c2giLCJsYXduZ3JlZW4iLCJsZW1vbmNoaWZmb24iLCJsaWdodGJsdWUiLCJsaWdodGNvcmFsIiwibGlnaHRjeWFuIiwibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCJsaWdodGdyYXkiLCJsaWdodGdyZWVuIiwibGlnaHRncmV5IiwibGlnaHRwaW5rIiwibGlnaHRzYWxtb24iLCJsaWdodHNlYWdyZWVuIiwibGlnaHRza3libHVlIiwibGlnaHRzbGF0ZWdyYXkiLCJsaWdodHNsYXRlZ3JleSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lIiwibGltZWdyZWVuIiwibGluZW4iLCJtYWdlbnRhIiwibWFyb29uIiwibWVkaXVtYXF1YW1hcmluZSIsIm1lZGl1bWJsdWUiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJtZWRpdW1zZWFncmVlbiIsIm1lZGl1bXNsYXRlYmx1ZSIsIm1lZGl1bXNwcmluZ2dyZWVuIiwibWVkaXVtdHVycXVvaXNlIiwibWVkaXVtdmlvbGV0cmVkIiwibWlkbmlnaHRibHVlIiwibWludGNyZWFtIiwibWlzdHlyb3NlIiwibW9jY2FzaW4iLCJuYXZham93aGl0ZSIsIm5hdnkiLCJvbGRsYWNlIiwib2xpdmUiLCJvbGl2ZWRyYWIiLCJvcmFuZ2UiLCJvcmFuZ2VyZWQiLCJvcmNoaWQiLCJwYWxlZ29sZGVucm9kIiwicGFsZWdyZWVuIiwicGFsZXR1cnF1b2lzZSIsInBhbGV2aW9sZXRyZWQiLCJwYXBheWF3aGlwIiwicGVhY2hwdWZmIiwicGVydSIsInBpbmsiLCJwbHVtIiwicG93ZGVyYmx1ZSIsInB1cnBsZSIsInJlYmVjY2FwdXJwbGUiLCJyZWQiLCJyb3N5YnJvd24iLCJyb3lhbGJsdWUiLCJzYWRkbGVicm93biIsInNhbG1vbiIsInNhbmR5YnJvd24iLCJzZWFncmVlbiIsInNlYXNoZWxsIiwic2llbm5hIiwic2lsdmVyIiwic2t5Ymx1ZSIsInNsYXRlYmx1ZSIsInNsYXRlZ3JheSIsInNsYXRlZ3JleSIsInNub3ciLCJzcHJpbmdncmVlbiIsInN0ZWVsYmx1ZSIsInRhbiIsInRlYWwiLCJ0aGlzdGxlIiwidG9tYXRvIiwidHVycXVvaXNlIiwidmlvbGV0Iiwid2hlYXQiLCJ3aGl0ZSIsIndoaXRlc21va2UiLCJ5ZWxsb3ciLCJ5ZWxsb3dncmVlbiIsImRlZmluZSIsImRpc3BsYXlhYmxlIiwiYnJpZ2h0ZXIiLCJkYXJrZXIiLCJQSSIsImNvc2giLCJzaW5oIiwicmdiR2FtbWEiLCJjb2xvclJnYiIsIm5iIiwibmEiLCJyZUEiLCJyZUIiLCJhbSIsImJtIiwiYnMiLCJiaSIsImxhc3RJbmRleCIsImFycmF5IiwidmFsdWVPZiIsImRlZ3JlZXMiLCJhdGFuIiwiaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MiLCJpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZyIsImN1YmVoZWxpeCQxIiwiY3ViZWhlbGl4TG9uZyIsInBlcmZvcm1hbmNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiVHlwZUVycm9yIiwiZW1wdHlPbiIsImVtcHR5VHdlZW4iLCJhY3RpdmUiLCJpbnRlcnJ1cHQiLCJpbnRlcnBvbGF0ZU51bWJlciIsImludGVycG9sYXRlUmdiIiwiaW50ZXJwb2xhdGVTdHJpbmciLCJpZDAiLCJpZDEiLCJzZWxlY3Rpb25fcHJvdG90eXBlIiwidHJhbnNpdGlvbl9zZWxlY3QiLCJ0cmFuc2l0aW9uX3NlbGVjdEFsbCIsInRyYW5zaXRpb25fZmlsdGVyIiwidHJhbnNpdGlvbl9tZXJnZSIsInRyYW5zaXRpb25fc2VsZWN0aW9uIiwidHJhbnNpdGlvbl90cmFuc2l0aW9uIiwidHJhbnNpdGlvbl9vbiIsInRyYW5zaXRpb25fYXR0ciIsInRyYW5zaXRpb25fYXR0clR3ZWVuIiwidHJhbnNpdGlvbl9zdHlsZSIsInRyYW5zaXRpb25fc3R5bGVUd2VlbiIsInRyYW5zaXRpb25fdGV4dCIsInRyYW5zaXRpb25fcmVtb3ZlIiwidHJhbnNpdGlvbl90d2VlbiIsInRyYW5zaXRpb25fZGVsYXkiLCJ0cmFuc2l0aW9uX2R1cmF0aW9uIiwidHJhbnNpdGlvbl9lYXNlIiwiY3VzdG9tIiwicG9seUluIiwiZXhwb25lbnQiLCJwb2x5T3V0IiwicG9seUluT3V0IiwiYmFja0luIiwib3ZlcnNob290IiwiYmFja091dCIsImJhY2tJbk91dCIsInRhdSIsImVsYXN0aWNJbiIsImFtcGxpdHVkZSIsInBlcmlvZCIsImVsYXN0aWNPdXQiLCJlbGFzdGljSW5PdXQiLCJlYXNlQ3ViaWNJbk91dCIsInNlbGVjdGlvbl9pbnRlcnJ1cHQiLCJzZWxlY3Rpb25fdHJhbnNpdGlvbiIsInRhdUVwc2lsb24iLCJtb3ZlVG8iLCJjbG9zZVBhdGgiLCJsaW5lVG8iLCJxdWFkcmF0aWNDdXJ2ZVRvIiwiYXJjVG8iLCJ4MjEiLCJ5MjEiLCJ4MDEiLCJ5MDEiLCJsMDFfMiIsIngyMCIsInkyMCIsImwyMV8yIiwibDIwXzIiLCJsMjEiLCJsMDEiLCJ0MDEiLCJ0MjEiLCJhcmMiLCJhMCIsImExIiwiY2N3IiwiZHkiLCJjdyIsImRhIiwicmVjdCIsImhhcyIsImNsZWFyIiwia2V5cyIsImVudHJpZXMiLCJwcm90byIsImRlbGltaXRlciIsImNvbnZlcnQiLCJwYXJzZVJvd3MiLCJ0b2tlbiIsIk4iLCJFT0YiLCJlb2wiLCJFT0wiLCJkZWxpbWl0ZXJDb2RlIiwiZm9ybWF0VmFsdWUiLCJmb3JtYXRSb3dzIiwiZm9ybWF0Um93IiwicmVGb3JtYXQiLCJkc3YiLCJ2aXNpdCIsInJhZGl1cyIsIngzIiwieTMiLCJxdWFkcyIsIlF1YWQiLCJkMiIsInJldGFpbmVyIiwidHJlZVByb3RvIiwidHJlZV9hZGQiLCJ0cmVlX2FkZEFsbCIsInRyZWVfY292ZXIiLCJ0cmVlX2RhdGEiLCJleHRlbnQiLCJ0cmVlX2V4dGVudCIsImZpbmQiLCJ0cmVlX2ZpbmQiLCJ0cmVlX3JlbW92ZSIsInRyZWVfcmVtb3ZlQWxsIiwidHJlZV9yb290IiwidHJlZV9zaXplIiwidHJlZV92aXNpdCIsInZpc2l0QWZ0ZXIiLCJ0cmVlX3Zpc2l0QWZ0ZXIiLCJ0cmVlX3giLCJ0cmVlX3kiLCJwcmVmaXhFeHBvbmVudCIsInRvRXhwb25lbnRpYWwiLCJjb2VmZmljaWVudCIsImZvcm1hdERlY2ltYWwiLCJncm91cGluZyIsInRob3VzYW5kcyIsInN1YnN0cmluZyIsIm51bWVyYWxzIiwib3V0IiwidG9QcmVjaXNpb24iLCJ0b0ZpeGVkIiwiZm9ybWF0Um91bmRlZCIsInRvVXBwZXJDYXNlIiwiZm9ybWF0UHJlZml4IiwicHJlZml4ZXMiLCJ2YWx1ZVByZWZpeCIsInZhbHVlU3VmZml4Iiwic3VmZml4IiwiZm9ybWF0VHlwZSIsInZhbHVlTmVnYXRpdmUiLCJtYXliZVN1ZmZpeCIsImRlY2ltYWwiLCJwYWRkaW5nIiwiY3VycmVuY3kiLCJwZXJjZW50IiwiZm9ybWF0R3JvdXAiLCJmb3JtYXROdW1lcmFscyIsInRlbXAiLCJyYWRpYW5zIiwiY3hjeSIsImVhY2hBZnRlciIsImN1cnJlbnQiLCJhbmNlc3RvciIsImxlYXZlcyIsImxpbmtzIiwibm9kZV9jb3VudCIsIm5vZGVfZWFjaCIsIm5vZGVfZWFjaEFmdGVyIiwibm9kZV9lYWNoQmVmb3JlIiwibm9kZV9zdW0iLCJub2RlX3NvcnQiLCJub2RlX3BhdGgiLCJub2RlX2FuY2VzdG9ycyIsImRlc2NlbmRhbnRzIiwibm9kZV9kZXNjZW5kYW50cyIsIm5vZGVfbGVhdmVzIiwibm9kZV9saW5rcyIsInByZWNpc2lvblByZWZpeCIsInByZWNpc2lvblJvdW5kIiwicHJlY2lzaW9uRml4ZWQiLCJzdW5kYXkiLCJtb25kYXkiLCJzZXRNb250aCIsInNldFVUQ1NlY29uZHMiLCJzZXRVVENNaW51dGVzIiwic2V0VVRDTW9udGgiLCJ0aW1lRm9ybWF0IiwidGltZVBhcnNlIiwiLSIsIjAiLCJ0aW1lTW9udGgiLCJ0aW1lV2VlayIsInRpbWVIb3VyIiwidGltZU1pbnV0ZSIsInRpbWVTZWNvbmQiLCJ0aW1lTWlsbGlzZWNvbmQiLCJjb2xvcnMiLCJpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmciLCJhcmVhU3RhcnQiLCJfbGluZSIsImFyZWFFbmQiLCJsaW5lU3RhcnQiLCJfcG9pbnQiLCJsaW5lRW5kIiwiYnVmZmVyIiwiZGVmaW5lZDAiLCJjdXJ2ZSIsImRlZmluZWQiLCJwb2ludFgiLCJwb2ludFkiLCJjdXJ2ZUxpbmVhciIsIl90MCIsImF0dHJzIiwic2VsZWN0aW9uX2F0dHJzIiwic3R5bGVzIiwic2VsZWN0aW9uX3N0eWxlcyIsInByb3BlcnRpZXMiLCJzZWxlY3Rpb25fcHJvcGVydGllcyIsIkNPTlNUQU5UUyIsIm9DaGFydHMiLCJzZXR0aW5ncyIsImNoYXJ0IiwiZDMiLCJUZXh0IiwicmVuZGVyIiwiX3RoaXMyIiwiZG9tYWlucyIsInBsb3RzIiwiY2xhc3NlcyIsIktFWSIsImJhY2tncm91bmQiLCJOQU1FU1BBQ0UiLCJiZyIsIl90aGlzIiwiZGVmcyIsInNlbGVjdGlvbnMiLCJDTEFTUyIsIlNUWUxFIiwibWFyZ2luIiwiZGVmaW5lTGF5b3V0IiwiZGVmaW5lU2NhbGVzIiwiZGVmaW5lQXhpcyIsImRlZmluZVBsb3RzIiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0Iiwic2NhbGVzIiwiYmFycyIsInNsdWciLCJsYWJlbCIsInBsb3QiLCJET1RTX1JBRElVUyIsImJhciIsIkJBUl9HQVAiLCJsYWJlbHMiLCJtb2RpZnkiLCJ4dCIsImdldEJCb3giXSwibWFwcGluZ3MiOiJpQ0E0QkEsU0FBU0EsRUFBb0JDLEdBQzNCLE9BQU8sU0FBU0MsRUFBR0MsR0FDakIsT0FBT0MsR0FBVUgsRUFBRUMsR0FBSUMsSUNFM0IsU0FBZ0JFLEVBQWNDLEVBQU9DLEVBQU1DLEdBQ3pDLElBQUlDLEdBQVFGLEVBQU9ELEdBQVNJLEtBQUtDLElBQUksRUFBR0gsR0FDcENJLEVBQVFGLEtBQUtHLE1BQU1ILEtBQUtJLElBQUlMLEdBQVFDLEtBQUtLLE1BQ3pDQyxFQUFRUCxFQUFPQyxLQUFLTyxJ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 +var nyco=function(){"use strict";function t(t){return function(n,e){return ti(t(n),e)}}function n(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=ri?10:o>=ii?5:o>=oi?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=ri?10:o>=ii?5:o>=oi?2:1)}function e(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=ri?i*=10:o>=ii?i*=5:o>=oi&&(i*=2),n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function p(t,n){for(var e,r=0,i=t.length;r=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}function w(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;rn?1:t>=n?0:NaN}function C(t){return function(){this.removeAttribute(t)}}function S(t){return function(){this.removeAttributeNS(t.space,t.local)}}function D(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function U(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function P(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function F(t){return function(){this.style.removeProperty(t)}}function H(t,n,e){return function(){this.style.setProperty(t,n,e)}}function L(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function Y(t,n){return t.style.getPropertyValue(n)||Vi(t).getComputedStyle(t,null).getPropertyValue(n)}function O(t){return function(){delete this[t]}}function j(t,n){return function(){this[t]=n}}function z(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function I(t){return t.trim().split(/^|\s+/)}function q(t){return t.classList||new $(t)}function $(t){this._node=t,this._names=I(t.getAttribute("class")||"")}function X(t,n){for(var e=q(t),r=-1,i=n.length;++r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=_o.exec(t))?pt(parseInt(n[1],16)):(n=vo.exec(t))?new vt(n[1],n[2],n[3],1):(n=yo.exec(t))?new vt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=mo.exec(t))?dt(n[1],n[2],n[3],n[4]):(n=wo.exec(t))?dt(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=xo.exec(t))?yt(n[1],n[2]/100,n[3]/100,1):(n=bo.exec(t))?yt(n[1],n[2]/100,n[3]/100,n[4]):Mo.hasOwnProperty(t)?pt(Mo[t]):"transparent"===t?new vt(NaN,NaN,NaN,0):null}function pt(t){return new vt(t>>16&255,t>>8&255,255&t,1)}function dt(t,n,e,r){return r<=0&&(t=n=e=NaN),new vt(t,n,e,r)}function gt(t){return t instanceof ht||(t=ft(t)),t?(t=t.rgb(),new vt(t.r,t.g,t.b,t.opacity)):new vt}function _t(t,n,e,r){return 1===arguments.length?gt(t):new vt(t,n,e,null==r?1:r)}function vt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function yt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new xt(t,n,e,r)}function mt(t){if(t instanceof xt)return new xt(t.h,t.s,t.l,t.opacity);if(t instanceof ht||(t=ft(t)),!t)return new xt;if(t instanceof xt)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,s=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&s<1?0:a,new xt(a,u,s,t.opacity)}function wt(t,n,e,r){return 1===arguments.length?mt(t):new xt(t,n,e,null==r?1:r)}function xt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function bt(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Mt(t){if(t instanceof kt)return new kt(t.l,t.a,t.b,t.opacity);if(t instanceof Ut){var n=t.h*Ao;return new kt(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof vt||(t=gt(t));var e=St(t.r),r=St(t.g),i=St(t.b),o=Nt((.4124564*e+.3575761*r+.1804375*i)/No),a=Nt((.2126729*e+.7151522*r+.072175*i)/To);return new kt(116*a-16,500*(o-a),200*(a-Nt((.0193339*e+.119192*r+.9503041*i)/Co)),t.opacity)}function At(t,n,e,r){return 1===arguments.length?Mt(t):new kt(t,n,e,null==r?1:r)}function kt(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Nt(t){return t>Uo?Math.pow(t,1/3):t/Eo+So}function Tt(t){return t>Do?t*t*t:Eo*(t-So)}function Ct(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function St(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dt(t){if(t instanceof Ut)return new Ut(t.h,t.c,t.l,t.opacity);t instanceof kt||(t=Mt(t));var n=Math.atan2(t.b,t.a)*ko;return new Ut(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Et(t,n,e,r){return 1===arguments.length?Dt(t):new Ut(t,n,e,null==r?1:r)}function Ut(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Pt(t){if(t instanceof Ht)return new Ht(t.h,t.s,t.l,t.opacity);t instanceof vt||(t=gt(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(zo*r+Oo*n-jo*e)/(zo+Oo-jo),o=r-i,a=(Yo*(e-i)-Ho*o)/Lo,u=Math.sqrt(a*a+o*o)/(Yo*i*(1-i)),s=u?Math.atan2(a,o)*ko-120:NaN;return new Ht(s<0?s+360:s,u,i,t.opacity)}function Ft(t,n,e,r){return 1===arguments.length?Pt(t):new Ht(t,n,e,null==r?1:r)}function Ht(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Lt(t,n){return function(e){return t+e*n}}function Yt(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function Ot(t,n){var e=n-t;return e?Lt(t,e>180||e<-180?e-360*Math.round(e/360):e):Bo(isNaN(t)?n:t)}function jt(t){return 1==(t=+t)?zt:function(n,e){return e-n?Yt(n,e,t):Bo(isNaN(n)?e:n)}}function zt(t,n){var e=n-t;return e?Lt(t,e):Bo(isNaN(t)?n:t)}function It(t){return function(){return t}}function qt(t){return function(n){return t(n)+""}}function $t(t){return"none"===t?ra:(Io||(Io=document.createElement("DIV"),qo=document.documentElement,$o=document.defaultView),Io.style.transform=t,t=$o.getComputedStyle(qo.appendChild(Io),null).getPropertyValue("transform"),qo.removeChild(Io),t=t.slice(7,-1).split(","),ia(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function Xt(t){return null==t?ra:(Xo||(Xo=document.createElementNS("http://www.w3.org/2000/svg","g")),Xo.setAttribute("transform",t),(t=Xo.transform.baseVal.consolidate())?(t=t.matrix,ia(t.a,t.b,t.c,t.d,t.e,t.f)):ra)}function Bt(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}function o(t,r,i,o,a,u){if(t!==i||r!==o){var s=a.push("translate(",null,n,null,e);u.push({i:s-4,x:Vo(t,i)},{i:s-2,x:Vo(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}function a(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Vo(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}function u(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Vo(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}function s(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Vo(t,e)},{i:u-2,x:Vo(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}return function(n,e){var r=[],i=[];return n=t(n),e=t(e),o(n.translateX,n.translateY,e.translateX,e.translateY,r,i),a(n.rotate,e.rotate,r,i),u(n.skewX,e.skewX,r,i),s(n.scaleX,n.scaleY,e.scaleX,e.scaleY,r,i),n=e=null,function(t){for(var n,e=-1,o=i.length;++e=0&&n._call.call(null,t),n=n._next;--la}function Qt(){ga=(da=va.now())+_a,la=ha=0;try{Jt()}finally{la=0,tn(),ga=0}}function Kt(){var t=va.now(),n=t-da;n>pa&&(_a-=n,da=t)}function tn(){for(var t,n,e=ua,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ua=n);sa=t,nn(r)}function nn(t){if(!la){ha&&(ha=clearTimeout(ha));var n=t-ga;n>24?(t<1/0&&(ha=setTimeout(Qt,n)),fa&&(fa=clearInterval(fa))):(fa||(da=ga,fa=setInterval(Kt,pa)),la=1,ya(Qt))}}function en(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>ba)throw new Error("too late");return e}function rn(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>Aa)throw new Error("too late");return e}function on(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("too late");return e}function an(t,n,e){function r(t){e.state=Ma,e.timer.restart(i,e.delay,e.time),e.delay<=t&&i(t-e.delay)}function i(r){var c,l,h,f;if(e.state!==Ma)return a();for(c in s)if((f=s[c]).name===e.name){if(f.state===ka)return ma(i);f.state===Na?(f.state=Ca,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete s[c]):+c=0&&(t=t.slice(0,n)),!t||"start"===t})}function An(t,n,e){var r,i,o=Mn(n)?en:rn;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}function kn(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Nn(t,n){var e,r,i;return function(){var o=Y(this,t),a=(this.style.removeProperty(t),Y(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}function Tn(t){return function(){this.style.removeProperty(t)}}function Cn(t,n,e){var r,i;return function(){var o=Y(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}function Sn(t,n,e){var r,i,o;return function(){var a=Y(this,t),u=e(this);return null==u&&(this.style.removeProperty(t),u=Y(this,t)),a===u?null:a===r&&u===i?o:o=n(r=a,i=u)}}function Dn(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}function En(t){return function(){this.textContent=t}}function Un(t){return function(){var n=t(this);this.textContent=null==n?"":n}}function Pn(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function Fn(t){return ct().transition(t)}function Hn(){return++Ja}function Ln(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function Yn(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return tu.time=Wt(),tu;return e}function On(t){return{type:t}}function jn(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function zn(){return new jn}function In(){}function qn(t,n){var e=new In;if(t instanceof In)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i=(o=(g+v)/2))?g=o:v=o,(l=e>=(a=(_+y)/2))?_=a:y=a,i=p,!(p=p[h=l<<1|c]))return i[h]=d,t;if(u=+t._x.call(null,p.data),s=+t._y.call(null,p.data),n===u&&e===s)return d.next=p,i?i[h]=d:t._root=d,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(c=n>=(o=(g+v)/2))?g=o:v=o,(l=e>=(a=(_+y)/2))?_=a:y=a}while((h=l<<1|c)==(f=(s>=a)<<1|u>=o));return i[f]=p,i[h]=d,t}function Vn(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),s=1/0,c=1/0,l=-1/0,h=-1/0;for(e=0;el&&(l=r),ih&&(h=i));for(l",i=n[3]||"-",o=n[4]||"",a=!!n[5],u=n[6]&&+n[6],s=!!n[7],c=n[8]&&+n[8].slice(1),l=n[9]||"";"n"===l?(s=!0,l="g"):Tu[l]||(l=""),(a||"0"===e&&"="===r)&&(a=!0,e="0",r="="),this.fill=e,this.align=r,this.sign=i,this.symbol=o,this.zero=a,this.width=u,this.comma=s,this.precision=c,this.type=l}function ie(){this.reset()}function oe(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function ae(t){return t>1?0:t<-1?zu:Math.acos(t)}function ue(t){return t>1?Iu:t<-1?-Iu:Math.asin(t)}function se(t){return function(n,e){var r=Xu(n),i=Xu(e),o=t(r*i);return[o*i*Bu(n),o*Bu(e)]}}function ce(t){return function(n,e){var r=Ru(n*n+e*e),i=t(r),o=Bu(i),a=Xu(i);return[$u(n*o,r*a),ue(r&&e*o/r)]}}function le(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function he(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}function fe(t,n){var e,r,i,o,a,u=new ve(t),s=+t.value&&(u.value=t.value),c=[u];for(null==n&&(n=de);e=c.pop();)if(s&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)c.push(r=e.children[o]=new ve(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(_e)}function pe(){return fe(this).eachBefore(ge)}function de(t){return t.children}function ge(t){t.data=t.data.data}function _e(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function ve(t){this.data=t,this.depth=this.height=0,this.parent=null}function ye(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function me(t){if(!t._start)try{we(t)}catch(n){if(t._tasks[t._ended+t._active-1])be(t,n);else if(!t._data)throw n}}function we(t){for(;t._start=t._waiting&&t._active=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,Me(t)}function Me(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function Ae(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:ss(n)}function ke(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=n?0:t>=e?1:r(t)}}}function Ne(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}function Te(t,n,e,r){var i=t[0],o=t[1],a=n[0],u=n[1];return o2?Ce:Te,o=a=null,r}function r(n){return(o||(o=i(u,s,l?ke(t):t,c)))(+n)}var i,o,a,u=ls,s=ls,c=ta,l=!1;return r.invert=function(t){return(a||(a=i(s,u,Ae,l?Ne(n):n)))(+t)},r.domain=function(t){return arguments.length?(u=as.call(t,cs),e()):u.slice()},r.range=function(t){return arguments.length?(s=us.call(t),e()):s.slice()},r.rangeRound=function(t){return s=us.call(t),c=na,e()},r.clamp=function(t){return arguments.length?(l=!!t,e()):l},r.interpolate=function(t){return arguments.length?(c=t,e()):c},e()}function Ee(t){var e=t.domain;return t.ticks=function(t){var n=e();return ai(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){return hs(e(),t,n)},t.nice=function(r){null==r&&(r=10);var i,o=e(),a=0,u=o.length-1,s=o[a],c=o[u];return c0?i=n(s=Math.floor(s/i)*i,c=Math.ceil(c/i)*i,r):i<0&&(i=n(s=Math.ceil(s*i)/i,c=Math.floor(c*i)/i,r)),i>0?(o[a]=Math.floor(s/i)*i,o[u]=Math.ceil(c/i)*i,e(o)):i<0&&(o[a]=Math.ceil(s*i)/i,o[u]=Math.floor(c*i)/i,e(o)),t},t}function Ue(){var t=De(Ae,Vo);return t.copy=function(){return Se(t,Ue())},Ee(t)}function Pe(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n0))return a;do{a.push(new Date(+e))}while(n(e,o),t(e),e=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return ps.setTime(+n),ds.setTime(+r),t(ps),t(ds),Math.floor(e(ps,ds))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function Fe(t){return Pe(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*_s)/vs})}function He(t){return Pe(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/vs})}function Le(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Ye(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Oe(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function je(t){function n(t,n){return function(e){var r,i,o,a=[],u=-1,s=0,c=t.length;for(e instanceof Date||(e=new Date(+e));++u=s)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=q[i in Hs?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function i(t,n,e){var r=D.exec(n.slice(e));return r?(t.p=E[r[0].toLowerCase()],e+r[0].length):-1}function o(t,n,e){var r=F.exec(n.slice(e));return r?(t.w=H[r[0].toLowerCase()],e+r[0].length):-1}function a(t,n,e){var r=U.exec(n.slice(e));return r?(t.w=P[r[0].toLowerCase()],e+r[0].length):-1}function u(t,n,e){var r=O.exec(n.slice(e));return r?(t.m=j[r[0].toLowerCase()],e+r[0].length):-1}function s(t,n,e){var r=L.exec(n.slice(e));return r?(t.m=Y[r[0].toLowerCase()],e+r[0].length):-1}function c(t,n,e){return r(t,b,n,e)}function l(t,n,e){return r(t,M,n,e)}function h(t,n,e){return r(t,A,n,e)}function f(t){return T[t.getDay()]}function p(t){return N[t.getDay()]}function d(t){return S[t.getMonth()]}function g(t){return C[t.getMonth()]}function _(t){return k[+(t.getHours()>=12)]}function v(t){return T[t.getUTCDay()]}function y(t){return N[t.getUTCDay()]}function m(t){return S[t.getUTCMonth()]}function w(t){return C[t.getUTCMonth()]}function x(t){return k[+(t.getUTCHours()>=12)]}var b=t.dateTime,M=t.date,A=t.time,k=t.periods,N=t.days,T=t.shortDays,C=t.months,S=t.shortMonths,D=qe(k),E=$e(k),U=qe(N),P=$e(N),F=qe(T),H=$e(T),L=qe(C),Y=$e(C),O=qe(S),j=$e(S),z={a:f,A:p,b:d,B:g,c:null,d:ir,e:ir,H:or,I:ar,j:ur,L:sr,m:cr,M:lr,p:_,S:hr,U:fr,w:pr,W:dr,x:null,X:null,y:gr,Y:_r,Z:vr,"%":Ur},I={a:v,A:y,b:m,B:w,c:null,d:yr,e:yr,H:mr,I:wr,j:xr,L:br,m:Mr,M:Ar,p:x,S:kr,U:Nr,w:Tr,W:Cr,x:null,X:null,y:Sr,Y:Dr,Z:Er,"%":Ur},q={a:o,A:a,b:u,B:s,c:c,d:Je,e:Je,H:Ke,I:Ke,j:Qe,L:er,m:Ge,M:tr,p:i,S:nr,U:Be,w:Xe,W:Re,x:l,X:h,y:Ze,Y:We,Z:Ve,"%":rr};return z.x=n(M,z),z.X=n(A,z),z.c=n(b,z),I.x=n(M,I),I.X=n(A,I),I.c=n(b,I),{format:function(t){var e=n(t+="",z);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",Le);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",I);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,Ye);return n.toString=function(){return t},n}}}function ze(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Ve(t,n,e){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Ge(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Je(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Qe(t,n,e){var r=Ls.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Ke(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function tr(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function nr(t,n,e){var r=Ls.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function er(t,n,e){var r=Ls.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function rr(t,n,e){var r=Ys.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function ir(t,n){return ze(t.getDate(),n,2)}function or(t,n){return ze(t.getHours(),n,2)}function ar(t,n){return ze(t.getHours()%12||12,n,2)}function ur(t,n){return ze(1+xs.count(ks(t),t),n,3)}function sr(t,n){return ze(t.getMilliseconds(),n,3)}function cr(t,n){return ze(t.getMonth()+1,n,2)}function lr(t,n){return ze(t.getMinutes(),n,2)}function hr(t,n){return ze(t.getSeconds(),n,2)}function fr(t,n){return ze(bs.count(ks(t),t),n,2)}function pr(t){return t.getDay()}function dr(t,n){return ze(Ms.count(ks(t),t),n,2)}function gr(t,n){return ze(t.getFullYear()%100,n,2)}function _r(t,n){return ze(t.getFullYear()%1e4,n,4)}function vr(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+ze(n/60|0,"0",2)+ze(n%60,"0",2)}function yr(t,n){return ze(t.getUTCDate(),n,2)}function mr(t,n){return ze(t.getUTCHours(),n,2)}function wr(t,n){return ze(t.getUTCHours()%12||12,n,2)}function xr(t,n){return ze(1+Ns.count(Ss(t),t),n,3)}function br(t,n){return ze(t.getUTCMilliseconds(),n,3)}function Mr(t,n){return ze(t.getUTCMonth()+1,n,2)}function Ar(t,n){return ze(t.getUTCMinutes(),n,2)}function kr(t,n){return ze(t.getUTCSeconds(),n,2)}function Nr(t,n){return ze(Ts.count(Ss(t),t),n,2)}function Tr(t){return t.getUTCDay()}function Cr(t,n){return ze(Cs.count(Ss(t),t),n,2)}function Sr(t,n){return ze(t.getUTCFullYear()%100,n,2)}function Dr(t,n){return ze(t.getUTCFullYear()%1e4,n,4)}function Er(){return"+0000"}function Ur(){return"%"}function Pr(t){return t.toISOString()}function Fr(t){var n=new Date(t);return isNaN(n)?null:n}function Hr(t){return new Date(t)}function Lr(t){return t instanceof Date?+t:+new Date(+t)}function Yr(t,n,r,i,o,a,u,s,c){function l(e){return(u(e)n?1:t>=n?0:NaN},ni=function(n){return 1===n.length&&(n=t(n)),{left:function(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[o],e)<0?r=o+1:i=o}return r},right:function(t,e,r,i){for(null==r&&(r=0),null==i&&(i=t.length);r>>1;n(t[o],e)>0?i=o:r=o+1}return r}}},ei=ni(ti).right,ri=Math.sqrt(50),ii=Math.sqrt(10),oi=Math.sqrt(2),ai=function(t,e,r){var i,o,a,u=e0)for(t=Math.ceil(t/a),e=Math.floor(e/a),o=new Array(i=Math.ceil(e-t+1));++s=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r},si=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r},ci=Array.prototype.slice,li=function(t){return t},hi=1,fi=2,pi=3,di=4,gi=1e-6,_i={value:function(){}};h.prototype=l.prototype={constructor:h,on:function(t,n){var e,r=this._,i=f(t+"",r),o=-1,a=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),yi.hasOwnProperty(n)?{space:yi[n],local:t}:t},wi=function(t){var n=mi(t);return(n.local?_:g)(n)},xi=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var bi=document.documentElement;if(!bi.matches){var Mi=bi.webkitMatchesSelector||bi.msMatchesSelector||bi.mozMatchesSelector||bi.oMatchesSelector;xi=function(t){return function(){return Mi.call(this,t)}}}}var Ai=xi,ki={},Ni=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(ki={mouseenter:"mouseover",mouseleave:"mouseout"}));var Ti=function(t,n,e){var r,i,o=m(t+""),a=o.length;{if(!(arguments.length<2)){for(u=n?x:w,null==e&&(e=!1),r=0;r=w&&(w=m+1);!(y=_[w])&&++w=0;)(r=i[o])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},Ii=function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=T);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?F:"function"==typeof n?L:H)(t,n,null==e?"":e)):Y(this.node(),t)},Ji=function(t,n){return arguments.length>1?this.each((null==n?O:"function"==typeof n?z:j)(t,n)):this.node()[t]};$.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Qi=function(t,n){var e=I(t+"");if(arguments.length<2){for(var r=q(this.node()),i=-1,o=e.length;++i=240?t-240:t+120,i,r),bt(t,i,r),bt(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Ao=Math.PI/180,ko=180/Math.PI,No=.95047,To=1,Co=1.08883,So=4/29,Do=6/29,Eo=3*Do*Do,Uo=Do*Do*Do;lo(kt,At,lt(ht,{brighter:function(t){return new kt(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new kt(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=To*Tt(t),n=No*Tt(n),e=Co*Tt(e),new vt(Ct(3.2404542*n-1.5371385*t-.4985314*e),Ct(-.969266*n+1.8760108*t+.041556*e),Ct(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),lo(Ut,Et,lt(ht,{brighter:function(t){return new Ut(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Ut(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Mt(this).rgb()}}));var Po=-.14861,Fo=1.78277,Ho=-.29227,Lo=-.90649,Yo=1.97294,Oo=Yo*Lo,jo=Yo*Fo,zo=Fo*Ho-Lo*Po;lo(Ht,Ft,lt(ht,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ht(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ht(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Ao,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new vt(255*(n+e*(Po*r+Fo*i)),255*(n+e*(Ho*r+Lo*i)),255*(n+e*(Yo*r)),this.opacity)}}));var Io,qo,$o,Xo,Bo=function(t){return function(){return t}},Ro=function t(n){function e(t,n){var e=r((t=_t(t)).r,(n=_t(n)).r),i=r(t.g,n.g),o=r(t.b,n.b),a=zt(t.opacity,n.opacity);return function(n){return t.r=e(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}var r=jt(n);return e.gamma=t,e}(1),Wo=function(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(r),a=new Array(r);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,s.push({i:a,x:Vo(e,r)})),o=Qo.lastIndex;return oAa&&e.state1e-6)if(Math.abs(l*u-s*c)>1e-6&&i){var f=e-o,p=r-a,d=u*u+s*s,g=f*f+p*p,_=Math.sqrt(d),v=Math.sqrt(h),y=i*Math.tan((eu-Math.acos((d+h-g)/(2*_*v)))/2),m=y/v,w=y/_;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*c)+","+(n+m*l)),this._+="A"+i+","+i+",0,0,"+ +(l*f>c*p)+","+(this._x1=t+w*u)+","+(this._y1=n+w*s)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),s=t+a,c=n+u,l=1^o,h=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+s+","+c:(Math.abs(this._x1-s)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+s+","+c),e&&(h<0&&(h=h%ru+ru),h>iu?this._+="A"+e+","+e+",0,1,"+l+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+l+","+(this._x1=s)+","+(this._y1=c):h>1e-6&&(this._+="A"+e+","+e+",0,"+ +(h>=eu)+","+l+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};In.prototype=qn.prototype={constructor:In,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var ou=qn.prototype;$n.prototype=Xn.prototype={constructor:$n,has:ou.has,add:function(t){return t+="",this["$"+t]=t,this},remove:ou.remove,clear:ou.clear,values:ou.keys,size:ou.size,empty:ou.empty,each:ou.each};var au=function(t){function n(t,n){var r,i,o=e(t,function(t,e){if(r)return r(t,e-1);i=t,r=n?Rn(t,n):Bn(t)});return o.columns=i,o}function e(t,n){function e(){if(l>=c)return a;if(i)return i=!1,o;var n,e=l;if(34===t.charCodeAt(e)){for(var r=e;r++t||t>i||r>n||n>o))return this;var a,u,s=i-e,c=this._root;switch(u=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{a=new Array(4),a[u]=c,c=a}while(s*=2,i=e+s,o=r+s,t>i||n>o);break;case 1:do{a=new Array(4),a[u]=c,c=a}while(s*=2,e=i-s,o=r+s,e>t||n>o);break;case 2:do{a=new Array(4),a[u]=c,c=a}while(s*=2,i=e+s,r=o-s,t>i||r>n);break;case 3:do{a=new Array(4),a[u]=c,c=a}while(s*=2,e=i-s,r=o-s,e>t||r>n)}this._root&&this._root.length&&(this._root=c)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},cu=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},lu=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},hu=function(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i},fu=function(t,n,e){var r,i,o,a,u,s,c,l=this._x0,h=this._y0,f=this._x1,p=this._y1,d=[],g=this._root;for(g&&d.push(new hu(g,l,h,f,p)),null==e?e=1/0:(l=t-e,h=n-e,f=t+e,p=n+e,e*=e);s=d.pop();)if(!(!(g=s.node)||(i=s.x0)>f||(o=s.y0)>p||(a=s.x1)=v)<<1|t>=_)&&(s=d[d.length-1],d[d.length-1]=d[d.length-1-c],d[d.length-1-c]=s)}else{var y=t-+this._x.call(null,g.data),m=n-+this._y.call(null,g.data),w=y*y+m*m;if(w=(u=(d+_)/2))?d=u:_=u,(l=a>=(s=(g+v)/2))?g=s:v=s,n=p,!(p=p[h=l<<1|c]))return this;if(!p.length)break;(n[h+1&3]||n[h+2&3]||n[h+3&3])&&(e=n,f=h)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[h]=i:delete n[h],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[f]=p:this._root=p),this):(this._root=i,this)},du=function(){return this._root},gu=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},_u=function(t){var n,e,r,i,o,a,u=[],s=this._root;for(s&&u.push(new hu(s,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(s=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&s.length){var c=(r+o)/2,l=(i+a)/2;(e=s[3])&&u.push(new hu(e,c,l,o,a)),(e=s[2])&&u.push(new hu(e,r,l,c,a)),(e=s[1])&&u.push(new hu(e,c,i,o,l)),(e=s[0])&&u.push(new hu(e,r,i,c,l))}return this},vu=function(t){var n,e=[],r=[];for(this._root&&e.push(new hu(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,s=n.x1,c=n.y1,l=(a+s)/2,h=(u+c)/2;(o=i[0])&&e.push(new hu(o,a,u,l,h)),(o=i[1])&&e.push(new hu(o,l,u,s,h)),(o=i[2])&&e.push(new hu(o,a,h,l,c)),(o=i[3])&&e.push(new hu(o,l,h,s,c))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},yu=function(t){return arguments.length?(this._x=t,this):this._x},mu=function(t){return arguments.length?(this._y=t,this):this._y},wu=Kn.prototype=te.prototype;wu.copy=function(){var t,n,e=new te(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ne(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ne(n));return e},wu.add=uu,wu.addAll=Vn,wu.cover=su,wu.data=cu,wu.extent=lu,wu.find=fu,wu.remove=pu,wu.removeAll=Gn,wu.root=du,wu.size=gu,wu.visit=_u,wu.visitAfter=vu,wu.x=yu,wu.y=mu;var xu,bu=function(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]},Mu=function(t){return t=bu(Math.abs(t)),t?t[1]:NaN},Au=function(t,n){return function(e,r){for(var i=e.length,o=[],a=0,u=t[0],s=0;i>0&&u>0&&(s+u+1>r&&(u=Math.max(1,r-s)),o.push(e.substring(i-=u,i+u)),!((s+=u+1)>r));)u=t[a=(a+1)%t.length];return o.reverse().join(n)}},ku=function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}},Nu=function(t,n){var e=bu(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Tu={"":function(t,n){t:for(var e,r=(t=t.toPrecision(n)).length,i=1,o=-1;i0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Nu(100*t,n)},r:Nu,s:function(t,n){var e=bu(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(xu=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+bu(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Cu=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;ee.prototype=re.prototype,re.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Su,Du,Eu,Uu=function(t){return t},Pu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Fu=function(t){function n(t){function n(t){var n,i,u,l=_,w=v;if("c"===g)w=y(t)+w,t="";else{var x=(t=+t)<0;if(t=y(Math.abs(t),d),x&&0==+t&&(x=!1),l=(x?"("===c?c:"-":"-"===c||"("===c?"":c)+l,w=w+("s"===g?Pu[8+xu/3]:"")+(x&&"("===c?")":""),m)for(n=-1,i=t.length;++n(u=t.charCodeAt(n))||u>57){w=(46===u?o+t.slice(n+1):t.slice(n))+w,t=t.slice(0,n);break}}p&&!h&&(t=r(t,1/0));var b=l.length+t.length+w.length,M=b>1)+l+t+w+M.slice(b);break;default:t=M+l+t+w}return a(t)}var e=(t=ee(t)).fill,s=t.align,c=t.sign,l=t.symbol,h=t.zero,f=t.width,p=t.comma,d=t.precision,g=t.type,_="$"===l?i[0]:"#"===l&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",v="$"===l?i[1]:/[%p]/.test(g)?u:"",y=Tu[g],m=!g||/[defgprs%]/.test(g);return d=null==d?g?6:12:/[gprs]/.test(g)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}function e(t,e){var r=n((t=ee(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Mu(e)/3))),o=Math.pow(10,-i),a=Pu[8+i/3];return function(t){return r(o*t)+a}}var r=t.grouping&&t.thousands?Au(t.grouping,t.thousands):Uu,i=t.currency,o=t.decimal,a=t.numerals?ku(t.numerals):Uu,u=t.percent||"%";return{format:n,formatPrefix:e}};!function(t){Su=Fu(t),Du=Su.format,Eu=Su.formatPrefix}({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Hu=function(t){return Math.max(0,-Mu(Math.abs(t)))},Lu=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Mu(n)/3)))-Mu(Math.abs(t)))},Yu=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Mu(n)-Mu(t))+1},Ou=function(){return new ie};ie.prototype={constructor:ie,reset:function(){this.s=this.t=0},add:function(t){oe(ju,t,this.t),oe(this,ju.s,this.s),this.s?this.t+=ju.t:this.s=ju.t},valueOf:function(){return this.s}};var ju=new ie,zu=Math.PI,Iu=zu/2,qu=zu/180,$u=(Math.abs,Math.atan2),Xu=Math.cos,Bu=Math.sin,Ru=Math.sqrt;Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Ou(),Xu(30*qu);se(function(t){return Ru(2/(1+t))}).invert=ce(function(t){return 2*ue(t/2)}),se(function(t){return(t=ae(t))&&t/Bu(t)}).invert=ce(function(t){return t});var Wu=function(){return this.eachAfter(le)},Zu=function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},Gu=function(t){for(var n,e,r,i=this,o=[i],a=[];i=o.pop();)if(a.push(i),n=i.children)for(e=0,r=n.length;e=0;)e+=r[i].value;n.value=e})},Qu=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},Ku=function(t){for(var n=this,e=he(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ts=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},ns=function(){var t=[];return this.each(function(n){t.push(n)}),t},es=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},rs=function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n};ve.prototype=fe.prototype={constructor:ve,count:Wu,each:Zu,eachAfter:Gu,eachBefore:Vu,sum:Ju,sort:Qu,path:Ku,ancestors:ts,descendants:ns,leaves:es,links:rs,copy:pe};ye.prototype=Object.create(ve.prototype);var is={},os=Array.prototype,as=os.map,us=os.slice,ss=function(t){return function(){return t}},cs=function(t){return+t},ls=[0,1],hs=function(t,n,r){var i,o=t[0],a=t[t.length-1],u=e(o,a,null==n?10:n);switch((r=ee(null==r?",f":r)).type){case"s":var s=Math.max(Math.abs(o),Math.abs(a));return null!=r.precision||isNaN(i=Lu(u,s))||(r.precision=i),Eu(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=Yu(u,Math.max(Math.abs(o),Math.abs(a))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=Hu(u))||(r.precision=i-2*("%"===r.type))}return Du(r)},fs=function(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0?t>1?Pe(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):gs:null};var _s=6e4,vs=6048e5,ys=Pe(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),ms=Pe(function(t){t.setTime(Math.floor(t/_s)*_s)},function(t,n){t.setTime(+t+n*_s)},function(t,n){return(n-t)/_s},function(t){return t.getMinutes()}),ws=Pe(function(t){var n=t.getTimezoneOffset()*_s%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),xs=Pe(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*_s)/864e5},function(t){return t.getDate()-1}),bs=Fe(0),Ms=Fe(1),As=(Fe(2),Fe(3),Fe(4),Fe(5),Fe(6),Pe(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()})),ks=Pe(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});ks.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Pe(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};Pe(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*_s)},function(t,n){return(n-t)/_s},function(t){return t.getUTCMinutes()}),Pe(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()});var Ns=Pe(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Ts=He(0),Cs=He(1),Ss=(He(2),He(3),He(4),He(5),He(6),Pe(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Pe(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()}));Ss.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Pe(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Ds,Es,Us,Ps,Fs,Hs={"-":"",_:" ",0:"0"},Ls=/^\s*\d+/,Ys=/^%/,Os=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;!function(t){Ds=je(t),Es=Ds.format,Us=Ds.parse,Ps=Ds.utcFormat,Fs=Ds.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Date.prototype.toISOString||Ps("%Y-%m-%dT%H:%M:%S.%LZ"),+new Date("2000-01-01T00:00:00.000Z")||Fs("%Y-%m-%dT%H:%M:%S.%LZ");var js=1e3,zs=60*js,Is=60*zs,qs=24*Is,$s=7*qs,Xs=30*qs,Bs=365*qs,Rs=function(){return Yr(ks,As,bs,xs,ws,ms,ys,gs,Es).domain([new Date(2e3,0,1),new Date(2e3,0,2)])},Ws=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})};Ws("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Ws("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),Ws("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),Ws("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),ca(Ft(300,.5,0),Ft(-240,.5,1));ca(Ft(-100,.75,.35),Ft(80,1.5,.8)),ca(Ft(260,.75,.35),Ft(80,1.5,.8)),Ft();var Zs=function(t){return function(){return t}};Or.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Vs=function(t){return new Or(t)},Gs=function(){function t(t){var u,s,c,l=t.length,h=!1;for(null==i&&(a=o(c=zn())),u=0;u<=l;++u)!(u0&&(a=As.offset(a,-1),u=As.offset(u,1));var s=r(n,1),c=i(n,1);return t.scales.x.domain([a,u]).nice(),t.scales.y.domain([s,c]).nice(),t}},{key:"plots",value:function(t,n,e){function r(n,e,r){return{plot:["o-chart__plot","o-chart__plot--"+s.slug(e,"-"),"o-chart__plot--"+s.slug(r,"-")],line:["o-chart__line","stroke-"+s.slug(r,"-")],dots:["o-chart__dot","fill-"+s.slug(r,"-"),"stroke-"+t.colors.background],bar:["o-chart__bar","fill-"+s.slug(r,"-")]}[n].join(" ")}function i(){return n.g.selectAll(".o-chart__plot").remove(),n.plots=n.g.selectAll(".o-chart__plot").data(e).enter().append("g").attr("class",function(){var t=co(this).data()[0];return s.plots.classes("plot",t.label,t.label)}),n.plots.each(function(t){s.plots[t.type](co(this))}),n}function o(n){n.append("path").attr("class",function(t){return s.plots.classes("line","",t.color)}).attr("d",function(n){return t.plots.line(n.data)}),n.selectAll(".o-chart__dot").data(function(t){return t.data}).enter().append("circle").attrs({cx:t.plots.line.x(),cy:t.plots.line.y(),r:tc.DOTS_RADIUS}).attr("class",function(t){var t=co(this.parentNode).data()[0];return s.plots.classes("dots","",t.color)})}function a(n){var r=e.filter(function(t){return"bar"===t.type}),i=n.data()[0],o=Math.max(0,i.data.length),a=t.right/o*tc.BAR_GAP/r.length,u=s.plots.classes("bar","",i.color),c=a*(r.map(function(t){return t.label}).indexOf(i.label)+1)-a*r.length/2;n.selectAll(".o-chart__bar").data(function(t){return i.data}).enter().append("rect").attrs({class:u,width:a,x:function(n){return t.scales.x(s.timeParse(n[0]))-c},y:function(n){return t.scales.y(Math.max(0,n[1]))},height:function(n){return Math.abs(Math.min(t.scales.y(0),t.bottom)-t.scales.y(n[1]))}})}function u(){return s.plots.create()}var s=this;return s.plots.create=i,s.plots.line=o,s.plots.bar=a,s.plots.update=u,s.plots.classes=r,s.plots}},{key:"axis",value:function(t,n){function e(n){return{axis_top:["o-chart__axis","o-chart__axis--x","o-chart__axis--top"],axis_bottom:["o-chart__axis","o-chart__axis--x","o-chart__axis--bottom"],axis_left:["o-chart__axis","o-chart__axis--y","o-chart__axis--left"],axis_right:["o-chart__axis","o-chart__axis--y","o-chart__axis--right"],label_top:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--x","o-chart__label--top"],label_bottom:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--x","o-chart__label--bottom"],label_left:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--y","o-chart__label--left"],label_right:["fill-"+t.colors.labels,"o-chart__label","o-chart__label--y","o-chart__label--right"],ticks:["tick","fill-"+t.colors.axis],line_x:["o-chart__axis-gap--x","stroke-"+t.colors.axis],line_y:["o-chart__axis-gap--y","stroke-"+t.colors.axis]}[n].join(" ")}function r(){return n.axis={},n.axis.x=n.g.append("g").attr("class",s.axis.classes("axis_bottom")),n.axis.y=n.g.append("g").attr("class",s.axis.classes("axis_left")),s.axis.update(),s.axis.modify(),s.axis.labels()}function i(){return n.axis.x.call(t.axis.x).attr("transform",s.translate(0,t.innerHeight)),n.axis.y.call(t.axis.y),n.axis.x.select(".o-chart__axis-gap--x").attrs({x1:0,y1:0,y2:0,x2:t.innerWidth}),n.axis.y.select(".o-chart__axis-gap--y").attrs({x1:0,y1:0,x2:0,y2:t.innerHeight}),n.g.selectAll(".tick").attr("class",s.axis.classes("ticks")),n.g.select(".o-chart__label--x").attr("transform",function(){var n=co(this).select("text"),e=t.left+t.innerWidth/2,r=t.height-n.node().getBBox().height;return s.translate(e,r)}),n.g.select(".o-chart__label--y").attr("transform",function(){var n=0-t.margin[3]+co(this).node().getBBox().height,e=t.innerHeight/2;return[s.translate(n,e),"rotate(-90)"].join(" ")}),n}function o(){return n.axis.x.label=n.g.append("g").attr("class",s.axis.classes("label_bottom")),n.axis.x.label.append("text").attrs({"text-anchor":"middle"}),n.axis.y.label=n.g.append("g").attr("class",s.axis.classes("label_left")),n.axis.y.label.append("text").attrs({"text-anchor":"middle"}),s.axis.text(),n}function a(){n.g.select(".o-chart__label--x").select("text").text(t.labels.axis.x),n.g.select(".o-chart__label--y").select("text").text(t.labels.axis.y),s.axis.update()}function u(){n.axis.x.append("line").attrs({x1:0,y1:0,y2:0,x2:t.innerWidth,class:s.axis.classes("line_x")}),n.axis.x.select(".domain").attr("display","none"),n.axis.y.append("line").attrs({x1:0,y1:0,x2:0,y2:t.innerHeight,class:s.axis.classes("line_y")}),n.axis.y.select(".domain").attr("display","none")}var s=this;return s.axis.create=r,s.axis.update=i,s.axis.labels=o,s.axis.text=a,s.axis.modify=u,s.axis.classes=e,s.axis}}]),t}();return function(){function t(){nc(this,t)}return ec(t,[{key:"charts",value:function(t,n){return new rc(t,n).init()}}]),t}()}(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnljby5kaXN0LmpzIiwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2Jpc2VjdG9yLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy90aWNrcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9heGlzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRpc3BhdGNoL3NyYy9kaXNwYXRjaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NyZWF0b3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rvci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdG9yQWxsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2VudGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2RhdGEuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vc29ydC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hdHRyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3N0eWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3Byb3BlcnR5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2NsYXNzZWQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vdGV4dC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9odG1sLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3JhaXNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2xvd2VyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2luc2VydC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9yZW1vdmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGlzcGF0Y2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2RlZmluZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY29sb3IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL2xhYi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xvci9zcmMvY3ViZWhlbGl4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9jb2xvci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvc3RyaW5nLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vcGFyc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3RyYW5zZm9ybS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvY3ViZWhlbGl4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NjaGVkdWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vdHdlZW4uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9hdHRyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vYXR0clR3ZWVuLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vZGVsYXkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9kdXJhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL2Vhc2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9vbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3JlbW92ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3N0eWxlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vc3R5bGVUd2Vlbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3RleHQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9jdWJpYy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vdHJhbnNpdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1icnVzaC9zcmMvYnJ1c2guanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtcGF0aC9zcmMvcGF0aC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1jb2xsZWN0aW9uL3NyYy9tYXAuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sbGVjdGlvbi9zcmMvc2V0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvZHN2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9hZGQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtcXVhZHRyZWUvc3JjL3JlbW92ZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMveS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvcXVhZHRyZWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRTcGVjaWZpZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hZGRlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL21hdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9wcm9qZWN0aW9uL2F6aW11dGhhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9jb3VudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9wYXRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvdHJlZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWV1ZS9zcmMvcXVldWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbnRpbnVvdXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2xpbmVhci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9pbnRlcnZhbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy93ZWVrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1dlZWsuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2xvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lLWZvcm1hdC9zcmMvaXNvRm9ybWF0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUtZm9ybWF0L3NyYy9pc29QYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGltZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbGluZWFyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9wb2ludC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zaGFwZS9zcmMvY3VydmUvbW9ub3RvbmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL3NyYy9zZWxlY3Rpb24vYXR0cnMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL3NyYy9zZWxlY3Rpb24vc3R5bGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi1tdWx0aS9zcmMvc2VsZWN0aW9uL3Byb3BlcnRpZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL2FzY2VuZGluZy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1hcnJheS9zcmMvYmlzZWN0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWFycmF5L3NyYy9tYXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtYXJyYXkvc3JjL21pbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9hcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1heGlzL3NyYy9pZGVudGl0eS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL25hbWVzcGFjZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9uYW1lc3BhY2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9tYXRjaGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NlbGVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9zZWxlY3RBbGwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZmlsdGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NwYXJzZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL2V4aXQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vbWVyZ2UuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vb3JkZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vY2FsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2Rlcy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9ub2RlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNlbGVjdGlvbi9zcmMvc2VsZWN0aW9uL3NpemUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZW1wdHkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZWFjaC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3dpbmRvdy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zZWxlY3Rpb24vc3JjL3NlbGVjdGlvbi9hcHBlbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3Rpb24vZGF0dW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uL3NyYy9zZWxlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtY29sb3Ivc3JjL21hdGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9yZ2IuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL2FycmF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9kYXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy9udW1iZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL29iamVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1pbnRlcnBvbGF0ZS9zcmMvdmFsdWUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaW50ZXJwb2xhdGUvc3JjL3JvdW5kLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWludGVycG9sYXRlL3NyYy90cmFuc2Zvcm0vZGVjb21wb3NlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWVyL3NyYy90aW1lb3V0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL2ludGVycnVwdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy9zZWxlY3Rpb24vaW50ZXJydXB0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRyYW5zaXRpb24vc3JjL3RyYW5zaXRpb24vaW50ZXJwb2xhdGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9maWx0ZXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvdHJhbnNpdGlvbi9tZXJnZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdEFsbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3NlbGVjdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10cmFuc2l0aW9uL3NyYy90cmFuc2l0aW9uL3RyYW5zaXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZWFzZS9zcmMvcG9seS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1lYXNlL3NyYy9iYWNrLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWVhc2Uvc3JjL2VsYXN0aWMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdHJhbnNpdGlvbi9zcmMvc2VsZWN0aW9uL2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWNob3JkL3NyYy9tYXRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvY3N2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWRzdi9zcmMvdHN2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9jb3Zlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZGF0YS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvZXh0ZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9xdWFkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9maW5kLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9yb290LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy9zaXplLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXF1YWR0cmVlL3NyYy92aXNpdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1xdWFkdHJlZS9zcmMvdmlzaXRBZnRlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdERlY2ltYWwuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRQcmVmaXhBdXRvLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZXhwb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZm9ybWF0L3NyYy9mb3JtYXRHcm91cC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdE51bWVyYWxzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0Um91bmRlZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2Zvcm1hdFR5cGVzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZm9ybWF0RGVmYXVsdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2lkZW50aXR5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvZGVmYXVsdExvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL2xvY2FsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1mb3JtYXQvc3JjL3ByZWNpc2lvbkZpeGVkLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUHJlZml4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWZvcm1hdC9zcmMvcHJlY2lzaW9uUm91bmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtZ2VvL3NyYy9hcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvYm91bmRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcG9seWdvbkNvbnRhaW5zLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvbGVuZ3RoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9hcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcGF0aC9tZWFzdXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9yZXNhbXBsZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1nZW8vc3JjL3Byb2plY3Rpb24vYXppbXV0aGFsRXF1YWxBcmVhLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWdlby9zcmMvcHJvamVjdGlvbi9hemltdXRoYWxFcXVpZGlzdGFudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9lYWNoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2VhY2hCZWZvcmUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvZWFjaEFmdGVyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L3N1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9zb3J0LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLWhpZXJhcmNoeS9zcmMvaGllcmFyY2h5L2FuY2VzdG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9kZXNjZW5kYW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1oaWVyYXJjaHkvc3JjL2hpZXJhcmNoeS9sZWF2ZXMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy9oaWVyYXJjaHkvbGlua3MuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtaGllcmFyY2h5L3NyYy90cmVlbWFwL3NsaWNlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9hcnJheS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY29uc3RhbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL251bWJlci5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvdGlja0Zvcm1hdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvbmljZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9taWxsaXNlY29uZC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9kdXJhdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy10aW1lL3NyYy9zZWNvbmQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvbWludXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL2hvdXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvZGF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL21vbnRoLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3llYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTWludXRlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y0hvdXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjRGF5LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXRpbWUvc3JjL3V0Y1llYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS9zcmMvdXRjTW9udGguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtdGltZS1mb3JtYXQvc3JjL2RlZmF1bHRMb2NhbGUuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NvbG9ycy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY2F0ZWdvcnkxMC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9kMy1zY2FsZS9zcmMvY2F0ZWdvcnkyMGIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL2NhdGVnb3J5MjBjLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jYXRlZ29yeTIwLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNjYWxlL3NyYy9jdWJlaGVsaXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2NhbGUvc3JjL3JhaW5ib3cuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2hhcGUvc3JjL2NvbnN0YW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXNoYXBlL3NyYy9saW5lLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2QzLXZvcm9ub2kvc3JjL0RpYWdyYW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZDMtc2VsZWN0aW9uLW11bHRpL2luZGV4LmpzIiwiLi4vLi4vc3JjL2pzL21vZHVsZXMvby1jaGFydHMuY29uc3RhbnRzLmpzIiwiLi4vLi4vc3JjL2pzL21vZHVsZXMvby1jaGFydHMuanMiLCIuLi8uLi9zcmMvanMvbnljby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNjZW5kaW5nIGZyb20gXCIuL2FzY2VuZGluZ1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmIChjb21wYXJlLmxlbmd0aCA9PT0gMSkgY29tcGFyZSA9IGFzY2VuZGluZ0NvbXBhcmF0b3IoY29tcGFyZSk7XG4gIHJldHVybiB7XG4gICAgbGVmdDogZnVuY3Rpb24oYSwgeCwgbG8sIGhpKSB7XG4gICAgICBpZiAobG8gPT0gbnVsbCkgbG8gPSAwO1xuICAgICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgICB3aGlsZSAobG8gPCBoaSkge1xuICAgICAgICB2YXIgbWlkID0gbG8gKyBoaSA+Pj4gMTtcbiAgICAgICAgaWYgKGNvbXBhcmUoYVttaWRdLCB4KSA8IDApIGxvID0gbWlkICsgMTtcbiAgICAgICAgZWxzZSBoaSA9IG1pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsbztcbiAgICB9LFxuICAgIHJpZ2h0OiBmdW5jdGlvbihhLCB4LCBsbywgaGkpIHtcbiAgICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICAgIHZhciBtaWQgPSBsbyArIGhpID4+PiAxO1xuICAgICAgICBpZiAoY29tcGFyZShhW21pZF0sIHgpID4gMCkgaGkgPSBtaWQ7XG4gICAgICAgIGVsc2UgbG8gPSBtaWQgKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxvO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNjZW5kaW5nQ29tcGFyYXRvcihmKSB7XG4gIHJldHVybiBmdW5jdGlvbihkLCB4KSB7XG4gICAgcmV0dXJuIGFzY2VuZGluZyhmKGQpLCB4KTtcbiAgfTtcbn1cbiIsInZhciBlMTAgPSBNYXRoLnNxcnQoNTApLFxuICAgIGU1ID0gTWF0aC5zcXJ0KDEwKSxcbiAgICBlMiA9IE1hdGguc3FydCgyKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RhcnQsIHN0b3AsIGNvdW50KSB7XG4gIHZhciByZXZlcnNlID0gc3RvcCA8IHN0YXJ0LFxuICAgICAgaSA9IC0xLFxuICAgICAgbixcbiAgICAgIHRpY2tzLFxuICAgICAgc3RlcDtcblxuICBpZiAocmV2ZXJzZSkgbiA9IHN0YXJ0LCBzdGFydCA9IHN0b3AsIHN0b3AgPSBuO1xuXG4gIGlmICgoc3RlcCA9IHRpY2tJbmNyZW1lbnQoc3RhcnQsIHN0b3AsIGNvdW50KSkgPT09IDAgfHwgIWlzRmluaXRlKHN0ZXApKSByZXR1cm4gW107XG5cbiAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgc3RhcnQgPSBNYXRoLmNlaWwoc3RhcnQgLyBzdGVwKTtcbiAgICBzdG9wID0gTWF0aC5mbG9vcihzdG9wIC8gc3RlcCk7XG4gICAgdGlja3MgPSBuZXcgQXJyYXkobiA9IE1hdGguY2VpbChzdG9wIC0gc3RhcnQgKyAxKSk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHRpY2tzW2ldID0gKHN0YXJ0ICsgaSkgKiBzdGVwO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gTWF0aC5mbG9vcihzdGFydCAqIHN0ZXApO1xuICAgIHN0b3AgPSBNYXRoLmNlaWwoc3RvcCAqIHN0ZXApO1xuICAgIHRpY2tzID0gbmV3IEFycmF5KG4gPSBNYXRoLmNlaWwoc3RhcnQgLSBzdG9wICsgMSkpO1xuICAgIHdoaWxlICgrK2kgPCBuKSB0aWNrc1tpXSA9IChzdGFydCAtIGkpIC8gc3RlcDtcbiAgfVxuXG4gIGlmIChyZXZlcnNlKSB0aWNrcy5yZXZlcnNlKCk7XG5cbiAgcmV0dXJuIHRpY2tzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAgPSAoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHBvd2VyID0gTWF0aC5mbG9vcihNYXRoLmxvZyhzdGVwKSAvIE1hdGguTE4xMCksXG4gICAgICBlcnJvciA9IHN0ZXAgLyBNYXRoLnBvdygxMCwgcG93ZXIpO1xuICByZXR1cm4gcG93ZXIgPj0gMFxuICAgICAgPyAoZXJyb3IgPj0gZTEwID8gMTAgOiBlcnJvciA+PSBlNSA/IDUgOiBlcnJvciA+PSBlMiA/IDIgOiAxKSAqIE1hdGgucG93KDEwLCBwb3dlcilcbiAgICAgIDogLU1hdGgucG93KDEwLCAtcG93ZXIpIC8gKGVycm9yID49IGUxMCA/IDEwIDogZXJyb3IgPj0gZTUgPyA1IDogZXJyb3IgPj0gZTIgPyAyIDogMSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aWNrU3RlcChzdGFydCwgc3RvcCwgY291bnQpIHtcbiAgdmFyIHN0ZXAwID0gTWF0aC5hYnMoc3RvcCAtIHN0YXJ0KSAvIE1hdGgubWF4KDAsIGNvdW50KSxcbiAgICAgIHN0ZXAxID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2coc3RlcDApIC8gTWF0aC5MTjEwKSksXG4gICAgICBlcnJvciA9IHN0ZXAwIC8gc3RlcDE7XG4gIGlmIChlcnJvciA+PSBlMTApIHN0ZXAxICo9IDEwO1xuICBlbHNlIGlmIChlcnJvciA+PSBlNSkgc3RlcDEgKj0gNTtcbiAgZWxzZSBpZiAoZXJyb3IgPj0gZTIpIHN0ZXAxICo9IDI7XG4gIHJldHVybiBzdG9wIDwgc3RhcnQgPyAtc3RlcDEgOiBzdGVwMTtcbn1cbiIsImltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHlcIjtcblxudmFyIHRvcCA9IDEsXG4gICAgcmlnaHQgPSAyLFxuICAgIGJvdHRvbSA9IDMsXG4gICAgbGVmdCA9IDQsXG4gICAgZXBzaWxvbiA9IDFlLTY7XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZVgoeCkge1xuICByZXR1cm4gXCJ0cmFuc2xhdGUoXCIgKyAoeCArIDAuNSkgKyBcIiwwKVwiO1xufVxuXG5mdW5jdGlvbiB0cmFuc2xhdGVZKHkpIHtcbiAgcmV0dXJuIFwidHJhbnNsYXRlKDAsXCIgKyAoeSArIDAuNSkgKyBcIilcIjtcbn1cblxuZnVuY3Rpb24gY2VudGVyKHNjYWxlKSB7XG4gIHZhciBvZmZzZXQgPSBNYXRoLm1heCgwLCBzY2FsZS5iYW5kd2lkdGgoKSAtIDEpIC8gMjsgLy8gQWRqdXN0IGZvciAwLjVweCBvZmZzZXQuXG4gIGlmIChzY2FsZS5yb3VuZCgpKSBvZmZzZXQgPSBNYXRoLnJvdW5kKG9mZnNldCk7XG4gIHJldHVybiBmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIHNjYWxlKGQpICsgb2Zmc2V0O1xuICB9O1xufVxuXG5mdW5jdGlvbiBlbnRlcmluZygpIHtcbiAgcmV0dXJuICF0aGlzLl9fYXhpcztcbn1cblxuZnVuY3Rpb24gYXhpcyhvcmllbnQsIHNjYWxlKSB7XG4gIHZhciB0aWNrQXJndW1lbnRzID0gW10sXG4gICAgICB0aWNrVmFsdWVzID0gbnVsbCxcbiAgICAgIHRpY2tGb3JtYXQgPSBudWxsLFxuICAgICAgdGlja1NpemVJbm5lciA9IDYsXG4gICAgICB0aWNrU2l6ZU91dGVyID0gNixcbiAgICAgIHRpY2tQYWRkaW5nID0gMyxcbiAgICAgIGsgPSBvcmllbnQgPT09IHRvcCB8fCBvcmllbnQgPT09IGxlZnQgPyAtMSA6IDEsXG4gICAgICB4ID0gb3JpZW50ID09PSBsZWZ0IHx8IG9yaWVudCA9PT0gcmlnaHQgPyBcInhcIiA6IFwieVwiLFxuICAgICAgdHJhbnNmb3JtID0gb3JpZW50ID09PSB0b3AgfHwgb3JpZW50ID09PSBib3R0b20gPyB0cmFuc2xhdGVYIDogdHJhbnNsYXRlWTtcblxuICBmdW5jdGlvbiBheGlzKGNvbnRleHQpIHtcbiAgICB2YXIgdmFsdWVzID0gdGlja1ZhbHVlcyA9PSBudWxsID8gKHNjYWxlLnRpY2tzID8gc2NhbGUudGlja3MuYXBwbHkoc2NhbGUsIHRpY2tBcmd1bWVudHMpIDogc2NhbGUuZG9tYWluKCkpIDogdGlja1ZhbHVlcyxcbiAgICAgICAgZm9ybWF0ID0gdGlja0Zvcm1hdCA9PSBudWxsID8gKHNjYWxlLnRpY2tGb3JtYXQgPyBzY2FsZS50aWNrRm9ybWF0LmFwcGx5KHNjYWxlLCB0aWNrQXJndW1lbnRzKSA6IGlkZW50aXR5KSA6IHRpY2tGb3JtYXQsXG4gICAgICAgIHNwYWNpbmcgPSBNYXRoLm1heCh0aWNrU2l6ZUlubmVyLCAwKSArIHRpY2tQYWRkaW5nLFxuICAgICAgICByYW5nZSA9IHNjYWxlLnJhbmdlKCksXG4gICAgICAgIHJhbmdlMCA9IHJhbmdlWzBdICsgMC41LFxuICAgICAgICByYW5nZTEgPSByYW5nZVtyYW5nZS5sZW5ndGggLSAxXSArIDAuNSxcbiAgICAgICAgcG9zaXRpb24gPSAoc2NhbGUuYmFuZHdpZHRoID8gY2VudGVyIDogaWRlbnRpdHkpKHNjYWxlLmNvcHkoKSksXG4gICAgICAgIHNlbGVjdGlvbiA9IGNvbnRleHQuc2VsZWN0aW9uID8gY29udGV4dC5zZWxlY3Rpb24oKSA6IGNvbnRleHQsXG4gICAgICAgIHBhdGggPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLmRvbWFpblwiKS5kYXRhKFtudWxsXSksXG4gICAgICAgIHRpY2sgPSBzZWxlY3Rpb24uc2VsZWN0QWxsKFwiLnRpY2tcIikuZGF0YSh2YWx1ZXMsIHNjYWxlKS5vcmRlcigpLFxuICAgICAgICB0aWNrRXhpdCA9IHRpY2suZXhpdCgpLFxuICAgICAgICB0aWNrRW50ZXIgPSB0aWNrLmVudGVyKCkuYXBwZW5kKFwiZ1wiKS5hdHRyKFwiY2xhc3NcIiwgXCJ0aWNrXCIpLFxuICAgICAgICBsaW5lID0gdGljay5zZWxlY3QoXCJsaW5lXCIpLFxuICAgICAgICB0ZXh0ID0gdGljay5zZWxlY3QoXCJ0ZXh0XCIpO1xuXG4gICAgcGF0aCA9IHBhdGgubWVyZ2UocGF0aC5lbnRlcigpLmluc2VydChcInBhdGhcIiwgXCIudGlja1wiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwiZG9tYWluXCIpXG4gICAgICAgIC5hdHRyKFwic3Ryb2tlXCIsIFwiIzAwMFwiKSk7XG5cbiAgICB0aWNrID0gdGljay5tZXJnZSh0aWNrRW50ZXIpO1xuXG4gICAgbGluZSA9IGxpbmUubWVyZ2UodGlja0VudGVyLmFwcGVuZChcImxpbmVcIilcbiAgICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjMDAwXCIpXG4gICAgICAgIC5hdHRyKHggKyBcIjJcIiwgayAqIHRpY2tTaXplSW5uZXIpKTtcblxuICAgIHRleHQgPSB0ZXh0Lm1lcmdlKHRpY2tFbnRlci5hcHBlbmQoXCJ0ZXh0XCIpXG4gICAgICAgIC5hdHRyKFwiZmlsbFwiLCBcIiMwMDBcIilcbiAgICAgICAgLmF0dHIoeCwgayAqIHNwYWNpbmcpXG4gICAgICAgIC5hdHRyKFwiZHlcIiwgb3JpZW50ID09PSB0b3AgPyBcIjBlbVwiIDogb3JpZW50ID09PSBib3R0b20gPyBcIjAuNzFlbVwiIDogXCIwLjMyZW1cIikpO1xuXG4gICAgaWYgKGNvbnRleHQgIT09IHNlbGVjdGlvbikge1xuICAgICAgcGF0aCA9IHBhdGgudHJhbnNpdGlvbihjb250ZXh0KTtcbiAgICAgIHRpY2sgPSB0aWNrLnRyYW5zaXRpb24oY29udGV4dCk7XG4gICAgICBsaW5lID0gbGluZS50cmFuc2l0aW9uKGNvbnRleHQpO1xuICAgICAgdGV4dCA9IHRleHQudHJhbnNpdGlvbihjb250ZXh0KTtcblxuICAgICAgdGlja0V4aXQgPSB0aWNrRXhpdC50cmFuc2l0aW9uKGNvbnRleHQpXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gaXNGaW5pdGUoZCA9IHBvc2l0aW9uKGQpKSA/IHRyYW5zZm9ybShkKSA6IHRoaXMuZ2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIpOyB9KTtcblxuICAgICAgdGlja0VudGVyXG4gICAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIGVwc2lsb24pXG4gICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgZnVuY3Rpb24oZCkgeyB2YXIgcCA9IHRoaXMucGFyZW50Tm9kZS5fX2F4aXM7IHJldHVybiB0cmFuc2Zvcm0ocCAmJiBpc0Zpbml0ZShwID0gcChkKSkgPyBwIDogcG9zaXRpb24oZCkpOyB9KTtcbiAgICB9XG5cbiAgICB0aWNrRXhpdC5yZW1vdmUoKTtcblxuICAgIHBhdGhcbiAgICAgICAgLmF0dHIoXCJkXCIsIG9yaWVudCA9PT0gbGVmdCB8fCBvcmllbnQgPT0gcmlnaHRcbiAgICAgICAgICAgID8gXCJNXCIgKyBrICogdGlja1NpemVPdXRlciArIFwiLFwiICsgcmFuZ2UwICsgXCJIMC41VlwiICsgcmFuZ2UxICsgXCJIXCIgKyBrICogdGlja1NpemVPdXRlclxuICAgICAgICAgICAgOiBcIk1cIiArIHJhbmdlMCArIFwiLFwiICsgayAqIHRpY2tTaXplT3V0ZXIgKyBcIlYwLjVIXCIgKyByYW5nZTEgKyBcIlZcIiArIGsgKiB0aWNrU2l6ZU91dGVyKTtcblxuICAgIHRpY2tcbiAgICAgICAgLmF0dHIoXCJvcGFjaXR5XCIsIDEpXG4gICAgICAgIC5hdHRyKFwidHJhbnNmb3JtXCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHRyYW5zZm9ybShwb3NpdGlvbihkKSk7IH0pO1xuXG4gICAgbGluZVxuICAgICAgICAuYXR0cih4ICsgXCIyXCIsIGsgKiB0aWNrU2l6ZUlubmVyKTtcblxuICAgIHRleHRcbiAgICAgICAgLmF0dHIoeCwgayAqIHNwYWNpbmcpXG4gICAgICAgIC50ZXh0KGZvcm1hdCk7XG5cbiAgICBzZWxlY3Rpb24uZmlsdGVyKGVudGVyaW5nKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCJub25lXCIpXG4gICAgICAgIC5hdHRyKFwiZm9udC1zaXplXCIsIDEwKVxuICAgICAgICAuYXR0cihcImZvbnQtZmFtaWx5XCIsIFwic2Fucy1zZXJpZlwiKVxuICAgICAgICAuYXR0cihcInRleHQtYW5jaG9yXCIsIG9yaWVudCA9PT0gcmlnaHQgPyBcInN0YXJ0XCIgOiBvcmllbnQgPT09IGxlZnQgPyBcImVuZFwiIDogXCJtaWRkbGVcIik7XG5cbiAgICBzZWxlY3Rpb25cbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7IHRoaXMuX19heGlzID0gcG9zaXRpb247IH0pO1xuICB9XG5cbiAgYXhpcy5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzY2FsZSA9IF8sIGF4aXMpIDogc2NhbGU7XG4gIH07XG5cbiAgYXhpcy50aWNrcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aWNrQXJndW1lbnRzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpLCBheGlzO1xuICB9O1xuXG4gIGF4aXMudGlja0FyZ3VtZW50cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrQXJndW1lbnRzID0gXyA9PSBudWxsID8gW10gOiBzbGljZS5jYWxsKF8pLCBheGlzKSA6IHRpY2tBcmd1bWVudHMuc2xpY2UoKTtcbiAgfTtcblxuICBheGlzLnRpY2tWYWx1ZXMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1ZhbHVlcyA9IF8gPT0gbnVsbCA/IG51bGwgOiBzbGljZS5jYWxsKF8pLCBheGlzKSA6IHRpY2tWYWx1ZXMgJiYgdGlja1ZhbHVlcy5zbGljZSgpO1xuICB9O1xuXG4gIGF4aXMudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrRm9ybWF0ID0gXywgYXhpcykgOiB0aWNrRm9ybWF0O1xuICB9O1xuXG4gIGF4aXMudGlja1NpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1NpemVJbm5lciA9IHRpY2tTaXplT3V0ZXIgPSArXywgYXhpcykgOiB0aWNrU2l6ZUlubmVyO1xuICB9O1xuXG4gIGF4aXMudGlja1NpemVJbm5lciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrU2l6ZUlubmVyID0gK18sIGF4aXMpIDogdGlja1NpemVJbm5lcjtcbiAgfTtcblxuICBheGlzLnRpY2tTaXplT3V0ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGlja1NpemVPdXRlciA9ICtfLCBheGlzKSA6IHRpY2tTaXplT3V0ZXI7XG4gIH07XG5cbiAgYXhpcy50aWNrUGFkZGluZyA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aWNrUGFkZGluZyA9ICtfLCBheGlzKSA6IHRpY2tQYWRkaW5nO1xuICB9O1xuXG4gIHJldHVybiBheGlzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc1RvcChzY2FsZSkge1xuICByZXR1cm4gYXhpcyh0b3AsIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNSaWdodChzY2FsZSkge1xuICByZXR1cm4gYXhpcyhyaWdodCwgc2NhbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpc0JvdHRvbShzY2FsZSkge1xuICByZXR1cm4gYXhpcyhib3R0b20sIHNjYWxlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aXNMZWZ0KHNjYWxlKSB7XG4gIHJldHVybiBheGlzKGxlZnQsIHNjYWxlKTtcbn1cbiIsInZhciBub29wID0ge3ZhbHVlOiBmdW5jdGlvbigpIHt9fTtcblxuZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gYXJndW1lbnRzLmxlbmd0aCwgXyA9IHt9LCB0OyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEodCA9IGFyZ3VtZW50c1tpXSArIFwiXCIpIHx8ICh0IGluIF8pKSB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIHR5cGU6IFwiICsgdCk7XG4gICAgX1t0XSA9IFtdO1xuICB9XG4gIHJldHVybiBuZXcgRGlzcGF0Y2goXyk7XG59XG5cbmZ1bmN0aW9uIERpc3BhdGNoKF8pIHtcbiAgdGhpcy5fID0gXztcbn1cblxuZnVuY3Rpb24gcGFyc2VUeXBlbmFtZXModHlwZW5hbWVzLCB0eXBlcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgaWYgKHQgJiYgIXR5cGVzLmhhc093blByb3BlcnR5KHQpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHR5cGU6IFwiICsgdCk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbkRpc3BhdGNoLnByb3RvdHlwZSA9IGRpc3BhdGNoLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IERpc3BhdGNoLFxuICBvbjogZnVuY3Rpb24odHlwZW5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF8gPSB0aGlzLl8sXG4gICAgICAgIFQgPSBwYXJzZVR5cGVuYW1lcyh0eXBlbmFtZSArIFwiXCIsIF8pLFxuICAgICAgICB0LFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSBULmxlbmd0aDtcblxuICAgIC8vIElmIG5vIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgY2FsbGJhY2sgb2YgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICB3aGlsZSAoKytpIDwgbikgaWYgKCh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgJiYgKHQgPSBnZXQoX1t0XSwgdHlwZW5hbWUubmFtZSkpKSByZXR1cm4gdDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBhIHR5cGUgd2FzIHNwZWNpZmllZCwgc2V0IHRoZSBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIHR5cGUgYW5kIG5hbWUuXG4gICAgLy8gT3RoZXJ3aXNlLCBpZiBhIG51bGwgY2FsbGJhY2sgd2FzIHNwZWNpZmllZCwgcmVtb3ZlIGNhbGxiYWNrcyBvZiB0aGUgZ2l2ZW4gbmFtZS5cbiAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCAmJiB0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFjazogXCIgKyBjYWxsYmFjayk7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICh0ID0gKHR5cGVuYW1lID0gVFtpXSkudHlwZSkgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBjYWxsYmFjayk7XG4gICAgICBlbHNlIGlmIChjYWxsYmFjayA9PSBudWxsKSBmb3IgKHQgaW4gXykgX1t0XSA9IHNldChfW3RdLCB0eXBlbmFtZS5uYW1lLCBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgY29weTogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvcHkgPSB7fSwgXyA9IHRoaXMuXztcbiAgICBmb3IgKHZhciB0IGluIF8pIGNvcHlbdF0gPSBfW3RdLnNsaWNlKCk7XG4gICAgcmV0dXJuIG5ldyBEaXNwYXRjaChjb3B5KTtcbiAgfSxcbiAgY2FsbDogZnVuY3Rpb24odHlwZSwgdGhhdCkge1xuICAgIGlmICgobiA9IGFyZ3VtZW50cy5sZW5ndGggLSAyKSA+IDApIGZvciAodmFyIGFyZ3MgPSBuZXcgQXJyYXkobiksIGkgPSAwLCBuLCB0OyBpIDwgbjsgKytpKSBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodCA9IHRoaXMuX1t0eXBlXSwgaSA9IDAsIG4gPSB0Lmxlbmd0aDsgaSA8IG47ICsraSkgdFtpXS52YWx1ZS5hcHBseSh0aGF0LCBhcmdzKTtcbiAgfSxcbiAgYXBwbHk6IGZ1bmN0aW9uKHR5cGUsIHRoYXQsIGFyZ3MpIHtcbiAgICBpZiAoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biB0eXBlOiBcIiArIHR5cGUpO1xuICAgIGZvciAodmFyIHQgPSB0aGlzLl9bdHlwZV0sIGkgPSAwLCBuID0gdC5sZW5ndGg7IGkgPCBuOyArK2kpIHRbaV0udmFsdWUuYXBwbHkodGhhdCwgYXJncyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGdldCh0eXBlLCBuYW1lKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGgsIGM7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoKGMgPSB0eXBlW2ldKS5uYW1lID09PSBuYW1lKSB7XG4gICAgICByZXR1cm4gYy52YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2V0KHR5cGUsIG5hbWUsIGNhbGxiYWNrKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAodHlwZVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICB0eXBlW2ldID0gbm9vcCwgdHlwZSA9IHR5cGUuc2xpY2UoMCwgaSkuY29uY2F0KHR5cGUuc2xpY2UoaSArIDEpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgdHlwZS5wdXNoKHtuYW1lOiBuYW1lLCB2YWx1ZTogY2FsbGJhY2t9KTtcbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpc3BhdGNoO1xuIiwiaW1wb3J0IG5hbWVzcGFjZSBmcm9tIFwiLi9uYW1lc3BhY2VcIjtcbmltcG9ydCB7eGh0bWx9IGZyb20gXCIuL25hbWVzcGFjZXNcIjtcblxuZnVuY3Rpb24gY3JlYXRvckluaGVyaXQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGRvY3VtZW50ID0gdGhpcy5vd25lckRvY3VtZW50LFxuICAgICAgICB1cmkgPSB0aGlzLm5hbWVzcGFjZVVSSTtcbiAgICByZXR1cm4gdXJpID09PSB4aHRtbCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJID09PSB4aHRtbFxuICAgICAgICA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSlcbiAgICAgICAgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlModXJpLCBuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRvckZpeGVkKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBmdWxsbmFtZSA9IG5hbWVzcGFjZShuYW1lKTtcbiAgcmV0dXJuIChmdWxsbmFtZS5sb2NhbFxuICAgICAgPyBjcmVhdG9yRml4ZWRcbiAgICAgIDogY3JlYXRvckluaGVyaXQpKGZ1bGxuYW1lKTtcbn1cbiIsInZhciBmaWx0ZXJFdmVudHMgPSB7fTtcblxuZXhwb3J0IHZhciBldmVudCA9IG51bGw7XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGlmICghKFwib25tb3VzZWVudGVyXCIgaW4gZWxlbWVudCkpIHtcbiAgICBmaWx0ZXJFdmVudHMgPSB7bW91c2VlbnRlcjogXCJtb3VzZW92ZXJcIiwgbW91c2VsZWF2ZTogXCJtb3VzZW91dFwifTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJDb250ZXh0TGlzdGVuZXIobGlzdGVuZXIsIGluZGV4LCBncm91cCkge1xuICBsaXN0ZW5lciA9IGNvbnRleHRMaXN0ZW5lcihsaXN0ZW5lciwgaW5kZXgsIGdyb3VwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgdmFyIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0O1xuICAgIGlmICghcmVsYXRlZCB8fCAocmVsYXRlZCAhPT0gdGhpcyAmJiAhKHJlbGF0ZWQuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykgJiA4KSkpIHtcbiAgICAgIGxpc3RlbmVyLmNhbGwodGhpcywgZXZlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udGV4dExpc3RlbmVyKGxpc3RlbmVyLCBpbmRleCwgZ3JvdXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGV2ZW50MSkge1xuICAgIHZhciBldmVudDAgPSBldmVudDsgLy8gRXZlbnRzIGNhbiBiZSByZWVudHJhbnQgKGUuZy4sIGZvY3VzKS5cbiAgICBldmVudCA9IGV2ZW50MTtcbiAgICB0cnkge1xuICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCB0aGlzLl9fZGF0YV9fLCBpbmRleCwgZ3JvdXApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBldmVudCA9IGV2ZW50MDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHBhcnNlVHlwZW5hbWVzKHR5cGVuYW1lcykge1xuICByZXR1cm4gdHlwZW5hbWVzLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykubWFwKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgbmFtZSA9IFwiXCIsIGkgPSB0LmluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChpID49IDApIG5hbWUgPSB0LnNsaWNlKGkgKyAxKSwgdCA9IHQuc2xpY2UoMCwgaSk7XG4gICAgcmV0dXJuIHt0eXBlOiB0LCBuYW1lOiBuYW1lfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG9uUmVtb3ZlKHR5cGVuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgb24gPSB0aGlzLl9fb247XG4gICAgaWYgKCFvbikgcmV0dXJuO1xuICAgIGZvciAodmFyIGogPSAwLCBpID0gLTEsIG0gPSBvbi5sZW5ndGgsIG87IGogPCBtOyArK2opIHtcbiAgICAgIGlmIChvID0gb25bal0sICghdHlwZW5hbWUudHlwZSB8fCBvLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUpICYmIG8ubmFtZSA9PT0gdHlwZW5hbWUubmFtZSkge1xuICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLCBvLmxpc3RlbmVyLCBvLmNhcHR1cmUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25bKytpXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIGlmICgrK2kpIG9uLmxlbmd0aCA9IGk7XG4gICAgZWxzZSBkZWxldGUgdGhpcy5fX29uO1xuICB9O1xufVxuXG5mdW5jdGlvbiBvbkFkZCh0eXBlbmFtZSwgdmFsdWUsIGNhcHR1cmUpIHtcbiAgdmFyIHdyYXAgPSBmaWx0ZXJFdmVudHMuaGFzT3duUHJvcGVydHkodHlwZW5hbWUudHlwZSkgPyBmaWx0ZXJDb250ZXh0TGlzdGVuZXIgOiBjb250ZXh0TGlzdGVuZXI7XG4gIHJldHVybiBmdW5jdGlvbihkLCBpLCBncm91cCkge1xuICAgIHZhciBvbiA9IHRoaXMuX19vbiwgbywgbGlzdGVuZXIgPSB3cmFwKHZhbHVlLCBpLCBncm91cCk7XG4gICAgaWYgKG9uKSBmb3IgKHZhciBqID0gMCwgbSA9IG9uLmxlbmd0aDsgaiA8IG07ICsraikge1xuICAgICAgaWYgKChvID0gb25bal0pLnR5cGUgPT09IHR5cGVuYW1lLnR5cGUgJiYgby5uYW1lID09PSB0eXBlbmFtZS5uYW1lKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIsIG8uY2FwdHVyZSk7XG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihvLnR5cGUsIG8ubGlzdGVuZXIgPSBsaXN0ZW5lciwgby5jYXB0dXJlID0gY2FwdHVyZSk7XG4gICAgICAgIG8udmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIodHlwZW5hbWUudHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgIG8gPSB7dHlwZTogdHlwZW5hbWUudHlwZSwgbmFtZTogdHlwZW5hbWUubmFtZSwgdmFsdWU6IHZhbHVlLCBsaXN0ZW5lcjogbGlzdGVuZXIsIGNhcHR1cmU6IGNhcHR1cmV9O1xuICAgIGlmICghb24pIHRoaXMuX19vbiA9IFtvXTtcbiAgICBlbHNlIG9uLnB1c2gobyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHR5cGVuYW1lLCB2YWx1ZSwgY2FwdHVyZSkge1xuICB2YXIgdHlwZW5hbWVzID0gcGFyc2VUeXBlbmFtZXModHlwZW5hbWUgKyBcIlwiKSwgaSwgbiA9IHR5cGVuYW1lcy5sZW5ndGgsIHQ7XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdmFyIG9uID0gdGhpcy5ub2RlKCkuX19vbjtcbiAgICBpZiAob24pIGZvciAodmFyIGogPSAwLCBtID0gb24ubGVuZ3RoLCBvOyBqIDwgbTsgKytqKSB7XG4gICAgICBmb3IgKGkgPSAwLCBvID0gb25bal07IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKCh0ID0gdHlwZW5hbWVzW2ldKS50eXBlID09PSBvLnR5cGUgJiYgdC5uYW1lID09PSBvLm5hbWUpIHtcbiAgICAgICAgICByZXR1cm4gby52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBvbiA9IHZhbHVlID8gb25BZGQgOiBvblJlbW92ZTtcbiAgaWYgKGNhcHR1cmUgPT0gbnVsbCkgY2FwdHVyZSA9IGZhbHNlO1xuICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB0aGlzLmVhY2gob24odHlwZW5hbWVzW2ldLCB2YWx1ZSwgY2FwdHVyZSkpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbUV2ZW50KGV2ZW50MSwgbGlzdGVuZXIsIHRoYXQsIGFyZ3MpIHtcbiAgdmFyIGV2ZW50MCA9IGV2ZW50O1xuICBldmVudDEuc291cmNlRXZlbnQgPSBldmVudDtcbiAgZXZlbnQgPSBldmVudDE7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9IGZpbmFsbHkge1xuICAgIGV2ZW50ID0gZXZlbnQwO1xuICB9XG59XG4iLCJmdW5jdGlvbiBub25lKCkge31cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHNlbGVjdG9yID09IG51bGwgPyBub25lIDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gIH07XG59XG4iLCJmdW5jdGlvbiBlbXB0eSgpIHtcbiAgcmV0dXJuIFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3Rvcikge1xuICByZXR1cm4gc2VsZWN0b3IgPT0gbnVsbCA/IGVtcHR5IDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gIH07XG59XG4iLCJpbXBvcnQgc3BhcnNlIGZyb20gXCIuL3NwYXJzZVwiO1xuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9lbnRlciB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRW50ZXJOb2RlKHBhcmVudCwgZGF0dW0pIHtcbiAgdGhpcy5vd25lckRvY3VtZW50ID0gcGFyZW50Lm93bmVyRG9jdW1lbnQ7XG4gIHRoaXMubmFtZXNwYWNlVVJJID0gcGFyZW50Lm5hbWVzcGFjZVVSSTtcbiAgdGhpcy5fbmV4dCA9IG51bGw7XG4gIHRoaXMuX3BhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5fX2RhdGFfXyA9IGRhdHVtO1xufVxuXG5FbnRlck5vZGUucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogRW50ZXJOb2RlLFxuICBhcHBlbmRDaGlsZDogZnVuY3Rpb24oY2hpbGQpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoY2hpbGQsIHRoaXMuX25leHQpOyB9LFxuICBpbnNlcnRCZWZvcmU6IGZ1bmN0aW9uKGNoaWxkLCBuZXh0KSB7IHJldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGNoaWxkLCBuZXh0KTsgfSxcbiAgcXVlcnlTZWxlY3RvcjogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsgfSxcbiAgcXVlcnlTZWxlY3RvckFsbDogZnVuY3Rpb24oc2VsZWN0b3IpIHsgcmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsgfVxufTtcbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHtFbnRlck5vZGV9IGZyb20gXCIuL2VudGVyXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4uL2NvbnN0YW50XCI7XG5cbnZhciBrZXlQcmVmaXggPSBcIiRcIjsgLy8gUHJvdGVjdCBhZ2FpbnN0IGtleXMgbGlrZSDigJxfX3Byb3RvX1/igJ0uXG5cbmZ1bmN0aW9uIGJpbmRJbmRleChwYXJlbnQsIGdyb3VwLCBlbnRlciwgdXBkYXRlLCBleGl0LCBkYXRhKSB7XG4gIHZhciBpID0gMCxcbiAgICAgIG5vZGUsXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aDtcblxuICAvLyBQdXQgYW55IG5vbi1udWxsIG5vZGVzIHRoYXQgZml0IGludG8gdXBkYXRlLlxuICAvLyBQdXQgYW55IG51bGwgbm9kZXMgaW50byBlbnRlci5cbiAgLy8gUHV0IGFueSByZW1haW5pbmcgZGF0YSBpbnRvIGVudGVyLlxuICBmb3IgKDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUHV0IGFueSBub24tbnVsbCBub2RlcyB0aGF0IGRvbuKAmXQgZml0IGludG8gZXhpdC5cbiAgZm9yICg7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGJpbmRLZXkocGFyZW50LCBncm91cCwgZW50ZXIsIHVwZGF0ZSwgZXhpdCwgZGF0YSwga2V5KSB7XG4gIHZhciBpLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVCeUtleVZhbHVlID0ge30sXG4gICAgICBncm91cExlbmd0aCA9IGdyb3VwLmxlbmd0aCxcbiAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGtleVZhbHVlcyA9IG5ldyBBcnJheShncm91cExlbmd0aCksXG4gICAgICBrZXlWYWx1ZTtcblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggbm9kZS5cbiAgLy8gSWYgbXVsdGlwbGUgbm9kZXMgaGF2ZSB0aGUgc2FtZSBrZXksIHRoZSBkdXBsaWNhdGVzIGFyZSBhZGRlZCB0byBleGl0LlxuICBmb3IgKGkgPSAwOyBpIDwgZ3JvdXBMZW5ndGg7ICsraSkge1xuICAgIGlmIChub2RlID0gZ3JvdXBbaV0pIHtcbiAgICAgIGtleVZhbHVlc1tpXSA9IGtleVZhbHVlID0ga2V5UHJlZml4ICsga2V5LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApO1xuICAgICAgaWYgKGtleVZhbHVlIGluIG5vZGVCeUtleVZhbHVlKSB7XG4gICAgICAgIGV4aXRbaV0gPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZUJ5S2V5VmFsdWVba2V5VmFsdWVdID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDb21wdXRlIHRoZSBrZXkgZm9yIGVhY2ggZGF0dW0uXG4gIC8vIElmIHRoZXJlIGEgbm9kZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBrZXksIGpvaW4gYW5kIGFkZCBpdCB0byB1cGRhdGUuXG4gIC8vIElmIHRoZXJlIGlzIG5vdCAob3IgdGhlIGtleSBpcyBhIGR1cGxpY2F0ZSksIGFkZCBpdCB0byBlbnRlci5cbiAgZm9yIChpID0gMDsgaSA8IGRhdGFMZW5ndGg7ICsraSkge1xuICAgIGtleVZhbHVlID0ga2V5UHJlZml4ICsga2V5LmNhbGwocGFyZW50LCBkYXRhW2ldLCBpLCBkYXRhKTtcbiAgICBpZiAobm9kZSA9IG5vZGVCeUtleVZhbHVlW2tleVZhbHVlXSkge1xuICAgICAgdXBkYXRlW2ldID0gbm9kZTtcbiAgICAgIG5vZGUuX19kYXRhX18gPSBkYXRhW2ldO1xuICAgICAgbm9kZUJ5S2V5VmFsdWVba2V5VmFsdWVdID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW50ZXJbaV0gPSBuZXcgRW50ZXJOb2RlKHBhcmVudCwgZGF0YVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQWRkIGFueSByZW1haW5pbmcgbm9kZXMgdGhhdCB3ZXJlIG5vdCBib3VuZCB0byBkYXRhIHRvIGV4aXQuXG4gIGZvciAoaSA9IDA7IGkgPCBncm91cExlbmd0aDsgKytpKSB7XG4gICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChub2RlQnlLZXlWYWx1ZVtrZXlWYWx1ZXNbaV1dID09PSBub2RlKSkge1xuICAgICAgZXhpdFtpXSA9IG5vZGU7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIGRhdGEgPSBuZXcgQXJyYXkodGhpcy5zaXplKCkpLCBqID0gLTE7XG4gICAgdGhpcy5lYWNoKGZ1bmN0aW9uKGQpIHsgZGF0YVsrK2pdID0gZDsgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgYmluZCA9IGtleSA/IGJpbmRLZXkgOiBiaW5kSW5kZXgsXG4gICAgICBwYXJlbnRzID0gdGhpcy5fcGFyZW50cyxcbiAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHZhbHVlID0gY29uc3RhbnQodmFsdWUpO1xuXG4gIGZvciAodmFyIG0gPSBncm91cHMubGVuZ3RoLCB1cGRhdGUgPSBuZXcgQXJyYXkobSksIGVudGVyID0gbmV3IEFycmF5KG0pLCBleGl0ID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIHZhciBwYXJlbnQgPSBwYXJlbnRzW2pdLFxuICAgICAgICBncm91cCA9IGdyb3Vwc1tqXSxcbiAgICAgICAgZ3JvdXBMZW5ndGggPSBncm91cC5sZW5ndGgsXG4gICAgICAgIGRhdGEgPSB2YWx1ZS5jYWxsKHBhcmVudCwgcGFyZW50ICYmIHBhcmVudC5fX2RhdGFfXywgaiwgcGFyZW50cyksXG4gICAgICAgIGRhdGFMZW5ndGggPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZW50ZXJHcm91cCA9IGVudGVyW2pdID0gbmV3IEFycmF5KGRhdGFMZW5ndGgpLFxuICAgICAgICB1cGRhdGVHcm91cCA9IHVwZGF0ZVtqXSA9IG5ldyBBcnJheShkYXRhTGVuZ3RoKSxcbiAgICAgICAgZXhpdEdyb3VwID0gZXhpdFtqXSA9IG5ldyBBcnJheShncm91cExlbmd0aCk7XG5cbiAgICBiaW5kKHBhcmVudCwgZ3JvdXAsIGVudGVyR3JvdXAsIHVwZGF0ZUdyb3VwLCBleGl0R3JvdXAsIGRhdGEsIGtleSk7XG5cbiAgICAvLyBOb3cgY29ubmVjdCB0aGUgZW50ZXIgbm9kZXMgdG8gdGhlaXIgZm9sbG93aW5nIHVwZGF0ZSBub2RlLCBzdWNoIHRoYXRcbiAgICAvLyBhcHBlbmRDaGlsZCBjYW4gaW5zZXJ0IHRoZSBtYXRlcmlhbGl6ZWQgZW50ZXIgbm9kZSBiZWZvcmUgdGhpcyBub2RlLFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQgb2YgdGhlIHBhcmVudCBub2RlLlxuICAgIGZvciAodmFyIGkwID0gMCwgaTEgPSAwLCBwcmV2aW91cywgbmV4dDsgaTAgPCBkYXRhTGVuZ3RoOyArK2kwKSB7XG4gICAgICBpZiAocHJldmlvdXMgPSBlbnRlckdyb3VwW2kwXSkge1xuICAgICAgICBpZiAoaTAgPj0gaTEpIGkxID0gaTAgKyAxO1xuICAgICAgICB3aGlsZSAoIShuZXh0ID0gdXBkYXRlR3JvdXBbaTFdKSAmJiArK2kxIDwgZGF0YUxlbmd0aCk7XG4gICAgICAgIHByZXZpb3VzLl9uZXh0ID0gbmV4dCB8fCBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZSA9IG5ldyBTZWxlY3Rpb24odXBkYXRlLCBwYXJlbnRzKTtcbiAgdXBkYXRlLl9lbnRlciA9IGVudGVyO1xuICB1cGRhdGUuX2V4aXQgPSBleGl0O1xuICByZXR1cm4gdXBkYXRlO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgaWYgKCFjb21wYXJlKSBjb21wYXJlID0gYXNjZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGNvbXBhcmVOb2RlKGEsIGIpIHtcbiAgICByZXR1cm4gYSAmJiBiID8gY29tcGFyZShhLl9fZGF0YV9fLCBiLl9fZGF0YV9fKSA6ICFhIC0gIWI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzb3J0Z3JvdXBzID0gbmV3IEFycmF5KG0pLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBzb3J0Z3JvdXAgPSBzb3J0Z3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzb3J0Z3JvdXBbaV0gPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0Z3JvdXAuc29ydChjb21wYXJlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFNlbGVjdGlvbihzb3J0Z3JvdXBzLCB0aGlzLl9wYXJlbnRzKS5vcmRlcigpO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59XG4iLCJpbXBvcnQgbmFtZXNwYWNlIGZyb20gXCIuLi9uYW1lc3BhY2VcIjtcblxuZnVuY3Rpb24gYXR0clJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0clJlbW92ZU5TKGZ1bGxuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJDb25zdGFudChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnROUyhmdWxsbmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2YWx1ZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIGVsc2UgdGhpcy5zZXRBdHRyaWJ1dGUobmFtZSwgdik7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJGdW5jdGlvbk5TKGZ1bGxuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICBlbHNlIHRoaXMuc2V0QXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsLCB2KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgcmV0dXJuIGZ1bGxuYW1lLmxvY2FsXG4gICAgICAgID8gbm9kZS5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpXG4gICAgICAgIDogbm9kZS5nZXRBdHRyaWJ1dGUoZnVsbG5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodmFsdWUgPT0gbnVsbFxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyUmVtb3ZlTlMgOiBhdHRyUmVtb3ZlKSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyAoZnVsbG5hbWUubG9jYWwgPyBhdHRyRnVuY3Rpb25OUyA6IGF0dHJGdW5jdGlvbilcbiAgICAgIDogKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckNvbnN0YW50TlMgOiBhdHRyQ29uc3RhbnQpKSkoZnVsbG5hbWUsIHZhbHVlKSk7XG59XG4iLCJpbXBvcnQgZGVmYXVsdFZpZXcgZnJvbSBcIi4uL3dpbmRvd1wiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUNvbnN0YW50KG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSk7XG4gICAgZWxzZSB0aGlzLnN0eWxlLnNldFByb3BlcnR5KG5hbWUsIHYsIHByaW9yaXR5KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICAgID8gc3R5bGVSZW1vdmUgOiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgICAgPyBzdHlsZUZ1bmN0aW9uXG4gICAgICAgICAgICA6IHN0eWxlQ29uc3RhbnQpKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSlcbiAgICAgIDogc3R5bGVWYWx1ZSh0aGlzLm5vZGUoKSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHlsZVZhbHVlKG5vZGUsIG5hbWUpIHtcbiAgcmV0dXJuIG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShuYW1lKVxuICAgICAgfHwgZGVmYXVsdFZpZXcobm9kZSkuZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xufVxuIiwiZnVuY3Rpb24gcHJvcGVydHlSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZGVsZXRlIHRoaXNbbmFtZV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5Q29uc3RhbnQobmFtZSwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXNbbmFtZV0gPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydHlGdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh2ID09IG51bGwpIGRlbGV0ZSB0aGlzW25hbWVdO1xuICAgIGVsc2UgdGhpc1tuYW1lXSA9IHY7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMVxuICAgICAgPyB0aGlzLmVhY2goKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IHByb3BlcnR5UmVtb3ZlIDogdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHByb3BlcnR5RnVuY3Rpb25cbiAgICAgICAgICA6IHByb3BlcnR5Q29uc3RhbnQpKG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKClbbmFtZV07XG59XG4iLCJmdW5jdGlvbiBjbGFzc0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnRyaW0oKS5zcGxpdCgvXnxcXHMrLyk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzTGlzdChub2RlKSB7XG4gIHJldHVybiBub2RlLmNsYXNzTGlzdCB8fCBuZXcgQ2xhc3NMaXN0KG5vZGUpO1xufVxuXG5mdW5jdGlvbiBDbGFzc0xpc3Qobm9kZSkge1xuICB0aGlzLl9ub2RlID0gbm9kZTtcbiAgdGhpcy5fbmFtZXMgPSBjbGFzc0FycmF5KG5vZGUuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIik7XG59XG5cbkNsYXNzTGlzdC5wcm90b3R5cGUgPSB7XG4gIGFkZDogZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBpID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICBpZiAoaSA8IDApIHtcbiAgICAgIHRoaXMuX25hbWVzLnB1c2gobmFtZSk7XG4gICAgICB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIHRoaXMuX25hbWVzLmpvaW4oXCIgXCIpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZTogZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciBpID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICB0aGlzLl9uYW1lcy5zcGxpY2UoaSwgMSk7XG4gICAgICB0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIHRoaXMuX25hbWVzLmpvaW4oXCIgXCIpKTtcbiAgICB9XG4gIH0sXG4gIGNvbnRhaW5zOiBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSkgPj0gMDtcbiAgfVxufTtcblxuZnVuY3Rpb24gY2xhc3NlZEFkZChub2RlLCBuYW1lcykge1xuICB2YXIgbGlzdCA9IGNsYXNzTGlzdChub2RlKSwgaSA9IC0xLCBuID0gbmFtZXMubGVuZ3RoO1xuICB3aGlsZSAoKytpIDwgbikgbGlzdC5hZGQobmFtZXNbaV0pO1xufVxuXG5mdW5jdGlvbiBjbGFzc2VkUmVtb3ZlKG5vZGUsIG5hbWVzKSB7XG4gIHZhciBsaXN0ID0gY2xhc3NMaXN0KG5vZGUpLCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBsaXN0LnJlbW92ZShuYW1lc1tpXSk7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZWRUcnVlKG5hbWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjbGFzc2VkQWRkKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZEZhbHNlKG5hbWVzKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBjbGFzc2VkUmVtb3ZlKHRoaXMsIG5hbWVzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2xhc3NlZEZ1bmN0aW9uKG5hbWVzLCB2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgKHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgPyBjbGFzc2VkQWRkIDogY2xhc3NlZFJlbW92ZSkodGhpcywgbmFtZXMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgbmFtZXMgPSBjbGFzc0FycmF5KG5hbWUgKyBcIlwiKTtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB2YXIgbGlzdCA9IGNsYXNzTGlzdCh0aGlzLm5vZGUoKSksIGkgPSAtMSwgbiA9IG5hbWVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKCFsaXN0LmNvbnRhaW5zKG5hbWVzW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gY2xhc3NlZEZ1bmN0aW9uIDogdmFsdWVcbiAgICAgID8gY2xhc3NlZFRydWVcbiAgICAgIDogY2xhc3NlZEZhbHNlKShuYW1lcywgdmFsdWUpKTtcbn1cbiIsImZ1bmN0aW9uIHRleHRSZW1vdmUoKSB7XG4gIHRoaXMudGV4dENvbnRlbnQgPSBcIlwiO1xufVxuXG5mdW5jdGlvbiB0ZXh0Q29uc3RhbnQodmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gdGV4dEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHYgPT0gbnVsbCA/IFwiXCIgOiB2O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2godmFsdWUgPT0gbnVsbFxuICAgICAgICAgID8gdGV4dFJlbW92ZSA6ICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gdGV4dEZ1bmN0aW9uXG4gICAgICAgICAgOiB0ZXh0Q29uc3RhbnQpKHZhbHVlKSlcbiAgICAgIDogdGhpcy5ub2RlKCkudGV4dENvbnRlbnQ7XG59XG4iLCJmdW5jdGlvbiBodG1sUmVtb3ZlKCkge1xuICB0aGlzLmlubmVySFRNTCA9IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGh0bWxDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2YWx1ZTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaHRtbEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHZhbHVlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgdGhpcy5pbm5lckhUTUwgPSB2ID09IG51bGwgPyBcIlwiIDogdjtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5lYWNoKHZhbHVlID09IG51bGxcbiAgICAgICAgICA/IGh0bWxSZW1vdmUgOiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGh0bWxGdW5jdGlvblxuICAgICAgICAgIDogaHRtbENvbnN0YW50KSh2YWx1ZSkpXG4gICAgICA6IHRoaXMubm9kZSgpLmlubmVySFRNTDtcbn1cbiIsImZ1bmN0aW9uIHJhaXNlKCkge1xuICBpZiAodGhpcy5uZXh0U2libGluZykgdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyYWlzZSk7XG59XG4iLCJmdW5jdGlvbiBsb3dlcigpIHtcbiAgaWYgKHRoaXMucHJldmlvdXNTaWJsaW5nKSB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsIHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmVhY2gobG93ZXIpO1xufVxuIiwiaW1wb3J0IGNyZWF0b3IgZnJvbSBcIi4uL2NyZWF0b3JcIjtcbmltcG9ydCBzZWxlY3RvciBmcm9tIFwiLi4vc2VsZWN0b3JcIjtcblxuZnVuY3Rpb24gY29uc3RhbnROdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgYmVmb3JlKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSksXG4gICAgICBzZWxlY3QgPSBiZWZvcmUgPT0gbnVsbCA/IGNvbnN0YW50TnVsbCA6IHR5cGVvZiBiZWZvcmUgPT09IFwiZnVuY3Rpb25cIiA/IGJlZm9yZSA6IHNlbGVjdG9yKGJlZm9yZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoY3JlYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHNlbGVjdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IG51bGwpO1xuICB9KTtcbn1cbiIsImZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaChyZW1vdmUpO1xufVxuIiwiaW1wb3J0IGRlZmF1bHRWaWV3IGZyb20gXCIuLi93aW5kb3dcIjtcblxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudChub2RlLCB0eXBlLCBwYXJhbXMpIHtcbiAgdmFyIHdpbmRvdyA9IGRlZmF1bHRWaWV3KG5vZGUpLFxuICAgICAgZXZlbnQgPSB3aW5kb3cuQ3VzdG9tRXZlbnQ7XG5cbiAgaWYgKHR5cGVvZiBldmVudCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgZXZlbnQgPSBuZXcgZXZlbnQodHlwZSwgcGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xuICAgIGlmIChwYXJhbXMpIGV2ZW50LmluaXRFdmVudCh0eXBlLCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUpLCBldmVudC5kZXRhaWwgPSBwYXJhbXMuZGV0YWlsO1xuICAgIGVsc2UgZXZlbnQuaW5pdEV2ZW50KHR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gIH1cblxuICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBkaXNwYXRjaENvbnN0YW50KHR5cGUsIHBhcmFtcykge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoRXZlbnQodGhpcywgdHlwZSwgcGFyYW1zKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hGdW5jdGlvbih0eXBlLCBwYXJhbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkaXNwYXRjaEV2ZW50KHRoaXMsIHR5cGUsIHBhcmFtcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odHlwZSwgcGFyYW1zKSB7XG4gIHJldHVybiB0aGlzLmVhY2goKHR5cGVvZiBwYXJhbXMgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgPyBkaXNwYXRjaEZ1bmN0aW9uXG4gICAgICA6IGRpc3BhdGNoQ29uc3RhbnQpKHR5cGUsIHBhcmFtcykpO1xufVxuIiwiaW1wb3J0IHNlbGVjdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NlbGVjdEFsbCBmcm9tIFwiLi9zZWxlY3RBbGxcIjtcbmltcG9ydCBzZWxlY3Rpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHNlbGVjdGlvbl9kYXRhIGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCBzZWxlY3Rpb25fZW50ZXIgZnJvbSBcIi4vZW50ZXJcIjtcbmltcG9ydCBzZWxlY3Rpb25fZXhpdCBmcm9tIFwiLi9leGl0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX21lcmdlIGZyb20gXCIuL21lcmdlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29yZGVyIGZyb20gXCIuL29yZGVyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NvcnQgZnJvbSBcIi4vc29ydFwiO1xuaW1wb3J0IHNlbGVjdGlvbl9jYWxsIGZyb20gXCIuL2NhbGxcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZXMgZnJvbSBcIi4vbm9kZXNcIjtcbmltcG9ydCBzZWxlY3Rpb25fbm9kZSBmcm9tIFwiLi9ub2RlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3NpemUgZnJvbSBcIi4vc2l6ZVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9lbXB0eSBmcm9tIFwiLi9lbXB0eVwiO1xuaW1wb3J0IHNlbGVjdGlvbl9lYWNoIGZyb20gXCIuL2VhY2hcIjtcbmltcG9ydCBzZWxlY3Rpb25fYXR0ciBmcm9tIFwiLi9hdHRyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlIGZyb20gXCIuL3N0eWxlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3Byb3BlcnR5IGZyb20gXCIuL3Byb3BlcnR5XCI7XG5pbXBvcnQgc2VsZWN0aW9uX2NsYXNzZWQgZnJvbSBcIi4vY2xhc3NlZFwiO1xuaW1wb3J0IHNlbGVjdGlvbl90ZXh0IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCBzZWxlY3Rpb25faHRtbCBmcm9tIFwiLi9odG1sXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3JhaXNlIGZyb20gXCIuL3JhaXNlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2xvd2VyIGZyb20gXCIuL2xvd2VyXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2FwcGVuZCBmcm9tIFwiLi9hcHBlbmRcIjtcbmltcG9ydCBzZWxlY3Rpb25faW5zZXJ0IGZyb20gXCIuL2luc2VydFwiO1xuaW1wb3J0IHNlbGVjdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2RhdHVtIGZyb20gXCIuL2RhdHVtXCI7XG5pbXBvcnQgc2VsZWN0aW9uX29uIGZyb20gXCIuL29uXCI7XG5pbXBvcnQgc2VsZWN0aW9uX2Rpc3BhdGNoIGZyb20gXCIuL2Rpc3BhdGNoXCI7XG5cbmV4cG9ydCB2YXIgcm9vdCA9IFtudWxsXTtcblxuZXhwb3J0IGZ1bmN0aW9uIFNlbGVjdGlvbihncm91cHMsIHBhcmVudHMpIHtcbiAgdGhpcy5fZ3JvdXBzID0gZ3JvdXBzO1xuICB0aGlzLl9wYXJlbnRzID0gcGFyZW50cztcbn1cblxuZnVuY3Rpb24gc2VsZWN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCByb290KTtcbn1cblxuU2VsZWN0aW9uLnByb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZWxlY3Rpb24sXG4gIHNlbGVjdDogc2VsZWN0aW9uX3NlbGVjdCxcbiAgc2VsZWN0QWxsOiBzZWxlY3Rpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHNlbGVjdGlvbl9maWx0ZXIsXG4gIGRhdGE6IHNlbGVjdGlvbl9kYXRhLFxuICBlbnRlcjogc2VsZWN0aW9uX2VudGVyLFxuICBleGl0OiBzZWxlY3Rpb25fZXhpdCxcbiAgbWVyZ2U6IHNlbGVjdGlvbl9tZXJnZSxcbiAgb3JkZXI6IHNlbGVjdGlvbl9vcmRlcixcbiAgc29ydDogc2VsZWN0aW9uX3NvcnQsXG4gIGNhbGw6IHNlbGVjdGlvbl9jYWxsLFxuICBub2Rlczogc2VsZWN0aW9uX25vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fbm9kZSxcbiAgc2l6ZTogc2VsZWN0aW9uX3NpemUsXG4gIGVtcHR5OiBzZWxlY3Rpb25fZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9lYWNoLFxuICBhdHRyOiBzZWxlY3Rpb25fYXR0cixcbiAgc3R5bGU6IHNlbGVjdGlvbl9zdHlsZSxcbiAgcHJvcGVydHk6IHNlbGVjdGlvbl9wcm9wZXJ0eSxcbiAgY2xhc3NlZDogc2VsZWN0aW9uX2NsYXNzZWQsXG4gIHRleHQ6IHNlbGVjdGlvbl90ZXh0LFxuICBodG1sOiBzZWxlY3Rpb25faHRtbCxcbiAgcmFpc2U6IHNlbGVjdGlvbl9yYWlzZSxcbiAgbG93ZXI6IHNlbGVjdGlvbl9sb3dlcixcbiAgYXBwZW5kOiBzZWxlY3Rpb25fYXBwZW5kLFxuICBpbnNlcnQ6IHNlbGVjdGlvbl9pbnNlcnQsXG4gIHJlbW92ZTogc2VsZWN0aW9uX3JlbW92ZSxcbiAgZGF0dW06IHNlbGVjdGlvbl9kYXR1bSxcbiAgb246IHNlbGVjdGlvbl9vbixcbiAgZGlzcGF0Y2g6IHNlbGVjdGlvbl9kaXNwYXRjaFxufTtcblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0aW9uO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29uc3RydWN0b3IsIGZhY3RvcnksIHByb3RvdHlwZSkge1xuICBjb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBmYWN0b3J5LnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgcHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQocGFyZW50LCBkZWZpbml0aW9uKSB7XG4gIHZhciBwcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHBhcmVudC5wcm90b3R5cGUpO1xuICBmb3IgKHZhciBrZXkgaW4gZGVmaW5pdGlvbikgcHJvdG90eXBlW2tleV0gPSBkZWZpbml0aW9uW2tleV07XG4gIHJldHVybiBwcm90b3R5cGU7XG59XG4iLCJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIENvbG9yKCkge31cblxuZXhwb3J0IHZhciBkYXJrZXIgPSAwLjc7XG5leHBvcnQgdmFyIGJyaWdodGVyID0gMSAvIGRhcmtlcjtcblxudmFyIHJlSSA9IFwiXFxcXHMqKFsrLV0/XFxcXGQrKVxcXFxzKlwiLFxuICAgIHJlTiA9IFwiXFxcXHMqKFsrLV0/XFxcXGQqXFxcXC4/XFxcXGQrKD86W2VFXVsrLV0/XFxcXGQrKT8pXFxcXHMqXCIsXG4gICAgcmVQID0gXCJcXFxccyooWystXT9cXFxcZCpcXFxcLj9cXFxcZCsoPzpbZUVdWystXT9cXFxcZCspPyklXFxcXHMqXCIsXG4gICAgcmVIZXgzID0gL14jKFswLTlhLWZdezN9KSQvLFxuICAgIHJlSGV4NiA9IC9eIyhbMC05YS1mXXs2fSkkLyxcbiAgICByZVJnYkludGVnZXIgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVJLCByZUksIHJlSV0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYlBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXnJnYlxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUF0gKyBcIlxcXFwpJFwiKSxcbiAgICByZVJnYmFJbnRlZ2VyID0gbmV3IFJlZ0V4cChcIl5yZ2JhXFxcXChcIiArIFtyZUksIHJlSSwgcmVJLCByZU5dICsgXCJcXFxcKSRcIiksXG4gICAgcmVSZ2JhUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJecmdiYVxcXFwoXCIgKyBbcmVQLCByZVAsIHJlUCwgcmVOXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsUGVyY2VudCA9IG5ldyBSZWdFeHAoXCJeaHNsXFxcXChcIiArIFtyZU4sIHJlUCwgcmVQXSArIFwiXFxcXCkkXCIpLFxuICAgIHJlSHNsYVBlcmNlbnQgPSBuZXcgUmVnRXhwKFwiXmhzbGFcXFxcKFwiICsgW3JlTiwgcmVQLCByZVAsIHJlTl0gKyBcIlxcXFwpJFwiKTtcblxudmFyIG5hbWVkID0ge1xuICBhbGljZWJsdWU6IDB4ZjBmOGZmLFxuICBhbnRpcXVld2hpdGU6IDB4ZmFlYmQ3LFxuICBhcXVhOiAweDAwZmZmZixcbiAgYXF1YW1hcmluZTogMHg3ZmZmZDQsXG4gIGF6dXJlOiAweGYwZmZmZixcbiAgYmVpZ2U6IDB4ZjVmNWRjLFxuICBiaXNxdWU6IDB4ZmZlNGM0LFxuICBibGFjazogMHgwMDAwMDAsXG4gIGJsYW5jaGVkYWxtb25kOiAweGZmZWJjZCxcbiAgYmx1ZTogMHgwMDAwZmYsXG4gIGJsdWV2aW9sZXQ6IDB4OGEyYmUyLFxuICBicm93bjogMHhhNTJhMmEsXG4gIGJ1cmx5d29vZDogMHhkZWI4ODcsXG4gIGNhZGV0Ymx1ZTogMHg1ZjllYTAsXG4gIGNoYXJ0cmV1c2U6IDB4N2ZmZjAwLFxuICBjaG9jb2xhdGU6IDB4ZDI2OTFlLFxuICBjb3JhbDogMHhmZjdmNTAsXG4gIGNvcm5mbG93ZXJibHVlOiAweDY0OTVlZCxcbiAgY29ybnNpbGs6IDB4ZmZmOGRjLFxuICBjcmltc29uOiAweGRjMTQzYyxcbiAgY3lhbjogMHgwMGZmZmYsXG4gIGRhcmtibHVlOiAweDAwMDA4YixcbiAgZGFya2N5YW46IDB4MDA4YjhiLFxuICBkYXJrZ29sZGVucm9kOiAweGI4ODYwYixcbiAgZGFya2dyYXk6IDB4YTlhOWE5LFxuICBkYXJrZ3JlZW46IDB4MDA2NDAwLFxuICBkYXJrZ3JleTogMHhhOWE5YTksXG4gIGRhcmtraGFraTogMHhiZGI3NmIsXG4gIGRhcmttYWdlbnRhOiAweDhiMDA4YixcbiAgZGFya29saXZlZ3JlZW46IDB4NTU2YjJmLFxuICBkYXJrb3JhbmdlOiAweGZmOGMwMCxcbiAgZGFya29yY2hpZDogMHg5OTMyY2MsXG4gIGRhcmtyZWQ6IDB4OGIwMDAwLFxuICBkYXJrc2FsbW9uOiAweGU5OTY3YSxcbiAgZGFya3NlYWdyZWVuOiAweDhmYmM4ZixcbiAgZGFya3NsYXRlYmx1ZTogMHg0ODNkOGIsXG4gIGRhcmtzbGF0ZWdyYXk6IDB4MmY0ZjRmLFxuICBkYXJrc2xhdGVncmV5OiAweDJmNGY0ZixcbiAgZGFya3R1cnF1b2lzZTogMHgwMGNlZDEsXG4gIGRhcmt2aW9sZXQ6IDB4OTQwMGQzLFxuICBkZWVwcGluazogMHhmZjE0OTMsXG4gIGRlZXBza3libHVlOiAweDAwYmZmZixcbiAgZGltZ3JheTogMHg2OTY5NjksXG4gIGRpbWdyZXk6IDB4Njk2OTY5LFxuICBkb2RnZXJibHVlOiAweDFlOTBmZixcbiAgZmlyZWJyaWNrOiAweGIyMjIyMixcbiAgZmxvcmFsd2hpdGU6IDB4ZmZmYWYwLFxuICBmb3Jlc3RncmVlbjogMHgyMjhiMjIsXG4gIGZ1Y2hzaWE6IDB4ZmYwMGZmLFxuICBnYWluc2Jvcm86IDB4ZGNkY2RjLFxuICBnaG9zdHdoaXRlOiAweGY4ZjhmZixcbiAgZ29sZDogMHhmZmQ3MDAsXG4gIGdvbGRlbnJvZDogMHhkYWE1MjAsXG4gIGdyYXk6IDB4ODA4MDgwLFxuICBncmVlbjogMHgwMDgwMDAsXG4gIGdyZWVueWVsbG93OiAweGFkZmYyZixcbiAgZ3JleTogMHg4MDgwODAsXG4gIGhvbmV5ZGV3OiAweGYwZmZmMCxcbiAgaG90cGluazogMHhmZjY5YjQsXG4gIGluZGlhbnJlZDogMHhjZDVjNWMsXG4gIGluZGlnbzogMHg0YjAwODIsXG4gIGl2b3J5OiAweGZmZmZmMCxcbiAga2hha2k6IDB4ZjBlNjhjLFxuICBsYXZlbmRlcjogMHhlNmU2ZmEsXG4gIGxhdmVuZGVyYmx1c2g6IDB4ZmZmMGY1LFxuICBsYXduZ3JlZW46IDB4N2NmYzAwLFxuICBsZW1vbmNoaWZmb246IDB4ZmZmYWNkLFxuICBsaWdodGJsdWU6IDB4YWRkOGU2LFxuICBsaWdodGNvcmFsOiAweGYwODA4MCxcbiAgbGlnaHRjeWFuOiAweGUwZmZmZixcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6IDB4ZmFmYWQyLFxuICBsaWdodGdyYXk6IDB4ZDNkM2QzLFxuICBsaWdodGdyZWVuOiAweDkwZWU5MCxcbiAgbGlnaHRncmV5OiAweGQzZDNkMyxcbiAgbGlnaHRwaW5rOiAweGZmYjZjMSxcbiAgbGlnaHRzYWxtb246IDB4ZmZhMDdhLFxuICBsaWdodHNlYWdyZWVuOiAweDIwYjJhYSxcbiAgbGlnaHRza3libHVlOiAweDg3Y2VmYSxcbiAgbGlnaHRzbGF0ZWdyYXk6IDB4Nzc4ODk5LFxuICBsaWdodHNsYXRlZ3JleTogMHg3Nzg4OTksXG4gIGxpZ2h0c3RlZWxibHVlOiAweGIwYzRkZSxcbiAgbGlnaHR5ZWxsb3c6IDB4ZmZmZmUwLFxuICBsaW1lOiAweDAwZmYwMCxcbiAgbGltZWdyZWVuOiAweDMyY2QzMixcbiAgbGluZW46IDB4ZmFmMGU2LFxuICBtYWdlbnRhOiAweGZmMDBmZixcbiAgbWFyb29uOiAweDgwMDAwMCxcbiAgbWVkaXVtYXF1YW1hcmluZTogMHg2NmNkYWEsXG4gIG1lZGl1bWJsdWU6IDB4MDAwMGNkLFxuICBtZWRpdW1vcmNoaWQ6IDB4YmE1NWQzLFxuICBtZWRpdW1wdXJwbGU6IDB4OTM3MGRiLFxuICBtZWRpdW1zZWFncmVlbjogMHgzY2IzNzEsXG4gIG1lZGl1bXNsYXRlYmx1ZTogMHg3YjY4ZWUsXG4gIG1lZGl1bXNwcmluZ2dyZWVuOiAweDAwZmE5YSxcbiAgbWVkaXVtdHVycXVvaXNlOiAweDQ4ZDFjYyxcbiAgbWVkaXVtdmlvbGV0cmVkOiAweGM3MTU4NSxcbiAgbWlkbmlnaHRibHVlOiAweDE5MTk3MCxcbiAgbWludGNyZWFtOiAweGY1ZmZmYSxcbiAgbWlzdHlyb3NlOiAweGZmZTRlMSxcbiAgbW9jY2FzaW46IDB4ZmZlNGI1LFxuICBuYXZham93aGl0ZTogMHhmZmRlYWQsXG4gIG5hdnk6IDB4MDAwMDgwLFxuICBvbGRsYWNlOiAweGZkZjVlNixcbiAgb2xpdmU6IDB4ODA4MDAwLFxuICBvbGl2ZWRyYWI6IDB4NmI4ZTIzLFxuICBvcmFuZ2U6IDB4ZmZhNTAwLFxuICBvcmFuZ2VyZWQ6IDB4ZmY0NTAwLFxuICBvcmNoaWQ6IDB4ZGE3MGQ2LFxuICBwYWxlZ29sZGVucm9kOiAweGVlZThhYSxcbiAgcGFsZWdyZWVuOiAweDk4ZmI5OCxcbiAgcGFsZXR1cnF1b2lzZTogMHhhZmVlZWUsXG4gIHBhbGV2aW9sZXRyZWQ6IDB4ZGI3MDkzLFxuICBwYXBheWF3aGlwOiAweGZmZWZkNSxcbiAgcGVhY2hwdWZmOiAweGZmZGFiOSxcbiAgcGVydTogMHhjZDg1M2YsXG4gIHBpbms6IDB4ZmZjMGNiLFxuICBwbHVtOiAweGRkYTBkZCxcbiAgcG93ZGVyYmx1ZTogMHhiMGUwZTYsXG4gIHB1cnBsZTogMHg4MDAwODAsXG4gIHJlYmVjY2FwdXJwbGU6IDB4NjYzMzk5LFxuICByZWQ6IDB4ZmYwMDAwLFxuICByb3N5YnJvd246IDB4YmM4ZjhmLFxuICByb3lhbGJsdWU6IDB4NDE2OWUxLFxuICBzYWRkbGVicm93bjogMHg4YjQ1MTMsXG4gIHNhbG1vbjogMHhmYTgwNzIsXG4gIHNhbmR5YnJvd246IDB4ZjRhNDYwLFxuICBzZWFncmVlbjogMHgyZThiNTcsXG4gIHNlYXNoZWxsOiAweGZmZjVlZSxcbiAgc2llbm5hOiAweGEwNTIyZCxcbiAgc2lsdmVyOiAweGMwYzBjMCxcbiAgc2t5Ymx1ZTogMHg4N2NlZWIsXG4gIHNsYXRlYmx1ZTogMHg2YTVhY2QsXG4gIHNsYXRlZ3JheTogMHg3MDgwOTAsXG4gIHNsYXRlZ3JleTogMHg3MDgwOTAsXG4gIHNub3c6IDB4ZmZmYWZhLFxuICBzcHJpbmdncmVlbjogMHgwMGZmN2YsXG4gIHN0ZWVsYmx1ZTogMHg0NjgyYjQsXG4gIHRhbjogMHhkMmI0OGMsXG4gIHRlYWw6IDB4MDA4MDgwLFxuICB0aGlzdGxlOiAweGQ4YmZkOCxcbiAgdG9tYXRvOiAweGZmNjM0NyxcbiAgdHVycXVvaXNlOiAweDQwZTBkMCxcbiAgdmlvbGV0OiAweGVlODJlZSxcbiAgd2hlYXQ6IDB4ZjVkZWIzLFxuICB3aGl0ZTogMHhmZmZmZmYsXG4gIHdoaXRlc21va2U6IDB4ZjVmNWY1LFxuICB5ZWxsb3c6IDB4ZmZmZjAwLFxuICB5ZWxsb3dncmVlbjogMHg5YWNkMzJcbn07XG5cbmRlZmluZShDb2xvciwgY29sb3IsIHtcbiAgZGlzcGxheWFibGU6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5yZ2IoKSArIFwiXCI7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb2xvcihmb3JtYXQpIHtcbiAgdmFyIG07XG4gIGZvcm1hdCA9IChmb3JtYXQgKyBcIlwiKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIChtID0gcmVIZXgzLmV4ZWMoZm9ybWF0KSkgPyAobSA9IHBhcnNlSW50KG1bMV0sIDE2KSwgbmV3IFJnYigobSA+PiA4ICYgMHhmKSB8IChtID4+IDQgJiAweDBmMCksIChtID4+IDQgJiAweGYpIHwgKG0gJiAweGYwKSwgKChtICYgMHhmKSA8PCA0KSB8IChtICYgMHhmKSwgMSkpIC8vICNmMDBcbiAgICAgIDogKG0gPSByZUhleDYuZXhlYyhmb3JtYXQpKSA/IHJnYm4ocGFyc2VJbnQobVsxXSwgMTYpKSAvLyAjZmYwMDAwXG4gICAgICA6IChtID0gcmVSZ2JJbnRlZ2VyLmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0sIG1bMl0sIG1bM10sIDEpIC8vIHJnYigyNTUsIDAsIDApXG4gICAgICA6IChtID0gcmVSZ2JQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBuZXcgUmdiKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIDEpIC8vIHJnYigxMDAlLCAwJSwgMCUpXG4gICAgICA6IChtID0gcmVSZ2JhSW50ZWdlci5leGVjKGZvcm1hdCkpID8gcmdiYShtWzFdLCBtWzJdLCBtWzNdLCBtWzRdKSAvLyByZ2JhKDI1NSwgMCwgMCwgMSlcbiAgICAgIDogKG0gPSByZVJnYmFQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyByZ2JhKG1bMV0gKiAyNTUgLyAxMDAsIG1bMl0gKiAyNTUgLyAxMDAsIG1bM10gKiAyNTUgLyAxMDAsIG1bNF0pIC8vIHJnYigxMDAlLCAwJSwgMCUsIDEpXG4gICAgICA6IChtID0gcmVIc2xQZXJjZW50LmV4ZWMoZm9ybWF0KSkgPyBoc2xhKG1bMV0sIG1bMl0gLyAxMDAsIG1bM10gLyAxMDAsIDEpIC8vIGhzbCgxMjAsIDUwJSwgNTAlKVxuICAgICAgOiAobSA9IHJlSHNsYVBlcmNlbnQuZXhlYyhmb3JtYXQpKSA/IGhzbGEobVsxXSwgbVsyXSAvIDEwMCwgbVszXSAvIDEwMCwgbVs0XSkgLy8gaHNsYSgxMjAsIDUwJSwgNTAlLCAxKVxuICAgICAgOiBuYW1lZC5oYXNPd25Qcm9wZXJ0eShmb3JtYXQpID8gcmdibihuYW1lZFtmb3JtYXRdKVxuICAgICAgOiBmb3JtYXQgPT09IFwidHJhbnNwYXJlbnRcIiA/IG5ldyBSZ2IoTmFOLCBOYU4sIE5hTiwgMClcbiAgICAgIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gcmdibihuKSB7XG4gIHJldHVybiBuZXcgUmdiKG4gPj4gMTYgJiAweGZmLCBuID4+IDggJiAweGZmLCBuICYgMHhmZiwgMSk7XG59XG5cbmZ1bmN0aW9uIHJnYmEociwgZywgYiwgYSkge1xuICBpZiAoYSA8PSAwKSByID0gZyA9IGIgPSBOYU47XG4gIHJldHVybiBuZXcgUmdiKHIsIGcsIGIsIGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmdiQ29udmVydChvKSB7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBDb2xvcikpIG8gPSBjb2xvcihvKTtcbiAgaWYgKCFvKSByZXR1cm4gbmV3IFJnYjtcbiAgbyA9IG8ucmdiKCk7XG4gIHJldHVybiBuZXcgUmdiKG8uciwgby5nLCBvLmIsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZ2IociwgZywgYiwgb3BhY2l0eSkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/IHJnYkNvbnZlcnQocikgOiBuZXcgUmdiKHIsIGcsIGIsIG9wYWNpdHkgPT0gbnVsbCA/IDEgOiBvcGFjaXR5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJnYihyLCBnLCBiLCBvcGFjaXR5KSB7XG4gIHRoaXMuciA9ICtyO1xuICB0aGlzLmcgPSArZztcbiAgdGhpcy5iID0gK2I7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoUmdiLCByZ2IsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IFJnYih0aGlzLnIgKiBrLCB0aGlzLmcgKiBrLCB0aGlzLmIgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMuciAmJiB0aGlzLnIgPD0gMjU1KVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmcgJiYgdGhpcy5nIDw9IDI1NSlcbiAgICAgICAgJiYgKDAgPD0gdGhpcy5iICYmIHRoaXMuYiA8PSAyNTUpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH0sXG4gIHRvU3RyaW5nOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYSA9IHRoaXMub3BhY2l0eTsgYSA9IGlzTmFOKGEpID8gMSA6IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIGEpKTtcbiAgICByZXR1cm4gKGEgPT09IDEgPyBcInJnYihcIiA6IFwicmdiYShcIilcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5yKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5nKSB8fCAwKSkgKyBcIiwgXCJcbiAgICAgICAgKyBNYXRoLm1heCgwLCBNYXRoLm1pbigyNTUsIE1hdGgucm91bmQodGhpcy5iKSB8fCAwKSlcbiAgICAgICAgKyAoYSA9PT0gMSA/IFwiKVwiIDogXCIsIFwiICsgYSArIFwiKVwiKTtcbiAgfVxufSkpO1xuXG5mdW5jdGlvbiBoc2xhKGgsIHMsIGwsIGEpIHtcbiAgaWYgKGEgPD0gMCkgaCA9IHMgPSBsID0gTmFOO1xuICBlbHNlIGlmIChsIDw9IDAgfHwgbCA+PSAxKSBoID0gcyA9IE5hTjtcbiAgZWxzZSBpZiAocyA8PSAwKSBoID0gTmFOO1xuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhzbENvbnZlcnQobykge1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG5ldyBIc2woby5oLCBvLnMsIG8ubCwgby5vcGFjaXR5KTtcbiAgaWYgKCEobyBpbnN0YW5jZW9mIENvbG9yKSkgbyA9IGNvbG9yKG8pO1xuICBpZiAoIW8pIHJldHVybiBuZXcgSHNsO1xuICBpZiAobyBpbnN0YW5jZW9mIEhzbCkgcmV0dXJuIG87XG4gIG8gPSBvLnJnYigpO1xuICB2YXIgciA9IG8uciAvIDI1NSxcbiAgICAgIGcgPSBvLmcgLyAyNTUsXG4gICAgICBiID0gby5iIC8gMjU1LFxuICAgICAgbWluID0gTWF0aC5taW4ociwgZywgYiksXG4gICAgICBtYXggPSBNYXRoLm1heChyLCBnLCBiKSxcbiAgICAgIGggPSBOYU4sXG4gICAgICBzID0gbWF4IC0gbWluLFxuICAgICAgbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgaWYgKHMpIHtcbiAgICBpZiAociA9PT0gbWF4KSBoID0gKGcgLSBiKSAvIHMgKyAoZyA8IGIpICogNjtcbiAgICBlbHNlIGlmIChnID09PSBtYXgpIGggPSAoYiAtIHIpIC8gcyArIDI7XG4gICAgZWxzZSBoID0gKHIgLSBnKSAvIHMgKyA0O1xuICAgIHMgLz0gbCA8IDAuNSA/IG1heCArIG1pbiA6IDIgLSBtYXggLSBtaW47XG4gICAgaCAqPSA2MDtcbiAgfSBlbHNlIHtcbiAgICBzID0gbCA+IDAgJiYgbCA8IDEgPyAwIDogaDtcbiAgfVxuICByZXR1cm4gbmV3IEhzbChoLCBzLCBsLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHNsKGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoc2xDb252ZXJ0KGgpIDogbmV3IEhzbChoLCBzLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmZ1bmN0aW9uIEhzbChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHRoaXMuaCA9ICtoO1xuICB0aGlzLnMgPSArcztcbiAgdGhpcy5sID0gK2w7XG4gIHRoaXMub3BhY2l0eSA9ICtvcGFjaXR5O1xufVxuXG5kZWZpbmUoSHNsLCBoc2wsIGV4dGVuZChDb2xvciwge1xuICBicmlnaHRlcjogZnVuY3Rpb24oaykge1xuICAgIGsgPSBrID09IG51bGwgPyBicmlnaHRlciA6IE1hdGgucG93KGJyaWdodGVyLCBrKTtcbiAgICByZXR1cm4gbmV3IEhzbCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgZGFya2VyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGRhcmtlciA6IE1hdGgucG93KGRhcmtlciwgayk7XG4gICAgcmV0dXJuIG5ldyBIc2wodGhpcy5oLCB0aGlzLnMsIHRoaXMubCAqIGssIHRoaXMub3BhY2l0eSk7XG4gIH0sXG4gIHJnYjogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGggPSB0aGlzLmggJSAzNjAgKyAodGhpcy5oIDwgMCkgKiAzNjAsXG4gICAgICAgIHMgPSBpc05hTihoKSB8fCBpc05hTih0aGlzLnMpID8gMCA6IHRoaXMucyxcbiAgICAgICAgbCA9IHRoaXMubCxcbiAgICAgICAgbTIgPSBsICsgKGwgPCAwLjUgPyBsIDogMSAtIGwpICogcyxcbiAgICAgICAgbTEgPSAyICogbCAtIG0yO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgaHNsMnJnYihoID49IDI0MCA/IGggLSAyNDAgOiBoICsgMTIwLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoLCBtMSwgbTIpLFxuICAgICAgaHNsMnJnYihoIDwgMTIwID8gaCArIDI0MCA6IGggLSAxMjAsIG0xLCBtMiksXG4gICAgICB0aGlzLm9wYWNpdHlcbiAgICApO1xuICB9LFxuICBkaXNwbGF5YWJsZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgwIDw9IHRoaXMucyAmJiB0aGlzLnMgPD0gMSB8fCBpc05hTih0aGlzLnMpKVxuICAgICAgICAmJiAoMCA8PSB0aGlzLmwgJiYgdGhpcy5sIDw9IDEpXG4gICAgICAgICYmICgwIDw9IHRoaXMub3BhY2l0eSAmJiB0aGlzLm9wYWNpdHkgPD0gMSk7XG4gIH1cbn0pKTtcblxuLyogRnJvbSBGdkQgMTMuMzcsIENTUyBDb2xvciBNb2R1bGUgTGV2ZWwgMyAqL1xuZnVuY3Rpb24gaHNsMnJnYihoLCBtMSwgbTIpIHtcbiAgcmV0dXJuIChoIDwgNjAgPyBtMSArIChtMiAtIG0xKSAqIGggLyA2MFxuICAgICAgOiBoIDwgMTgwID8gbTJcbiAgICAgIDogaCA8IDI0MCA/IG0xICsgKG0yIC0gbTEpICogKDI0MCAtIGgpIC8gNjBcbiAgICAgIDogbTEpICogMjU1O1xufVxuIiwiaW1wb3J0IGRlZmluZSwge2V4dGVuZH0gZnJvbSBcIi4vZGVmaW5lXCI7XG5pbXBvcnQge0NvbG9yLCByZ2JDb252ZXJ0LCBSZ2J9IGZyb20gXCIuL2NvbG9yXCI7XG5pbXBvcnQge2RlZzJyYWQsIHJhZDJkZWd9IGZyb20gXCIuL21hdGhcIjtcblxudmFyIEtuID0gMTgsXG4gICAgWG4gPSAwLjk1MDQ3MCwgLy8gRDY1IHN0YW5kYXJkIHJlZmVyZW50XG4gICAgWW4gPSAxLFxuICAgIFpuID0gMS4wODg4MzAsXG4gICAgdDAgPSA0IC8gMjksXG4gICAgdDEgPSA2IC8gMjksXG4gICAgdDIgPSAzICogdDEgKiB0MSxcbiAgICB0MyA9IHQxICogdDEgKiB0MTtcblxuZnVuY3Rpb24gbGFiQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgTGFiKSByZXR1cm4gbmV3IExhYihvLmwsIG8uYSwgby5iLCBvLm9wYWNpdHkpO1xuICBpZiAobyBpbnN0YW5jZW9mIEhjbCkge1xuICAgIHZhciBoID0gby5oICogZGVnMnJhZDtcbiAgICByZXR1cm4gbmV3IExhYihvLmwsIE1hdGguY29zKGgpICogby5jLCBNYXRoLnNpbihoKSAqIG8uYywgby5vcGFjaXR5KTtcbiAgfVxuICBpZiAoIShvIGluc3RhbmNlb2YgUmdiKSkgbyA9IHJnYkNvbnZlcnQobyk7XG4gIHZhciBiID0gcmdiMnh5eihvLnIpLFxuICAgICAgYSA9IHJnYjJ4eXooby5nKSxcbiAgICAgIGwgPSByZ2IyeHl6KG8uYiksXG4gICAgICB4ID0geHl6MmxhYigoMC40MTI0NTY0ICogYiArIDAuMzU3NTc2MSAqIGEgKyAwLjE4MDQzNzUgKiBsKSAvIFhuKSxcbiAgICAgIHkgPSB4eXoybGFiKCgwLjIxMjY3MjkgKiBiICsgMC43MTUxNTIyICogYSArIDAuMDcyMTc1MCAqIGwpIC8gWW4pLFxuICAgICAgeiA9IHh5ejJsYWIoKDAuMDE5MzMzOSAqIGIgKyAwLjExOTE5MjAgKiBhICsgMC45NTAzMDQxICogbCkgLyBabik7XG4gIHJldHVybiBuZXcgTGFiKDExNiAqIHkgLSAxNiwgNTAwICogKHggLSB5KSwgMjAwICogKHkgLSB6KSwgby5vcGFjaXR5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGFiKGwsIGEsIGIsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBsYWJDb252ZXJ0KGwpIDogbmV3IExhYihsLCBhLCBiLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMYWIobCwgYSwgYiwgb3BhY2l0eSkge1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5hID0gK2E7XG4gIHRoaXMuYiA9ICtiO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKExhYiwgbGFiLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgKyBLbiAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IExhYih0aGlzLmwgLSBLbiAqIChrID09IG51bGwgPyAxIDogayksIHRoaXMuYSwgdGhpcy5iLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHZhciB5ID0gKHRoaXMubCArIDE2KSAvIDExNixcbiAgICAgICAgeCA9IGlzTmFOKHRoaXMuYSkgPyB5IDogeSArIHRoaXMuYSAvIDUwMCxcbiAgICAgICAgeiA9IGlzTmFOKHRoaXMuYikgPyB5IDogeSAtIHRoaXMuYiAvIDIwMDtcbiAgICB5ID0gWW4gKiBsYWIyeHl6KHkpO1xuICAgIHggPSBYbiAqIGxhYjJ4eXooeCk7XG4gICAgeiA9IFpuICogbGFiMnh5eih6KTtcbiAgICByZXR1cm4gbmV3IFJnYihcbiAgICAgIHh5ejJyZ2IoIDMuMjQwNDU0MiAqIHggLSAxLjUzNzEzODUgKiB5IC0gMC40OTg1MzE0ICogeiksIC8vIEQ2NSAtPiBzUkdCXG4gICAgICB4eXoycmdiKC0wLjk2OTI2NjAgKiB4ICsgMS44NzYwMTA4ICogeSArIDAuMDQxNTU2MCAqIHopLFxuICAgICAgeHl6MnJnYiggMC4wNTU2NDM0ICogeCAtIDAuMjA0MDI1OSAqIHkgKyAxLjA1NzIyNTIgKiB6KSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcblxuZnVuY3Rpb24geHl6MmxhYih0KSB7XG4gIHJldHVybiB0ID4gdDMgPyBNYXRoLnBvdyh0LCAxIC8gMykgOiB0IC8gdDIgKyB0MDtcbn1cblxuZnVuY3Rpb24gbGFiMnh5eih0KSB7XG4gIHJldHVybiB0ID4gdDEgPyB0ICogdCAqIHQgOiB0MiAqICh0IC0gdDApO1xufVxuXG5mdW5jdGlvbiB4eXoycmdiKHgpIHtcbiAgcmV0dXJuIDI1NSAqICh4IDw9IDAuMDAzMTMwOCA/IDEyLjkyICogeCA6IDEuMDU1ICogTWF0aC5wb3coeCwgMSAvIDIuNCkgLSAwLjA1NSk7XG59XG5cbmZ1bmN0aW9uIHJnYjJ4eXooeCkge1xuICByZXR1cm4gKHggLz0gMjU1KSA8PSAwLjA0MDQ1ID8geCAvIDEyLjkyIDogTWF0aC5wb3coKHggKyAwLjA1NSkgLyAxLjA1NSwgMi40KTtcbn1cblxuZnVuY3Rpb24gaGNsQ29udmVydChvKSB7XG4gIGlmIChvIGluc3RhbmNlb2YgSGNsKSByZXR1cm4gbmV3IEhjbChvLmgsIG8uYywgby5sLCBvLm9wYWNpdHkpO1xuICBpZiAoIShvIGluc3RhbmNlb2YgTGFiKSkgbyA9IGxhYkNvbnZlcnQobyk7XG4gIHZhciBoID0gTWF0aC5hdGFuMihvLmIsIG8uYSkgKiByYWQyZGVnO1xuICByZXR1cm4gbmV3IEhjbChoIDwgMCA/IGggKyAzNjAgOiBoLCBNYXRoLnNxcnQoby5hICogby5hICsgby5iICogby5iKSwgby5sLCBvLm9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGNsKGgsIGMsIGwsIG9wYWNpdHkpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBoY2xDb252ZXJ0KGgpIDogbmV3IEhjbChoLCBjLCBsLCBvcGFjaXR5ID09IG51bGwgPyAxIDogb3BhY2l0eSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIY2woaCwgYywgbCwgb3BhY2l0eSkge1xuICB0aGlzLmggPSAraDtcbiAgdGhpcy5jID0gK2M7XG4gIHRoaXMubCA9ICtsO1xuICB0aGlzLm9wYWNpdHkgPSArb3BhY2l0eTtcbn1cblxuZGVmaW5lKEhjbCwgaGNsLCBleHRlbmQoQ29sb3IsIHtcbiAgYnJpZ2h0ZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sICsgS24gKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICByZXR1cm4gbmV3IEhjbCh0aGlzLmgsIHRoaXMuYywgdGhpcy5sIC0gS24gKiAoayA9PSBudWxsID8gMSA6IGspLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICByZ2I6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBsYWJDb252ZXJ0KHRoaXMpLnJnYigpO1xuICB9XG59KSk7XG4iLCJpbXBvcnQgZGVmaW5lLCB7ZXh0ZW5kfSBmcm9tIFwiLi9kZWZpbmVcIjtcbmltcG9ydCB7Q29sb3IsIHJnYkNvbnZlcnQsIFJnYiwgZGFya2VyLCBicmlnaHRlcn0gZnJvbSBcIi4vY29sb3JcIjtcbmltcG9ydCB7ZGVnMnJhZCwgcmFkMmRlZ30gZnJvbSBcIi4vbWF0aFwiO1xuXG52YXIgQSA9IC0wLjE0ODYxLFxuICAgIEIgPSArMS43ODI3NyxcbiAgICBDID0gLTAuMjkyMjcsXG4gICAgRCA9IC0wLjkwNjQ5LFxuICAgIEUgPSArMS45NzI5NCxcbiAgICBFRCA9IEUgKiBELFxuICAgIEVCID0gRSAqIEIsXG4gICAgQkNfREEgPSBCICogQyAtIEQgKiBBO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXhDb252ZXJ0KG8pIHtcbiAgaWYgKG8gaW5zdGFuY2VvZiBDdWJlaGVsaXgpIHJldHVybiBuZXcgQ3ViZWhlbGl4KG8uaCwgby5zLCBvLmwsIG8ub3BhY2l0eSk7XG4gIGlmICghKG8gaW5zdGFuY2VvZiBSZ2IpKSBvID0gcmdiQ29udmVydChvKTtcbiAgdmFyIHIgPSBvLnIgLyAyNTUsXG4gICAgICBnID0gby5nIC8gMjU1LFxuICAgICAgYiA9IG8uYiAvIDI1NSxcbiAgICAgIGwgPSAoQkNfREEgKiBiICsgRUQgKiByIC0gRUIgKiBnKSAvIChCQ19EQSArIEVEIC0gRUIpLFxuICAgICAgYmwgPSBiIC0gbCxcbiAgICAgIGsgPSAoRSAqIChnIC0gbCkgLSBDICogYmwpIC8gRCxcbiAgICAgIHMgPSBNYXRoLnNxcnQoayAqIGsgKyBibCAqIGJsKSAvIChFICogbCAqICgxIC0gbCkpLCAvLyBOYU4gaWYgbD0wIG9yIGw9MVxuICAgICAgaCA9IHMgPyBNYXRoLmF0YW4yKGssIGJsKSAqIHJhZDJkZWcgLSAxMjAgOiBOYU47XG4gIHJldHVybiBuZXcgQ3ViZWhlbGl4KGggPCAwID8gaCArIDM2MCA6IGgsIHMsIGwsIG8ub3BhY2l0eSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGN1YmVoZWxpeChoLCBzLCBsLCBvcGFjaXR5KSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY3ViZWhlbGl4Q29udmVydChoKSA6IG5ldyBDdWJlaGVsaXgoaCwgcywgbCwgb3BhY2l0eSA9PSBudWxsID8gMSA6IG9wYWNpdHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3ViZWhlbGl4KGgsIHMsIGwsIG9wYWNpdHkpIHtcbiAgdGhpcy5oID0gK2g7XG4gIHRoaXMucyA9ICtzO1xuICB0aGlzLmwgPSArbDtcbiAgdGhpcy5vcGFjaXR5ID0gK29wYWNpdHk7XG59XG5cbmRlZmluZShDdWJlaGVsaXgsIGN1YmVoZWxpeCwgZXh0ZW5kKENvbG9yLCB7XG4gIGJyaWdodGVyOiBmdW5jdGlvbihrKSB7XG4gICAgayA9IGsgPT0gbnVsbCA/IGJyaWdodGVyIDogTWF0aC5wb3coYnJpZ2h0ZXIsIGspO1xuICAgIHJldHVybiBuZXcgQ3ViZWhlbGl4KHRoaXMuaCwgdGhpcy5zLCB0aGlzLmwgKiBrLCB0aGlzLm9wYWNpdHkpO1xuICB9LFxuICBkYXJrZXI6IGZ1bmN0aW9uKGspIHtcbiAgICBrID0gayA9PSBudWxsID8gZGFya2VyIDogTWF0aC5wb3coZGFya2VyLCBrKTtcbiAgICByZXR1cm4gbmV3IEN1YmVoZWxpeCh0aGlzLmgsIHRoaXMucywgdGhpcy5sICogaywgdGhpcy5vcGFjaXR5KTtcbiAgfSxcbiAgcmdiOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgaCA9IGlzTmFOKHRoaXMuaCkgPyAwIDogKHRoaXMuaCArIDEyMCkgKiBkZWcycmFkLFxuICAgICAgICBsID0gK3RoaXMubCxcbiAgICAgICAgYSA9IGlzTmFOKHRoaXMucykgPyAwIDogdGhpcy5zICogbCAqICgxIC0gbCksXG4gICAgICAgIGNvc2ggPSBNYXRoLmNvcyhoKSxcbiAgICAgICAgc2luaCA9IE1hdGguc2luKGgpO1xuICAgIHJldHVybiBuZXcgUmdiKFxuICAgICAgMjU1ICogKGwgKyBhICogKEEgKiBjb3NoICsgQiAqIHNpbmgpKSxcbiAgICAgIDI1NSAqIChsICsgYSAqIChDICogY29zaCArIEQgKiBzaW5oKSksXG4gICAgICAyNTUgKiAobCArIGEgKiAoRSAqIGNvc2gpKSxcbiAgICAgIHRoaXMub3BhY2l0eVxuICAgICk7XG4gIH1cbn0pKTtcbiIsImltcG9ydCBjb25zdGFudCBmcm9tIFwiLi9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBsaW5lYXIoYSwgZCkge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBhICsgdCAqIGQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGV4cG9uZW50aWFsKGEsIGIsIHkpIHtcbiAgcmV0dXJuIGEgPSBNYXRoLnBvdyhhLCB5KSwgYiA9IE1hdGgucG93KGIsIHkpIC0gYSwgeSA9IDEgLyB5LCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucG93KGEgKyB0ICogYiwgeSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBodWUoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkID4gMTgwIHx8IGQgPCAtMTgwID8gZCAtIDM2MCAqIE1hdGgucm91bmQoZCAvIDM2MCkgOiBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2FtbWEoeSkge1xuICByZXR1cm4gKHkgPSAreSkgPT09IDEgPyBub2dhbW1hIDogZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBiIC0gYSA/IGV4cG9uZW50aWFsKGEsIGIsIHkpIDogY29uc3RhbnQoaXNOYU4oYSkgPyBiIDogYSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vZ2FtbWEoYSwgYikge1xuICB2YXIgZCA9IGIgLSBhO1xuICByZXR1cm4gZCA/IGxpbmVhcihhLCBkKSA6IGNvbnN0YW50KGlzTmFOKGEpID8gYiA6IGEpO1xufVxuIiwiaW1wb3J0IG51bWJlciBmcm9tIFwiLi9udW1iZXJcIjtcblxudmFyIHJlQSA9IC9bLStdPyg/OlxcZCtcXC4/XFxkKnxcXC4/XFxkKykoPzpbZUVdWy0rXT9cXGQrKT8vZyxcbiAgICByZUIgPSBuZXcgUmVnRXhwKHJlQS5zb3VyY2UsIFwiZ1wiKTtcblxuZnVuY3Rpb24gemVybyhiKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gYjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gb25lKGIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICByZXR1cm4gYih0KSArIFwiXCI7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIGJpID0gcmVBLmxhc3RJbmRleCA9IHJlQi5sYXN0SW5kZXggPSAwLCAvLyBzY2FuIGluZGV4IGZvciBuZXh0IG51bWJlciBpbiBiXG4gICAgICBhbSwgLy8gY3VycmVudCBtYXRjaCBpbiBhXG4gICAgICBibSwgLy8gY3VycmVudCBtYXRjaCBpbiBiXG4gICAgICBicywgLy8gc3RyaW5nIHByZWNlZGluZyBjdXJyZW50IG51bWJlciBpbiBiLCBpZiBhbnlcbiAgICAgIGkgPSAtMSwgLy8gaW5kZXggaW4gc1xuICAgICAgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgIHEgPSBbXTsgLy8gbnVtYmVyIGludGVycG9sYXRvcnNcblxuICAvLyBDb2VyY2UgaW5wdXRzIHRvIHN0cmluZ3MuXG4gIGEgPSBhICsgXCJcIiwgYiA9IGIgKyBcIlwiO1xuXG4gIC8vIEludGVycG9sYXRlIHBhaXJzIG9mIG51bWJlcnMgaW4gYSAmIGIuXG4gIHdoaWxlICgoYW0gPSByZUEuZXhlYyhhKSlcbiAgICAgICYmIChibSA9IHJlQi5leGVjKGIpKSkge1xuICAgIGlmICgoYnMgPSBibS5pbmRleCkgPiBiaSkgeyAvLyBhIHN0cmluZyBwcmVjZWRlcyB0aGUgbmV4dCBudW1iZXIgaW4gYlxuICAgICAgYnMgPSBiLnNsaWNlKGJpLCBicyk7XG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYnM7XG4gICAgfVxuICAgIGlmICgoYW0gPSBhbVswXSkgPT09IChibSA9IGJtWzBdKSkgeyAvLyBudW1iZXJzIGluIGEgJiBiIG1hdGNoXG4gICAgICBpZiAoc1tpXSkgc1tpXSArPSBibTsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICAgIGVsc2Ugc1srK2ldID0gYm07XG4gICAgfSBlbHNlIHsgLy8gaW50ZXJwb2xhdGUgbm9uLW1hdGNoaW5nIG51bWJlcnNcbiAgICAgIHNbKytpXSA9IG51bGw7XG4gICAgICBxLnB1c2goe2k6IGksIHg6IG51bWJlcihhbSwgYm0pfSk7XG4gICAgfVxuICAgIGJpID0gcmVCLmxhc3RJbmRleDtcbiAgfVxuXG4gIC8vIEFkZCByZW1haW5zIG9mIGIuXG4gIGlmIChiaSA8IGIubGVuZ3RoKSB7XG4gICAgYnMgPSBiLnNsaWNlKGJpKTtcbiAgICBpZiAoc1tpXSkgc1tpXSArPSBiczsgLy8gY29hbGVzY2Ugd2l0aCBwcmV2aW91cyBzdHJpbmdcbiAgICBlbHNlIHNbKytpXSA9IGJzO1xuICB9XG5cbiAgLy8gU3BlY2lhbCBvcHRpbWl6YXRpb24gZm9yIG9ubHkgYSBzaW5nbGUgbWF0Y2guXG4gIC8vIE90aGVyd2lzZSwgaW50ZXJwb2xhdGUgZWFjaCBvZiB0aGUgbnVtYmVycyBhbmQgcmVqb2luIHRoZSBzdHJpbmcuXG4gIHJldHVybiBzLmxlbmd0aCA8IDIgPyAocVswXVxuICAgICAgPyBvbmUocVswXS54KVxuICAgICAgOiB6ZXJvKGIpKVxuICAgICAgOiAoYiA9IHEubGVuZ3RoLCBmdW5jdGlvbih0KSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG87IGkgPCBiOyArK2kpIHNbKG8gPSBxW2ldKS5pXSA9IG8ueCh0KTtcbiAgICAgICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgICAgICB9KTtcbn1cbiIsImltcG9ydCBkZWNvbXBvc2UsIHtpZGVudGl0eX0gZnJvbSBcIi4vZGVjb21wb3NlXCI7XG5cbnZhciBjc3NOb2RlLFxuICAgIGNzc1Jvb3QsXG4gICAgY3NzVmlldyxcbiAgICBzdmdOb2RlO1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDc3ModmFsdWUpIHtcbiAgaWYgKHZhbHVlID09PSBcIm5vbmVcIikgcmV0dXJuIGlkZW50aXR5O1xuICBpZiAoIWNzc05vZGUpIGNzc05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiRElWXCIpLCBjc3NSb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBjc3NWaWV3ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIGNzc05vZGUuc3R5bGUudHJhbnNmb3JtID0gdmFsdWU7XG4gIHZhbHVlID0gY3NzVmlldy5nZXRDb21wdXRlZFN0eWxlKGNzc1Jvb3QuYXBwZW5kQ2hpbGQoY3NzTm9kZSksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoXCJ0cmFuc2Zvcm1cIik7XG4gIGNzc1Jvb3QucmVtb3ZlQ2hpbGQoY3NzTm9kZSk7XG4gIHZhbHVlID0gdmFsdWUuc2xpY2UoNywgLTEpLnNwbGl0KFwiLFwiKTtcbiAgcmV0dXJuIGRlY29tcG9zZSgrdmFsdWVbMF0sICt2YWx1ZVsxXSwgK3ZhbHVlWzJdLCArdmFsdWVbM10sICt2YWx1ZVs0XSwgK3ZhbHVlWzVdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3ZnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gaWRlbnRpdHk7XG4gIGlmICghc3ZnTm9kZSkgc3ZnTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsIFwiZ1wiKTtcbiAgc3ZnTm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgdmFsdWUpO1xuICBpZiAoISh2YWx1ZSA9IHN2Z05vZGUudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSkpIHJldHVybiBpZGVudGl0eTtcbiAgdmFsdWUgPSB2YWx1ZS5tYXRyaXg7XG4gIHJldHVybiBkZWNvbXBvc2UodmFsdWUuYSwgdmFsdWUuYiwgdmFsdWUuYywgdmFsdWUuZCwgdmFsdWUuZSwgdmFsdWUuZik7XG59XG4iLCJpbXBvcnQgbnVtYmVyIGZyb20gXCIuLi9udW1iZXJcIjtcbmltcG9ydCB7cGFyc2VDc3MsIHBhcnNlU3ZnfSBmcm9tIFwiLi9wYXJzZVwiO1xuXG5mdW5jdGlvbiBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZSwgcHhDb21tYSwgcHhQYXJlbiwgZGVnUGFyZW4pIHtcblxuICBmdW5jdGlvbiBwb3Aocykge1xuICAgIHJldHVybiBzLmxlbmd0aCA/IHMucG9wKCkgKyBcIiBcIiA6IFwiXCI7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2xhdGUoeGEsIHlhLCB4YiwgeWIsIHMsIHEpIHtcbiAgICBpZiAoeGEgIT09IHhiIHx8IHlhICE9PSB5Yikge1xuICAgICAgdmFyIGkgPSBzLnB1c2goXCJ0cmFuc2xhdGUoXCIsIG51bGwsIHB4Q29tbWEsIG51bGwsIHB4UGFyZW4pO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiB8fCB5Yikge1xuICAgICAgcy5wdXNoKFwidHJhbnNsYXRlKFwiICsgeGIgKyBweENvbW1hICsgeWIgKyBweFBhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByb3RhdGUoYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBpZiAoYSAtIGIgPiAxODApIGIgKz0gMzYwOyBlbHNlIGlmIChiIC0gYSA+IDE4MCkgYSArPSAzNjA7IC8vIHNob3J0ZXN0IHBhdGhcbiAgICAgIHEucHVzaCh7aTogcy5wdXNoKHBvcChzKSArIFwicm90YXRlKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInJvdGF0ZShcIiArIGIgKyBkZWdQYXJlbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2tld1goYSwgYiwgcywgcSkge1xuICAgIGlmIChhICE9PSBiKSB7XG4gICAgICBxLnB1c2goe2k6IHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiLCBudWxsLCBkZWdQYXJlbikgLSAyLCB4OiBudW1iZXIoYSwgYil9KTtcbiAgICB9IGVsc2UgaWYgKGIpIHtcbiAgICAgIHMucHVzaChwb3AocykgKyBcInNrZXdYKFwiICsgYiArIGRlZ1BhcmVuKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzY2FsZSh4YSwgeWEsIHhiLCB5YiwgcywgcSkge1xuICAgIGlmICh4YSAhPT0geGIgfHwgeWEgIT09IHliKSB7XG4gICAgICB2YXIgaSA9IHMucHVzaChwb3AocykgKyBcInNjYWxlKFwiLCBudWxsLCBcIixcIiwgbnVsbCwgXCIpXCIpO1xuICAgICAgcS5wdXNoKHtpOiBpIC0gNCwgeDogbnVtYmVyKHhhLCB4Yil9LCB7aTogaSAtIDIsIHg6IG51bWJlcih5YSwgeWIpfSk7XG4gICAgfSBlbHNlIGlmICh4YiAhPT0gMSB8fCB5YiAhPT0gMSkge1xuICAgICAgcy5wdXNoKHBvcChzKSArIFwic2NhbGUoXCIgKyB4YiArIFwiLFwiICsgeWIgKyBcIilcIik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGEsIGIpIHtcbiAgICB2YXIgcyA9IFtdLCAvLyBzdHJpbmcgY29uc3RhbnRzIGFuZCBwbGFjZWhvbGRlcnNcbiAgICAgICAgcSA9IFtdOyAvLyBudW1iZXIgaW50ZXJwb2xhdG9yc1xuICAgIGEgPSBwYXJzZShhKSwgYiA9IHBhcnNlKGIpO1xuICAgIHRyYW5zbGF0ZShhLnRyYW5zbGF0ZVgsIGEudHJhbnNsYXRlWSwgYi50cmFuc2xhdGVYLCBiLnRyYW5zbGF0ZVksIHMsIHEpO1xuICAgIHJvdGF0ZShhLnJvdGF0ZSwgYi5yb3RhdGUsIHMsIHEpO1xuICAgIHNrZXdYKGEuc2tld1gsIGIuc2tld1gsIHMsIHEpO1xuICAgIHNjYWxlKGEuc2NhbGVYLCBhLnNjYWxlWSwgYi5zY2FsZVgsIGIuc2NhbGVZLCBzLCBxKTtcbiAgICBhID0gYiA9IG51bGw7IC8vIGdjXG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHZhciBpID0gLTEsIG4gPSBxLmxlbmd0aCwgbztcbiAgICAgIHdoaWxlICgrK2kgPCBuKSBzWyhvID0gcVtpXSkuaV0gPSBvLngodCk7XG4gICAgICByZXR1cm4gcy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZUNzcywgXCJweCwgXCIsIFwicHgpXCIsIFwiZGVnKVwiKTtcbmV4cG9ydCB2YXIgaW50ZXJwb2xhdGVUcmFuc2Zvcm1TdmcgPSBpbnRlcnBvbGF0ZVRyYW5zZm9ybShwYXJzZVN2ZywgXCIsIFwiLCBcIilcIiwgXCIpXCIpO1xuIiwiaW1wb3J0IHtjdWJlaGVsaXggYXMgY29sb3JDdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IGNvbG9yLCB7aHVlfSBmcm9tIFwiLi9jb2xvclwiO1xuXG5mdW5jdGlvbiBjdWJlaGVsaXgoaHVlKSB7XG4gIHJldHVybiAoZnVuY3Rpb24gY3ViZWhlbGl4R2FtbWEoeSkge1xuICAgIHkgPSAreTtcblxuICAgIGZ1bmN0aW9uIGN1YmVoZWxpeChzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgaCA9IGh1ZSgoc3RhcnQgPSBjb2xvckN1YmVoZWxpeChzdGFydCkpLmgsIChlbmQgPSBjb2xvckN1YmVoZWxpeChlbmQpKS5oKSxcbiAgICAgICAgICBzID0gY29sb3Ioc3RhcnQucywgZW5kLnMpLFxuICAgICAgICAgIGwgPSBjb2xvcihzdGFydC5sLCBlbmQubCksXG4gICAgICAgICAgb3BhY2l0eSA9IGNvbG9yKHN0YXJ0Lm9wYWNpdHksIGVuZC5vcGFjaXR5KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgICAgIHN0YXJ0LmggPSBoKHQpO1xuICAgICAgICBzdGFydC5zID0gcyh0KTtcbiAgICAgICAgc3RhcnQubCA9IGwoTWF0aC5wb3codCwgeSkpO1xuICAgICAgICBzdGFydC5vcGFjaXR5ID0gb3BhY2l0eSh0KTtcbiAgICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY3ViZWhlbGl4LmdhbW1hID0gY3ViZWhlbGl4R2FtbWE7XG5cbiAgICByZXR1cm4gY3ViZWhlbGl4O1xuICB9KSgxKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3ViZWhlbGl4KGh1ZSk7XG5leHBvcnQgdmFyIGN1YmVoZWxpeExvbmcgPSBjdWJlaGVsaXgoY29sb3IpO1xuIiwidmFyIGZyYW1lID0gMCwgLy8gaXMgYW4gYW5pbWF0aW9uIGZyYW1lIHBlbmRpbmc/XG4gICAgdGltZW91dCA9IDAsIC8vIGlzIGEgdGltZW91dCBwZW5kaW5nP1xuICAgIGludGVydmFsID0gMCwgLy8gYXJlIGFueSB0aW1lcnMgYWN0aXZlP1xuICAgIHBva2VEZWxheSA9IDEwMDAsIC8vIGhvdyBmcmVxdWVudGx5IHdlIGNoZWNrIGZvciBjbG9jayBza2V3XG4gICAgdGFza0hlYWQsXG4gICAgdGFza1RhaWwsXG4gICAgY2xvY2tMYXN0ID0gMCxcbiAgICBjbG9ja05vdyA9IDAsXG4gICAgY2xvY2tTa2V3ID0gMCxcbiAgICBjbG9jayA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gXCJvYmplY3RcIiAmJiBwZXJmb3JtYW5jZS5ub3cgPyBwZXJmb3JtYW5jZSA6IERhdGUsXG4gICAgc2V0RnJhbWUgPSB0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSBcImZ1bmN0aW9uXCIgPyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgOiBmdW5jdGlvbihmKSB7IHNldFRpbWVvdXQoZiwgMTcpOyB9O1xuXG5leHBvcnQgZnVuY3Rpb24gbm93KCkge1xuICByZXR1cm4gY2xvY2tOb3cgfHwgKHNldEZyYW1lKGNsZWFyTm93KSwgY2xvY2tOb3cgPSBjbG9jay5ub3coKSArIGNsb2NrU2tldyk7XG59XG5cbmZ1bmN0aW9uIGNsZWFyTm93KCkge1xuICBjbG9ja05vdyA9IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaW1lcigpIHtcbiAgdGhpcy5fY2FsbCA9XG4gIHRoaXMuX3RpbWUgPVxuICB0aGlzLl9uZXh0ID0gbnVsbDtcbn1cblxuVGltZXIucHJvdG90eXBlID0gdGltZXIucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVGltZXIsXG4gIHJlc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNrLCBkZWxheSwgdGltZSkge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uXCIpO1xuICAgIHRpbWUgPSAodGltZSA9PSBudWxsID8gbm93KCkgOiArdGltZSkgKyAoZGVsYXkgPT0gbnVsbCA/IDAgOiArZGVsYXkpO1xuICAgIGlmICghdGhpcy5fbmV4dCAmJiB0YXNrVGFpbCAhPT0gdGhpcykge1xuICAgICAgaWYgKHRhc2tUYWlsKSB0YXNrVGFpbC5fbmV4dCA9IHRoaXM7XG4gICAgICBlbHNlIHRhc2tIZWFkID0gdGhpcztcbiAgICAgIHRhc2tUYWlsID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5fY2FsbCA9IGNhbGxiYWNrO1xuICAgIHRoaXMuX3RpbWUgPSB0aW1lO1xuICAgIHNsZWVwKCk7XG4gIH0sXG4gIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9jYWxsKSB7XG4gICAgICB0aGlzLl9jYWxsID0gbnVsbDtcbiAgICAgIHRoaXMuX3RpbWUgPSBJbmZpbml0eTtcbiAgICAgIHNsZWVwKCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGltZXIoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICB0LnJlc3RhcnQoY2FsbGJhY2ssIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lckZsdXNoKCkge1xuICBub3coKTsgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUsIGlmIG5vdCBhbHJlYWR5IHNldC5cbiAgKytmcmFtZTsgLy8gUHJldGVuZCB3ZeKAmXZlIHNldCBhbiBhbGFybSwgaWYgd2UgaGF2ZW7igJl0IGFscmVhZHkuXG4gIHZhciB0ID0gdGFza0hlYWQsIGU7XG4gIHdoaWxlICh0KSB7XG4gICAgaWYgKChlID0gY2xvY2tOb3cgLSB0Ll90aW1lKSA+PSAwKSB0Ll9jYWxsLmNhbGwobnVsbCwgZSk7XG4gICAgdCA9IHQuX25leHQ7XG4gIH1cbiAgLS1mcmFtZTtcbn1cblxuZnVuY3Rpb24gd2FrZSgpIHtcbiAgY2xvY2tOb3cgPSAoY2xvY2tMYXN0ID0gY2xvY2subm93KCkpICsgY2xvY2tTa2V3O1xuICBmcmFtZSA9IHRpbWVvdXQgPSAwO1xuICB0cnkge1xuICAgIHRpbWVyRmx1c2goKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBmcmFtZSA9IDA7XG4gICAgbmFwKCk7XG4gICAgY2xvY2tOb3cgPSAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBva2UoKSB7XG4gIHZhciBub3cgPSBjbG9jay5ub3coKSwgZGVsYXkgPSBub3cgLSBjbG9ja0xhc3Q7XG4gIGlmIChkZWxheSA+IHBva2VEZWxheSkgY2xvY2tTa2V3IC09IGRlbGF5LCBjbG9ja0xhc3QgPSBub3c7XG59XG5cbmZ1bmN0aW9uIG5hcCgpIHtcbiAgdmFyIHQwLCB0MSA9IHRhc2tIZWFkLCB0MiwgdGltZSA9IEluZmluaXR5O1xuICB3aGlsZSAodDEpIHtcbiAgICBpZiAodDEuX2NhbGwpIHtcbiAgICAgIGlmICh0aW1lID4gdDEuX3RpbWUpIHRpbWUgPSB0MS5fdGltZTtcbiAgICAgIHQwID0gdDEsIHQxID0gdDEuX25leHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQyID0gdDEuX25leHQsIHQxLl9uZXh0ID0gbnVsbDtcbiAgICAgIHQxID0gdDAgPyB0MC5fbmV4dCA9IHQyIDogdGFza0hlYWQgPSB0MjtcbiAgICB9XG4gIH1cbiAgdGFza1RhaWwgPSB0MDtcbiAgc2xlZXAodGltZSk7XG59XG5cbmZ1bmN0aW9uIHNsZWVwKHRpbWUpIHtcbiAgaWYgKGZyYW1lKSByZXR1cm47IC8vIFNvb25lc3QgYWxhcm0gYWxyZWFkeSBzZXQsIG9yIHdpbGwgYmUuXG4gIGlmICh0aW1lb3V0KSB0aW1lb3V0ID0gY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB2YXIgZGVsYXkgPSB0aW1lIC0gY2xvY2tOb3c7XG4gIGlmIChkZWxheSA+IDI0KSB7XG4gICAgaWYgKHRpbWUgPCBJbmZpbml0eSkgdGltZW91dCA9IHNldFRpbWVvdXQod2FrZSwgZGVsYXkpO1xuICAgIGlmIChpbnRlcnZhbCkgaW50ZXJ2YWwgPSBjbGVhckludGVydmFsKGludGVydmFsKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWludGVydmFsKSBjbG9ja0xhc3QgPSBjbG9ja05vdywgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbChwb2tlLCBwb2tlRGVsYXkpO1xuICAgIGZyYW1lID0gMSwgc2V0RnJhbWUod2FrZSk7XG4gIH1cbn1cbiIsImltcG9ydCB7ZGlzcGF0Y2h9IGZyb20gXCJkMy1kaXNwYXRjaFwiO1xuaW1wb3J0IHt0aW1lciwgdGltZW91dH0gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBlbXB0eU9uID0gZGlzcGF0Y2goXCJzdGFydFwiLCBcImVuZFwiLCBcImludGVycnVwdFwiKTtcbnZhciBlbXB0eVR3ZWVuID0gW107XG5cbmV4cG9ydCB2YXIgQ1JFQVRFRCA9IDA7XG5leHBvcnQgdmFyIFNDSEVEVUxFRCA9IDE7XG5leHBvcnQgdmFyIFNUQVJUSU5HID0gMjtcbmV4cG9ydCB2YXIgU1RBUlRFRCA9IDM7XG5leHBvcnQgdmFyIFJVTk5JTkcgPSA0O1xuZXhwb3J0IHZhciBFTkRJTkcgPSA1O1xuZXhwb3J0IHZhciBFTkRFRCA9IDY7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUsIGlkLCBpbmRleCwgZ3JvdXAsIHRpbWluZykge1xuICB2YXIgc2NoZWR1bGVzID0gbm9kZS5fX3RyYW5zaXRpb247XG4gIGlmICghc2NoZWR1bGVzKSBub2RlLl9fdHJhbnNpdGlvbiA9IHt9O1xuICBlbHNlIGlmIChpZCBpbiBzY2hlZHVsZXMpIHJldHVybjtcbiAgY3JlYXRlKG5vZGUsIGlkLCB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBpbmRleDogaW5kZXgsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBncm91cDogZ3JvdXAsIC8vIEZvciBjb250ZXh0IGR1cmluZyBjYWxsYmFjay5cbiAgICBvbjogZW1wdHlPbixcbiAgICB0d2VlbjogZW1wdHlUd2VlbixcbiAgICB0aW1lOiB0aW1pbmcudGltZSxcbiAgICBkZWxheTogdGltaW5nLmRlbGF5LFxuICAgIGR1cmF0aW9uOiB0aW1pbmcuZHVyYXRpb24sXG4gICAgZWFzZTogdGltaW5nLmVhc2UsXG4gICAgdGltZXI6IG51bGwsXG4gICAgc3RhdGU6IENSRUFURURcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlIHx8ICEoc2NoZWR1bGUgPSBzY2hlZHVsZVtpZF0pIHx8IHNjaGVkdWxlLnN0YXRlID4gQ1JFQVRFRCkgdGhyb3cgbmV3IEVycm9yKFwidG9vIGxhdGVcIik7XG4gIHJldHVybiBzY2hlZHVsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldChub2RlLCBpZCkge1xuICB2YXIgc2NoZWR1bGUgPSBub2RlLl9fdHJhbnNpdGlvbjtcbiAgaWYgKCFzY2hlZHVsZSB8fCAhKHNjaGVkdWxlID0gc2NoZWR1bGVbaWRdKSB8fCBzY2hlZHVsZS5zdGF0ZSA+IFNUQVJUSU5HKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZVwiKTtcbiAgcmV0dXJuIHNjaGVkdWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0KG5vZGUsIGlkKSB7XG4gIHZhciBzY2hlZHVsZSA9IG5vZGUuX190cmFuc2l0aW9uO1xuICBpZiAoIXNjaGVkdWxlIHx8ICEoc2NoZWR1bGUgPSBzY2hlZHVsZVtpZF0pKSB0aHJvdyBuZXcgRXJyb3IoXCJ0b28gbGF0ZVwiKTtcbiAgcmV0dXJuIHNjaGVkdWxlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGUobm9kZSwgaWQsIHNlbGYpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgdHdlZW47XG5cbiAgLy8gSW5pdGlhbGl6ZSB0aGUgc2VsZiB0aW1lciB3aGVuIHRoZSB0cmFuc2l0aW9uIGlzIGNyZWF0ZWQuXG4gIC8vIE5vdGUgdGhlIGFjdHVhbCBkZWxheSBpcyBub3Qga25vd24gdW50aWwgdGhlIGZpcnN0IGNhbGxiYWNrIVxuICBzY2hlZHVsZXNbaWRdID0gc2VsZjtcbiAgc2VsZi50aW1lciA9IHRpbWVyKHNjaGVkdWxlLCAwLCBzZWxmLnRpbWUpO1xuXG4gIGZ1bmN0aW9uIHNjaGVkdWxlKGVsYXBzZWQpIHtcbiAgICBzZWxmLnN0YXRlID0gU0NIRURVTEVEO1xuICAgIHNlbGYudGltZXIucmVzdGFydChzdGFydCwgc2VsZi5kZWxheSwgc2VsZi50aW1lKTtcblxuICAgIC8vIElmIHRoZSBlbGFwc2VkIGRlbGF5IGlzIGxlc3MgdGhhbiBvdXIgZmlyc3Qgc2xlZXAsIHN0YXJ0IGltbWVkaWF0ZWx5LlxuICAgIGlmIChzZWxmLmRlbGF5IDw9IGVsYXBzZWQpIHN0YXJ0KGVsYXBzZWQgLSBzZWxmLmRlbGF5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGVsYXBzZWQpIHtcbiAgICB2YXIgaSwgaiwgbiwgbztcblxuICAgIC8vIElmIHRoZSBzdGF0ZSBpcyBub3QgU0NIRURVTEVELCB0aGVuIHdlIHByZXZpb3VzbHkgZXJyb3JlZCBvbiBzdGFydC5cbiAgICBpZiAoc2VsZi5zdGF0ZSAhPT0gU0NIRURVTEVEKSByZXR1cm4gc3RvcCgpO1xuXG4gICAgZm9yIChpIGluIHNjaGVkdWxlcykge1xuICAgICAgbyA9IHNjaGVkdWxlc1tpXTtcbiAgICAgIGlmIChvLm5hbWUgIT09IHNlbGYubmFtZSkgY29udGludWU7XG5cbiAgICAgIC8vIFdoaWxlIHRoaXMgZWxlbWVudCBhbHJlYWR5IGhhcyBhIHN0YXJ0aW5nIHRyYW5zaXRpb24gZHVyaW5nIHRoaXMgZnJhbWUsXG4gICAgICAvLyBkZWZlciBzdGFydGluZyBhbiBpbnRlcnJ1cHRpbmcgdHJhbnNpdGlvbiB1bnRpbCB0aGF0IHRyYW5zaXRpb24gaGFzIGFcbiAgICAgIC8vIGNoYW5jZSB0byB0aWNrIChhbmQgcG9zc2libHkgZW5kKTsgc2VlIGQzL2QzLXRyYW5zaXRpb24jNTQhXG4gICAgICBpZiAoby5zdGF0ZSA9PT0gU1RBUlRFRCkgcmV0dXJuIHRpbWVvdXQoc3RhcnQpO1xuXG4gICAgICAvLyBJbnRlcnJ1cHQgdGhlIGFjdGl2ZSB0cmFuc2l0aW9uLCBpZiBhbnkuXG4gICAgICAvLyBEaXNwYXRjaCB0aGUgaW50ZXJydXB0IGV2ZW50LlxuICAgICAgaWYgKG8uc3RhdGUgPT09IFJVTk5JTkcpIHtcbiAgICAgICAgby5zdGF0ZSA9IEVOREVEO1xuICAgICAgICBvLnRpbWVyLnN0b3AoKTtcbiAgICAgICAgby5vbi5jYWxsKFwiaW50ZXJydXB0XCIsIG5vZGUsIG5vZGUuX19kYXRhX18sIG8uaW5kZXgsIG8uZ3JvdXApO1xuICAgICAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICAgICAgfVxuXG4gICAgICAvLyBDYW5jZWwgYW55IHByZS1lbXB0ZWQgdHJhbnNpdGlvbnMuIE5vIGludGVycnVwdCBldmVudCBpcyBkaXNwYXRjaGVkXG4gICAgICAvLyBiZWNhdXNlIHRoZSBjYW5jZWxsZWQgdHJhbnNpdGlvbnMgbmV2ZXIgc3RhcnRlZC4gTm90ZSB0aGF0IHRoaXMgYWxzb1xuICAgICAgLy8gcmVtb3ZlcyB0aGlzIHRyYW5zaXRpb24gZnJvbSB0aGUgcGVuZGluZyBsaXN0IVxuICAgICAgZWxzZSBpZiAoK2kgPCBpZCkge1xuICAgICAgICBvLnN0YXRlID0gRU5ERUQ7XG4gICAgICAgIG8udGltZXIuc3RvcCgpO1xuICAgICAgICBkZWxldGUgc2NoZWR1bGVzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlZmVyIHRoZSBmaXJzdCB0aWNrIHRvIGVuZCBvZiB0aGUgY3VycmVudCBmcmFtZTsgc2VlIGQzL2QzIzE1NzYuXG4gICAgLy8gTm90ZSB0aGUgdHJhbnNpdGlvbiBtYXkgYmUgY2FuY2VsZWQgYWZ0ZXIgc3RhcnQgYW5kIGJlZm9yZSB0aGUgZmlyc3QgdGljayFcbiAgICAvLyBOb3RlIHRoaXMgbXVzdCBiZSBzY2hlZHVsZWQgYmVmb3JlIHRoZSBzdGFydCBldmVudDsgc2VlIGQzL2QzLXRyYW5zaXRpb24jMTYhXG4gICAgLy8gQXNzdW1pbmcgdGhpcyBpcyBzdWNjZXNzZnVsLCBzdWJzZXF1ZW50IGNhbGxiYWNrcyBnbyBzdHJhaWdodCB0byB0aWNrLlxuICAgIHRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoc2VsZi5zdGF0ZSA9PT0gU1RBUlRFRCkge1xuICAgICAgICBzZWxmLnN0YXRlID0gUlVOTklORztcbiAgICAgICAgc2VsZi50aW1lci5yZXN0YXJ0KHRpY2ssIHNlbGYuZGVsYXksIHNlbGYudGltZSk7XG4gICAgICAgIHRpY2soZWxhcHNlZCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBEaXNwYXRjaCB0aGUgc3RhcnQgZXZlbnQuXG4gICAgLy8gTm90ZSB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgdGhlIHR3ZWVuIGFyZSBpbml0aWFsaXplZC5cbiAgICBzZWxmLnN0YXRlID0gU1RBUlRJTkc7XG4gICAgc2VsZi5vbi5jYWxsKFwic3RhcnRcIiwgbm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCk7XG4gICAgaWYgKHNlbGYuc3RhdGUgIT09IFNUQVJUSU5HKSByZXR1cm47IC8vIGludGVycnVwdGVkXG4gICAgc2VsZi5zdGF0ZSA9IFNUQVJURUQ7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSB0d2VlbiwgZGVsZXRpbmcgbnVsbCB0d2Vlbi5cbiAgICB0d2VlbiA9IG5ldyBBcnJheShuID0gc2VsZi50d2Vlbi5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGogPSAtMTsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG8gPSBzZWxmLnR3ZWVuW2ldLnZhbHVlLmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgc2VsZi5pbmRleCwgc2VsZi5ncm91cCkpIHtcbiAgICAgICAgdHdlZW5bKytqXSA9IG87XG4gICAgICB9XG4gICAgfVxuICAgIHR3ZWVuLmxlbmd0aCA9IGogKyAxO1xuICB9XG5cbiAgZnVuY3Rpb24gdGljayhlbGFwc2VkKSB7XG4gICAgdmFyIHQgPSBlbGFwc2VkIDwgc2VsZi5kdXJhdGlvbiA/IHNlbGYuZWFzZS5jYWxsKG51bGwsIGVsYXBzZWQgLyBzZWxmLmR1cmF0aW9uKSA6IChzZWxmLnRpbWVyLnJlc3RhcnQoc3RvcCksIHNlbGYuc3RhdGUgPSBFTkRJTkcsIDEpLFxuICAgICAgICBpID0gLTEsXG4gICAgICAgIG4gPSB0d2Vlbi5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpIDwgbikge1xuICAgICAgdHdlZW5baV0uY2FsbChudWxsLCB0KTtcbiAgICB9XG5cbiAgICAvLyBEaXNwYXRjaCB0aGUgZW5kIGV2ZW50LlxuICAgIGlmIChzZWxmLnN0YXRlID09PSBFTkRJTkcpIHtcbiAgICAgIHNlbGYub24uY2FsbChcImVuZFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzZWxmLmluZGV4LCBzZWxmLmdyb3VwKTtcbiAgICAgIHN0b3AoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdG9wKCkge1xuICAgIHNlbGYuc3RhdGUgPSBFTkRFRDtcbiAgICBzZWxmLnRpbWVyLnN0b3AoKTtcbiAgICBkZWxldGUgc2NoZWR1bGVzW2lkXTtcbiAgICBmb3IgKHZhciBpIGluIHNjaGVkdWxlcykgcmV0dXJuOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgZGVsZXRlIG5vZGUuX190cmFuc2l0aW9uO1xuICB9XG59XG4iLCJpbXBvcnQge2dldCwgc2V0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5mdW5jdGlvbiB0d2VlblJlbW92ZShpZCwgbmFtZSkge1xuICB2YXIgdHdlZW4wLCB0d2VlbjE7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzZXQodGhpcywgaWQpLFxuICAgICAgICB0d2VlbiA9IHNjaGVkdWxlLnR3ZWVuO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCB0d2VlbiB3aXRoIHRoZSBwcmV2aW91cyBub2RlLFxuICAgIC8vIGp1c3QgYXNzaWduIHRoZSB1cGRhdGVkIHNoYXJlZCB0d2VlbiBhbmQgd2XigJlyZSBkb25lIVxuICAgIC8vIE90aGVyd2lzZSwgY29weS1vbi13cml0ZS5cbiAgICBpZiAodHdlZW4gIT09IHR3ZWVuMCkge1xuICAgICAgdHdlZW4xID0gdHdlZW4wID0gdHdlZW47XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHR3ZWVuMS5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgICAgaWYgKHR3ZWVuMVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgdHdlZW4xID0gdHdlZW4xLnNsaWNlKCk7XG4gICAgICAgICAgdHdlZW4xLnNwbGljZShpLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHNjaGVkdWxlLnR3ZWVuID0gdHdlZW4xO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0d2VlbkZ1bmN0aW9uKGlkLCBuYW1lLCB2YWx1ZSkge1xuICB2YXIgdHdlZW4wLCB0d2VlbjE7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNjaGVkdWxlID0gc2V0KHRoaXMsIGlkKSxcbiAgICAgICAgdHdlZW4gPSBzY2hlZHVsZS50d2VlbjtcblxuICAgIC8vIElmIHRoaXMgbm9kZSBzaGFyZWQgdHdlZW4gd2l0aCB0aGUgcHJldmlvdXMgbm9kZSxcbiAgICAvLyBqdXN0IGFzc2lnbiB0aGUgdXBkYXRlZCBzaGFyZWQgdHdlZW4gYW5kIHdl4oCZcmUgZG9uZSFcbiAgICAvLyBPdGhlcndpc2UsIGNvcHktb24td3JpdGUuXG4gICAgaWYgKHR3ZWVuICE9PSB0d2VlbjApIHtcbiAgICAgIHR3ZWVuMSA9ICh0d2VlbjAgPSB0d2Vlbikuc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIHQgPSB7bmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlfSwgaSA9IDAsIG4gPSB0d2VlbjEubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGlmICh0d2VlbjFbaV0ubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICAgIHR3ZWVuMVtpXSA9IHQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpID09PSBuKSB0d2VlbjEucHVzaCh0KTtcbiAgICB9XG5cbiAgICBzY2hlZHVsZS50d2VlbiA9IHR3ZWVuMTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGlkID0gdGhpcy5faWQ7XG5cbiAgbmFtZSArPSBcIlwiO1xuXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHZhciB0d2VlbiA9IGdldCh0aGlzLm5vZGUoKSwgaWQpLnR3ZWVuO1xuICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHdlZW4ubGVuZ3RoLCB0OyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKHQgPSB0d2VlbltpXSkubmFtZSA9PT0gbmFtZSkge1xuICAgICAgICByZXR1cm4gdC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gdGhpcy5lYWNoKCh2YWx1ZSA9PSBudWxsID8gdHdlZW5SZW1vdmUgOiB0d2VlbkZ1bmN0aW9uKShpZCwgbmFtZSwgdmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR3ZWVuVmFsdWUodHJhbnNpdGlvbiwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIGlkID0gdHJhbnNpdGlvbi5faWQ7XG5cbiAgdHJhbnNpdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIHZhciBzY2hlZHVsZSA9IHNldCh0aGlzLCBpZCk7XG4gICAgKHNjaGVkdWxlLnZhbHVlIHx8IChzY2hlZHVsZS52YWx1ZSA9IHt9KSlbbmFtZV0gPSB2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIHJldHVybiBnZXQobm9kZSwgaWQpLnZhbHVlW25hbWVdO1xuICB9O1xufVxuIiwiaW1wb3J0IHtpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZyBhcyBpbnRlcnBvbGF0ZVRyYW5zZm9ybX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge25hbWVzcGFjZX0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHt0d2VlblZhbHVlfSBmcm9tIFwiLi90d2VlblwiO1xuaW1wb3J0IGludGVycG9sYXRlIGZyb20gXCIuL2ludGVycG9sYXRlXCI7XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmUobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGF0dHJSZW1vdmVOUyhmdWxsbmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyQ29uc3RhbnQobmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlMSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTAgPSB0aGlzLmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwID8gaW50ZXJwb2xhdGUwXG4gICAgICAgIDogaW50ZXJwb2xhdGUwID0gaW50ZXJwb2xhdGUodmFsdWUwMCA9IHZhbHVlMCwgdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckNvbnN0YW50TlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZTEpIHtcbiAgdmFyIHZhbHVlMDAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhdHRyRnVuY3Rpb24obmFtZSwgaW50ZXJwb2xhdGUsIHZhbHVlKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgdmFsdWUxMCxcbiAgICAgIGludGVycG9sYXRlMDtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTAsIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgcmV0dXJuIHZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgdmFsdWUwID0gdGhpcy5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXR0ckZ1bmN0aW9uTlMoZnVsbG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwLCB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICBpZiAodmFsdWUxID09IG51bGwpIHJldHVybiB2b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZnVsbG5hbWUuc3BhY2UsIGZ1bGxuYW1lLmxvY2FsKTtcbiAgICB2YWx1ZTAgPSB0aGlzLmdldEF0dHJpYnV0ZU5TKGZ1bGxuYW1lLnNwYWNlLCBmdWxsbmFtZS5sb2NhbCk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdmFyIGZ1bGxuYW1lID0gbmFtZXNwYWNlKG5hbWUpLCBpID0gZnVsbG5hbWUgPT09IFwidHJhbnNmb3JtXCIgPyBpbnRlcnBvbGF0ZVRyYW5zZm9ybSA6IGludGVycG9sYXRlO1xuICByZXR1cm4gdGhpcy5hdHRyVHdlZW4obmFtZSwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gKGZ1bGxuYW1lLmxvY2FsID8gYXR0ckZ1bmN0aW9uTlMgOiBhdHRyRnVuY3Rpb24pKGZ1bGxuYW1lLCBpLCB0d2VlblZhbHVlKHRoaXMsIFwiYXR0ci5cIiArIG5hbWUsIHZhbHVlKSlcbiAgICAgIDogdmFsdWUgPT0gbnVsbCA/IChmdWxsbmFtZS5sb2NhbCA/IGF0dHJSZW1vdmVOUyA6IGF0dHJSZW1vdmUpKGZ1bGxuYW1lKVxuICAgICAgOiAoZnVsbG5hbWUubG9jYWwgPyBhdHRyQ29uc3RhbnROUyA6IGF0dHJDb25zdGFudCkoZnVsbG5hbWUsIGksIHZhbHVlICsgXCJcIikpO1xufVxuIiwiaW1wb3J0IHtuYW1lc3BhY2V9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcblxuZnVuY3Rpb24gYXR0clR3ZWVuTlMoZnVsbG5hbWUsIHZhbHVlKSB7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBub2RlID0gdGhpcywgaSA9IHZhbHVlLmFwcGx5KG5vZGUsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGkgJiYgZnVuY3Rpb24odCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhmdWxsbmFtZS5zcGFjZSwgZnVsbG5hbWUubG9jYWwsIGkodCkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZnVuY3Rpb24gYXR0clR3ZWVuKG5hbWUsIHZhbHVlKSB7XG4gIGZ1bmN0aW9uIHR3ZWVuKCkge1xuICAgIHZhciBub2RlID0gdGhpcywgaSA9IHZhbHVlLmFwcGx5KG5vZGUsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIGkgJiYgZnVuY3Rpb24odCkge1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgaSh0KSk7XG4gICAgfTtcbiAgfVxuICB0d2Vlbi5fdmFsdWUgPSB2YWx1ZTtcbiAgcmV0dXJuIHR3ZWVuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB2YXIga2V5ID0gXCJhdHRyLlwiICsgbmFtZTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSByZXR1cm4gKGtleSA9IHRoaXMudHdlZW4oa2V5KSkgJiYga2V5Ll92YWx1ZTtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgbnVsbCk7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yO1xuICB2YXIgZnVsbG5hbWUgPSBuYW1lc3BhY2UobmFtZSk7XG4gIHJldHVybiB0aGlzLnR3ZWVuKGtleSwgKGZ1bGxuYW1lLmxvY2FsID8gYXR0clR3ZWVuTlMgOiBhdHRyVHdlZW4pKGZ1bGxuYW1lLCB2YWx1ZSkpO1xufVxuIiwiaW1wb3J0IHtnZXQsIGluaXR9IGZyb20gXCIuL3NjaGVkdWxlXCI7XG5cbmZ1bmN0aW9uIGRlbGF5RnVuY3Rpb24oaWQsIHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBpbml0KHRoaXMsIGlkKS5kZWxheSA9ICt2YWx1ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBkZWxheUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPSArdmFsdWUsIGZ1bmN0aW9uKCkge1xuICAgIGluaXQodGhpcywgaWQpLmRlbGF5ID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGRlbGF5RnVuY3Rpb25cbiAgICAgICAgICA6IGRlbGF5Q29uc3RhbnQpKGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmRlbGF5O1xufVxuIiwiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZnVuY3Rpb24gZHVyYXRpb25GdW5jdGlvbihpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZHVyYXRpb24gPSArdmFsdWUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZHVyYXRpb25Db25zdGFudChpZCwgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID0gK3ZhbHVlLCBmdW5jdGlvbigpIHtcbiAgICBzZXQodGhpcywgaWQpLmR1cmF0aW9uID0gdmFsdWU7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHZhciBpZCA9IHRoaXMuX2lkO1xuXG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuZWFjaCgodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IGR1cmF0aW9uRnVuY3Rpb25cbiAgICAgICAgICA6IGR1cmF0aW9uQ29uc3RhbnQpKGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmR1cmF0aW9uO1xufVxuIiwiaW1wb3J0IHtnZXQsIHNldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZnVuY3Rpb24gZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHNldCh0aGlzLCBpZCkuZWFzZSA9IHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgPyB0aGlzLmVhY2goZWFzZUNvbnN0YW50KGlkLCB2YWx1ZSkpXG4gICAgICA6IGdldCh0aGlzLm5vZGUoKSwgaWQpLmVhc2U7XG59XG4iLCJpbXBvcnQge2dldCwgc2V0LCBpbml0fSBmcm9tIFwiLi9zY2hlZHVsZVwiO1xuXG5mdW5jdGlvbiBzdGFydChuYW1lKSB7XG4gIHJldHVybiAobmFtZSArIFwiXCIpLnRyaW0oKS5zcGxpdCgvXnxcXHMrLykuZXZlcnkoZnVuY3Rpb24odCkge1xuICAgIHZhciBpID0gdC5pbmRleE9mKFwiLlwiKTtcbiAgICBpZiAoaSA+PSAwKSB0ID0gdC5zbGljZSgwLCBpKTtcbiAgICByZXR1cm4gIXQgfHwgdCA9PT0gXCJzdGFydFwiO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gb25GdW5jdGlvbihpZCwgbmFtZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG9uMCwgb24xLCBzaXQgPSBzdGFydChuYW1lKSA/IGluaXQgOiBzZXQ7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2NoZWR1bGUgPSBzaXQodGhpcywgaWQpLFxuICAgICAgICBvbiA9IHNjaGVkdWxlLm9uO1xuXG4gICAgLy8gSWYgdGhpcyBub2RlIHNoYXJlZCBhIGRpc3BhdGNoIHdpdGggdGhlIHByZXZpb3VzIG5vZGUsXG4gICAgLy8ganVzdCBhc3NpZ24gdGhlIHVwZGF0ZWQgc2hhcmVkIGRpc3BhdGNoIGFuZCB3ZeKAmXJlIGRvbmUhXG4gICAgLy8gT3RoZXJ3aXNlLCBjb3B5LW9uLXdyaXRlLlxuICAgIGlmIChvbiAhPT0gb24wKSAob24xID0gKG9uMCA9IG9uKS5jb3B5KCkpLm9uKG5hbWUsIGxpc3RlbmVyKTtcblxuICAgIHNjaGVkdWxlLm9uID0gb24xO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCBsaXN0ZW5lcikge1xuICB2YXIgaWQgPSB0aGlzLl9pZDtcblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDJcbiAgICAgID8gZ2V0KHRoaXMubm9kZSgpLCBpZCkub24ub24obmFtZSlcbiAgICAgIDogdGhpcy5lYWNoKG9uRnVuY3Rpb24oaWQsIG5hbWUsIGxpc3RlbmVyKSk7XG59XG4iLCJmdW5jdGlvbiByZW1vdmVGdW5jdGlvbihpZCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgICBmb3IgKHZhciBpIGluIHRoaXMuX190cmFuc2l0aW9uKSBpZiAoK2kgIT09IGlkKSByZXR1cm47XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMub24oXCJlbmQucmVtb3ZlXCIsIHJlbW92ZUZ1bmN0aW9uKHRoaXMuX2lkKSk7XG59XG4iLCJpbXBvcnQge2ludGVycG9sYXRlVHJhbnNmb3JtQ3NzIGFzIGludGVycG9sYXRlVHJhbnNmb3JtfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcbmltcG9ydCB7c3R5bGV9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7dHdlZW5WYWx1ZX0gZnJvbSBcIi4vdHdlZW5cIjtcbmltcG9ydCBpbnRlcnBvbGF0ZSBmcm9tIFwiLi9pbnRlcnBvbGF0ZVwiO1xuXG5mdW5jdGlvbiBzdHlsZVJlbW92ZShuYW1lLCBpbnRlcnBvbGF0ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9ICh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG5hbWUpLCBzdHlsZSh0aGlzLCBuYW1lKSk7XG4gICAgcmV0dXJuIHZhbHVlMCA9PT0gdmFsdWUxID8gbnVsbFxuICAgICAgICA6IHZhbHVlMCA9PT0gdmFsdWUwMCAmJiB2YWx1ZTEgPT09IHZhbHVlMTAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEwID0gdmFsdWUxKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVSZW1vdmVFbmQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuYW1lKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3R5bGVDb25zdGFudChuYW1lLCBpbnRlcnBvbGF0ZSwgdmFsdWUxKSB7XG4gIHZhciB2YWx1ZTAwLFxuICAgICAgaW50ZXJwb2xhdGUwO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlMCA9IHN0eWxlKHRoaXMsIG5hbWUpO1xuICAgIHJldHVybiB2YWx1ZTAgPT09IHZhbHVlMSA/IG51bGxcbiAgICAgICAgOiB2YWx1ZTAgPT09IHZhbHVlMDAgPyBpbnRlcnBvbGF0ZTBcbiAgICAgICAgOiBpbnRlcnBvbGF0ZTAgPSBpbnRlcnBvbGF0ZSh2YWx1ZTAwID0gdmFsdWUwLCB2YWx1ZTEpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHlsZUZ1bmN0aW9uKG5hbWUsIGludGVycG9sYXRlLCB2YWx1ZSkge1xuICB2YXIgdmFsdWUwMCxcbiAgICAgIHZhbHVlMTAsXG4gICAgICBpbnRlcnBvbGF0ZTA7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWUwID0gc3R5bGUodGhpcywgbmFtZSksXG4gICAgICAgIHZhbHVlMSA9IHZhbHVlKHRoaXMpO1xuICAgIGlmICh2YWx1ZTEgPT0gbnVsbCkgdmFsdWUxID0gKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobmFtZSksIHN0eWxlKHRoaXMsIG5hbWUpKTtcbiAgICByZXR1cm4gdmFsdWUwID09PSB2YWx1ZTEgPyBudWxsXG4gICAgICAgIDogdmFsdWUwID09PSB2YWx1ZTAwICYmIHZhbHVlMSA9PT0gdmFsdWUxMCA/IGludGVycG9sYXRlMFxuICAgICAgICA6IGludGVycG9sYXRlMCA9IGludGVycG9sYXRlKHZhbHVlMDAgPSB2YWx1ZTAsIHZhbHVlMTAgPSB2YWx1ZTEpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lLCB2YWx1ZSwgcHJpb3JpdHkpIHtcbiAgdmFyIGkgPSAobmFtZSArPSBcIlwiKSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGludGVycG9sYXRlVHJhbnNmb3JtIDogaW50ZXJwb2xhdGU7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gdGhpc1xuICAgICAgICAgIC5zdHlsZVR3ZWVuKG5hbWUsIHN0eWxlUmVtb3ZlKG5hbWUsIGkpKVxuICAgICAgICAgIC5vbihcImVuZC5zdHlsZS5cIiArIG5hbWUsIHN0eWxlUmVtb3ZlRW5kKG5hbWUpKVxuICAgICAgOiB0aGlzLnN0eWxlVHdlZW4obmFtZSwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IHN0eWxlRnVuY3Rpb24obmFtZSwgaSwgdHdlZW5WYWx1ZSh0aGlzLCBcInN0eWxlLlwiICsgbmFtZSwgdmFsdWUpKVxuICAgICAgICAgIDogc3R5bGVDb25zdGFudChuYW1lLCBpLCB2YWx1ZSArIFwiXCIpLCBwcmlvcml0eSk7XG59XG4iLCJmdW5jdGlvbiBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSkge1xuICBmdW5jdGlvbiB0d2VlbigpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMsIGkgPSB2YWx1ZS5hcHBseShub2RlLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiBpICYmIGZ1bmN0aW9uKHQpIHtcbiAgICAgIG5vZGUuc3R5bGUuc2V0UHJvcGVydHkobmFtZSwgaSh0KSwgcHJpb3JpdHkpO1xuICAgIH07XG4gIH1cbiAgdHdlZW4uX3ZhbHVlID0gdmFsdWU7XG4gIHJldHVybiB0d2Vlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obmFtZSwgdmFsdWUsIHByaW9yaXR5KSB7XG4gIHZhciBrZXkgPSBcInN0eWxlLlwiICsgKG5hbWUgKz0gXCJcIik7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikgcmV0dXJuIChrZXkgPSB0aGlzLnR3ZWVuKGtleSkpICYmIGtleS5fdmFsdWU7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gdGhpcy50d2VlbihrZXksIG51bGwpO1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSBcImZ1bmN0aW9uXCIpIHRocm93IG5ldyBFcnJvcjtcbiAgcmV0dXJuIHRoaXMudHdlZW4oa2V5LCBzdHlsZVR3ZWVuKG5hbWUsIHZhbHVlLCBwcmlvcml0eSA9PSBudWxsID8gXCJcIiA6IHByaW9yaXR5KSk7XG59XG4iLCJpbXBvcnQge3R3ZWVuVmFsdWV9IGZyb20gXCIuL3R3ZWVuXCI7XG5cbmZ1bmN0aW9uIHRleHRDb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9O1xufVxuXG5mdW5jdGlvbiB0ZXh0RnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciB2YWx1ZTEgPSB2YWx1ZSh0aGlzKTtcbiAgICB0aGlzLnRleHRDb250ZW50ID0gdmFsdWUxID09IG51bGwgPyBcIlwiIDogdmFsdWUxO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdGhpcy50d2VlbihcInRleHRcIiwgdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gdGV4dEZ1bmN0aW9uKHR3ZWVuVmFsdWUodGhpcywgXCJ0ZXh0XCIsIHZhbHVlKSlcbiAgICAgIDogdGV4dENvbnN0YW50KHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKyBcIlwiKSk7XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0ciBmcm9tIFwiLi9hdHRyXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9hdHRyVHdlZW4gZnJvbSBcIi4vYXR0clR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9kZWxheSBmcm9tIFwiLi9kZWxheVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZHVyYXRpb24gZnJvbSBcIi4vZHVyYXRpb25cIjtcbmltcG9ydCB0cmFuc2l0aW9uX2Vhc2UgZnJvbSBcIi4vZWFzZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fZmlsdGVyIGZyb20gXCIuL2ZpbHRlclwiO1xuaW1wb3J0IHRyYW5zaXRpb25fbWVyZ2UgZnJvbSBcIi4vbWVyZ2VcIjtcbmltcG9ydCB0cmFuc2l0aW9uX29uIGZyb20gXCIuL29uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9yZW1vdmUgZnJvbSBcIi4vcmVtb3ZlXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3QgZnJvbSBcIi4vc2VsZWN0XCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3RBbGwgZnJvbSBcIi4vc2VsZWN0QWxsXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zZWxlY3Rpb24gZnJvbSBcIi4vc2VsZWN0aW9uXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl9zdHlsZSBmcm9tIFwiLi9zdHlsZVwiO1xuaW1wb3J0IHRyYW5zaXRpb25fc3R5bGVUd2VlbiBmcm9tIFwiLi9zdHlsZVR3ZWVuXCI7XG5pbXBvcnQgdHJhbnNpdGlvbl90ZXh0IGZyb20gXCIuL3RleHRcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHRyYW5zaXRpb25fdHdlZW4gZnJvbSBcIi4vdHdlZW5cIjtcblxudmFyIGlkID0gMDtcblxuZXhwb3J0IGZ1bmN0aW9uIFRyYW5zaXRpb24oZ3JvdXBzLCBwYXJlbnRzLCBuYW1lLCBpZCkge1xuICB0aGlzLl9ncm91cHMgPSBncm91cHM7XG4gIHRoaXMuX3BhcmVudHMgPSBwYXJlbnRzO1xuICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgdGhpcy5faWQgPSBpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvbihuYW1lKSB7XG4gIHJldHVybiBzZWxlY3Rpb24oKS50cmFuc2l0aW9uKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQoKSB7XG4gIHJldHVybiArK2lkO1xufVxuXG52YXIgc2VsZWN0aW9uX3Byb3RvdHlwZSA9IHNlbGVjdGlvbi5wcm90b3R5cGU7XG5cblRyYW5zaXRpb24ucHJvdG90eXBlID0gdHJhbnNpdGlvbi5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBUcmFuc2l0aW9uLFxuICBzZWxlY3Q6IHRyYW5zaXRpb25fc2VsZWN0LFxuICBzZWxlY3RBbGw6IHRyYW5zaXRpb25fc2VsZWN0QWxsLFxuICBmaWx0ZXI6IHRyYW5zaXRpb25fZmlsdGVyLFxuICBtZXJnZTogdHJhbnNpdGlvbl9tZXJnZSxcbiAgc2VsZWN0aW9uOiB0cmFuc2l0aW9uX3NlbGVjdGlvbixcbiAgdHJhbnNpdGlvbjogdHJhbnNpdGlvbl90cmFuc2l0aW9uLFxuICBjYWxsOiBzZWxlY3Rpb25fcHJvdG90eXBlLmNhbGwsXG4gIG5vZGVzOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGVzLFxuICBub2RlOiBzZWxlY3Rpb25fcHJvdG90eXBlLm5vZGUsXG4gIHNpemU6IHNlbGVjdGlvbl9wcm90b3R5cGUuc2l6ZSxcbiAgZW1wdHk6IHNlbGVjdGlvbl9wcm90b3R5cGUuZW1wdHksXG4gIGVhY2g6IHNlbGVjdGlvbl9wcm90b3R5cGUuZWFjaCxcbiAgb246IHRyYW5zaXRpb25fb24sXG4gIGF0dHI6IHRyYW5zaXRpb25fYXR0cixcbiAgYXR0clR3ZWVuOiB0cmFuc2l0aW9uX2F0dHJUd2VlbixcbiAgc3R5bGU6IHRyYW5zaXRpb25fc3R5bGUsXG4gIHN0eWxlVHdlZW46IHRyYW5zaXRpb25fc3R5bGVUd2VlbixcbiAgdGV4dDogdHJhbnNpdGlvbl90ZXh0LFxuICByZW1vdmU6IHRyYW5zaXRpb25fcmVtb3ZlLFxuICB0d2VlbjogdHJhbnNpdGlvbl90d2VlbixcbiAgZGVsYXk6IHRyYW5zaXRpb25fZGVsYXksXG4gIGR1cmF0aW9uOiB0cmFuc2l0aW9uX2R1cmF0aW9uLFxuICBlYXNlOiB0cmFuc2l0aW9uX2Vhc2Vcbn07XG4iLCJleHBvcnQgZnVuY3Rpb24gY3ViaWNJbih0KSB7XG4gIHJldHVybiB0ICogdCAqIHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY091dCh0KSB7XG4gIHJldHVybiAtLXQgKiB0ICogdCArIDE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjdWJpY0luT3V0KHQpIHtcbiAgcmV0dXJuICgodCAqPSAyKSA8PSAxID8gdCAqIHQgKiB0IDogKHQgLT0gMikgKiB0ICogdCArIDIpIC8gMjtcbn1cbiIsImltcG9ydCB7VHJhbnNpdGlvbiwgbmV3SWR9IGZyb20gXCIuLi90cmFuc2l0aW9uL2luZGV4XCI7XG5pbXBvcnQgc2NoZWR1bGUgZnJvbSBcIi4uL3RyYW5zaXRpb24vc2NoZWR1bGVcIjtcbmltcG9ydCB7ZWFzZUN1YmljSW5PdXR9IGZyb20gXCJkMy1lYXNlXCI7XG5pbXBvcnQge25vd30gZnJvbSBcImQzLXRpbWVyXCI7XG5cbnZhciBkZWZhdWx0VGltaW5nID0ge1xuICB0aW1lOiBudWxsLCAvLyBTZXQgb24gdXNlLlxuICBkZWxheTogMCxcbiAgZHVyYXRpb246IDI1MCxcbiAgZWFzZTogZWFzZUN1YmljSW5PdXRcbn07XG5cbmZ1bmN0aW9uIGluaGVyaXQobm9kZSwgaWQpIHtcbiAgdmFyIHRpbWluZztcbiAgd2hpbGUgKCEodGltaW5nID0gbm9kZS5fX3RyYW5zaXRpb24pIHx8ICEodGltaW5nID0gdGltaW5nW2lkXSkpIHtcbiAgICBpZiAoIShub2RlID0gbm9kZS5wYXJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRUaW1pbmcudGltZSA9IG5vdygpLCBkZWZhdWx0VGltaW5nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGltaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBpZCxcbiAgICAgIHRpbWluZztcblxuICBpZiAobmFtZSBpbnN0YW5jZW9mIFRyYW5zaXRpb24pIHtcbiAgICBpZCA9IG5hbWUuX2lkLCBuYW1lID0gbmFtZS5fbmFtZTtcbiAgfSBlbHNlIHtcbiAgICBpZCA9IG5ld0lkKCksICh0aW1pbmcgPSBkZWZhdWx0VGltaW5nKS50aW1lID0gbm93KCksIG5hbWUgPSBuYW1lID09IG51bGwgPyBudWxsIDogbmFtZSArIFwiXCI7XG4gIH1cblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZCwgaSwgZ3JvdXAsIHRpbWluZyB8fCBpbmhlcml0KG5vZGUsIGlkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKGdyb3VwcywgdGhpcy5fcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwiaW1wb3J0IHtkaXNwYXRjaH0gZnJvbSBcImQzLWRpc3BhdGNoXCI7XG5pbXBvcnQge2RyYWdEaXNhYmxlLCBkcmFnRW5hYmxlfSBmcm9tIFwiZDMtZHJhZ1wiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2N1c3RvbUV2ZW50LCBldmVudCwgbW91c2UsIHNlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHtpbnRlcnJ1cHR9IGZyb20gXCJkMy10cmFuc2l0aW9uXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBCcnVzaEV2ZW50IGZyb20gXCIuL2V2ZW50XCI7XG5pbXBvcnQgbm9ldmVudCwge25vcHJvcGFnYXRpb259IGZyb20gXCIuL25vZXZlbnRcIjtcblxudmFyIE1PREVfRFJBRyA9IHtuYW1lOiBcImRyYWdcIn0sXG4gICAgTU9ERV9TUEFDRSA9IHtuYW1lOiBcInNwYWNlXCJ9LFxuICAgIE1PREVfSEFORExFID0ge25hbWU6IFwiaGFuZGxlXCJ9LFxuICAgIE1PREVfQ0VOVEVSID0ge25hbWU6IFwiY2VudGVyXCJ9O1xuXG52YXIgWCA9IHtcbiAgbmFtZTogXCJ4XCIsXG4gIGhhbmRsZXM6IFtcImVcIiwgXCJ3XCJdLm1hcCh0eXBlKSxcbiAgaW5wdXQ6IGZ1bmN0aW9uKHgsIGUpIHsgcmV0dXJuIHggJiYgW1t4WzBdLCBlWzBdWzFdXSwgW3hbMV0sIGVbMV1bMV1dXTsgfSxcbiAgb3V0cHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHkgJiYgW3h5WzBdWzBdLCB4eVsxXVswXV07IH1cbn07XG5cbnZhciBZID0ge1xuICBuYW1lOiBcInlcIixcbiAgaGFuZGxlczogW1wiblwiLCBcInNcIl0ubWFwKHR5cGUpLFxuICBpbnB1dDogZnVuY3Rpb24oeSwgZSkgeyByZXR1cm4geSAmJiBbW2VbMF1bMF0sIHlbMF1dLCBbZVsxXVswXSwgeVsxXV1dOyB9LFxuICBvdXRwdXQ6IGZ1bmN0aW9uKHh5KSB7IHJldHVybiB4eSAmJiBbeHlbMF1bMV0sIHh5WzFdWzFdXTsgfVxufTtcblxudmFyIFhZID0ge1xuICBuYW1lOiBcInh5XCIsXG4gIGhhbmRsZXM6IFtcIm5cIiwgXCJlXCIsIFwic1wiLCBcIndcIiwgXCJud1wiLCBcIm5lXCIsIFwic2VcIiwgXCJzd1wiXS5tYXAodHlwZSksXG4gIGlucHV0OiBmdW5jdGlvbih4eSkgeyByZXR1cm4geHk7IH0sXG4gIG91dHB1dDogZnVuY3Rpb24oeHkpIHsgcmV0dXJuIHh5OyB9XG59O1xuXG52YXIgY3Vyc29ycyA9IHtcbiAgb3ZlcmxheTogXCJjcm9zc2hhaXJcIixcbiAgc2VsZWN0aW9uOiBcIm1vdmVcIixcbiAgbjogXCJucy1yZXNpemVcIixcbiAgZTogXCJldy1yZXNpemVcIixcbiAgczogXCJucy1yZXNpemVcIixcbiAgdzogXCJldy1yZXNpemVcIixcbiAgbnc6IFwibndzZS1yZXNpemVcIixcbiAgbmU6IFwibmVzdy1yZXNpemVcIixcbiAgc2U6IFwibndzZS1yZXNpemVcIixcbiAgc3c6IFwibmVzdy1yZXNpemVcIlxufTtcblxudmFyIGZsaXBYID0ge1xuICBlOiBcIndcIixcbiAgdzogXCJlXCIsXG4gIG53OiBcIm5lXCIsXG4gIG5lOiBcIm53XCIsXG4gIHNlOiBcInN3XCIsXG4gIHN3OiBcInNlXCJcbn07XG5cbnZhciBmbGlwWSA9IHtcbiAgbjogXCJzXCIsXG4gIHM6IFwiblwiLFxuICBudzogXCJzd1wiLFxuICBuZTogXCJzZVwiLFxuICBzZTogXCJuZVwiLFxuICBzdzogXCJud1wiXG59O1xuXG52YXIgc2lnbnNYID0ge1xuICBvdmVybGF5OiArMSxcbiAgc2VsZWN0aW9uOiArMSxcbiAgbjogbnVsbCxcbiAgZTogKzEsXG4gIHM6IG51bGwsXG4gIHc6IC0xLFxuICBudzogLTEsXG4gIG5lOiArMSxcbiAgc2U6ICsxLFxuICBzdzogLTFcbn07XG5cbnZhciBzaWduc1kgPSB7XG4gIG92ZXJsYXk6ICsxLFxuICBzZWxlY3Rpb246ICsxLFxuICBuOiAtMSxcbiAgZTogbnVsbCxcbiAgczogKzEsXG4gIHc6IG51bGwsXG4gIG53OiAtMSxcbiAgbmU6IC0xLFxuICBzZTogKzEsXG4gIHN3OiArMVxufTtcblxuZnVuY3Rpb24gdHlwZSh0KSB7XG4gIHJldHVybiB7dHlwZTogdH07XG59XG5cbi8vIElnbm9yZSByaWdodC1jbGljaywgc2luY2UgdGhhdCBzaG91bGQgb3BlbiB0aGUgY29udGV4dCBtZW51LlxuZnVuY3Rpb24gZGVmYXVsdEZpbHRlcigpIHtcbiAgcmV0dXJuICFldmVudC5idXR0b247XG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRFeHRlbnQoKSB7XG4gIHZhciBzdmcgPSB0aGlzLm93bmVyU1ZHRWxlbWVudCB8fCB0aGlzO1xuICByZXR1cm4gW1swLCAwXSwgW3N2Zy53aWR0aC5iYXNlVmFsLnZhbHVlLCBzdmcuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTtcbn1cblxuLy8gTGlrZSBkMy5sb2NhbCwgYnV0IHdpdGggdGhlIG5hbWUg4oCcX19icnVzaOKAnSByYXRoZXIgdGhhbiBhdXRvLWdlbmVyYXRlZC5cbmZ1bmN0aW9uIGxvY2FsKG5vZGUpIHtcbiAgd2hpbGUgKCFub2RlLl9fYnJ1c2gpIGlmICghKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpKSByZXR1cm47XG4gIHJldHVybiBub2RlLl9fYnJ1c2g7XG59XG5cbmZ1bmN0aW9uIGVtcHR5KGV4dGVudCkge1xuICByZXR1cm4gZXh0ZW50WzBdWzBdID09PSBleHRlbnRbMV1bMF1cbiAgICAgIHx8IGV4dGVudFswXVsxXSA9PT0gZXh0ZW50WzFdWzFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnJ1c2hTZWxlY3Rpb24obm9kZSkge1xuICB2YXIgc3RhdGUgPSBub2RlLl9fYnJ1c2g7XG4gIHJldHVybiBzdGF0ZSA/IHN0YXRlLmRpbS5vdXRwdXQoc3RhdGUuc2VsZWN0aW9uKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicnVzaFgoKSB7XG4gIHJldHVybiBicnVzaChYKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJydXNoWSgpIHtcbiAgcmV0dXJuIGJydXNoKFkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGJydXNoKFhZKTtcbn1cblxuZnVuY3Rpb24gYnJ1c2goZGltKSB7XG4gIHZhciBleHRlbnQgPSBkZWZhdWx0RXh0ZW50LFxuICAgICAgZmlsdGVyID0gZGVmYXVsdEZpbHRlcixcbiAgICAgIGxpc3RlbmVycyA9IGRpc3BhdGNoKGJydXNoLCBcInN0YXJ0XCIsIFwiYnJ1c2hcIiwgXCJlbmRcIiksXG4gICAgICBoYW5kbGVTaXplID0gNixcbiAgICAgIHRvdWNoZW5kaW5nO1xuXG4gIGZ1bmN0aW9uIGJydXNoKGdyb3VwKSB7XG4gICAgdmFyIG92ZXJsYXkgPSBncm91cFxuICAgICAgICAucHJvcGVydHkoXCJfX2JydXNoXCIsIGluaXRpYWxpemUpXG4gICAgICAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgIC5kYXRhKFt0eXBlKFwib3ZlcmxheVwiKV0pO1xuXG4gICAgb3ZlcmxheS5lbnRlcigpLmFwcGVuZChcInJlY3RcIilcbiAgICAgICAgLmF0dHIoXCJjbGFzc1wiLCBcIm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJwb2ludGVyLWV2ZW50c1wiLCBcImFsbFwiKVxuICAgICAgICAuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzLm92ZXJsYXkpXG4gICAgICAubWVyZ2Uob3ZlcmxheSlcbiAgICAgICAgLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGV4dGVudCA9IGxvY2FsKHRoaXMpLmV4dGVudDtcbiAgICAgICAgICBzZWxlY3QodGhpcylcbiAgICAgICAgICAgICAgLmF0dHIoXCJ4XCIsIGV4dGVudFswXVswXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ5XCIsIGV4dGVudFswXVsxXSlcbiAgICAgICAgICAgICAgLmF0dHIoXCJ3aWR0aFwiLCBleHRlbnRbMV1bMF0gLSBleHRlbnRbMF1bMF0pXG4gICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIGV4dGVudFsxXVsxXSAtIGV4dGVudFswXVsxXSk7XG4gICAgICAgIH0pO1xuXG4gICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvblwiKVxuICAgICAgLmRhdGEoW3R5cGUoXCJzZWxlY3Rpb25cIildKVxuICAgICAgLmVudGVyKCkuYXBwZW5kKFwicmVjdFwiKVxuICAgICAgICAuYXR0cihcImNsYXNzXCIsIFwic2VsZWN0aW9uXCIpXG4gICAgICAgIC5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnMuc2VsZWN0aW9uKVxuICAgICAgICAuYXR0cihcImZpbGxcIiwgXCIjNzc3XCIpXG4gICAgICAgIC5hdHRyKFwiZmlsbC1vcGFjaXR5XCIsIDAuMylcbiAgICAgICAgLmF0dHIoXCJzdHJva2VcIiwgXCIjZmZmXCIpXG4gICAgICAgIC5hdHRyKFwic2hhcGUtcmVuZGVyaW5nXCIsIFwiY3Jpc3BFZGdlc1wiKTtcblxuICAgIHZhciBoYW5kbGUgPSBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAuZGF0YShkaW0uaGFuZGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlOyB9KTtcblxuICAgIGhhbmRsZS5leGl0KCkucmVtb3ZlKCk7XG5cbiAgICBoYW5kbGUuZW50ZXIoKS5hcHBlbmQoXCJyZWN0XCIpXG4gICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gXCJoYW5kbGUgaGFuZGxlLS1cIiArIGQudHlwZTsgfSlcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gY3Vyc29yc1tkLnR5cGVdOyB9KTtcblxuICAgIGdyb3VwXG4gICAgICAgIC5lYWNoKHJlZHJhdylcbiAgICAgICAgLmF0dHIoXCJmaWxsXCIsIFwibm9uZVwiKVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwiYWxsXCIpXG4gICAgICAgIC5zdHlsZShcIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvclwiLCBcInJnYmEoMCwwLDAsMClcIilcbiAgICAgICAgLm9uKFwibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2hcIiwgc3RhcnRlZCk7XG4gIH1cblxuICBicnVzaC5tb3ZlID0gZnVuY3Rpb24oZ3JvdXAsIHNlbGVjdGlvbikge1xuICAgIGlmIChncm91cC5zZWxlY3Rpb24pIHtcbiAgICAgIGdyb3VwXG4gICAgICAgICAgLm9uKFwic3RhcnQuYnJ1c2hcIiwgZnVuY3Rpb24oKSB7IGVtaXR0ZXIodGhpcywgYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCk7IH0pXG4gICAgICAgICAgLm9uKFwiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaFwiLCBmdW5jdGlvbigpIHsgZW1pdHRlcih0aGlzLCBhcmd1bWVudHMpLmVuZCgpOyB9KVxuICAgICAgICAgIC50d2VlbihcImJydXNoXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHN0YXRlID0gdGhhdC5fX2JydXNoLFxuICAgICAgICAgICAgICAgIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3VtZW50cyksXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMCA9IHN0YXRlLnNlbGVjdGlvbixcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24xID0gZGltLmlucHV0KHR5cGVvZiBzZWxlY3Rpb24gPT09IFwiZnVuY3Rpb25cIiA/IHNlbGVjdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIDogc2VsZWN0aW9uLCBzdGF0ZS5leHRlbnQpLFxuICAgICAgICAgICAgICAgIGkgPSBpbnRlcnBvbGF0ZShzZWxlY3Rpb24wLCBzZWxlY3Rpb24xKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gdHdlZW4odCkge1xuICAgICAgICAgICAgICBzdGF0ZS5zZWxlY3Rpb24gPSB0ID09PSAxICYmIGVtcHR5KHNlbGVjdGlvbjEpID8gbnVsbCA6IGkodCk7XG4gICAgICAgICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzZWxlY3Rpb24wICYmIHNlbGVjdGlvbjEgPyB0d2VlbiA6IHR3ZWVuKDEpO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cFxuICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgICAgc3RhdGUgPSB0aGF0Ll9fYnJ1c2gsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uMSA9IGRpbS5pbnB1dCh0eXBlb2Ygc2VsZWN0aW9uID09PSBcImZ1bmN0aW9uXCIgPyBzZWxlY3Rpb24uYXBwbHkodGhhdCwgYXJncykgOiBzZWxlY3Rpb24sIHN0YXRlLmV4dGVudCksXG4gICAgICAgICAgICAgICAgZW1pdCA9IGVtaXR0ZXIodGhhdCwgYXJncykuYmVmb3Jlc3RhcnQoKTtcblxuICAgICAgICAgICAgaW50ZXJydXB0KHRoYXQpO1xuICAgICAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uMSA9PSBudWxsIHx8IGVtcHR5KHNlbGVjdGlvbjEpID8gbnVsbCA6IHNlbGVjdGlvbjE7XG4gICAgICAgICAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICAgICAgICAgIGVtaXQuc3RhcnQoKS5icnVzaCgpLmVuZCgpO1xuICAgICAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiByZWRyYXcoKSB7XG4gICAgdmFyIGdyb3VwID0gc2VsZWN0KHRoaXMpLFxuICAgICAgICBzZWxlY3Rpb24gPSBsb2NhbCh0aGlzKS5zZWxlY3Rpb247XG5cbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuc2VsZWN0aW9uXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBzZWxlY3Rpb25bMF1bMF0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIHNlbGVjdGlvblswXVsxXSlcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIHNlbGVjdGlvblsxXVswXSAtIHNlbGVjdGlvblswXVswXSlcbiAgICAgICAgICAuYXR0cihcImhlaWdodFwiLCBzZWxlY3Rpb25bMV1bMV0gLSBzZWxlY3Rpb25bMF1bMV0pO1xuXG4gICAgICBncm91cC5zZWxlY3RBbGwoXCIuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBudWxsKVxuICAgICAgICAgIC5hdHRyKFwieFwiLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnR5cGVbZC50eXBlLmxlbmd0aCAtIDFdID09PSBcImVcIiA/IHNlbGVjdGlvblsxXVswXSAtIGhhbmRsZVNpemUgLyAyIDogc2VsZWN0aW9uWzBdWzBdIC0gaGFuZGxlU2l6ZSAvIDI7IH0pXG4gICAgICAgICAgLmF0dHIoXCJ5XCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudHlwZVswXSA9PT0gXCJzXCIgPyBzZWxlY3Rpb25bMV1bMV0gLSBoYW5kbGVTaXplIC8gMiA6IHNlbGVjdGlvblswXVsxXSAtIGhhbmRsZVNpemUgLyAyOyB9KVxuICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcIm5cIiB8fCBkLnR5cGUgPT09IFwic1wiID8gc2VsZWN0aW9uWzFdWzBdIC0gc2VsZWN0aW9uWzBdWzBdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50eXBlID09PSBcImVcIiB8fCBkLnR5cGUgPT09IFwid1wiID8gc2VsZWN0aW9uWzFdWzFdIC0gc2VsZWN0aW9uWzBdWzFdICsgaGFuZGxlU2l6ZSA6IGhhbmRsZVNpemU7IH0pO1xuICAgIH1cblxuICAgIGVsc2Uge1xuICAgICAgZ3JvdXAuc2VsZWN0QWxsKFwiLnNlbGVjdGlvbiwuaGFuZGxlXCIpXG4gICAgICAgICAgLnN0eWxlKFwiZGlzcGxheVwiLCBcIm5vbmVcIilcbiAgICAgICAgICAuYXR0cihcInhcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcInlcIiwgbnVsbClcbiAgICAgICAgICAuYXR0cihcIndpZHRoXCIsIG51bGwpXG4gICAgICAgICAgLmF0dHIoXCJoZWlnaHRcIiwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW1pdHRlcih0aGF0LCBhcmdzKSB7XG4gICAgcmV0dXJuIHRoYXQuX19icnVzaC5lbWl0dGVyIHx8IG5ldyBFbWl0dGVyKHRoYXQsIGFyZ3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gRW1pdHRlcih0aGF0LCBhcmdzKSB7XG4gICAgdGhpcy50aGF0ID0gdGhhdDtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMuc3RhdGUgPSB0aGF0Ll9fYnJ1c2g7XG4gICAgdGhpcy5hY3RpdmUgPSAwO1xuICB9XG5cbiAgRW1pdHRlci5wcm90b3R5cGUgPSB7XG4gICAgYmVmb3Jlc3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCsrdGhpcy5hY3RpdmUgPT09IDEpIHRoaXMuc3RhdGUuZW1pdHRlciA9IHRoaXMsIHRoaXMuc3RhcnRpbmcgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBzdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5zdGFydGluZykgdGhpcy5zdGFydGluZyA9IGZhbHNlLCB0aGlzLmVtaXQoXCJzdGFydFwiKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sXG4gICAgYnJ1c2g6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5lbWl0KFwiYnJ1c2hcIik7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuICAgIGVuZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoLS10aGlzLmFjdGl2ZSA9PT0gMCkgZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlciwgdGhpcy5lbWl0KFwiZW5kXCIpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBlbWl0OiBmdW5jdGlvbih0eXBlKSB7XG4gICAgICBjdXN0b21FdmVudChuZXcgQnJ1c2hFdmVudChicnVzaCwgdHlwZSwgZGltLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLCBsaXN0ZW5lcnMuYXBwbHksIGxpc3RlbmVycywgW3R5cGUsIHRoaXMudGhhdCwgdGhpcy5hcmdzXSk7XG4gICAgfVxuICB9O1xuXG4gIGZ1bmN0aW9uIHN0YXJ0ZWQoKSB7XG4gICAgaWYgKGV2ZW50LnRvdWNoZXMpIHsgaWYgKGV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA8IGV2ZW50LnRvdWNoZXMubGVuZ3RoKSByZXR1cm4gbm9ldmVudCgpOyB9XG4gICAgZWxzZSBpZiAodG91Y2hlbmRpbmcpIHJldHVybjtcbiAgICBpZiAoIWZpbHRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKSByZXR1cm47XG5cbiAgICB2YXIgdGhhdCA9IHRoaXMsXG4gICAgICAgIHR5cGUgPSBldmVudC50YXJnZXQuX19kYXRhX18udHlwZSxcbiAgICAgICAgbW9kZSA9IChldmVudC5tZXRhS2V5ID8gdHlwZSA9IFwib3ZlcmxheVwiIDogdHlwZSkgPT09IFwic2VsZWN0aW9uXCIgPyBNT0RFX0RSQUcgOiAoZXZlbnQuYWx0S2V5ID8gTU9ERV9DRU5URVIgOiBNT0RFX0hBTkRMRSksXG4gICAgICAgIHNpZ25YID0gZGltID09PSBZID8gbnVsbCA6IHNpZ25zWFt0eXBlXSxcbiAgICAgICAgc2lnblkgPSBkaW0gPT09IFggPyBudWxsIDogc2lnbnNZW3R5cGVdLFxuICAgICAgICBzdGF0ZSA9IGxvY2FsKHRoYXQpLFxuICAgICAgICBleHRlbnQgPSBzdGF0ZS5leHRlbnQsXG4gICAgICAgIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbixcbiAgICAgICAgVyA9IGV4dGVudFswXVswXSwgdzAsIHcxLFxuICAgICAgICBOID0gZXh0ZW50WzBdWzFdLCBuMCwgbjEsXG4gICAgICAgIEUgPSBleHRlbnRbMV1bMF0sIGUwLCBlMSxcbiAgICAgICAgUyA9IGV4dGVudFsxXVsxXSwgczAsIHMxLFxuICAgICAgICBkeCxcbiAgICAgICAgZHksXG4gICAgICAgIG1vdmluZyxcbiAgICAgICAgc2hpZnRpbmcgPSBzaWduWCAmJiBzaWduWSAmJiBldmVudC5zaGlmdEtleSxcbiAgICAgICAgbG9ja1gsXG4gICAgICAgIGxvY2tZLFxuICAgICAgICBwb2ludDAgPSBtb3VzZSh0aGF0KSxcbiAgICAgICAgcG9pbnQgPSBwb2ludDAsXG4gICAgICAgIGVtaXQgPSBlbWl0dGVyKHRoYXQsIGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKTtcblxuICAgIGlmICh0eXBlID09PSBcIm92ZXJsYXlcIikge1xuICAgICAgc3RhdGUuc2VsZWN0aW9uID0gc2VsZWN0aW9uID0gW1xuICAgICAgICBbdzAgPSBkaW0gPT09IFkgPyBXIDogcG9pbnQwWzBdLCBuMCA9IGRpbSA9PT0gWCA/IE4gOiBwb2ludDBbMV1dLFxuICAgICAgICBbZTAgPSBkaW0gPT09IFkgPyBFIDogdzAsIHMwID0gZGltID09PSBYID8gUyA6IG4wXVxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdzAgPSBzZWxlY3Rpb25bMF1bMF07XG4gICAgICBuMCA9IHNlbGVjdGlvblswXVsxXTtcbiAgICAgIGUwID0gc2VsZWN0aW9uWzFdWzBdO1xuICAgICAgczAgPSBzZWxlY3Rpb25bMV1bMV07XG4gICAgfVxuXG4gICAgdzEgPSB3MDtcbiAgICBuMSA9IG4wO1xuICAgIGUxID0gZTA7XG4gICAgczEgPSBzMDtcblxuICAgIHZhciBncm91cCA9IHNlbGVjdCh0aGF0KVxuICAgICAgICAuYXR0cihcInBvaW50ZXItZXZlbnRzXCIsIFwibm9uZVwiKTtcblxuICAgIHZhciBvdmVybGF5ID0gZ3JvdXAuc2VsZWN0QWxsKFwiLm92ZXJsYXlcIilcbiAgICAgICAgLmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG5cbiAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgZ3JvdXBcbiAgICAgICAgICAub24oXCJ0b3VjaG1vdmUuYnJ1c2hcIiwgbW92ZWQsIHRydWUpXG4gICAgICAgICAgLm9uKFwidG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2hcIiwgZW5kZWQsIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdmlldyA9IHNlbGVjdChldmVudC52aWV3KVxuICAgICAgICAgIC5vbihcImtleWRvd24uYnJ1c2hcIiwga2V5ZG93bmVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcImtleXVwLmJydXNoXCIsIGtleXVwcGVkLCB0cnVlKVxuICAgICAgICAgIC5vbihcIm1vdXNlbW92ZS5icnVzaFwiLCBtb3ZlZCwgdHJ1ZSlcbiAgICAgICAgICAub24oXCJtb3VzZXVwLmJydXNoXCIsIGVuZGVkLCB0cnVlKTtcblxuICAgICAgZHJhZ0Rpc2FibGUoZXZlbnQudmlldyk7XG4gICAgfVxuXG4gICAgbm9wcm9wYWdhdGlvbigpO1xuICAgIGludGVycnVwdCh0aGF0KTtcbiAgICByZWRyYXcuY2FsbCh0aGF0KTtcbiAgICBlbWl0LnN0YXJ0KCk7XG5cbiAgICBmdW5jdGlvbiBtb3ZlZCgpIHtcbiAgICAgIHZhciBwb2ludDEgPSBtb3VzZSh0aGF0KTtcbiAgICAgIGlmIChzaGlmdGluZyAmJiAhbG9ja1ggJiYgIWxvY2tZKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhwb2ludDFbMF0gLSBwb2ludFswXSkgPiBNYXRoLmFicyhwb2ludDFbMV0gLSBwb2ludFsxXSkpIGxvY2tZID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBsb2NrWCA9IHRydWU7XG4gICAgICB9XG4gICAgICBwb2ludCA9IHBvaW50MTtcbiAgICAgIG1vdmluZyA9IHRydWU7XG4gICAgICBub2V2ZW50KCk7XG4gICAgICBtb3ZlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW92ZSgpIHtcbiAgICAgIHZhciB0O1xuXG4gICAgICBkeCA9IHBvaW50WzBdIC0gcG9pbnQwWzBdO1xuICAgICAgZHkgPSBwb2ludFsxXSAtIHBvaW50MFsxXTtcblxuICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIGNhc2UgTU9ERV9TUEFDRTpcbiAgICAgICAgY2FzZSBNT0RFX0RSQUc6IHtcbiAgICAgICAgICBpZiAoc2lnblgpIGR4ID0gTWF0aC5tYXgoVyAtIHcwLCBNYXRoLm1pbihFIC0gZTAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMCArIGR4O1xuICAgICAgICAgIGlmIChzaWduWSkgZHkgPSBNYXRoLm1heChOIC0gbjAsIE1hdGgubWluKFMgLSBzMCwgZHkpKSwgbjEgPSBuMCArIGR5LCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0hBTkRMRToge1xuICAgICAgICAgIGlmIChzaWduWCA8IDApIGR4ID0gTWF0aC5tYXgoVyAtIHcwLCBNYXRoLm1pbihFIC0gdzAsIGR4KSksIHcxID0gdzAgKyBkeCwgZTEgPSBlMDtcbiAgICAgICAgICBlbHNlIGlmIChzaWduWCA+IDApIGR4ID0gTWF0aC5tYXgoVyAtIGUwLCBNYXRoLm1pbihFIC0gZTAsIGR4KSksIHcxID0gdzAsIGUxID0gZTAgKyBkeDtcbiAgICAgICAgICBpZiAoc2lnblkgPCAwKSBkeSA9IE1hdGgubWF4KE4gLSBuMCwgTWF0aC5taW4oUyAtIG4wLCBkeSkpLCBuMSA9IG4wICsgZHksIHMxID0gczA7XG4gICAgICAgICAgZWxzZSBpZiAoc2lnblkgPiAwKSBkeSA9IE1hdGgubWF4KE4gLSBzMCwgTWF0aC5taW4oUyAtIHMwLCBkeSkpLCBuMSA9IG4wLCBzMSA9IHMwICsgZHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBNT0RFX0NFTlRFUjoge1xuICAgICAgICAgIGlmIChzaWduWCkgdzEgPSBNYXRoLm1heChXLCBNYXRoLm1pbihFLCB3MCAtIGR4ICogc2lnblgpKSwgZTEgPSBNYXRoLm1heChXLCBNYXRoLm1pbihFLCBlMCArIGR4ICogc2lnblgpKTtcbiAgICAgICAgICBpZiAoc2lnblkpIG4xID0gTWF0aC5tYXgoTiwgTWF0aC5taW4oUywgbjAgLSBkeSAqIHNpZ25ZKSksIHMxID0gTWF0aC5tYXgoTiwgTWF0aC5taW4oUywgczAgKyBkeSAqIHNpZ25ZKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGUxIDwgdzEpIHtcbiAgICAgICAgc2lnblggKj0gLTE7XG4gICAgICAgIHQgPSB3MCwgdzAgPSBlMCwgZTAgPSB0O1xuICAgICAgICB0ID0gdzEsIHcxID0gZTEsIGUxID0gdDtcbiAgICAgICAgaWYgKHR5cGUgaW4gZmxpcFgpIG92ZXJsYXkuYXR0cihcImN1cnNvclwiLCBjdXJzb3JzW3R5cGUgPSBmbGlwWFt0eXBlXV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoczEgPCBuMSkge1xuICAgICAgICBzaWduWSAqPSAtMTtcbiAgICAgICAgdCA9IG4wLCBuMCA9IHMwLCBzMCA9IHQ7XG4gICAgICAgIHQgPSBuMSwgbjEgPSBzMSwgczEgPSB0O1xuICAgICAgICBpZiAodHlwZSBpbiBmbGlwWSkgb3ZlcmxheS5hdHRyKFwiY3Vyc29yXCIsIGN1cnNvcnNbdHlwZSA9IGZsaXBZW3R5cGVdXSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24pIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjsgLy8gTWF5IGJlIHNldCBieSBicnVzaC5tb3ZlIVxuICAgICAgaWYgKGxvY2tYKSB3MSA9IHNlbGVjdGlvblswXVswXSwgZTEgPSBzZWxlY3Rpb25bMV1bMF07XG4gICAgICBpZiAobG9ja1kpIG4xID0gc2VsZWN0aW9uWzBdWzFdLCBzMSA9IHNlbGVjdGlvblsxXVsxXTtcblxuICAgICAgaWYgKHNlbGVjdGlvblswXVswXSAhPT0gdzFcbiAgICAgICAgICB8fCBzZWxlY3Rpb25bMF1bMV0gIT09IG4xXG4gICAgICAgICAgfHwgc2VsZWN0aW9uWzFdWzBdICE9PSBlMVxuICAgICAgICAgIHx8IHNlbGVjdGlvblsxXVsxXSAhPT0gczEpIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0aW9uID0gW1t3MSwgbjFdLCBbZTEsIHMxXV07XG4gICAgICAgIHJlZHJhdy5jYWxsKHRoYXQpO1xuICAgICAgICBlbWl0LmJydXNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZW5kZWQoKSB7XG4gICAgICBub3Byb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAoZXZlbnQudG91Y2hlcykge1xuICAgICAgICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgaWYgKHRvdWNoZW5kaW5nKSBjbGVhclRpbWVvdXQodG91Y2hlbmRpbmcpO1xuICAgICAgICB0b3VjaGVuZGluZyA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRvdWNoZW5kaW5nID0gbnVsbDsgfSwgNTAwKTsgLy8gR2hvc3QgY2xpY2tzIGFyZSBkZWxheWVkIVxuICAgICAgICBncm91cC5vbihcInRvdWNobW92ZS5icnVzaCB0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaFwiLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRyYWdFbmFibGUoZXZlbnQudmlldywgbW92aW5nKTtcbiAgICAgICAgdmlldy5vbihcImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2hcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgICBncm91cC5hdHRyKFwicG9pbnRlci1ldmVudHNcIiwgXCJhbGxcIik7XG4gICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5vdmVybGF5KTtcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3Rpb24pIHNlbGVjdGlvbiA9IHN0YXRlLnNlbGVjdGlvbjsgLy8gTWF5IGJlIHNldCBieSBicnVzaC5tb3ZlIChvbiBzdGFydCkhXG4gICAgICBpZiAoZW1wdHkoc2VsZWN0aW9uKSkgc3RhdGUuc2VsZWN0aW9uID0gbnVsbCwgcmVkcmF3LmNhbGwodGhhdCk7XG4gICAgICBlbWl0LmVuZCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGtleWRvd25lZCgpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICBjYXNlIDE2OiB7IC8vIFNISUZUXG4gICAgICAgICAgc2hpZnRpbmcgPSBzaWduWCAmJiBzaWduWTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDE4OiB7IC8vIEFMVFxuICAgICAgICAgIGlmIChtb2RlID09PSBNT0RFX0hBTkRMRSkge1xuICAgICAgICAgICAgaWYgKHNpZ25YKSBlMCA9IGUxIC0gZHggKiBzaWduWCwgdzAgPSB3MSArIGR4ICogc2lnblg7XG4gICAgICAgICAgICBpZiAoc2lnblkpIHMwID0gczEgLSBkeSAqIHNpZ25ZLCBuMCA9IG4xICsgZHkgKiBzaWduWTtcbiAgICAgICAgICAgIG1vZGUgPSBNT0RFX0NFTlRFUjtcbiAgICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzMjogeyAvLyBTUEFDRTsgdGFrZXMgcHJpb3JpdHkgb3ZlciBBTFRcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9IQU5ETEUgfHwgbW9kZSA9PT0gTU9ERV9DRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTEgLSBkeDsgZWxzZSBpZiAoc2lnblggPiAwKSB3MCA9IHcxIC0gZHg7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxIC0gZHk7IGVsc2UgaWYgKHNpZ25ZID4gMCkgbjAgPSBuMSAtIGR5O1xuICAgICAgICAgICAgbW9kZSA9IE1PREVfU1BBQ0U7XG4gICAgICAgICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29ycy5zZWxlY3Rpb24pO1xuICAgICAgICAgICAgbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiByZXR1cm47XG4gICAgICB9XG4gICAgICBub2V2ZW50KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24ga2V5dXBwZWQoKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgY2FzZSAxNjogeyAvLyBTSElGVFxuICAgICAgICAgIGlmIChzaGlmdGluZykge1xuICAgICAgICAgICAgbG9ja1ggPSBsb2NrWSA9IHNoaWZ0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMTg6IHsgLy8gQUxUXG4gICAgICAgICAgaWYgKG1vZGUgPT09IE1PREVfQ0VOVEVSKSB7XG4gICAgICAgICAgICBpZiAoc2lnblggPCAwKSBlMCA9IGUxOyBlbHNlIGlmIChzaWduWCA+IDApIHcwID0gdzE7XG4gICAgICAgICAgICBpZiAoc2lnblkgPCAwKSBzMCA9IHMxOyBlbHNlIGlmIChzaWduWSA+IDApIG4wID0gbjE7XG4gICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzI6IHsgLy8gU1BBQ0VcbiAgICAgICAgICBpZiAobW9kZSA9PT0gTU9ERV9TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgICBpZiAoc2lnblgpIGUwID0gZTEgLSBkeCAqIHNpZ25YLCB3MCA9IHcxICsgZHggKiBzaWduWDtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZKSBzMCA9IHMxIC0gZHkgKiBzaWduWSwgbjAgPSBuMSArIGR5ICogc2lnblk7XG4gICAgICAgICAgICAgIG1vZGUgPSBNT0RFX0NFTlRFUjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChzaWduWCA8IDApIGUwID0gZTE7IGVsc2UgaWYgKHNpZ25YID4gMCkgdzAgPSB3MTtcbiAgICAgICAgICAgICAgaWYgKHNpZ25ZIDwgMCkgczAgPSBzMTsgZWxzZSBpZiAoc2lnblkgPiAwKSBuMCA9IG4xO1xuICAgICAgICAgICAgICBtb2RlID0gTU9ERV9IQU5ETEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvdmVybGF5LmF0dHIoXCJjdXJzb3JcIiwgY3Vyc29yc1t0eXBlXSk7XG4gICAgICAgICAgICBtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbml0aWFsaXplKCkge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX19icnVzaCB8fCB7c2VsZWN0aW9uOiBudWxsfTtcbiAgICBzdGF0ZS5leHRlbnQgPSBleHRlbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICBzdGF0ZS5kaW0gPSBkaW07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgYnJ1c2guZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGV4dGVudCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoW1srX1swXVswXSwgK19bMF1bMV1dLCBbK19bMV1bMF0sICtfWzFdWzFdXV0pLCBicnVzaCkgOiBleHRlbnQ7XG4gIH07XG5cbiAgYnJ1c2guZmlsdGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGZpbHRlciA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoISFfKSwgYnJ1c2gpIDogZmlsdGVyO1xuICB9O1xuXG4gIGJydXNoLmhhbmRsZVNpemUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoaGFuZGxlU2l6ZSA9ICtfLCBicnVzaCkgOiBoYW5kbGVTaXplO1xuICB9O1xuXG4gIGJydXNoLm9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHZhbHVlID0gbGlzdGVuZXJzLm9uLmFwcGx5KGxpc3RlbmVycywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gdmFsdWUgPT09IGxpc3RlbmVycyA/IGJydXNoIDogdmFsdWU7XG4gIH07XG5cbiAgcmV0dXJuIGJydXNoO1xufVxuIiwidmFyIHBpID0gTWF0aC5QSSxcbiAgICB0YXUgPSAyICogcGksXG4gICAgZXBzaWxvbiA9IDFlLTYsXG4gICAgdGF1RXBzaWxvbiA9IHRhdSAtIGVwc2lsb247XG5cbmZ1bmN0aW9uIFBhdGgoKSB7XG4gIHRoaXMuX3gwID0gdGhpcy5feTAgPSAvLyBzdGFydCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5feDEgPSB0aGlzLl95MSA9IG51bGw7IC8vIGVuZCBvZiBjdXJyZW50IHN1YnBhdGhcbiAgdGhpcy5fID0gXCJcIjtcbn1cblxuZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIG5ldyBQYXRoO1xufVxuXG5QYXRoLnByb3RvdHlwZSA9IHBhdGgucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogUGF0aCxcbiAgbW92ZVRvOiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gwID0gdGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MCA9IHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl94MSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5feDEgPSB0aGlzLl94MCwgdGhpcy5feTEgPSB0aGlzLl95MDtcbiAgICAgIHRoaXMuXyArPSBcIlpcIjtcbiAgICB9XG4gIH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkxcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBxdWFkcmF0aWNDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgsIHkpIHtcbiAgICB0aGlzLl8gKz0gXCJRXCIgKyAoK3gxKSArIFwiLFwiICsgKCt5MSkgKyBcIixcIiArICh0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kxID0gK3kpO1xuICB9LFxuICBiZXppZXJDdXJ2ZVRvOiBmdW5jdGlvbih4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgIHRoaXMuXyArPSBcIkNcIiArICgreDEpICsgXCIsXCIgKyAoK3kxKSArIFwiLFwiICsgKCt4MikgKyBcIixcIiArICgreTIpICsgXCIsXCIgKyAodGhpcy5feDEgPSAreCkgKyBcIixcIiArICh0aGlzLl95MSA9ICt5KTtcbiAgfSxcbiAgYXJjVG86IGZ1bmN0aW9uKHgxLCB5MSwgeDIsIHkyLCByKSB7XG4gICAgeDEgPSAreDEsIHkxID0gK3kxLCB4MiA9ICt4MiwgeTIgPSAreTIsIHIgPSArcjtcbiAgICB2YXIgeDAgPSB0aGlzLl94MSxcbiAgICAgICAgeTAgPSB0aGlzLl95MSxcbiAgICAgICAgeDIxID0geDIgLSB4MSxcbiAgICAgICAgeTIxID0geTIgLSB5MSxcbiAgICAgICAgeDAxID0geDAgLSB4MSxcbiAgICAgICAgeTAxID0geTAgLSB5MSxcbiAgICAgICAgbDAxXzIgPSB4MDEgKiB4MDEgKyB5MDEgKiB5MDE7XG5cbiAgICAvLyBJcyB0aGUgcmFkaXVzIG5lZ2F0aXZlPyBFcnJvci5cbiAgICBpZiAociA8IDApIHRocm93IG5ldyBFcnJvcihcIm5lZ2F0aXZlIHJhZGl1czogXCIgKyByKTtcblxuICAgIC8vIElzIHRoaXMgcGF0aCBlbXB0eT8gTW92ZSB0byAoeDEseTEpLlxuICAgIGlmICh0aGlzLl94MSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fICs9IFwiTVwiICsgKHRoaXMuX3gxID0geDEpICsgXCIsXCIgKyAodGhpcy5feTEgPSB5MSk7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4MCx5MCk/IERvIG5vdGhpbmcuXG4gICAgZWxzZSBpZiAoIShsMDFfMiA+IGVwc2lsb24pKSB7fVxuXG4gICAgLy8gT3IsIGFyZSAoeDAseTApLCAoeDEseTEpIGFuZCAoeDIseTIpIGNvbGxpbmVhcj9cbiAgICAvLyBFcXVpdmFsZW50bHksIGlzICh4MSx5MSkgY29pbmNpZGVudCB3aXRoICh4Mix5Mik/XG4gICAgLy8gT3IsIGlzIHRoZSByYWRpdXMgemVybz8gTGluZSB0byAoeDEseTEpLlxuICAgIGVsc2UgaWYgKCEoTWF0aC5hYnMoeTAxICogeDIxIC0geTIxICogeDAxKSA+IGVwc2lsb24pIHx8ICFyKSB7XG4gICAgICB0aGlzLl8gKz0gXCJMXCIgKyAodGhpcy5feDEgPSB4MSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkxKTtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIGRyYXcgYW4gYXJjIVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHgyMCA9IHgyIC0geDAsXG4gICAgICAgICAgeTIwID0geTIgLSB5MCxcbiAgICAgICAgICBsMjFfMiA9IHgyMSAqIHgyMSArIHkyMSAqIHkyMSxcbiAgICAgICAgICBsMjBfMiA9IHgyMCAqIHgyMCArIHkyMCAqIHkyMCxcbiAgICAgICAgICBsMjEgPSBNYXRoLnNxcnQobDIxXzIpLFxuICAgICAgICAgIGwwMSA9IE1hdGguc3FydChsMDFfMiksXG4gICAgICAgICAgbCA9IHIgKiBNYXRoLnRhbigocGkgLSBNYXRoLmFjb3MoKGwyMV8yICsgbDAxXzIgLSBsMjBfMikgLyAoMiAqIGwyMSAqIGwwMSkpKSAvIDIpLFxuICAgICAgICAgIHQwMSA9IGwgLyBsMDEsXG4gICAgICAgICAgdDIxID0gbCAvIGwyMTtcblxuICAgICAgLy8gSWYgdGhlIHN0YXJ0IHRhbmdlbnQgaXMgbm90IGNvaW5jaWRlbnQgd2l0aCAoeDAseTApLCBsaW5lIHRvLlxuICAgICAgaWYgKE1hdGguYWJzKHQwMSAtIDEpID4gZXBzaWxvbikge1xuICAgICAgICB0aGlzLl8gKz0gXCJMXCIgKyAoeDEgKyB0MDEgKiB4MDEpICsgXCIsXCIgKyAoeTEgKyB0MDEgKiB5MDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwwLFwiICsgKCsoeTAxICogeDIwID4geDAxICogeTIwKSkgKyBcIixcIiArICh0aGlzLl94MSA9IHgxICsgdDIxICogeDIxKSArIFwiLFwiICsgKHRoaXMuX3kxID0geTEgKyB0MjEgKiB5MjEpO1xuICAgIH1cbiAgfSxcbiAgYXJjOiBmdW5jdGlvbih4LCB5LCByLCBhMCwgYTEsIGNjdykge1xuICAgIHggPSAreCwgeSA9ICt5LCByID0gK3I7XG4gICAgdmFyIGR4ID0gciAqIE1hdGguY29zKGEwKSxcbiAgICAgICAgZHkgPSByICogTWF0aC5zaW4oYTApLFxuICAgICAgICB4MCA9IHggKyBkeCxcbiAgICAgICAgeTAgPSB5ICsgZHksXG4gICAgICAgIGN3ID0gMSBeIGNjdyxcbiAgICAgICAgZGEgPSBjY3cgPyBhMCAtIGExIDogYTEgLSBhMDtcblxuICAgIC8vIElzIHRoZSByYWRpdXMgbmVnYXRpdmU/IEVycm9yLlxuICAgIGlmIChyIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwibmVnYXRpdmUgcmFkaXVzOiBcIiArIHIpO1xuXG4gICAgLy8gSXMgdGhpcyBwYXRoIGVtcHR5PyBNb3ZlIHRvICh4MCx5MCkuXG4gICAgaWYgKHRoaXMuX3gxID09PSBudWxsKSB7XG4gICAgICB0aGlzLl8gKz0gXCJNXCIgKyB4MCArIFwiLFwiICsgeTA7XG4gICAgfVxuXG4gICAgLy8gT3IsIGlzICh4MCx5MCkgbm90IGNvaW5jaWRlbnQgd2l0aCB0aGUgcHJldmlvdXMgcG9pbnQ/IExpbmUgdG8gKHgwLHkwKS5cbiAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLl94MSAtIHgwKSA+IGVwc2lsb24gfHwgTWF0aC5hYnModGhpcy5feTEgLSB5MCkgPiBlcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJMXCIgKyB4MCArIFwiLFwiICsgeTA7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhpcyBhcmMgZW1wdHk/IFdl4oCZcmUgZG9uZS5cbiAgICBpZiAoIXIpIHJldHVybjtcblxuICAgIC8vIERvZXMgdGhlIGFuZ2xlIGdvIHRoZSB3cm9uZyB3YXk/IEZsaXAgdGhlIGRpcmVjdGlvbi5cbiAgICBpZiAoZGEgPCAwKSBkYSA9IGRhICUgdGF1ICsgdGF1O1xuXG4gICAgLy8gSXMgdGhpcyBhIGNvbXBsZXRlIGNpcmNsZT8gRHJhdyB0d28gYXJjcyB0byBjb21wbGV0ZSB0aGUgY2lyY2xlLlxuICAgIGlmIChkYSA+IHRhdUVwc2lsb24pIHtcbiAgICAgIHRoaXMuXyArPSBcIkFcIiArIHIgKyBcIixcIiArIHIgKyBcIiwwLDEsXCIgKyBjdyArIFwiLFwiICsgKHggLSBkeCkgKyBcIixcIiArICh5IC0gZHkpICsgXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCwxLFwiICsgY3cgKyBcIixcIiArICh0aGlzLl94MSA9IHgwKSArIFwiLFwiICsgKHRoaXMuX3kxID0geTApO1xuICAgIH1cblxuICAgIC8vIElzIHRoaXMgYXJjIG5vbi1lbXB0eT8gRHJhdyBhbiBhcmMhXG4gICAgZWxzZSBpZiAoZGEgPiBlcHNpbG9uKSB7XG4gICAgICB0aGlzLl8gKz0gXCJBXCIgKyByICsgXCIsXCIgKyByICsgXCIsMCxcIiArICgrKGRhID49IHBpKSkgKyBcIixcIiArIGN3ICsgXCIsXCIgKyAodGhpcy5feDEgPSB4ICsgciAqIE1hdGguY29zKGExKSkgKyBcIixcIiArICh0aGlzLl95MSA9IHkgKyByICogTWF0aC5zaW4oYTEpKTtcbiAgICB9XG4gIH0sXG4gIHJlY3Q6IGZ1bmN0aW9uKHgsIHksIHcsIGgpIHtcbiAgICB0aGlzLl8gKz0gXCJNXCIgKyAodGhpcy5feDAgPSB0aGlzLl94MSA9ICt4KSArIFwiLFwiICsgKHRoaXMuX3kwID0gdGhpcy5feTEgPSAreSkgKyBcImhcIiArICgrdykgKyBcInZcIiArICgraCkgKyBcImhcIiArICgtdykgKyBcIlpcIjtcbiAgfSxcbiAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl87XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHBhdGg7XG4iLCJleHBvcnQgdmFyIHByZWZpeCA9IFwiJFwiO1xuXG5mdW5jdGlvbiBNYXAoKSB7fVxuXG5NYXAucHJvdG90eXBlID0gbWFwLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IE1hcCxcbiAgaGFzOiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gKHByZWZpeCArIGtleSkgaW4gdGhpcztcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gdGhpc1twcmVmaXggKyBrZXldO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcbiAgICB0aGlzW3ByZWZpeCArIGtleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbihrZXkpIHtcbiAgICB2YXIgcHJvcGVydHkgPSBwcmVmaXggKyBrZXk7XG4gICAgcmV0dXJuIHByb3BlcnR5IGluIHRoaXMgJiYgZGVsZXRlIHRoaXNbcHJvcGVydHldO1xuICB9LFxuICBjbGVhcjogZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIGRlbGV0ZSB0aGlzW3Byb3BlcnR5XTtcbiAgfSxcbiAga2V5czogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkga2V5cy5wdXNoKHByb3BlcnR5LnNsaWNlKDEpKTtcbiAgICByZXR1cm4ga2V5cztcbiAgfSxcbiAgdmFsdWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpIHZhbHVlcy5wdXNoKHRoaXNbcHJvcGVydHldKTtcbiAgICByZXR1cm4gdmFsdWVzO1xuICB9LFxuICBlbnRyaWVzOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSBlbnRyaWVzLnB1c2goe2tleTogcHJvcGVydHkuc2xpY2UoMSksIHZhbHVlOiB0aGlzW3Byb3BlcnR5XX0pO1xuICAgIHJldHVybiBlbnRyaWVzO1xuICB9LFxuICBzaXplOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2l6ZSA9IDA7XG4gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gdGhpcykgaWYgKHByb3BlcnR5WzBdID09PSBwcmVmaXgpICsrc2l6ZTtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfSxcbiAgZW1wdHk6IGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHByb3BlcnR5IGluIHRoaXMpIGlmIChwcm9wZXJ0eVswXSA9PT0gcHJlZml4KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIGVhY2g6IGZ1bmN0aW9uKGYpIHtcbiAgICBmb3IgKHZhciBwcm9wZXJ0eSBpbiB0aGlzKSBpZiAocHJvcGVydHlbMF0gPT09IHByZWZpeCkgZih0aGlzW3Byb3BlcnR5XSwgcHJvcGVydHkuc2xpY2UoMSksIHRoaXMpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBtYXAob2JqZWN0LCBmKSB7XG4gIHZhciBtYXAgPSBuZXcgTWFwO1xuXG4gIC8vIENvcHkgY29uc3RydWN0b3IuXG4gIGlmIChvYmplY3QgaW5zdGFuY2VvZiBNYXApIG9iamVjdC5lYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHsgbWFwLnNldChrZXksIHZhbHVlKTsgfSk7XG5cbiAgLy8gSW5kZXggYXJyYXkgYnkgbnVtZXJpYyBpbmRleCBvciBzcGVjaWZpZWQga2V5IGZ1bmN0aW9uLlxuICBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICB2YXIgaSA9IC0xLFxuICAgICAgICBuID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgICAgbztcblxuICAgIGlmIChmID09IG51bGwpIHdoaWxlICgrK2kgPCBuKSBtYXAuc2V0KGksIG9iamVjdFtpXSk7XG4gICAgZWxzZSB3aGlsZSAoKytpIDwgbikgbWFwLnNldChmKG8gPSBvYmplY3RbaV0sIGksIG9iamVjdCksIG8pO1xuICB9XG5cbiAgLy8gQ29udmVydCBvYmplY3QgdG8gbWFwLlxuICBlbHNlIGlmIChvYmplY3QpIGZvciAodmFyIGtleSBpbiBvYmplY3QpIG1hcC5zZXQoa2V5LCBvYmplY3Rba2V5XSk7XG5cbiAgcmV0dXJuIG1hcDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwO1xuIiwiaW1wb3J0IHtkZWZhdWx0IGFzIG1hcCwgcHJlZml4fSBmcm9tIFwiLi9tYXBcIjtcblxuZnVuY3Rpb24gU2V0KCkge31cblxudmFyIHByb3RvID0gbWFwLnByb3RvdHlwZTtcblxuU2V0LnByb3RvdHlwZSA9IHNldC5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBTZXQsXG4gIGhhczogcHJvdG8uaGFzLFxuICBhZGQ6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgdmFsdWUgKz0gXCJcIjtcbiAgICB0aGlzW3ByZWZpeCArIHZhbHVlXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9LFxuICByZW1vdmU6IHByb3RvLnJlbW92ZSxcbiAgY2xlYXI6IHByb3RvLmNsZWFyLFxuICB2YWx1ZXM6IHByb3RvLmtleXMsXG4gIHNpemU6IHByb3RvLnNpemUsXG4gIGVtcHR5OiBwcm90by5lbXB0eSxcbiAgZWFjaDogcHJvdG8uZWFjaFxufTtcblxuZnVuY3Rpb24gc2V0KG9iamVjdCwgZikge1xuICB2YXIgc2V0ID0gbmV3IFNldDtcblxuICAvLyBDb3B5IGNvbnN0cnVjdG9yLlxuICBpZiAob2JqZWN0IGluc3RhbmNlb2YgU2V0KSBvYmplY3QuZWFjaChmdW5jdGlvbih2YWx1ZSkgeyBzZXQuYWRkKHZhbHVlKTsgfSk7XG5cbiAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaXTigJlzIGFuIGFycmF5LlxuICBlbHNlIGlmIChvYmplY3QpIHtcbiAgICB2YXIgaSA9IC0xLCBuID0gb2JqZWN0Lmxlbmd0aDtcbiAgICBpZiAoZiA9PSBudWxsKSB3aGlsZSAoKytpIDwgbikgc2V0LmFkZChvYmplY3RbaV0pO1xuICAgIGVsc2Ugd2hpbGUgKCsraSA8IG4pIHNldC5hZGQoZihvYmplY3RbaV0sIGksIG9iamVjdCkpO1xuICB9XG5cbiAgcmV0dXJuIHNldDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2V0O1xuIiwiZnVuY3Rpb24gb2JqZWN0Q29udmVydGVyKGNvbHVtbnMpIHtcbiAgcmV0dXJuIG5ldyBGdW5jdGlvbihcImRcIiwgXCJyZXR1cm4ge1wiICsgY29sdW1ucy5tYXAoZnVuY3Rpb24obmFtZSwgaSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShuYW1lKSArIFwiOiBkW1wiICsgaSArIFwiXVwiO1xuICB9KS5qb2luKFwiLFwiKSArIFwifVwiKTtcbn1cblxuZnVuY3Rpb24gY3VzdG9tQ29udmVydGVyKGNvbHVtbnMsIGYpIHtcbiAgdmFyIG9iamVjdCA9IG9iamVjdENvbnZlcnRlcihjb2x1bW5zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJvdywgaSkge1xuICAgIHJldHVybiBmKG9iamVjdChyb3cpLCBpLCBjb2x1bW5zKTtcbiAgfTtcbn1cblxuLy8gQ29tcHV0ZSB1bmlxdWUgY29sdW1ucyBpbiBvcmRlciBvZiBkaXNjb3ZlcnkuXG5mdW5jdGlvbiBpbmZlckNvbHVtbnMocm93cykge1xuICB2YXIgY29sdW1uU2V0ID0gT2JqZWN0LmNyZWF0ZShudWxsKSxcbiAgICAgIGNvbHVtbnMgPSBbXTtcblxuICByb3dzLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgZm9yICh2YXIgY29sdW1uIGluIHJvdykge1xuICAgICAgaWYgKCEoY29sdW1uIGluIGNvbHVtblNldCkpIHtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtblNldFtjb2x1bW5dID0gY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb2x1bW5zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkZWxpbWl0ZXIpIHtcbiAgdmFyIHJlRm9ybWF0ID0gbmV3IFJlZ0V4cChcIltcXFwiXCIgKyBkZWxpbWl0ZXIgKyBcIlxcblxccl1cIiksXG4gICAgICBkZWxpbWl0ZXJDb2RlID0gZGVsaW1pdGVyLmNoYXJDb2RlQXQoMCk7XG5cbiAgZnVuY3Rpb24gcGFyc2UodGV4dCwgZikge1xuICAgIHZhciBjb252ZXJ0LCBjb2x1bW5zLCByb3dzID0gcGFyc2VSb3dzKHRleHQsIGZ1bmN0aW9uKHJvdywgaSkge1xuICAgICAgaWYgKGNvbnZlcnQpIHJldHVybiBjb252ZXJ0KHJvdywgaSAtIDEpO1xuICAgICAgY29sdW1ucyA9IHJvdywgY29udmVydCA9IGYgPyBjdXN0b21Db252ZXJ0ZXIocm93LCBmKSA6IG9iamVjdENvbnZlcnRlcihyb3cpO1xuICAgIH0pO1xuICAgIHJvd3MuY29sdW1ucyA9IGNvbHVtbnM7XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVJvd3ModGV4dCwgZikge1xuICAgIHZhciBFT0wgPSB7fSwgLy8gc2VudGluZWwgdmFsdWUgZm9yIGVuZC1vZi1saW5lXG4gICAgICAgIEVPRiA9IHt9LCAvLyBzZW50aW5lbCB2YWx1ZSBmb3IgZW5kLW9mLWZpbGVcbiAgICAgICAgcm93cyA9IFtdLCAvLyBvdXRwdXQgcm93c1xuICAgICAgICBOID0gdGV4dC5sZW5ndGgsXG4gICAgICAgIEkgPSAwLCAvLyBjdXJyZW50IGNoYXJhY3RlciBpbmRleFxuICAgICAgICBuID0gMCwgLy8gdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgICAgdCwgLy8gdGhlIGN1cnJlbnQgdG9rZW5cbiAgICAgICAgZW9sOyAvLyBpcyB0aGUgY3VycmVudCB0b2tlbiBmb2xsb3dlZCBieSBFT0w/XG5cbiAgICBmdW5jdGlvbiB0b2tlbigpIHtcbiAgICAgIGlmIChJID49IE4pIHJldHVybiBFT0Y7IC8vIHNwZWNpYWwgY2FzZTogZW5kIG9mIGZpbGVcbiAgICAgIGlmIChlb2wpIHJldHVybiBlb2wgPSBmYWxzZSwgRU9MOyAvLyBzcGVjaWFsIGNhc2U6IGVuZCBvZiBsaW5lXG5cbiAgICAgIC8vIHNwZWNpYWwgY2FzZTogcXVvdGVzXG4gICAgICB2YXIgaiA9IEksIGM7XG4gICAgICBpZiAodGV4dC5jaGFyQ29kZUF0KGopID09PSAzNCkge1xuICAgICAgICB2YXIgaSA9IGo7XG4gICAgICAgIHdoaWxlIChpKysgPCBOKSB7XG4gICAgICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChpKSA9PT0gMzQpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0LmNoYXJDb2RlQXQoaSArIDEpICE9PSAzNCkgYnJlYWs7XG4gICAgICAgICAgICArK2k7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEkgPSBpICsgMjtcbiAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChpICsgMSk7XG4gICAgICAgIGlmIChjID09PSAxMykge1xuICAgICAgICAgIGVvbCA9IHRydWU7XG4gICAgICAgICAgaWYgKHRleHQuY2hhckNvZGVBdChpICsgMikgPT09IDEwKSArK0k7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gMTApIHtcbiAgICAgICAgICBlb2wgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0LnNsaWNlKGogKyAxLCBpKS5yZXBsYWNlKC9cIlwiL2csIFwiXFxcIlwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gY29tbW9uIGNhc2U6IGZpbmQgbmV4dCBkZWxpbWl0ZXIgb3IgbmV3bGluZVxuICAgICAgd2hpbGUgKEkgPCBOKSB7XG4gICAgICAgIHZhciBrID0gMTtcbiAgICAgICAgYyA9IHRleHQuY2hhckNvZGVBdChJKyspO1xuICAgICAgICBpZiAoYyA9PT0gMTApIGVvbCA9IHRydWU7IC8vIFxcblxuICAgICAgICBlbHNlIGlmIChjID09PSAxMykgeyBlb2wgPSB0cnVlOyBpZiAodGV4dC5jaGFyQ29kZUF0KEkpID09PSAxMCkgKytJLCArK2s7IH0gLy8gXFxyfFxcclxcblxuICAgICAgICBlbHNlIGlmIChjICE9PSBkZWxpbWl0ZXJDb2RlKSBjb250aW51ZTtcbiAgICAgICAgcmV0dXJuIHRleHQuc2xpY2UoaiwgSSAtIGspO1xuICAgICAgfVxuXG4gICAgICAvLyBzcGVjaWFsIGNhc2U6IGxhc3QgdG9rZW4gYmVmb3JlIEVPRlxuICAgICAgcmV0dXJuIHRleHQuc2xpY2Uoaik7XG4gICAgfVxuXG4gICAgd2hpbGUgKCh0ID0gdG9rZW4oKSkgIT09IEVPRikge1xuICAgICAgdmFyIGEgPSBbXTtcbiAgICAgIHdoaWxlICh0ICE9PSBFT0wgJiYgdCAhPT0gRU9GKSB7XG4gICAgICAgIGEucHVzaCh0KTtcbiAgICAgICAgdCA9IHRva2VuKCk7XG4gICAgICB9XG4gICAgICBpZiAoZiAmJiAoYSA9IGYoYSwgbisrKSkgPT0gbnVsbCkgY29udGludWU7XG4gICAgICByb3dzLnB1c2goYSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXQocm93cywgY29sdW1ucykge1xuICAgIGlmIChjb2x1bW5zID09IG51bGwpIGNvbHVtbnMgPSBpbmZlckNvbHVtbnMocm93cyk7XG4gICAgcmV0dXJuIFtjb2x1bW5zLm1hcChmb3JtYXRWYWx1ZSkuam9pbihkZWxpbWl0ZXIpXS5jb25jYXQocm93cy5tYXAoZnVuY3Rpb24ocm93KSB7XG4gICAgICByZXR1cm4gY29sdW1ucy5tYXAoZnVuY3Rpb24oY29sdW1uKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRWYWx1ZShyb3dbY29sdW1uXSk7XG4gICAgICB9KS5qb2luKGRlbGltaXRlcik7XG4gICAgfSkpLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRSb3dzKHJvd3MpIHtcbiAgICByZXR1cm4gcm93cy5tYXAoZm9ybWF0Um93KS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0Um93KHJvdykge1xuICAgIHJldHVybiByb3cubWFwKGZvcm1hdFZhbHVlKS5qb2luKGRlbGltaXRlcik7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRWYWx1ZSh0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQgPT0gbnVsbCA/IFwiXCJcbiAgICAgICAgOiByZUZvcm1hdC50ZXN0KHRleHQgKz0gXCJcIikgPyBcIlxcXCJcIiArIHRleHQucmVwbGFjZSgvXFxcIi9nLCBcIlxcXCJcXFwiXCIpICsgXCJcXFwiXCJcbiAgICAgICAgOiB0ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgcGFyc2VSb3dzOiBwYXJzZVJvd3MsXG4gICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgZm9ybWF0Um93czogZm9ybWF0Um93c1xuICB9O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICB2YXIgeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCksXG4gICAgICB5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKTtcbiAgcmV0dXJuIGFkZCh0aGlzLmNvdmVyKHgsIHkpLCB4LCB5LCBkKTtcbn1cblxuZnVuY3Rpb24gYWRkKHRyZWUsIHgsIHksIGQpIHtcbiAgaWYgKGlzTmFOKHgpIHx8IGlzTmFOKHkpKSByZXR1cm4gdHJlZTsgLy8gaWdub3JlIGludmFsaWQgcG9pbnRzXG5cbiAgdmFyIHBhcmVudCxcbiAgICAgIG5vZGUgPSB0cmVlLl9yb290LFxuICAgICAgbGVhZiA9IHtkYXRhOiBkfSxcbiAgICAgIHgwID0gdHJlZS5feDAsXG4gICAgICB5MCA9IHRyZWUuX3kwLFxuICAgICAgeDEgPSB0cmVlLl94MSxcbiAgICAgIHkxID0gdHJlZS5feTEsXG4gICAgICB4bSxcbiAgICAgIHltLFxuICAgICAgeHAsXG4gICAgICB5cCxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0cmVlLl9yb290ID0gbGVhZiwgdHJlZTtcblxuICAvLyBGaW5kIHRoZSBleGlzdGluZyBsZWFmIGZvciB0aGUgbmV3IHBvaW50LCBvciBhZGQgaXQuXG4gIHdoaWxlIChub2RlLmxlbmd0aCkge1xuICAgIGlmIChyaWdodCA9IHggPj0gKHhtID0gKHgwICsgeDEpIC8gMikpIHgwID0geG07IGVsc2UgeDEgPSB4bTtcbiAgICBpZiAoYm90dG9tID0geSA+PSAoeW0gPSAoeTAgKyB5MSkgLyAyKSkgeTAgPSB5bTsgZWxzZSB5MSA9IHltO1xuICAgIGlmIChwYXJlbnQgPSBub2RlLCAhKG5vZGUgPSBub2RlW2kgPSBib3R0b20gPDwgMSB8IHJpZ2h0XSkpIHJldHVybiBwYXJlbnRbaV0gPSBsZWFmLCB0cmVlO1xuICB9XG5cbiAgLy8gSXMgdGhlIG5ldyBwb2ludCBpcyBleGFjdGx5IGNvaW5jaWRlbnQgd2l0aCB0aGUgZXhpc3RpbmcgcG9pbnQ/XG4gIHhwID0gK3RyZWUuX3guY2FsbChudWxsLCBub2RlLmRhdGEpO1xuICB5cCA9ICt0cmVlLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKTtcbiAgaWYgKHggPT09IHhwICYmIHkgPT09IHlwKSByZXR1cm4gbGVhZi5uZXh0ID0gbm9kZSwgcGFyZW50ID8gcGFyZW50W2ldID0gbGVhZiA6IHRyZWUuX3Jvb3QgPSBsZWFmLCB0cmVlO1xuXG4gIC8vIE90aGVyd2lzZSwgc3BsaXQgdGhlIGxlYWYgbm9kZSB1bnRpbCB0aGUgb2xkIGFuZCBuZXcgcG9pbnQgYXJlIHNlcGFyYXRlZC5cbiAgZG8ge1xuICAgIHBhcmVudCA9IHBhcmVudCA/IHBhcmVudFtpXSA9IG5ldyBBcnJheSg0KSA6IHRyZWUuX3Jvb3QgPSBuZXcgQXJyYXkoNCk7XG4gICAgaWYgKHJpZ2h0ID0geCA+PSAoeG0gPSAoeDAgKyB4MSkgLyAyKSkgeDAgPSB4bTsgZWxzZSB4MSA9IHhtO1xuICAgIGlmIChib3R0b20gPSB5ID49ICh5bSA9ICh5MCArIHkxKSAvIDIpKSB5MCA9IHltOyBlbHNlIHkxID0geW07XG4gIH0gd2hpbGUgKChpID0gYm90dG9tIDw8IDEgfCByaWdodCkgPT09IChqID0gKHlwID49IHltKSA8PCAxIHwgKHhwID49IHhtKSkpO1xuICByZXR1cm4gcGFyZW50W2pdID0gbm9kZSwgcGFyZW50W2ldID0gbGVhZiwgdHJlZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbChkYXRhKSB7XG4gIHZhciBkLCBpLCBuID0gZGF0YS5sZW5ndGgsXG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHh6ID0gbmV3IEFycmF5KG4pLFxuICAgICAgeXogPSBuZXcgQXJyYXkobiksXG4gICAgICB4MCA9IEluZmluaXR5LFxuICAgICAgeTAgPSBJbmZpbml0eSxcbiAgICAgIHgxID0gLUluZmluaXR5LFxuICAgICAgeTEgPSAtSW5maW5pdHk7XG5cbiAgLy8gQ29tcHV0ZSB0aGUgcG9pbnRzIGFuZCB0aGVpciBleHRlbnQuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCA9IGRhdGFbaV0pKSB8fCBpc05hTih5ID0gK3RoaXMuX3kuY2FsbChudWxsLCBkKSkpIGNvbnRpbnVlO1xuICAgIHh6W2ldID0geDtcbiAgICB5eltpXSA9IHk7XG4gICAgaWYgKHggPCB4MCkgeDAgPSB4O1xuICAgIGlmICh4ID4geDEpIHgxID0geDtcbiAgICBpZiAoeSA8IHkwKSB5MCA9IHk7XG4gICAgaWYgKHkgPiB5MSkgeTEgPSB5O1xuICB9XG5cbiAgLy8gSWYgdGhlcmUgd2VyZSBubyAodmFsaWQpIHBvaW50cywgaW5oZXJpdCB0aGUgZXhpc3RpbmcgZXh0ZW50LlxuICBpZiAoeDEgPCB4MCkgeDAgPSB0aGlzLl94MCwgeDEgPSB0aGlzLl94MTtcbiAgaWYgKHkxIDwgeTApIHkwID0gdGhpcy5feTAsIHkxID0gdGhpcy5feTE7XG5cbiAgLy8gRXhwYW5kIHRoZSB0cmVlIHRvIGNvdmVyIHRoZSBuZXcgcG9pbnRzLlxuICB0aGlzLmNvdmVyKHgwLCB5MCkuY292ZXIoeDEsIHkxKTtcblxuICAvLyBBZGQgdGhlIG5ldyBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICBhZGQodGhpcywgeHpbaV0sIHl6W2ldLCBkYXRhW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZCkge1xuICBpZiAoaXNOYU4oeCA9ICt0aGlzLl94LmNhbGwobnVsbCwgZCkpIHx8IGlzTmFOKHkgPSArdGhpcy5feS5jYWxsKG51bGwsIGQpKSkgcmV0dXJuIHRoaXM7IC8vIGlnbm9yZSBpbnZhbGlkIHBvaW50c1xuXG4gIHZhciBwYXJlbnQsXG4gICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgIHJldGFpbmVyLFxuICAgICAgcHJldmlvdXMsXG4gICAgICBuZXh0LFxuICAgICAgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgeG0sXG4gICAgICB5bSxcbiAgICAgIHJpZ2h0LFxuICAgICAgYm90dG9tLFxuICAgICAgaSxcbiAgICAgIGo7XG5cbiAgLy8gSWYgdGhlIHRyZWUgaXMgZW1wdHksIGluaXRpYWxpemUgdGhlIHJvb3QgYXMgYSBsZWFmLlxuICBpZiAoIW5vZGUpIHJldHVybiB0aGlzO1xuXG4gIC8vIEZpbmQgdGhlIGxlYWYgbm9kZSBmb3IgdGhlIHBvaW50LlxuICAvLyBXaGlsZSBkZXNjZW5kaW5nLCBhbHNvIHJldGFpbiB0aGUgZGVlcGVzdCBwYXJlbnQgd2l0aCBhIG5vbi1yZW1vdmVkIHNpYmxpbmcuXG4gIGlmIChub2RlLmxlbmd0aCkgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAocmlnaHQgPSB4ID49ICh4bSA9ICh4MCArIHgxKSAvIDIpKSB4MCA9IHhtOyBlbHNlIHgxID0geG07XG4gICAgaWYgKGJvdHRvbSA9IHkgPj0gKHltID0gKHkwICsgeTEpIC8gMikpIHkwID0geW07IGVsc2UgeTEgPSB5bTtcbiAgICBpZiAoIShwYXJlbnQgPSBub2RlLCBub2RlID0gbm9kZVtpID0gYm90dG9tIDw8IDEgfCByaWdodF0pKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIW5vZGUubGVuZ3RoKSBicmVhaztcbiAgICBpZiAocGFyZW50WyhpICsgMSkgJiAzXSB8fCBwYXJlbnRbKGkgKyAyKSAmIDNdIHx8IHBhcmVudFsoaSArIDMpICYgM10pIHJldGFpbmVyID0gcGFyZW50LCBqID0gaTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIHBvaW50IHRvIHJlbW92ZS5cbiAgd2hpbGUgKG5vZGUuZGF0YSAhPT0gZCkgaWYgKCEocHJldmlvdXMgPSBub2RlLCBub2RlID0gbm9kZS5uZXh0KSkgcmV0dXJuIHRoaXM7XG4gIGlmIChuZXh0ID0gbm9kZS5uZXh0KSBkZWxldGUgbm9kZS5uZXh0O1xuXG4gIC8vIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb2luY2lkZW50IHBvaW50cywgcmVtb3ZlIGp1c3QgdGhlIHBvaW50LlxuICBpZiAocHJldmlvdXMpIHJldHVybiAobmV4dCA/IHByZXZpb3VzLm5leHQgPSBuZXh0IDogZGVsZXRlIHByZXZpb3VzLm5leHQpLCB0aGlzO1xuXG4gIC8vIElmIHRoaXMgaXMgdGhlIHJvb3QgcG9pbnQsIHJlbW92ZSBpdC5cbiAgaWYgKCFwYXJlbnQpIHJldHVybiB0aGlzLl9yb290ID0gbmV4dCwgdGhpcztcblxuICAvLyBSZW1vdmUgdGhpcyBsZWFmLlxuICBuZXh0ID8gcGFyZW50W2ldID0gbmV4dCA6IGRlbGV0ZSBwYXJlbnRbaV07XG5cbiAgLy8gSWYgdGhlIHBhcmVudCBub3cgY29udGFpbnMgZXhhY3RseSBvbmUgbGVhZiwgY29sbGFwc2Ugc3VwZXJmbHVvdXMgcGFyZW50cy5cbiAgaWYgKChub2RlID0gcGFyZW50WzBdIHx8IHBhcmVudFsxXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzNdKVxuICAgICAgJiYgbm9kZSA9PT0gKHBhcmVudFszXSB8fCBwYXJlbnRbMl0gfHwgcGFyZW50WzFdIHx8IHBhcmVudFswXSlcbiAgICAgICYmICFub2RlLmxlbmd0aCkge1xuICAgIGlmIChyZXRhaW5lcikgcmV0YWluZXJbal0gPSBub2RlO1xuICAgIGVsc2UgdGhpcy5fcm9vdCA9IG5vZGU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUFsbChkYXRhKSB7XG4gIGZvciAodmFyIGkgPSAwLCBuID0gZGF0YS5sZW5ndGg7IGkgPCBuOyArK2kpIHRoaXMucmVtb3ZlKGRhdGFbaV0pO1xuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0WChkKSB7XG4gIHJldHVybiBkWzBdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRoaXMuX3ggPSBfLCB0aGlzKSA6IHRoaXMuX3g7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFkoZCkge1xuICByZXR1cm4gZFsxXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oXykge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0aGlzLl95ID0gXywgdGhpcykgOiB0aGlzLl95O1xufVxuIiwiaW1wb3J0IHRyZWVfYWRkLCB7YWRkQWxsIGFzIHRyZWVfYWRkQWxsfSBmcm9tIFwiLi9hZGRcIjtcbmltcG9ydCB0cmVlX2NvdmVyIGZyb20gXCIuL2NvdmVyXCI7XG5pbXBvcnQgdHJlZV9kYXRhIGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB0cmVlX2V4dGVudCBmcm9tIFwiLi9leHRlbnRcIjtcbmltcG9ydCB0cmVlX2ZpbmQgZnJvbSBcIi4vZmluZFwiO1xuaW1wb3J0IHRyZWVfcmVtb3ZlLCB7cmVtb3ZlQWxsIGFzIHRyZWVfcmVtb3ZlQWxsfSBmcm9tIFwiLi9yZW1vdmVcIjtcbmltcG9ydCB0cmVlX3Jvb3QgZnJvbSBcIi4vcm9vdFwiO1xuaW1wb3J0IHRyZWVfc2l6ZSBmcm9tIFwiLi9zaXplXCI7XG5pbXBvcnQgdHJlZV92aXNpdCBmcm9tIFwiLi92aXNpdFwiO1xuaW1wb3J0IHRyZWVfdmlzaXRBZnRlciBmcm9tIFwiLi92aXNpdEFmdGVyXCI7XG5pbXBvcnQgdHJlZV94LCB7ZGVmYXVsdFh9IGZyb20gXCIuL3hcIjtcbmltcG9ydCB0cmVlX3ksIHtkZWZhdWx0WX0gZnJvbSBcIi4veVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWFkdHJlZShub2RlcywgeCwgeSkge1xuICB2YXIgdHJlZSA9IG5ldyBRdWFkdHJlZSh4ID09IG51bGwgPyBkZWZhdWx0WCA6IHgsIHkgPT0gbnVsbCA/IGRlZmF1bHRZIDogeSwgTmFOLCBOYU4sIE5hTiwgTmFOKTtcbiAgcmV0dXJuIG5vZGVzID09IG51bGwgPyB0cmVlIDogdHJlZS5hZGRBbGwobm9kZXMpO1xufVxuXG5mdW5jdGlvbiBRdWFkdHJlZSh4LCB5LCB4MCwgeTAsIHgxLCB5MSkge1xuICB0aGlzLl94ID0geDtcbiAgdGhpcy5feSA9IHk7XG4gIHRoaXMuX3gwID0geDA7XG4gIHRoaXMuX3kwID0geTA7XG4gIHRoaXMuX3gxID0geDE7XG4gIHRoaXMuX3kxID0geTE7XG4gIHRoaXMuX3Jvb3QgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGxlYWZfY29weShsZWFmKSB7XG4gIHZhciBjb3B5ID0ge2RhdGE6IGxlYWYuZGF0YX0sIG5leHQgPSBjb3B5O1xuICB3aGlsZSAobGVhZiA9IGxlYWYubmV4dCkgbmV4dCA9IG5leHQubmV4dCA9IHtkYXRhOiBsZWFmLmRhdGF9O1xuICByZXR1cm4gY29weTtcbn1cblxudmFyIHRyZWVQcm90byA9IHF1YWR0cmVlLnByb3RvdHlwZSA9IFF1YWR0cmVlLnByb3RvdHlwZTtcblxudHJlZVByb3RvLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNvcHkgPSBuZXcgUXVhZHRyZWUodGhpcy5feCwgdGhpcy5feSwgdGhpcy5feDAsIHRoaXMuX3kwLCB0aGlzLl94MSwgdGhpcy5feTEpLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBub2RlcyxcbiAgICAgIGNoaWxkO1xuXG4gIGlmICghbm9kZSkgcmV0dXJuIGNvcHk7XG5cbiAgaWYgKCFub2RlLmxlbmd0aCkgcmV0dXJuIGNvcHkuX3Jvb3QgPSBsZWFmX2NvcHkobm9kZSksIGNvcHk7XG5cbiAgbm9kZXMgPSBbe3NvdXJjZTogbm9kZSwgdGFyZ2V0OiBjb3B5Ll9yb290ID0gbmV3IEFycmF5KDQpfV07XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkge1xuICAgICAgaWYgKGNoaWxkID0gbm9kZS5zb3VyY2VbaV0pIHtcbiAgICAgICAgaWYgKGNoaWxkLmxlbmd0aCkgbm9kZXMucHVzaCh7c291cmNlOiBjaGlsZCwgdGFyZ2V0OiBub2RlLnRhcmdldFtpXSA9IG5ldyBBcnJheSg0KX0pO1xuICAgICAgICBlbHNlIG5vZGUudGFyZ2V0W2ldID0gbGVhZl9jb3B5KGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07XG5cbnRyZWVQcm90by5hZGQgPSB0cmVlX2FkZDtcbnRyZWVQcm90by5hZGRBbGwgPSB0cmVlX2FkZEFsbDtcbnRyZWVQcm90by5jb3ZlciA9IHRyZWVfY292ZXI7XG50cmVlUHJvdG8uZGF0YSA9IHRyZWVfZGF0YTtcbnRyZWVQcm90by5leHRlbnQgPSB0cmVlX2V4dGVudDtcbnRyZWVQcm90by5maW5kID0gdHJlZV9maW5kO1xudHJlZVByb3RvLnJlbW92ZSA9IHRyZWVfcmVtb3ZlO1xudHJlZVByb3RvLnJlbW92ZUFsbCA9IHRyZWVfcmVtb3ZlQWxsO1xudHJlZVByb3RvLnJvb3QgPSB0cmVlX3Jvb3Q7XG50cmVlUHJvdG8uc2l6ZSA9IHRyZWVfc2l6ZTtcbnRyZWVQcm90by52aXNpdCA9IHRyZWVfdmlzaXQ7XG50cmVlUHJvdG8udmlzaXRBZnRlciA9IHRyZWVfdmlzaXRBZnRlcjtcbnRyZWVQcm90by54ID0gdHJlZV94O1xudHJlZVByb3RvLnkgPSB0cmVlX3k7XG4iLCJpbXBvcnQgZm9ybWF0VHlwZXMgZnJvbSBcIi4vZm9ybWF0VHlwZXNcIjtcblxuLy8gW1tmaWxsXWFsaWduXVtzaWduXVtzeW1ib2xdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxudmFyIHJlID0gL14oPzooLik/KFs8Pj1eXSkpPyhbK1xcLVxcKCBdKT8oWyQjXSk/KDApPyhcXGQrKT8oLCk/KFxcLlxcZCspPyhbYS16JV0pPyQvaTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcikge1xuICByZXR1cm4gbmV3IEZvcm1hdFNwZWNpZmllcihzcGVjaWZpZXIpO1xufVxuXG5mb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlID0gRm9ybWF0U3BlY2lmaWVyLnByb3RvdHlwZTsgLy8gaW5zdGFuY2VvZlxuXG5mdW5jdGlvbiBGb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSB7XG4gIGlmICghKG1hdGNoID0gcmUuZXhlYyhzcGVjaWZpZXIpKSkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBmb3JtYXQ6IFwiICsgc3BlY2lmaWVyKTtcblxuICB2YXIgbWF0Y2gsXG4gICAgICBmaWxsID0gbWF0Y2hbMV0gfHwgXCIgXCIsXG4gICAgICBhbGlnbiA9IG1hdGNoWzJdIHx8IFwiPlwiLFxuICAgICAgc2lnbiA9IG1hdGNoWzNdIHx8IFwiLVwiLFxuICAgICAgc3ltYm9sID0gbWF0Y2hbNF0gfHwgXCJcIixcbiAgICAgIHplcm8gPSAhIW1hdGNoWzVdLFxuICAgICAgd2lkdGggPSBtYXRjaFs2XSAmJiArbWF0Y2hbNl0sXG4gICAgICBjb21tYSA9ICEhbWF0Y2hbN10sXG4gICAgICBwcmVjaXNpb24gPSBtYXRjaFs4XSAmJiArbWF0Y2hbOF0uc2xpY2UoMSksXG4gICAgICB0eXBlID0gbWF0Y2hbOV0gfHwgXCJcIjtcblxuICAvLyBUaGUgXCJuXCIgdHlwZSBpcyBhbiBhbGlhcyBmb3IgXCIsZ1wiLlxuICBpZiAodHlwZSA9PT0gXCJuXCIpIGNvbW1hID0gdHJ1ZSwgdHlwZSA9IFwiZ1wiO1xuXG4gIC8vIE1hcCBpbnZhbGlkIHR5cGVzIHRvIHRoZSBkZWZhdWx0IGZvcm1hdC5cbiAgZWxzZSBpZiAoIWZvcm1hdFR5cGVzW3R5cGVdKSB0eXBlID0gXCJcIjtcblxuICAvLyBJZiB6ZXJvIGZpbGwgaXMgc3BlY2lmaWVkLCBwYWRkaW5nIGdvZXMgYWZ0ZXIgc2lnbiBhbmQgYmVmb3JlIGRpZ2l0cy5cbiAgaWYgKHplcm8gfHwgKGZpbGwgPT09IFwiMFwiICYmIGFsaWduID09PSBcIj1cIikpIHplcm8gPSB0cnVlLCBmaWxsID0gXCIwXCIsIGFsaWduID0gXCI9XCI7XG5cbiAgdGhpcy5maWxsID0gZmlsbDtcbiAgdGhpcy5hbGlnbiA9IGFsaWduO1xuICB0aGlzLnNpZ24gPSBzaWduO1xuICB0aGlzLnN5bWJvbCA9IHN5bWJvbDtcbiAgdGhpcy56ZXJvID0gemVybztcbiAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB0aGlzLmNvbW1hID0gY29tbWE7XG4gIHRoaXMucHJlY2lzaW9uID0gcHJlY2lzaW9uO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xufVxuXG5Gb3JtYXRTcGVjaWZpZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZpbGxcbiAgICAgICsgdGhpcy5hbGlnblxuICAgICAgKyB0aGlzLnNpZ25cbiAgICAgICsgdGhpcy5zeW1ib2xcbiAgICAgICsgKHRoaXMuemVybyA/IFwiMFwiIDogXCJcIilcbiAgICAgICsgKHRoaXMud2lkdGggPT0gbnVsbCA/IFwiXCIgOiBNYXRoLm1heCgxLCB0aGlzLndpZHRoIHwgMCkpXG4gICAgICArICh0aGlzLmNvbW1hID8gXCIsXCIgOiBcIlwiKVxuICAgICAgKyAodGhpcy5wcmVjaXNpb24gPT0gbnVsbCA/IFwiXCIgOiBcIi5cIiArIE1hdGgubWF4KDAsIHRoaXMucHJlY2lzaW9uIHwgMCkpXG4gICAgICArIHRoaXMudHlwZTtcbn07XG4iLCIvLyBBZGRzIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgd2l0aCB0d2ljZSB0aGUgbm9ybWFsIHByZWNpc2lvbi5cbi8vIFJlZmVyZW5jZTogSi4gUi4gU2hld2NodWssIEFkYXB0aXZlIFByZWNpc2lvbiBGbG9hdGluZy1Qb2ludCBBcml0aG1ldGljIGFuZFxuLy8gRmFzdCBSb2J1c3QgR2VvbWV0cmljIFByZWRpY2F0ZXMsIERpc2NyZXRlICYgQ29tcHV0YXRpb25hbCBHZW9tZXRyeSAxOCgzKVxuLy8gMzA14oCTMzYzICgxOTk3KS5cbi8vIENvZGUgYWRhcHRlZCBmcm9tIEdlb2dyYXBoaWNMaWIgYnkgQ2hhcmxlcyBGLiBGLiBLYXJuZXksXG4vLyBodHRwOi8vZ2VvZ3JhcGhpY2xpYi5zb3VyY2Vmb3JnZS5uZXQvXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IEFkZGVyO1xufVxuXG5mdW5jdGlvbiBBZGRlcigpIHtcbiAgdGhpcy5yZXNldCgpO1xufVxuXG5BZGRlci5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBBZGRlcixcbiAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMucyA9IC8vIHJvdW5kZWQgdmFsdWVcbiAgICB0aGlzLnQgPSAwOyAvLyBleGFjdCBlcnJvclxuICB9LFxuICBhZGQ6IGZ1bmN0aW9uKHkpIHtcbiAgICBhZGQodGVtcCwgeSwgdGhpcy50KTtcbiAgICBhZGQodGhpcywgdGVtcC5zLCB0aGlzLnMpO1xuICAgIGlmICh0aGlzLnMpIHRoaXMudCArPSB0ZW1wLnQ7XG4gICAgZWxzZSB0aGlzLnMgPSB0ZW1wLnQ7XG4gIH0sXG4gIHZhbHVlT2Y6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnM7XG4gIH1cbn07XG5cbnZhciB0ZW1wID0gbmV3IEFkZGVyO1xuXG5mdW5jdGlvbiBhZGQoYWRkZXIsIGEsIGIpIHtcbiAgdmFyIHggPSBhZGRlci5zID0gYSArIGIsXG4gICAgICBidiA9IHggLSBhLFxuICAgICAgYXYgPSB4IC0gYnY7XG4gIGFkZGVyLnQgPSAoYSAtIGF2KSArIChiIC0gYnYpO1xufVxuIiwiZXhwb3J0IHZhciBlcHNpbG9uID0gMWUtNjtcbmV4cG9ydCB2YXIgZXBzaWxvbjIgPSAxZS0xMjtcbmV4cG9ydCB2YXIgcGkgPSBNYXRoLlBJO1xuZXhwb3J0IHZhciBoYWxmUGkgPSBwaSAvIDI7XG5leHBvcnQgdmFyIHF1YXJ0ZXJQaSA9IHBpIC8gNDtcbmV4cG9ydCB2YXIgdGF1ID0gcGkgKiAyO1xuXG5leHBvcnQgdmFyIGRlZ3JlZXMgPSAxODAgLyBwaTtcbmV4cG9ydCB2YXIgcmFkaWFucyA9IHBpIC8gMTgwO1xuXG5leHBvcnQgdmFyIGFicyA9IE1hdGguYWJzO1xuZXhwb3J0IHZhciBhdGFuID0gTWF0aC5hdGFuO1xuZXhwb3J0IHZhciBhdGFuMiA9IE1hdGguYXRhbjI7XG5leHBvcnQgdmFyIGNvcyA9IE1hdGguY29zO1xuZXhwb3J0IHZhciBjZWlsID0gTWF0aC5jZWlsO1xuZXhwb3J0IHZhciBleHAgPSBNYXRoLmV4cDtcbmV4cG9ydCB2YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuZXhwb3J0IHZhciBsb2cgPSBNYXRoLmxvZztcbmV4cG9ydCB2YXIgcG93ID0gTWF0aC5wb3c7XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBzaWduID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9O1xuZXhwb3J0IHZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xuZXhwb3J0IHZhciB0YW4gPSBNYXRoLnRhbjtcblxuZXhwb3J0IGZ1bmN0aW9uIGFjb3MoeCkge1xuICByZXR1cm4geCA+IDEgPyAwIDogeCA8IC0xID8gcGkgOiBNYXRoLmFjb3MoeCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gaGFsZlBpIDogeCA8IC0xID8gLWhhbGZQaSA6IE1hdGguYXNpbih4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhdmVyc2luKHgpIHtcbiAgcmV0dXJuICh4ID0gc2luKHggLyAyKSkgKiB4O1xufVxuIiwiaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxSYXcoc2NhbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgY3ggPSBjb3MoeCksXG4gICAgICAgIGN5ID0gY29zKHkpLFxuICAgICAgICBrID0gc2NhbGUoY3ggKiBjeSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIGsgKiBjeSAqIHNpbih4KSxcbiAgICAgIGsgKiBzaW4oeSlcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhemltdXRoYWxJbnZlcnQoYW5nbGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgeiA9IHNxcnQoeCAqIHggKyB5ICogeSksXG4gICAgICAgIGMgPSBhbmdsZSh6KSxcbiAgICAgICAgc2MgPSBzaW4oYyksXG4gICAgICAgIGNjID0gY29zKGMpO1xuICAgIHJldHVybiBbXG4gICAgICBhdGFuMih4ICogc2MsIHogKiBjYyksXG4gICAgICBhc2luKHogJiYgeSAqIHNjIC8geilcbiAgICBdO1xuICB9XG59XG4iLCJmdW5jdGlvbiBjb3VudChub2RlKSB7XG4gIHZhciBzdW0gPSAwLFxuICAgICAgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgaWYgKCFpKSBzdW0gPSAxO1xuICBlbHNlIHdoaWxlICgtLWkgPj0gMCkgc3VtICs9IGNoaWxkcmVuW2ldLnZhbHVlO1xuICBub2RlLnZhbHVlID0gc3VtO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEFmdGVyKGNvdW50KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGVuZCkge1xuICB2YXIgc3RhcnQgPSB0aGlzLFxuICAgICAgYW5jZXN0b3IgPSBsZWFzdENvbW1vbkFuY2VzdG9yKHN0YXJ0LCBlbmQpLFxuICAgICAgbm9kZXMgPSBbc3RhcnRdO1xuICB3aGlsZSAoc3RhcnQgIT09IGFuY2VzdG9yKSB7XG4gICAgc3RhcnQgPSBzdGFydC5wYXJlbnQ7XG4gICAgbm9kZXMucHVzaChzdGFydCk7XG4gIH1cbiAgdmFyIGsgPSBub2Rlcy5sZW5ndGg7XG4gIHdoaWxlIChlbmQgIT09IGFuY2VzdG9yKSB7XG4gICAgbm9kZXMuc3BsaWNlKGssIDAsIGVuZCk7XG4gICAgZW5kID0gZW5kLnBhcmVudDtcbiAgfVxuICByZXR1cm4gbm9kZXM7XG59XG5cbmZ1bmN0aW9uIGxlYXN0Q29tbW9uQW5jZXN0b3IoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIGE7XG4gIHZhciBhTm9kZXMgPSBhLmFuY2VzdG9ycygpLFxuICAgICAgYk5vZGVzID0gYi5hbmNlc3RvcnMoKSxcbiAgICAgIGMgPSBudWxsO1xuICBhID0gYU5vZGVzLnBvcCgpO1xuICBiID0gYk5vZGVzLnBvcCgpO1xuICB3aGlsZSAoYSA9PT0gYikge1xuICAgIGMgPSBhO1xuICAgIGEgPSBhTm9kZXMucG9wKCk7XG4gICAgYiA9IGJOb2Rlcy5wb3AoKTtcbiAgfVxuICByZXR1cm4gYztcbn1cbiIsImltcG9ydCBub2RlX2NvdW50IGZyb20gXCIuL2NvdW50XCI7XG5pbXBvcnQgbm9kZV9lYWNoIGZyb20gXCIuL2VhY2hcIjtcbmltcG9ydCBub2RlX2VhY2hCZWZvcmUgZnJvbSBcIi4vZWFjaEJlZm9yZVwiO1xuaW1wb3J0IG5vZGVfZWFjaEFmdGVyIGZyb20gXCIuL2VhY2hBZnRlclwiO1xuaW1wb3J0IG5vZGVfc3VtIGZyb20gXCIuL3N1bVwiO1xuaW1wb3J0IG5vZGVfc29ydCBmcm9tIFwiLi9zb3J0XCI7XG5pbXBvcnQgbm9kZV9wYXRoIGZyb20gXCIuL3BhdGhcIjtcbmltcG9ydCBub2RlX2FuY2VzdG9ycyBmcm9tIFwiLi9hbmNlc3RvcnNcIjtcbmltcG9ydCBub2RlX2Rlc2NlbmRhbnRzIGZyb20gXCIuL2Rlc2NlbmRhbnRzXCI7XG5pbXBvcnQgbm9kZV9sZWF2ZXMgZnJvbSBcIi4vbGVhdmVzXCI7XG5pbXBvcnQgbm9kZV9saW5rcyBmcm9tIFwiLi9saW5rc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoaWVyYXJjaHkoZGF0YSwgY2hpbGRyZW4pIHtcbiAgdmFyIHJvb3QgPSBuZXcgTm9kZShkYXRhKSxcbiAgICAgIHZhbHVlZCA9ICtkYXRhLnZhbHVlICYmIChyb290LnZhbHVlID0gZGF0YS52YWx1ZSksXG4gICAgICBub2RlLFxuICAgICAgbm9kZXMgPSBbcm9vdF0sXG4gICAgICBjaGlsZCxcbiAgICAgIGNoaWxkcyxcbiAgICAgIGksXG4gICAgICBuO1xuXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSBjaGlsZHJlbiA9IGRlZmF1bHRDaGlsZHJlbjtcblxuICB3aGlsZSAobm9kZSA9IG5vZGVzLnBvcCgpKSB7XG4gICAgaWYgKHZhbHVlZCkgbm9kZS52YWx1ZSA9ICtub2RlLmRhdGEudmFsdWU7XG4gICAgaWYgKChjaGlsZHMgPSBjaGlsZHJlbihub2RlLmRhdGEpKSAmJiAobiA9IGNoaWxkcy5sZW5ndGgpKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gbmV3IEFycmF5KG4pO1xuICAgICAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIG5vZGVzLnB1c2goY2hpbGQgPSBub2RlLmNoaWxkcmVuW2ldID0gbmV3IE5vZGUoY2hpbGRzW2ldKSk7XG4gICAgICAgIGNoaWxkLnBhcmVudCA9IG5vZGU7XG4gICAgICAgIGNoaWxkLmRlcHRoID0gbm9kZS5kZXB0aCArIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJvb3QuZWFjaEJlZm9yZShjb21wdXRlSGVpZ2h0KTtcbn1cblxuZnVuY3Rpb24gbm9kZV9jb3B5KCkge1xuICByZXR1cm4gaGllcmFyY2h5KHRoaXMpLmVhY2hCZWZvcmUoY29weURhdGEpO1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q2hpbGRyZW4oZCkge1xuICByZXR1cm4gZC5jaGlsZHJlbjtcbn1cblxuZnVuY3Rpb24gY29weURhdGEobm9kZSkge1xuICBub2RlLmRhdGEgPSBub2RlLmRhdGEuZGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVIZWlnaHQobm9kZSkge1xuICB2YXIgaGVpZ2h0ID0gMDtcbiAgZG8gbm9kZS5oZWlnaHQgPSBoZWlnaHQ7XG4gIHdoaWxlICgobm9kZSA9IG5vZGUucGFyZW50KSAmJiAobm9kZS5oZWlnaHQgPCArK2hlaWdodCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTm9kZShkYXRhKSB7XG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMuZGVwdGggPVxuICB0aGlzLmhlaWdodCA9IDA7XG4gIHRoaXMucGFyZW50ID0gbnVsbDtcbn1cblxuTm9kZS5wcm90b3R5cGUgPSBoaWVyYXJjaHkucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogTm9kZSxcbiAgY291bnQ6IG5vZGVfY291bnQsXG4gIGVhY2g6IG5vZGVfZWFjaCxcbiAgZWFjaEFmdGVyOiBub2RlX2VhY2hBZnRlcixcbiAgZWFjaEJlZm9yZTogbm9kZV9lYWNoQmVmb3JlLFxuICBzdW06IG5vZGVfc3VtLFxuICBzb3J0OiBub2RlX3NvcnQsXG4gIHBhdGg6IG5vZGVfcGF0aCxcbiAgYW5jZXN0b3JzOiBub2RlX2FuY2VzdG9ycyxcbiAgZGVzY2VuZGFudHM6IG5vZGVfZGVzY2VuZGFudHMsXG4gIGxlYXZlczogbm9kZV9sZWF2ZXMsXG4gIGxpbmtzOiBub2RlX2xpbmtzLFxuICBjb3B5OiBub2RlX2NvcHlcbn07XG4iLCJpbXBvcnQge05vZGV9IGZyb20gXCIuL2hpZXJhcmNoeS9pbmRleFwiO1xuXG5mdW5jdGlvbiBkZWZhdWx0U2VwYXJhdGlvbihhLCBiKSB7XG4gIHJldHVybiBhLnBhcmVudCA9PT0gYi5wYXJlbnQgPyAxIDogMjtcbn1cblxuLy8gZnVuY3Rpb24gcmFkaWFsU2VwYXJhdGlvbihhLCBiKSB7XG4vLyAgIHJldHVybiAoYS5wYXJlbnQgPT09IGIucGFyZW50ID8gMSA6IDIpIC8gYS5kZXB0aDtcbi8vIH1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHRyYXZlcnNlIHRoZSBsZWZ0IGNvbnRvdXIgb2YgYSBzdWJ0cmVlIChvclxuLy8gc3ViZm9yZXN0KS4gSXQgcmV0dXJucyB0aGUgc3VjY2Vzc29yIG9mIHYgb24gdGhpcyBjb250b3VyLiBUaGlzIHN1Y2Nlc3NvciBpc1xuLy8gZWl0aGVyIGdpdmVuIGJ5IHRoZSBsZWZ0bW9zdCBjaGlsZCBvZiB2IG9yIGJ5IHRoZSB0aHJlYWQgb2Ygdi4gVGhlIGZ1bmN0aW9uXG4vLyByZXR1cm5zIG51bGwgaWYgYW5kIG9ubHkgaWYgdiBpcyBvbiB0aGUgaGlnaGVzdCBsZXZlbCBvZiBpdHMgc3VidHJlZS5cbmZ1bmN0aW9uIG5leHRMZWZ0KHYpIHtcbiAgdmFyIGNoaWxkcmVuID0gdi5jaGlsZHJlbjtcbiAgcmV0dXJuIGNoaWxkcmVuID8gY2hpbGRyZW5bMF0gOiB2LnQ7XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gd29ya3MgYW5hbG9nb3VzbHkgdG8gbmV4dExlZnQuXG5mdW5jdGlvbiBuZXh0UmlnaHQodikge1xuICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuO1xuICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlbltjaGlsZHJlbi5sZW5ndGggLSAxXSA6IHYudDtcbn1cblxuLy8gU2hpZnRzIHRoZSBjdXJyZW50IHN1YnRyZWUgcm9vdGVkIGF0IHcrLiBUaGlzIGlzIGRvbmUgYnkgaW5jcmVhc2luZ1xuLy8gcHJlbGltKHcrKSBhbmQgbW9kKHcrKSBieSBzaGlmdC5cbmZ1bmN0aW9uIG1vdmVTdWJ0cmVlKHdtLCB3cCwgc2hpZnQpIHtcbiAgdmFyIGNoYW5nZSA9IHNoaWZ0IC8gKHdwLmkgLSB3bS5pKTtcbiAgd3AuYyAtPSBjaGFuZ2U7XG4gIHdwLnMgKz0gc2hpZnQ7XG4gIHdtLmMgKz0gY2hhbmdlO1xuICB3cC56ICs9IHNoaWZ0O1xuICB3cC5tICs9IHNoaWZ0O1xufVxuXG4vLyBBbGwgb3RoZXIgc2hpZnRzLCBhcHBsaWVkIHRvIHRoZSBzbWFsbGVyIHN1YnRyZWVzIGJldHdlZW4gdy0gYW5kIHcrLCBhcmVcbi8vIHBlcmZvcm1lZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBwcmVwYXJlIHRoZSBzaGlmdHMsIHdlIGhhdmUgdG8gYWRqdXN0XG4vLyBjaGFuZ2UodyspLCBzaGlmdCh3KyksIGFuZCBjaGFuZ2Uody0pLlxuZnVuY3Rpb24gZXhlY3V0ZVNoaWZ0cyh2KSB7XG4gIHZhciBzaGlmdCA9IDAsXG4gICAgICBjaGFuZ2UgPSAwLFxuICAgICAgY2hpbGRyZW4gPSB2LmNoaWxkcmVuLFxuICAgICAgaSA9IGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgIHc7XG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIHcgPSBjaGlsZHJlbltpXTtcbiAgICB3LnogKz0gc2hpZnQ7XG4gICAgdy5tICs9IHNoaWZ0O1xuICAgIHNoaWZ0ICs9IHcucyArIChjaGFuZ2UgKz0gdy5jKTtcbiAgfVxufVxuXG4vLyBJZiB2aS3igJlzIGFuY2VzdG9yIGlzIGEgc2libGluZyBvZiB2LCByZXR1cm5zIHZpLeKAmXMgYW5jZXN0b3IuIE90aGVyd2lzZSxcbi8vIHJldHVybnMgdGhlIHNwZWNpZmllZCAoZGVmYXVsdCkgYW5jZXN0b3IuXG5mdW5jdGlvbiBuZXh0QW5jZXN0b3IodmltLCB2LCBhbmNlc3Rvcikge1xuICByZXR1cm4gdmltLmEucGFyZW50ID09PSB2LnBhcmVudCA/IHZpbS5hIDogYW5jZXN0b3I7XG59XG5cbmZ1bmN0aW9uIFRyZWVOb2RlKG5vZGUsIGkpIHtcbiAgdGhpcy5fID0gbm9kZTtcbiAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICB0aGlzLmNoaWxkcmVuID0gbnVsbDtcbiAgdGhpcy5BID0gbnVsbDsgLy8gZGVmYXVsdCBhbmNlc3RvclxuICB0aGlzLmEgPSB0aGlzOyAvLyBhbmNlc3RvclxuICB0aGlzLnogPSAwOyAvLyBwcmVsaW1cbiAgdGhpcy5tID0gMDsgLy8gbW9kXG4gIHRoaXMuYyA9IDA7IC8vIGNoYW5nZVxuICB0aGlzLnMgPSAwOyAvLyBzaGlmdFxuICB0aGlzLnQgPSBudWxsOyAvLyB0aHJlYWRcbiAgdGhpcy5pID0gaTsgLy8gbnVtYmVyXG59XG5cblRyZWVOb2RlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTm9kZS5wcm90b3R5cGUpO1xuXG5mdW5jdGlvbiB0cmVlUm9vdChyb290KSB7XG4gIHZhciB0cmVlID0gbmV3IFRyZWVOb2RlKHJvb3QsIDApLFxuICAgICAgbm9kZSxcbiAgICAgIG5vZGVzID0gW3RyZWVdLFxuICAgICAgY2hpbGQsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGksXG4gICAgICBuO1xuXG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBpZiAoY2hpbGRyZW4gPSBub2RlLl8uY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBuZXcgQXJyYXkobiA9IGNoaWxkcmVuLmxlbmd0aCk7XG4gICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgbm9kZXMucHVzaChjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV0gPSBuZXcgVHJlZU5vZGUoY2hpbGRyZW5baV0sIGkpKTtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAodHJlZS5wYXJlbnQgPSBuZXcgVHJlZU5vZGUobnVsbCwgMCkpLmNoaWxkcmVuID0gW3RyZWVdO1xuICByZXR1cm4gdHJlZTtcbn1cblxuLy8gTm9kZS1saW5rIHRyZWUgZGlhZ3JhbSB1c2luZyB0aGUgUmVpbmdvbGQtVGlsZm9yZCBcInRpZHlcIiBhbGdvcml0aG1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VwYXJhdGlvbiA9IGRlZmF1bHRTZXBhcmF0aW9uLFxuICAgICAgZHggPSAxLFxuICAgICAgZHkgPSAxLFxuICAgICAgbm9kZVNpemUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIHRyZWUocm9vdCkge1xuICAgIHZhciB0ID0gdHJlZVJvb3Qocm9vdCk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBsYXlvdXQgdXNpbmcgQnVjaGhlaW0gZXQgYWwu4oCZcyBhbGdvcml0aG0uXG4gICAgdC5lYWNoQWZ0ZXIoZmlyc3RXYWxrKSwgdC5wYXJlbnQubSA9IC10Lno7XG4gICAgdC5lYWNoQmVmb3JlKHNlY29uZFdhbGspO1xuXG4gICAgLy8gSWYgYSBmaXhlZCBub2RlIHNpemUgaXMgc3BlY2lmaWVkLCBzY2FsZSB4IGFuZCB5LlxuICAgIGlmIChub2RlU2l6ZSkgcm9vdC5lYWNoQmVmb3JlKHNpemVOb2RlKTtcblxuICAgIC8vIElmIGEgZml4ZWQgdHJlZSBzaXplIGlzIHNwZWNpZmllZCwgc2NhbGUgeCBhbmQgeSBiYXNlZCBvbiB0aGUgZXh0ZW50LlxuICAgIC8vIENvbXB1dGUgdGhlIGxlZnQtbW9zdCwgcmlnaHQtbW9zdCwgYW5kIGRlcHRoLW1vc3Qgbm9kZXMgZm9yIGV4dGVudHMuXG4gICAgZWxzZSB7XG4gICAgICB2YXIgbGVmdCA9IHJvb3QsXG4gICAgICAgICAgcmlnaHQgPSByb290LFxuICAgICAgICAgIGJvdHRvbSA9IHJvb3Q7XG4gICAgICByb290LmVhY2hCZWZvcmUoZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS54IDwgbGVmdC54KSBsZWZ0ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUueCA+IHJpZ2h0LngpIHJpZ2h0ID0gbm9kZTtcbiAgICAgICAgaWYgKG5vZGUuZGVwdGggPiBib3R0b20uZGVwdGgpIGJvdHRvbSA9IG5vZGU7XG4gICAgICB9KTtcbiAgICAgIHZhciBzID0gbGVmdCA9PT0gcmlnaHQgPyAxIDogc2VwYXJhdGlvbihsZWZ0LCByaWdodCkgLyAyLFxuICAgICAgICAgIHR4ID0gcyAtIGxlZnQueCxcbiAgICAgICAgICBreCA9IGR4IC8gKHJpZ2h0LnggKyBzICsgdHgpLFxuICAgICAgICAgIGt5ID0gZHkgLyAoYm90dG9tLmRlcHRoIHx8IDEpO1xuICAgICAgcm9vdC5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICAgICAgbm9kZS54ID0gKG5vZGUueCArIHR4KSAqIGt4O1xuICAgICAgICBub2RlLnkgPSBub2RlLmRlcHRoICoga3k7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8vIENvbXB1dGVzIGEgcHJlbGltaW5hcnkgeC1jb29yZGluYXRlIGZvciB2LiBCZWZvcmUgdGhhdCwgRklSU1QgV0FMSyBpc1xuICAvLyBhcHBsaWVkIHJlY3Vyc2l2ZWx5IHRvIHRoZSBjaGlsZHJlbiBvZiB2LCBhcyB3ZWxsIGFzIHRoZSBmdW5jdGlvblxuICAvLyBBUFBPUlRJT04uIEFmdGVyIHNwYWNpbmcgb3V0IHRoZSBjaGlsZHJlbiBieSBjYWxsaW5nIEVYRUNVVEUgU0hJRlRTLCB0aGVcbiAgLy8gbm9kZSB2IGlzIHBsYWNlZCB0byB0aGUgbWlkcG9pbnQgb2YgaXRzIG91dGVybW9zdCBjaGlsZHJlbi5cbiAgZnVuY3Rpb24gZmlyc3RXYWxrKHYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSB2LmNoaWxkcmVuLFxuICAgICAgICBzaWJsaW5ncyA9IHYucGFyZW50LmNoaWxkcmVuLFxuICAgICAgICB3ID0gdi5pID8gc2libGluZ3Nbdi5pIC0gMV0gOiBudWxsO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgZXhlY3V0ZVNoaWZ0cyh2KTtcbiAgICAgIHZhciBtaWRwb2ludCA9IChjaGlsZHJlblswXS56ICsgY2hpbGRyZW5bY2hpbGRyZW4ubGVuZ3RoIC0gMV0ueikgLyAyO1xuICAgICAgaWYgKHcpIHtcbiAgICAgICAgdi56ID0gdy56ICsgc2VwYXJhdGlvbih2Ll8sIHcuXyk7XG4gICAgICAgIHYubSA9IHYueiAtIG1pZHBvaW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdi56ID0gbWlkcG9pbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh3KSB7XG4gICAgICB2LnogPSB3LnogKyBzZXBhcmF0aW9uKHYuXywgdy5fKTtcbiAgICB9XG4gICAgdi5wYXJlbnQuQSA9IGFwcG9ydGlvbih2LCB3LCB2LnBhcmVudC5BIHx8IHNpYmxpbmdzWzBdKTtcbiAgfVxuXG4gIC8vIENvbXB1dGVzIGFsbCByZWFsIHgtY29vcmRpbmF0ZXMgYnkgc3VtbWluZyB1cCB0aGUgbW9kaWZpZXJzIHJlY3Vyc2l2ZWx5LlxuICBmdW5jdGlvbiBzZWNvbmRXYWxrKHYpIHtcbiAgICB2Ll8ueCA9IHYueiArIHYucGFyZW50Lm07XG4gICAgdi5tICs9IHYucGFyZW50Lm07XG4gIH1cblxuICAvLyBUaGUgY29yZSBvZiB0aGUgYWxnb3JpdGhtLiBIZXJlLCBhIG5ldyBzdWJ0cmVlIGlzIGNvbWJpbmVkIHdpdGggdGhlXG4gIC8vIHByZXZpb3VzIHN1YnRyZWVzLiBUaHJlYWRzIGFyZSB1c2VkIHRvIHRyYXZlcnNlIHRoZSBpbnNpZGUgYW5kIG91dHNpZGVcbiAgLy8gY29udG91cnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWUgdXAgdG8gdGhlIGhpZ2hlc3QgY29tbW9uIGxldmVsLiBUaGVcbiAgLy8gdmVydGljZXMgdXNlZCBmb3IgdGhlIHRyYXZlcnNhbHMgYXJlIHZpKywgdmktLCB2by0sIGFuZCB2byssIHdoZXJlIHRoZVxuICAvLyBzdXBlcnNjcmlwdCBvIG1lYW5zIG91dHNpZGUgYW5kIGkgbWVhbnMgaW5zaWRlLCB0aGUgc3Vic2NyaXB0IC0gbWVhbnMgbGVmdFxuICAvLyBzdWJ0cmVlIGFuZCArIG1lYW5zIHJpZ2h0IHN1YnRyZWUuIEZvciBzdW1taW5nIHVwIHRoZSBtb2RpZmllcnMgYWxvbmcgdGhlXG4gIC8vIGNvbnRvdXIsIHdlIHVzZSByZXNwZWN0aXZlIHZhcmlhYmxlcyBzaSssIHNpLSwgc28tLCBhbmQgc28rLiBXaGVuZXZlciB0d29cbiAgLy8gbm9kZXMgb2YgdGhlIGluc2lkZSBjb250b3VycyBjb25mbGljdCwgd2UgY29tcHV0ZSB0aGUgbGVmdCBvbmUgb2YgdGhlXG4gIC8vIGdyZWF0ZXN0IHVuY29tbW9uIGFuY2VzdG9ycyB1c2luZyB0aGUgZnVuY3Rpb24gQU5DRVNUT1IgYW5kIGNhbGwgTU9WRVxuICAvLyBTVUJUUkVFIHRvIHNoaWZ0IHRoZSBzdWJ0cmVlIGFuZCBwcmVwYXJlIHRoZSBzaGlmdHMgb2Ygc21hbGxlciBzdWJ0cmVlcy5cbiAgLy8gRmluYWxseSwgd2UgYWRkIGEgbmV3IHRocmVhZCAoaWYgbmVjZXNzYXJ5KS5cbiAgZnVuY3Rpb24gYXBwb3J0aW9uKHYsIHcsIGFuY2VzdG9yKSB7XG4gICAgaWYgKHcpIHtcbiAgICAgIHZhciB2aXAgPSB2LFxuICAgICAgICAgIHZvcCA9IHYsXG4gICAgICAgICAgdmltID0gdyxcbiAgICAgICAgICB2b20gPSB2aXAucGFyZW50LmNoaWxkcmVuWzBdLFxuICAgICAgICAgIHNpcCA9IHZpcC5tLFxuICAgICAgICAgIHNvcCA9IHZvcC5tLFxuICAgICAgICAgIHNpbSA9IHZpbS5tLFxuICAgICAgICAgIHNvbSA9IHZvbS5tLFxuICAgICAgICAgIHNoaWZ0O1xuICAgICAgd2hpbGUgKHZpbSA9IG5leHRSaWdodCh2aW0pLCB2aXAgPSBuZXh0TGVmdCh2aXApLCB2aW0gJiYgdmlwKSB7XG4gICAgICAgIHZvbSA9IG5leHRMZWZ0KHZvbSk7XG4gICAgICAgIHZvcCA9IG5leHRSaWdodCh2b3ApO1xuICAgICAgICB2b3AuYSA9IHY7XG4gICAgICAgIHNoaWZ0ID0gdmltLnogKyBzaW0gLSB2aXAueiAtIHNpcCArIHNlcGFyYXRpb24odmltLl8sIHZpcC5fKTtcbiAgICAgICAgaWYgKHNoaWZ0ID4gMCkge1xuICAgICAgICAgIG1vdmVTdWJ0cmVlKG5leHRBbmNlc3Rvcih2aW0sIHYsIGFuY2VzdG9yKSwgdiwgc2hpZnQpO1xuICAgICAgICAgIHNpcCArPSBzaGlmdDtcbiAgICAgICAgICBzb3AgKz0gc2hpZnQ7XG4gICAgICAgIH1cbiAgICAgICAgc2ltICs9IHZpbS5tO1xuICAgICAgICBzaXAgKz0gdmlwLm07XG4gICAgICAgIHNvbSArPSB2b20ubTtcbiAgICAgICAgc29wICs9IHZvcC5tO1xuICAgICAgfVxuICAgICAgaWYgKHZpbSAmJiAhbmV4dFJpZ2h0KHZvcCkpIHtcbiAgICAgICAgdm9wLnQgPSB2aW07XG4gICAgICAgIHZvcC5tICs9IHNpbSAtIHNvcDtcbiAgICAgIH1cbiAgICAgIGlmICh2aXAgJiYgIW5leHRMZWZ0KHZvbSkpIHtcbiAgICAgICAgdm9tLnQgPSB2aXA7XG4gICAgICAgIHZvbS5tICs9IHNpcCAtIHNvbTtcbiAgICAgICAgYW5jZXN0b3IgPSB2O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYW5jZXN0b3I7XG4gIH1cblxuICBmdW5jdGlvbiBzaXplTm9kZShub2RlKSB7XG4gICAgbm9kZS54ICo9IGR4O1xuICAgIG5vZGUueSA9IG5vZGUuZGVwdGggKiBkeTtcbiAgfVxuXG4gIHRyZWUuc2VwYXJhdGlvbiA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChzZXBhcmF0aW9uID0geCwgdHJlZSkgOiBzZXBhcmF0aW9uO1xuICB9O1xuXG4gIHRyZWUuc2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IGZhbHNlLCBkeCA9ICt4WzBdLCBkeSA9ICt4WzFdLCB0cmVlKSA6IChub2RlU2l6ZSA/IG51bGwgOiBbZHgsIGR5XSk7XG4gIH07XG5cbiAgdHJlZS5ub2RlU2l6ZSA9IGZ1bmN0aW9uKHgpIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChub2RlU2l6ZSA9IHRydWUsIGR4ID0gK3hbMF0sIGR5ID0gK3hbMV0sIHRyZWUpIDogKG5vZGVTaXplID8gW2R4LCBkeV0gOiBudWxsKTtcbiAgfTtcblxuICByZXR1cm4gdHJlZTtcbn1cbiIsImltcG9ydCB7c2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5cbnZhciBub2Fib3J0ID0ge307XG5cbmZ1bmN0aW9uIFF1ZXVlKHNpemUpIHtcbiAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gIHRoaXMuX2NhbGwgPVxuICB0aGlzLl9lcnJvciA9IG51bGw7XG4gIHRoaXMuX3Rhc2tzID0gW107XG4gIHRoaXMuX2RhdGEgPSBbXTtcbiAgdGhpcy5fd2FpdGluZyA9XG4gIHRoaXMuX2FjdGl2ZSA9XG4gIHRoaXMuX2VuZGVkID1cbiAgdGhpcy5fc3RhcnQgPSAwOyAvLyBpbnNpZGUgYSBzeW5jaHJvbm91cyB0YXNrIGNhbGxiYWNrP1xufVxuXG5RdWV1ZS5wcm90b3R5cGUgPSBxdWV1ZS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBRdWV1ZSxcbiAgZGVmZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrXCIpO1xuICAgIGlmICh0aGlzLl9jYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJkZWZlciBhZnRlciBhd2FpdFwiKTtcbiAgICBpZiAodGhpcy5fZXJyb3IgIT0gbnVsbCkgcmV0dXJuIHRoaXM7XG4gICAgdmFyIHQgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdC5wdXNoKGNhbGxiYWNrKTtcbiAgICArK3RoaXMuX3dhaXRpbmcsIHRoaXMuX3Rhc2tzLnB1c2godCk7XG4gICAgcG9rZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgYWJvcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9lcnJvciA9PSBudWxsKSBhYm9ydCh0aGlzLCBuZXcgRXJyb3IoXCJhYm9ydFwiKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG4gIGF3YWl0OiBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjYWxsYmFja1wiKTtcbiAgICBpZiAodGhpcy5fY2FsbCkgdGhyb3cgbmV3IEVycm9yKFwibXVsdGlwbGUgYXdhaXRcIik7XG4gICAgdGhpcy5fY2FsbCA9IGZ1bmN0aW9uKGVycm9yLCByZXN1bHRzKSB7IGNhbGxiYWNrLmFwcGx5KG51bGwsIFtlcnJvcl0uY29uY2F0KHJlc3VsdHMpKTsgfTtcbiAgICBtYXliZU5vdGlmeSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfSxcbiAgYXdhaXRBbGw6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNhbGxiYWNrXCIpO1xuICAgIGlmICh0aGlzLl9jYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJtdWx0aXBsZSBhd2FpdFwiKTtcbiAgICB0aGlzLl9jYWxsID0gY2FsbGJhY2s7XG4gICAgbWF5YmVOb3RpZnkodGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHBva2UocSkge1xuICBpZiAoIXEuX3N0YXJ0KSB7XG4gICAgdHJ5IHsgc3RhcnQocSk7IH0gLy8gbGV0IHRoZSBjdXJyZW50IHRhc2sgY29tcGxldGVcbiAgICBjYXRjaCAoZSkge1xuICAgICAgaWYgKHEuX3Rhc2tzW3EuX2VuZGVkICsgcS5fYWN0aXZlIC0gMV0pIGFib3J0KHEsIGUpOyAvLyB0YXNrIGVycm9yZWQgc3luY2hyb25vdXNseVxuICAgICAgZWxzZSBpZiAoIXEuX2RhdGEpIHRocm93IGU7IC8vIGF3YWl0IGNhbGxiYWNrIGVycm9yZWQgc3luY2hyb25vdXNseVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydChxKSB7XG4gIHdoaWxlIChxLl9zdGFydCA9IHEuX3dhaXRpbmcgJiYgcS5fYWN0aXZlIDwgcS5fc2l6ZSkge1xuICAgIHZhciBpID0gcS5fZW5kZWQgKyBxLl9hY3RpdmUsXG4gICAgICAgIHQgPSBxLl90YXNrc1tpXSxcbiAgICAgICAgaiA9IHQubGVuZ3RoIC0gMSxcbiAgICAgICAgYyA9IHRbal07XG4gICAgdFtqXSA9IGVuZChxLCBpKTtcbiAgICAtLXEuX3dhaXRpbmcsICsrcS5fYWN0aXZlO1xuICAgIHQgPSBjLmFwcGx5KG51bGwsIHQpO1xuICAgIGlmICghcS5fdGFza3NbaV0pIGNvbnRpbnVlOyAvLyB0YXNrIGZpbmlzaGVkIHN5bmNocm9ub3VzbHlcbiAgICBxLl90YXNrc1tpXSA9IHQgfHwgbm9hYm9ydDtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmQocSwgaSkge1xuICByZXR1cm4gZnVuY3Rpb24oZSwgcikge1xuICAgIGlmICghcS5fdGFza3NbaV0pIHJldHVybjsgLy8gaWdub3JlIG11bHRpcGxlIGNhbGxiYWNrc1xuICAgIC0tcS5fYWN0aXZlLCArK3EuX2VuZGVkO1xuICAgIHEuX3Rhc2tzW2ldID0gbnVsbDtcbiAgICBpZiAocS5fZXJyb3IgIT0gbnVsbCkgcmV0dXJuOyAvLyBpZ25vcmUgc2Vjb25kYXJ5IGVycm9yc1xuICAgIGlmIChlICE9IG51bGwpIHtcbiAgICAgIGFib3J0KHEsIGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBxLl9kYXRhW2ldID0gcjtcbiAgICAgIGlmIChxLl93YWl0aW5nKSBwb2tlKHEpO1xuICAgICAgZWxzZSBtYXliZU5vdGlmeShxKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFib3J0KHEsIGUpIHtcbiAgdmFyIGkgPSBxLl90YXNrcy5sZW5ndGgsIHQ7XG4gIHEuX2Vycm9yID0gZTsgLy8gaWdub3JlIGFjdGl2ZSBjYWxsYmFja3NcbiAgcS5fZGF0YSA9IHVuZGVmaW5lZDsgLy8gYWxsb3cgZ2NcbiAgcS5fd2FpdGluZyA9IE5hTjsgLy8gcHJldmVudCBzdGFydGluZ1xuXG4gIHdoaWxlICgtLWkgPj0gMCkge1xuICAgIGlmICh0ID0gcS5fdGFza3NbaV0pIHtcbiAgICAgIHEuX3Rhc2tzW2ldID0gbnVsbDtcbiAgICAgIGlmICh0LmFib3J0KSB7XG4gICAgICAgIHRyeSB7IHQuYWJvcnQoKTsgfVxuICAgICAgICBjYXRjaCAoZSkgeyAvKiBpZ25vcmUgKi8gfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHEuX2FjdGl2ZSA9IE5hTjsgLy8gYWxsb3cgbm90aWZpY2F0aW9uXG4gIG1heWJlTm90aWZ5KHEpO1xufVxuXG5mdW5jdGlvbiBtYXliZU5vdGlmeShxKSB7XG4gIGlmICghcS5fYWN0aXZlICYmIHEuX2NhbGwpIHtcbiAgICB2YXIgZCA9IHEuX2RhdGE7XG4gICAgcS5fZGF0YSA9IHVuZGVmaW5lZDsgLy8gYWxsb3cgZ2NcbiAgICBxLl9jYWxsKHEuX2Vycm9yLCBkKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBxdWV1ZShjb25jdXJyZW5jeSkge1xuICBpZiAoY29uY3VycmVuY3kgPT0gbnVsbCkgY29uY3VycmVuY3kgPSBJbmZpbml0eTtcbiAgZWxzZSBpZiAoISgoY29uY3VycmVuY3kgPSArY29uY3VycmVuY3kpID49IDEpKSB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIGNvbmN1cnJlbmN5XCIpO1xuICByZXR1cm4gbmV3IFF1ZXVlKGNvbmN1cnJlbmN5KTtcbn1cbiIsImltcG9ydCB7YmlzZWN0fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGUgYXMgaW50ZXJwb2xhdGVWYWx1ZSwgaW50ZXJwb2xhdGVSb3VuZH0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge21hcCwgc2xpY2V9IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCBudW1iZXIgZnJvbSBcIi4vbnVtYmVyXCI7XG5cbnZhciB1bml0ID0gWzAsIDFdO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVpbnRlcnBvbGF0ZUxpbmVhcihhLCBiKSB7XG4gIHJldHVybiAoYiAtPSAoYSA9ICthKSlcbiAgICAgID8gZnVuY3Rpb24oeCkgeyByZXR1cm4gKHggLSBhKSAvIGI7IH1cbiAgICAgIDogY29uc3RhbnQoYik7XG59XG5cbmZ1bmN0aW9uIGRlaW50ZXJwb2xhdGVDbGFtcChkZWludGVycG9sYXRlKSB7XG4gIHJldHVybiBmdW5jdGlvbihhLCBiKSB7XG4gICAgdmFyIGQgPSBkZWludGVycG9sYXRlKGEgPSArYSwgYiA9ICtiKTtcbiAgICByZXR1cm4gZnVuY3Rpb24oeCkgeyByZXR1cm4geCA8PSBhID8gMCA6IHggPj0gYiA/IDEgOiBkKHgpOyB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWludGVycG9sYXRlQ2xhbXAocmVpbnRlcnBvbGF0ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oYSwgYikge1xuICAgIHZhciByID0gcmVpbnRlcnBvbGF0ZShhID0gK2EsIGIgPSArYik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHsgcmV0dXJuIHQgPD0gMCA/IGEgOiB0ID49IDEgPyBiIDogcih0KTsgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYmltYXAoZG9tYWluLCByYW5nZSwgZGVpbnRlcnBvbGF0ZSwgcmVpbnRlcnBvbGF0ZSkge1xuICB2YXIgZDAgPSBkb21haW5bMF0sIGQxID0gZG9tYWluWzFdLCByMCA9IHJhbmdlWzBdLCByMSA9IHJhbmdlWzFdO1xuICBpZiAoZDEgPCBkMCkgZDAgPSBkZWludGVycG9sYXRlKGQxLCBkMCksIHIwID0gcmVpbnRlcnBvbGF0ZShyMSwgcjApO1xuICBlbHNlIGQwID0gZGVpbnRlcnBvbGF0ZShkMCwgZDEpLCByMCA9IHJlaW50ZXJwb2xhdGUocjAsIHIxKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHIwKGQwKHgpKTsgfTtcbn1cblxuZnVuY3Rpb24gcG9seW1hcChkb21haW4sIHJhbmdlLCBkZWludGVycG9sYXRlLCByZWludGVycG9sYXRlKSB7XG4gIHZhciBqID0gTWF0aC5taW4oZG9tYWluLmxlbmd0aCwgcmFuZ2UubGVuZ3RoKSAtIDEsXG4gICAgICBkID0gbmV3IEFycmF5KGopLFxuICAgICAgciA9IG5ldyBBcnJheShqKSxcbiAgICAgIGkgPSAtMTtcblxuICAvLyBSZXZlcnNlIGRlc2NlbmRpbmcgZG9tYWlucy5cbiAgaWYgKGRvbWFpbltqXSA8IGRvbWFpblswXSkge1xuICAgIGRvbWFpbiA9IGRvbWFpbi5zbGljZSgpLnJldmVyc2UoKTtcbiAgICByYW5nZSA9IHJhbmdlLnNsaWNlKCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgd2hpbGUgKCsraSA8IGopIHtcbiAgICBkW2ldID0gZGVpbnRlcnBvbGF0ZShkb21haW5baV0sIGRvbWFpbltpICsgMV0pO1xuICAgIHJbaV0gPSByZWludGVycG9sYXRlKHJhbmdlW2ldLCByYW5nZVtpICsgMV0pO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHgpIHtcbiAgICB2YXIgaSA9IGJpc2VjdChkb21haW4sIHgsIDEsIGopIC0gMTtcbiAgICByZXR1cm4gcltpXShkW2ldKHgpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvcHkoc291cmNlLCB0YXJnZXQpIHtcbiAgcmV0dXJuIHRhcmdldFxuICAgICAgLmRvbWFpbihzb3VyY2UuZG9tYWluKCkpXG4gICAgICAucmFuZ2Uoc291cmNlLnJhbmdlKCkpXG4gICAgICAuaW50ZXJwb2xhdGUoc291cmNlLmludGVycG9sYXRlKCkpXG4gICAgICAuY2xhbXAoc291cmNlLmNsYW1wKCkpO1xufVxuXG4vLyBkZWludGVycG9sYXRlKGEsIGIpKHgpIHRha2VzIGEgZG9tYWluIHZhbHVlIHggaW4gW2EsYl0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVyIHQgaW4gWzAsMV0uXG4vLyByZWludGVycG9sYXRlKGEsIGIpKHQpIHRha2VzIGEgcGFyYW1ldGVyIHQgaW4gWzAsMV0gYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgZG9tYWluIHZhbHVlIHggaW4gW2EsYl0uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb250aW51b3VzKGRlaW50ZXJwb2xhdGUsIHJlaW50ZXJwb2xhdGUpIHtcbiAgdmFyIGRvbWFpbiA9IHVuaXQsXG4gICAgICByYW5nZSA9IHVuaXQsXG4gICAgICBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlVmFsdWUsXG4gICAgICBjbGFtcCA9IGZhbHNlLFxuICAgICAgcGllY2V3aXNlLFxuICAgICAgb3V0cHV0LFxuICAgICAgaW5wdXQ7XG5cbiAgZnVuY3Rpb24gcmVzY2FsZSgpIHtcbiAgICBwaWVjZXdpc2UgPSBNYXRoLm1pbihkb21haW4ubGVuZ3RoLCByYW5nZS5sZW5ndGgpID4gMiA/IHBvbHltYXAgOiBiaW1hcDtcbiAgICBvdXRwdXQgPSBpbnB1dCA9IG51bGw7XG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgZnVuY3Rpb24gc2NhbGUoeCkge1xuICAgIHJldHVybiAob3V0cHV0IHx8IChvdXRwdXQgPSBwaWVjZXdpc2UoZG9tYWluLCByYW5nZSwgY2xhbXAgPyBkZWludGVycG9sYXRlQ2xhbXAoZGVpbnRlcnBvbGF0ZSkgOiBkZWludGVycG9sYXRlLCBpbnRlcnBvbGF0ZSkpKSgreCk7XG4gIH1cblxuICBzY2FsZS5pbnZlcnQgPSBmdW5jdGlvbih5KSB7XG4gICAgcmV0dXJuIChpbnB1dCB8fCAoaW5wdXQgPSBwaWVjZXdpc2UocmFuZ2UsIGRvbWFpbiwgZGVpbnRlcnBvbGF0ZUxpbmVhciwgY2xhbXAgPyByZWludGVycG9sYXRlQ2xhbXAocmVpbnRlcnBvbGF0ZSkgOiByZWludGVycG9sYXRlKSkpKCt5KTtcbiAgfTtcblxuICBzY2FsZS5kb21haW4gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoZG9tYWluID0gbWFwLmNhbGwoXywgbnVtYmVyKSwgcmVzY2FsZSgpKSA6IGRvbWFpbi5zbGljZSgpO1xuICB9O1xuXG4gIHNjYWxlLnJhbmdlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhbmdlID0gc2xpY2UuY2FsbChfKSwgcmVzY2FsZSgpKSA6IHJhbmdlLnNsaWNlKCk7XG4gIH07XG5cbiAgc2NhbGUucmFuZ2VSb3VuZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gcmFuZ2UgPSBzbGljZS5jYWxsKF8pLCBpbnRlcnBvbGF0ZSA9IGludGVycG9sYXRlUm91bmQsIHJlc2NhbGUoKTtcbiAgfTtcblxuICBzY2FsZS5jbGFtcCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGFtcCA9ICEhXywgcmVzY2FsZSgpKSA6IGNsYW1wO1xuICB9O1xuXG4gIHNjYWxlLmludGVycG9sYXRlID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKGludGVycG9sYXRlID0gXywgcmVzY2FsZSgpKSA6IGludGVycG9sYXRlO1xuICB9O1xuXG4gIHJldHVybiByZXNjYWxlKCk7XG59XG4iLCJpbXBvcnQge3RpY2tzLCB0aWNrSW5jcmVtZW50fSBmcm9tIFwiZDMtYXJyYXlcIjtcbmltcG9ydCB7aW50ZXJwb2xhdGVOdW1iZXIgYXMgcmVpbnRlcnBvbGF0ZX0gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5pbXBvcnQge2RlZmF1bHQgYXMgY29udGludW91cywgY29weSwgZGVpbnRlcnBvbGF0ZUxpbmVhciBhcyBkZWludGVycG9sYXRlfSBmcm9tIFwiLi9jb250aW51b3VzXCI7XG5pbXBvcnQgdGlja0Zvcm1hdCBmcm9tIFwiLi90aWNrRm9ybWF0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBsaW5lYXJpc2goc2NhbGUpIHtcbiAgdmFyIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gdGlja3MoZFswXSwgZFtkLmxlbmd0aCAtIDFdLCBjb3VudCA9PSBudWxsID8gMTAgOiBjb3VudCk7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gdGlja0Zvcm1hdChkb21haW4oKSwgY291bnQsIHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09IG51bGwpIGNvdW50ID0gMTA7XG5cbiAgICB2YXIgZCA9IGRvbWFpbigpLFxuICAgICAgICBpMCA9IDAsXG4gICAgICAgIGkxID0gZC5sZW5ndGggLSAxLFxuICAgICAgICBzdGFydCA9IGRbaTBdLFxuICAgICAgICBzdG9wID0gZFtpMV0sXG4gICAgICAgIHN0ZXA7XG5cbiAgICBpZiAoc3RvcCA8IHN0YXJ0KSB7XG4gICAgICBzdGVwID0gc3RhcnQsIHN0YXJ0ID0gc3RvcCwgc3RvcCA9IHN0ZXA7XG4gICAgICBzdGVwID0gaTAsIGkwID0gaTEsIGkxID0gc3RlcDtcbiAgICB9XG5cbiAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuXG4gICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICBzdGFydCA9IE1hdGguZmxvb3Ioc3RhcnQgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBzdG9wID0gTWF0aC5jZWlsKHN0b3AgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBzdGVwID0gdGlja0luY3JlbWVudChzdGFydCwgc3RvcCwgY291bnQpO1xuICAgIH0gZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgIHN0YXJ0ID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgc3RvcCA9IE1hdGguZmxvb3Ioc3RvcCAqIHN0ZXApIC8gc3RlcDtcbiAgICAgIHN0ZXAgPSB0aWNrSW5jcmVtZW50KHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXAgPiAwKSB7XG4gICAgICBkW2kwXSA9IE1hdGguZmxvb3Ioc3RhcnQgLyBzdGVwKSAqIHN0ZXA7XG4gICAgICBkW2kxXSA9IE1hdGguY2VpbChzdG9wIC8gc3RlcCkgKiBzdGVwO1xuICAgICAgZG9tYWluKGQpO1xuICAgIH0gZWxzZSBpZiAoc3RlcCA8IDApIHtcbiAgICAgIGRbaTBdID0gTWF0aC5jZWlsKHN0YXJ0ICogc3RlcCkgLyBzdGVwO1xuICAgICAgZFtpMV0gPSBNYXRoLmZsb29yKHN0b3AgKiBzdGVwKSAvIHN0ZXA7XG4gICAgICBkb21haW4oZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9O1xuXG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGluZWFyKCkge1xuICB2YXIgc2NhbGUgPSBjb250aW51b3VzKGRlaW50ZXJwb2xhdGUsIHJlaW50ZXJwb2xhdGUpO1xuXG4gIHNjYWxlLmNvcHkgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gY29weShzY2FsZSwgbGluZWFyKCkpO1xuICB9O1xuXG4gIHJldHVybiBsaW5lYXJpc2goc2NhbGUpO1xufVxuIiwidmFyIHQwID0gbmV3IERhdGUsXG4gICAgdDEgPSBuZXcgRGF0ZTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbmV3SW50ZXJ2YWwoZmxvb3JpLCBvZmZzZXRpLCBjb3VudCwgZmllbGQpIHtcblxuICBmdW5jdGlvbiBpbnRlcnZhbChkYXRlKSB7XG4gICAgcmV0dXJuIGZsb29yaShkYXRlID0gbmV3IERhdGUoK2RhdGUpKSwgZGF0ZTtcbiAgfVxuXG4gIGludGVydmFsLmZsb29yID0gaW50ZXJ2YWw7XG5cbiAgaW50ZXJ2YWwuY2VpbCA9IGZ1bmN0aW9uKGRhdGUpIHtcbiAgICByZXR1cm4gZmxvb3JpKGRhdGUgPSBuZXcgRGF0ZShkYXRlIC0gMSkpLCBvZmZzZXRpKGRhdGUsIDEpLCBmbG9vcmkoZGF0ZSksIGRhdGU7XG4gIH07XG5cbiAgaW50ZXJ2YWwucm91bmQgPSBmdW5jdGlvbihkYXRlKSB7XG4gICAgdmFyIGQwID0gaW50ZXJ2YWwoZGF0ZSksXG4gICAgICAgIGQxID0gaW50ZXJ2YWwuY2VpbChkYXRlKTtcbiAgICByZXR1cm4gZGF0ZSAtIGQwIDwgZDEgLSBkYXRlID8gZDAgOiBkMTtcbiAgfTtcblxuICBpbnRlcnZhbC5vZmZzZXQgPSBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgcmV0dXJuIG9mZnNldGkoZGF0ZSA9IG5ldyBEYXRlKCtkYXRlKSwgc3RlcCA9PSBudWxsID8gMSA6IE1hdGguZmxvb3Ioc3RlcCkpLCBkYXRlO1xuICB9O1xuXG4gIGludGVydmFsLnJhbmdlID0gZnVuY3Rpb24oc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICB2YXIgcmFuZ2UgPSBbXTtcbiAgICBzdGFydCA9IGludGVydmFsLmNlaWwoc3RhcnQpO1xuICAgIHN0ZXAgPSBzdGVwID09IG51bGwgPyAxIDogTWF0aC5mbG9vcihzdGVwKTtcbiAgICBpZiAoIShzdGFydCA8IHN0b3ApIHx8ICEoc3RlcCA+IDApKSByZXR1cm4gcmFuZ2U7IC8vIGFsc28gaGFuZGxlcyBJbnZhbGlkIERhdGVcbiAgICBkbyByYW5nZS5wdXNoKG5ldyBEYXRlKCtzdGFydCkpOyB3aGlsZSAob2Zmc2V0aShzdGFydCwgc3RlcCksIGZsb29yaShzdGFydCksIHN0YXJ0IDwgc3RvcClcbiAgICByZXR1cm4gcmFuZ2U7XG4gIH07XG5cbiAgaW50ZXJ2YWwuZmlsdGVyID0gZnVuY3Rpb24odGVzdCkge1xuICAgIHJldHVybiBuZXdJbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoZmxvb3JpKGRhdGUpLCAhdGVzdChkYXRlKSkgZGF0ZS5zZXRUaW1lKGRhdGUgLSAxKTtcbiAgICB9LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gICAgICBpZiAoZGF0ZSA+PSBkYXRlKSB3aGlsZSAoLS1zdGVwID49IDApIHdoaWxlIChvZmZzZXRpKGRhdGUsIDEpLCAhdGVzdChkYXRlKSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuICAgIH0pO1xuICB9O1xuXG4gIGlmIChjb3VudCkge1xuICAgIGludGVydmFsLmNvdW50ID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgICAgdDAuc2V0VGltZSgrc3RhcnQpLCB0MS5zZXRUaW1lKCtlbmQpO1xuICAgICAgZmxvb3JpKHQwKSwgZmxvb3JpKHQxKTtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGNvdW50KHQwLCB0MSkpO1xuICAgIH07XG5cbiAgICBpbnRlcnZhbC5ldmVyeSA9IGZ1bmN0aW9uKHN0ZXApIHtcbiAgICAgIHN0ZXAgPSBNYXRoLmZsb29yKHN0ZXApO1xuICAgICAgcmV0dXJuICFpc0Zpbml0ZShzdGVwKSB8fCAhKHN0ZXAgPiAwKSA/IG51bGxcbiAgICAgICAgICA6ICEoc3RlcCA+IDEpID8gaW50ZXJ2YWxcbiAgICAgICAgICA6IGludGVydmFsLmZpbHRlcihmaWVsZFxuICAgICAgICAgICAgICA/IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGZpZWxkKGQpICUgc3RlcCA9PT0gMDsgfVxuICAgICAgICAgICAgICA6IGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGludGVydmFsLmNvdW50KDAsIGQpICUgc3RlcCA9PT0gMDsgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBpbnRlcnZhbDtcbn1cbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZSwgZHVyYXRpb25XZWVrfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG5mdW5jdGlvbiB3ZWVrZGF5KGkpIHtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSAoZGF0ZS5nZXREYXkoKSArIDcgLSBpKSAlIDcpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwICogNyk7XG4gIH0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgICByZXR1cm4gKGVuZCAtIHN0YXJ0IC0gKGVuZC5nZXRUaW1lem9uZU9mZnNldCgpIC0gc3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiBkdXJhdGlvbk1pbnV0ZSkgLyBkdXJhdGlvbldlZWs7XG4gIH0pO1xufVxuXG5leHBvcnQgdmFyIHN1bmRheSA9IHdlZWtkYXkoMCk7XG5leHBvcnQgdmFyIG1vbmRheSA9IHdlZWtkYXkoMSk7XG5leHBvcnQgdmFyIHR1ZXNkYXkgPSB3ZWVrZGF5KDIpO1xuZXhwb3J0IHZhciB3ZWRuZXNkYXkgPSB3ZWVrZGF5KDMpO1xuZXhwb3J0IHZhciB0aHVyc2RheSA9IHdlZWtkYXkoNCk7XG5leHBvcnQgdmFyIGZyaWRheSA9IHdlZWtkYXkoNSk7XG5leHBvcnQgdmFyIHNhdHVyZGF5ID0gd2Vla2RheSg2KTtcblxuZXhwb3J0IHZhciBzdW5kYXlzID0gc3VuZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBtb25kYXlzID0gbW9uZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB0dWVzZGF5cyA9IHR1ZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHdlZG5lc2RheXMgPSB3ZWRuZXNkYXkucmFuZ2U7XG5leHBvcnQgdmFyIHRodXJzZGF5cyA9IHRodXJzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBmcmlkYXlzID0gZnJpZGF5LnJhbmdlO1xuZXhwb3J0IHZhciBzYXR1cmRheXMgPSBzYXR1cmRheS5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbldlZWt9IGZyb20gXCIuL2R1cmF0aW9uXCI7XG5cbmZ1bmN0aW9uIHV0Y1dlZWtkYXkoaSkge1xuICByZXR1cm4gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIChkYXRlLmdldFVUQ0RheSgpICsgNyAtIGkpICUgNyk7XG4gICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSArIHN0ZXAgKiA3KTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25XZWVrO1xuICB9KTtcbn1cblxuZXhwb3J0IHZhciB1dGNTdW5kYXkgPSB1dGNXZWVrZGF5KDApO1xuZXhwb3J0IHZhciB1dGNNb25kYXkgPSB1dGNXZWVrZGF5KDEpO1xuZXhwb3J0IHZhciB1dGNUdWVzZGF5ID0gdXRjV2Vla2RheSgyKTtcbmV4cG9ydCB2YXIgdXRjV2VkbmVzZGF5ID0gdXRjV2Vla2RheSgzKTtcbmV4cG9ydCB2YXIgdXRjVGh1cnNkYXkgPSB1dGNXZWVrZGF5KDQpO1xuZXhwb3J0IHZhciB1dGNGcmlkYXkgPSB1dGNXZWVrZGF5KDUpO1xuZXhwb3J0IHZhciB1dGNTYXR1cmRheSA9IHV0Y1dlZWtkYXkoNik7XG5cbmV4cG9ydCB2YXIgdXRjU3VuZGF5cyA9IHV0Y1N1bmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjTW9uZGF5cyA9IHV0Y01vbmRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjVHVlc2RheXMgPSB1dGNUdWVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNXZWRuZXNkYXlzID0gdXRjV2VkbmVzZGF5LnJhbmdlO1xuZXhwb3J0IHZhciB1dGNUaHVyc2RheXMgPSB1dGNUaHVyc2RheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjRnJpZGF5cyA9IHV0Y0ZyaWRheS5yYW5nZTtcbmV4cG9ydCB2YXIgdXRjU2F0dXJkYXlzID0gdXRjU2F0dXJkYXkucmFuZ2U7XG4iLCJpbXBvcnQge3RpbWVEYXksIHRpbWVTdW5kYXksIHRpbWVNb25kYXksIHRpbWVZZWFyLCB1dGNEYXksIHV0Y1N1bmRheSwgdXRjTW9uZGF5LCB1dGNZZWFyfSBmcm9tIFwiZDMtdGltZVwiO1xuXG5mdW5jdGlvbiBsb2NhbERhdGUoZCkge1xuICBpZiAoMCA8PSBkLnkgJiYgZC55IDwgMTAwKSB7XG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgtMSwgZC5tLCBkLmQsIGQuSCwgZC5NLCBkLlMsIGQuTCk7XG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkLnkpO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG4gIHJldHVybiBuZXcgRGF0ZShkLnksIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpO1xufVxuXG5mdW5jdGlvbiB1dGNEYXRlKGQpIHtcbiAgaWYgKDAgPD0gZC55ICYmIGQueSA8IDEwMCkge1xuICAgIHZhciBkYXRlID0gbmV3IERhdGUoRGF0ZS5VVEMoLTEsIGQubSwgZC5kLCBkLkgsIGQuTSwgZC5TLCBkLkwpKTtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGQueSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGQueSwgZC5tLCBkLmQsIGQuSCwgZC5NLCBkLlMsIGQuTCkpO1xufVxuXG5mdW5jdGlvbiBuZXdZZWFyKHkpIHtcbiAgcmV0dXJuIHt5OiB5LCBtOiAwLCBkOiAxLCBIOiAwLCBNOiAwLCBTOiAwLCBMOiAwfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9ybWF0TG9jYWxlKGxvY2FsZSkge1xuICB2YXIgbG9jYWxlX2RhdGVUaW1lID0gbG9jYWxlLmRhdGVUaW1lLFxuICAgICAgbG9jYWxlX2RhdGUgPSBsb2NhbGUuZGF0ZSxcbiAgICAgIGxvY2FsZV90aW1lID0gbG9jYWxlLnRpbWUsXG4gICAgICBsb2NhbGVfcGVyaW9kcyA9IGxvY2FsZS5wZXJpb2RzLFxuICAgICAgbG9jYWxlX3dlZWtkYXlzID0gbG9jYWxlLmRheXMsXG4gICAgICBsb2NhbGVfc2hvcnRXZWVrZGF5cyA9IGxvY2FsZS5zaG9ydERheXMsXG4gICAgICBsb2NhbGVfbW9udGhzID0gbG9jYWxlLm1vbnRocyxcbiAgICAgIGxvY2FsZV9zaG9ydE1vbnRocyA9IGxvY2FsZS5zaG9ydE1vbnRocztcblxuICB2YXIgcGVyaW9kUmUgPSBmb3JtYXRSZShsb2NhbGVfcGVyaW9kcyksXG4gICAgICBwZXJpb2RMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3BlcmlvZHMpLFxuICAgICAgd2Vla2RheVJlID0gZm9ybWF0UmUobG9jYWxlX3dlZWtkYXlzKSxcbiAgICAgIHdlZWtkYXlMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3dlZWtkYXlzKSxcbiAgICAgIHNob3J0V2Vla2RheVJlID0gZm9ybWF0UmUobG9jYWxlX3Nob3J0V2Vla2RheXMpLFxuICAgICAgc2hvcnRXZWVrZGF5TG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9zaG9ydFdlZWtkYXlzKSxcbiAgICAgIG1vbnRoUmUgPSBmb3JtYXRSZShsb2NhbGVfbW9udGhzKSxcbiAgICAgIG1vbnRoTG9va3VwID0gZm9ybWF0TG9va3VwKGxvY2FsZV9tb250aHMpLFxuICAgICAgc2hvcnRNb250aFJlID0gZm9ybWF0UmUobG9jYWxlX3Nob3J0TW9udGhzKSxcbiAgICAgIHNob3J0TW9udGhMb29rdXAgPSBmb3JtYXRMb29rdXAobG9jYWxlX3Nob3J0TW9udGhzKTtcblxuICB2YXIgZm9ybWF0cyA9IHtcbiAgICBcImFcIjogZm9ybWF0U2hvcnRXZWVrZGF5LFxuICAgIFwiQVwiOiBmb3JtYXRXZWVrZGF5LFxuICAgIFwiYlwiOiBmb3JtYXRTaG9ydE1vbnRoLFxuICAgIFwiQlwiOiBmb3JtYXRNb250aCxcbiAgICBcImNcIjogbnVsbCxcbiAgICBcImRcIjogZm9ybWF0RGF5T2ZNb250aCxcbiAgICBcImVcIjogZm9ybWF0RGF5T2ZNb250aCxcbiAgICBcIkhcIjogZm9ybWF0SG91cjI0LFxuICAgIFwiSVwiOiBmb3JtYXRIb3VyMTIsXG4gICAgXCJqXCI6IGZvcm1hdERheU9mWWVhcixcbiAgICBcIkxcIjogZm9ybWF0TWlsbGlzZWNvbmRzLFxuICAgIFwibVwiOiBmb3JtYXRNb250aE51bWJlcixcbiAgICBcIk1cIjogZm9ybWF0TWludXRlcyxcbiAgICBcInBcIjogZm9ybWF0UGVyaW9kLFxuICAgIFwiU1wiOiBmb3JtYXRTZWNvbmRzLFxuICAgIFwiVVwiOiBmb3JtYXRXZWVrTnVtYmVyU3VuZGF5LFxuICAgIFwid1wiOiBmb3JtYXRXZWVrZGF5TnVtYmVyLFxuICAgIFwiV1wiOiBmb3JtYXRXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBudWxsLFxuICAgIFwiWFwiOiBudWxsLFxuICAgIFwieVwiOiBmb3JtYXRZZWFyLFxuICAgIFwiWVwiOiBmb3JtYXRGdWxsWWVhcixcbiAgICBcIlpcIjogZm9ybWF0Wm9uZSxcbiAgICBcIiVcIjogZm9ybWF0TGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICB2YXIgdXRjRm9ybWF0cyA9IHtcbiAgICBcImFcIjogZm9ybWF0VVRDU2hvcnRXZWVrZGF5LFxuICAgIFwiQVwiOiBmb3JtYXRVVENXZWVrZGF5LFxuICAgIFwiYlwiOiBmb3JtYXRVVENTaG9ydE1vbnRoLFxuICAgIFwiQlwiOiBmb3JtYXRVVENNb250aCxcbiAgICBcImNcIjogbnVsbCxcbiAgICBcImRcIjogZm9ybWF0VVRDRGF5T2ZNb250aCxcbiAgICBcImVcIjogZm9ybWF0VVRDRGF5T2ZNb250aCxcbiAgICBcIkhcIjogZm9ybWF0VVRDSG91cjI0LFxuICAgIFwiSVwiOiBmb3JtYXRVVENIb3VyMTIsXG4gICAgXCJqXCI6IGZvcm1hdFVUQ0RheU9mWWVhcixcbiAgICBcIkxcIjogZm9ybWF0VVRDTWlsbGlzZWNvbmRzLFxuICAgIFwibVwiOiBmb3JtYXRVVENNb250aE51bWJlcixcbiAgICBcIk1cIjogZm9ybWF0VVRDTWludXRlcyxcbiAgICBcInBcIjogZm9ybWF0VVRDUGVyaW9kLFxuICAgIFwiU1wiOiBmb3JtYXRVVENTZWNvbmRzLFxuICAgIFwiVVwiOiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5LFxuICAgIFwid1wiOiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyLFxuICAgIFwiV1wiOiBmb3JtYXRVVENXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBudWxsLFxuICAgIFwiWFwiOiBudWxsLFxuICAgIFwieVwiOiBmb3JtYXRVVENZZWFyLFxuICAgIFwiWVwiOiBmb3JtYXRVVENGdWxsWWVhcixcbiAgICBcIlpcIjogZm9ybWF0VVRDWm9uZSxcbiAgICBcIiVcIjogZm9ybWF0TGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICB2YXIgcGFyc2VzID0ge1xuICAgIFwiYVwiOiBwYXJzZVNob3J0V2Vla2RheSxcbiAgICBcIkFcIjogcGFyc2VXZWVrZGF5LFxuICAgIFwiYlwiOiBwYXJzZVNob3J0TW9udGgsXG4gICAgXCJCXCI6IHBhcnNlTW9udGgsXG4gICAgXCJjXCI6IHBhcnNlTG9jYWxlRGF0ZVRpbWUsXG4gICAgXCJkXCI6IHBhcnNlRGF5T2ZNb250aCxcbiAgICBcImVcIjogcGFyc2VEYXlPZk1vbnRoLFxuICAgIFwiSFwiOiBwYXJzZUhvdXIyNCxcbiAgICBcIklcIjogcGFyc2VIb3VyMjQsXG4gICAgXCJqXCI6IHBhcnNlRGF5T2ZZZWFyLFxuICAgIFwiTFwiOiBwYXJzZU1pbGxpc2Vjb25kcyxcbiAgICBcIm1cIjogcGFyc2VNb250aE51bWJlcixcbiAgICBcIk1cIjogcGFyc2VNaW51dGVzLFxuICAgIFwicFwiOiBwYXJzZVBlcmlvZCxcbiAgICBcIlNcIjogcGFyc2VTZWNvbmRzLFxuICAgIFwiVVwiOiBwYXJzZVdlZWtOdW1iZXJTdW5kYXksXG4gICAgXCJ3XCI6IHBhcnNlV2Vla2RheU51bWJlcixcbiAgICBcIldcIjogcGFyc2VXZWVrTnVtYmVyTW9uZGF5LFxuICAgIFwieFwiOiBwYXJzZUxvY2FsZURhdGUsXG4gICAgXCJYXCI6IHBhcnNlTG9jYWxlVGltZSxcbiAgICBcInlcIjogcGFyc2VZZWFyLFxuICAgIFwiWVwiOiBwYXJzZUZ1bGxZZWFyLFxuICAgIFwiWlwiOiBwYXJzZVpvbmUsXG4gICAgXCIlXCI6IHBhcnNlTGl0ZXJhbFBlcmNlbnRcbiAgfTtcblxuICAvLyBUaGVzZSByZWN1cnNpdmUgZGlyZWN0aXZlIGRlZmluaXRpb25zIG11c3QgYmUgZGVmZXJyZWQuXG4gIGZvcm1hdHMueCA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZSwgZm9ybWF0cyk7XG4gIGZvcm1hdHMuWCA9IG5ld0Zvcm1hdChsb2NhbGVfdGltZSwgZm9ybWF0cyk7XG4gIGZvcm1hdHMuYyA9IG5ld0Zvcm1hdChsb2NhbGVfZGF0ZVRpbWUsIGZvcm1hdHMpO1xuICB1dGNGb3JtYXRzLnggPSBuZXdGb3JtYXQobG9jYWxlX2RhdGUsIHV0Y0Zvcm1hdHMpO1xuICB1dGNGb3JtYXRzLlggPSBuZXdGb3JtYXQobG9jYWxlX3RpbWUsIHV0Y0Zvcm1hdHMpO1xuICB1dGNGb3JtYXRzLmMgPSBuZXdGb3JtYXQobG9jYWxlX2RhdGVUaW1lLCB1dGNGb3JtYXRzKTtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyLCBmb3JtYXRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGRhdGUpIHtcbiAgICAgIHZhciBzdHJpbmcgPSBbXSxcbiAgICAgICAgICBpID0gLTEsXG4gICAgICAgICAgaiA9IDAsXG4gICAgICAgICAgbiA9IHNwZWNpZmllci5sZW5ndGgsXG4gICAgICAgICAgYyxcbiAgICAgICAgICBwYWQsXG4gICAgICAgICAgZm9ybWF0O1xuXG4gICAgICBpZiAoIShkYXRlIGluc3RhbmNlb2YgRGF0ZSkpIGRhdGUgPSBuZXcgRGF0ZSgrZGF0ZSk7XG5cbiAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgIGlmIChzcGVjaWZpZXIuY2hhckNvZGVBdChpKSA9PT0gMzcpIHtcbiAgICAgICAgICBzdHJpbmcucHVzaChzcGVjaWZpZXIuc2xpY2UoaiwgaSkpO1xuICAgICAgICAgIGlmICgocGFkID0gcGFkc1tjID0gc3BlY2lmaWVyLmNoYXJBdCgrK2kpXSkgIT0gbnVsbCkgYyA9IHNwZWNpZmllci5jaGFyQXQoKytpKTtcbiAgICAgICAgICBlbHNlIHBhZCA9IGMgPT09IFwiZVwiID8gXCIgXCIgOiBcIjBcIjtcbiAgICAgICAgICBpZiAoZm9ybWF0ID0gZm9ybWF0c1tjXSkgYyA9IGZvcm1hdChkYXRlLCBwYWQpO1xuICAgICAgICAgIHN0cmluZy5wdXNoKGMpO1xuICAgICAgICAgIGogPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdHJpbmcucHVzaChzcGVjaWZpZXIuc2xpY2UoaiwgaSkpO1xuICAgICAgcmV0dXJuIHN0cmluZy5qb2luKFwiXCIpO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBuZXdQYXJzZShzcGVjaWZpZXIsIG5ld0RhdGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICB2YXIgZCA9IG5ld1llYXIoMTkwMCksXG4gICAgICAgICAgaSA9IHBhcnNlU3BlY2lmaWVyKGQsIHNwZWNpZmllciwgc3RyaW5nICs9IFwiXCIsIDApO1xuICAgICAgaWYgKGkgIT0gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIC8vIFRoZSBhbS1wbSBmbGFnIGlzIDAgZm9yIEFNLCBhbmQgMSBmb3IgUE0uXG4gICAgICBpZiAoXCJwXCIgaW4gZCkgZC5IID0gZC5IICUgMTIgKyBkLnAgKiAxMjtcblxuICAgICAgLy8gQ29udmVydCBkYXktb2Ytd2VlayBhbmQgd2Vlay1vZi15ZWFyIHRvIGRheS1vZi15ZWFyLlxuICAgICAgaWYgKFwiV1wiIGluIGQgfHwgXCJVXCIgaW4gZCkge1xuICAgICAgICBpZiAoIShcIndcIiBpbiBkKSkgZC53ID0gXCJXXCIgaW4gZCA/IDEgOiAwO1xuICAgICAgICB2YXIgZGF5ID0gXCJaXCIgaW4gZCA/IHV0Y0RhdGUobmV3WWVhcihkLnkpKS5nZXRVVENEYXkoKSA6IG5ld0RhdGUobmV3WWVhcihkLnkpKS5nZXREYXkoKTtcbiAgICAgICAgZC5tID0gMDtcbiAgICAgICAgZC5kID0gXCJXXCIgaW4gZCA/IChkLncgKyA2KSAlIDcgKyBkLlcgKiA3IC0gKGRheSArIDUpICUgNyA6IGQudyArIGQuVSAqIDcgLSAoZGF5ICsgNikgJSA3O1xuICAgICAgfVxuXG4gICAgICAvLyBJZiBhIHRpbWUgem9uZSBpcyBzcGVjaWZpZWQsIGFsbCBmaWVsZHMgYXJlIGludGVycHJldGVkIGFzIFVUQyBhbmQgdGhlblxuICAgICAgLy8gb2Zmc2V0IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHRpbWUgem9uZS5cbiAgICAgIGlmIChcIlpcIiBpbiBkKSB7XG4gICAgICAgIGQuSCArPSBkLlogLyAxMDAgfCAwO1xuICAgICAgICBkLk0gKz0gZC5aICUgMTAwO1xuICAgICAgICByZXR1cm4gdXRjRGF0ZShkKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCBhbGwgZmllbGRzIGFyZSBpbiBsb2NhbCB0aW1lLlxuICAgICAgcmV0dXJuIG5ld0RhdGUoZCk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlU3BlY2lmaWVyKGQsIHNwZWNpZmllciwgc3RyaW5nLCBqKSB7XG4gICAgdmFyIGkgPSAwLFxuICAgICAgICBuID0gc3BlY2lmaWVyLmxlbmd0aCxcbiAgICAgICAgbSA9IHN0cmluZy5sZW5ndGgsXG4gICAgICAgIGMsXG4gICAgICAgIHBhcnNlO1xuXG4gICAgd2hpbGUgKGkgPCBuKSB7XG4gICAgICBpZiAoaiA+PSBtKSByZXR1cm4gLTE7XG4gICAgICBjID0gc3BlY2lmaWVyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgIGlmIChjID09PSAzNykge1xuICAgICAgICBjID0gc3BlY2lmaWVyLmNoYXJBdChpKyspO1xuICAgICAgICBwYXJzZSA9IHBhcnNlc1tjIGluIHBhZHMgPyBzcGVjaWZpZXIuY2hhckF0KGkrKykgOiBjXTtcbiAgICAgICAgaWYgKCFwYXJzZSB8fCAoKGogPSBwYXJzZShkLCBzdHJpbmcsIGopKSA8IDApKSByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGMgIT0gc3RyaW5nLmNoYXJDb2RlQXQoaisrKSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGo7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVBlcmlvZChkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHBlcmlvZFJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgICByZXR1cm4gbiA/IChkLnAgPSBwZXJpb2RMb29rdXBbblswXS50b0xvd2VyQ2FzZSgpXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VTaG9ydFdlZWtkYXkoZCwgc3RyaW5nLCBpKSB7XG4gICAgdmFyIG4gPSBzaG9ydFdlZWtkYXlSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC53ID0gc2hvcnRXZWVrZGF5TG9va3VwW25bMF0udG9Mb3dlckNhc2UoKV0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlV2Vla2RheShkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IHdlZWtkYXlSZS5leGVjKHN0cmluZy5zbGljZShpKSk7XG4gICAgcmV0dXJuIG4gPyAoZC53ID0gd2Vla2RheUxvb2t1cFtuWzBdLnRvTG93ZXJDYXNlKCldLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZVNob3J0TW9udGgoZCwgc3RyaW5nLCBpKSB7XG4gICAgdmFyIG4gPSBzaG9ydE1vbnRoUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSkpO1xuICAgIHJldHVybiBuID8gKGQubSA9IHNob3J0TW9udGhMb29rdXBbblswXS50b0xvd2VyQ2FzZSgpXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VNb250aChkLCBzdHJpbmcsIGkpIHtcbiAgICB2YXIgbiA9IG1vbnRoUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSkpO1xuICAgIHJldHVybiBuID8gKGQubSA9IG1vbnRoTG9va3VwW25bMF0udG9Mb3dlckNhc2UoKV0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV9kYXRlVGltZSwgc3RyaW5nLCBpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlTG9jYWxlRGF0ZShkLCBzdHJpbmcsIGkpIHtcbiAgICByZXR1cm4gcGFyc2VTcGVjaWZpZXIoZCwgbG9jYWxlX2RhdGUsIHN0cmluZywgaSk7XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUxvY2FsZVRpbWUoZCwgc3RyaW5nLCBpKSB7XG4gICAgcmV0dXJuIHBhcnNlU3BlY2lmaWVyKGQsIGxvY2FsZV90aW1lLCBzdHJpbmcsIGkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3Nob3J0V2Vla2RheXNbZC5nZXREYXkoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3dlZWtkYXlzW2QuZ2V0RGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0U2hvcnRNb250aChkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydE1vbnRoc1tkLmdldE1vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0TW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfbW9udGhzW2QuZ2V0TW9udGgoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQZXJpb2QoZCkge1xuICAgIHJldHVybiBsb2NhbGVfcGVyaW9kc1srKGQuZ2V0SG91cnMoKSA+PSAxMildO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDU2hvcnRXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3Nob3J0V2Vla2RheXNbZC5nZXRVVENEYXkoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRVVENXZWVrZGF5KGQpIHtcbiAgICByZXR1cm4gbG9jYWxlX3dlZWtkYXlzW2QuZ2V0VVRDRGF5KCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDU2hvcnRNb250aChkKSB7XG4gICAgcmV0dXJuIGxvY2FsZV9zaG9ydE1vbnRoc1tkLmdldFVUQ01vbnRoKCldO1xuICB9XG5cbiAgZnVuY3Rpb24gZm9ybWF0VVRDTW9udGgoZCkge1xuICAgIHJldHVybiBsb2NhbGVfbW9udGhzW2QuZ2V0VVRDTW9udGgoKV07XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRVVENQZXJpb2QoZCkge1xuICAgIHJldHVybiBsb2NhbGVfcGVyaW9kc1srKGQuZ2V0VVRDSG91cnMoKSA+PSAxMildO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBmb3JtYXQ6IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICAgICAgdmFyIGYgPSBuZXdGb3JtYXQoc3BlY2lmaWVyICs9IFwiXCIsIGZvcm1hdHMpO1xuICAgICAgZi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIGY7XG4gICAgfSxcbiAgICBwYXJzZTogZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gICAgICB2YXIgcCA9IG5ld1BhcnNlKHNwZWNpZmllciArPSBcIlwiLCBsb2NhbERhdGUpO1xuICAgICAgcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIHA7XG4gICAgfSxcbiAgICB1dGNGb3JtYXQ6IGZ1bmN0aW9uKHNwZWNpZmllcikge1xuICAgICAgdmFyIGYgPSBuZXdGb3JtYXQoc3BlY2lmaWVyICs9IFwiXCIsIHV0Y0Zvcm1hdHMpO1xuICAgICAgZi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gc3BlY2lmaWVyOyB9O1xuICAgICAgcmV0dXJuIGY7XG4gICAgfSxcbiAgICB1dGNQYXJzZTogZnVuY3Rpb24oc3BlY2lmaWVyKSB7XG4gICAgICB2YXIgcCA9IG5ld1BhcnNlKHNwZWNpZmllciwgdXRjRGF0ZSk7XG4gICAgICBwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBzcGVjaWZpZXI7IH07XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG59XG5cbnZhciBwYWRzID0ge1wiLVwiOiBcIlwiLCBcIl9cIjogXCIgXCIsIFwiMFwiOiBcIjBcIn0sXG4gICAgbnVtYmVyUmUgPSAvXlxccypcXGQrLywgLy8gbm90ZTogaWdub3JlcyBuZXh0IGRpcmVjdGl2ZVxuICAgIHBlcmNlbnRSZSA9IC9eJS8sXG4gICAgcmVxdW90ZVJlID0gL1tcXFxcXFxeXFwkXFwqXFwrXFw/XFx8XFxbXFxdXFwoXFwpXFwuXFx7XFx9XS9nO1xuXG5mdW5jdGlvbiBwYWQodmFsdWUsIGZpbGwsIHdpZHRoKSB7XG4gIHZhciBzaWduID0gdmFsdWUgPCAwID8gXCItXCIgOiBcIlwiLFxuICAgICAgc3RyaW5nID0gKHNpZ24gPyAtdmFsdWUgOiB2YWx1ZSkgKyBcIlwiLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgcmV0dXJuIHNpZ24gKyAobGVuZ3RoIDwgd2lkdGggPyBuZXcgQXJyYXkod2lkdGggLSBsZW5ndGggKyAxKS5qb2luKGZpbGwpICsgc3RyaW5nIDogc3RyaW5nKTtcbn1cblxuZnVuY3Rpb24gcmVxdW90ZShzKSB7XG4gIHJldHVybiBzLnJlcGxhY2UocmVxdW90ZVJlLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmUobmFtZXMpIHtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoXCJeKD86XCIgKyBuYW1lcy5tYXAocmVxdW90ZSkuam9pbihcInxcIikgKyBcIilcIiwgXCJpXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRMb29rdXAobmFtZXMpIHtcbiAgdmFyIG1hcCA9IHt9LCBpID0gLTEsIG4gPSBuYW1lcy5sZW5ndGg7XG4gIHdoaWxlICgrK2kgPCBuKSBtYXBbbmFtZXNbaV0udG9Mb3dlckNhc2UoKV0gPSBpO1xuICByZXR1cm4gbWFwO1xufVxuXG5mdW5jdGlvbiBwYXJzZVdlZWtkYXlOdW1iZXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDEpKTtcbiAgcmV0dXJuIG4gPyAoZC53ID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrTnVtYmVyU3VuZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgcmV0dXJuIG4gPyAoZC5VID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VXZWVrTnVtYmVyTW9uZGF5KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGkpKTtcbiAgcmV0dXJuIG4gPyAoZC5XID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VGdWxsWWVhcihkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgNCkpO1xuICByZXR1cm4gbiA/IChkLnkgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVllYXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC55ID0gK25bMF0gKyAoK25bMF0gPiA2OCA/IDE5MDAgOiAyMDAwKSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZVpvbmUoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gL14oWil8KFsrLV1cXGRcXGQpKD86XFw6PyhcXGRcXGQpKT8vLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyA2KSk7XG4gIHJldHVybiBuID8gKGQuWiA9IG5bMV0gPyAwIDogLShuWzJdICsgKG5bM10gfHwgXCIwMFwiKSksIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNb250aE51bWJlcihkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLm0gPSBuWzBdIC0gMSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZURheU9mTW9udGgoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5kID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VEYXlPZlllYXIoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDMpKTtcbiAgcmV0dXJuIG4gPyAoZC5tID0gMCwgZC5kID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VIb3VyMjQoZCwgc3RyaW5nLCBpKSB7XG4gIHZhciBuID0gbnVtYmVyUmUuZXhlYyhzdHJpbmcuc2xpY2UoaSwgaSArIDIpKTtcbiAgcmV0dXJuIG4gPyAoZC5IID0gK25bMF0sIGkgKyBuWzBdLmxlbmd0aCkgOiAtMTtcbn1cblxuZnVuY3Rpb24gcGFyc2VNaW51dGVzKGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IG51bWJlclJlLmV4ZWMoc3RyaW5nLnNsaWNlKGksIGkgKyAyKSk7XG4gIHJldHVybiBuID8gKGQuTSA9ICtuWzBdLCBpICsgblswXS5sZW5ndGgpIDogLTE7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2Vjb25kcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMikpO1xuICByZXR1cm4gbiA/IChkLlMgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1pbGxpc2Vjb25kcyhkLCBzdHJpbmcsIGkpIHtcbiAgdmFyIG4gPSBudW1iZXJSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMykpO1xuICByZXR1cm4gbiA/IChkLkwgPSArblswXSwgaSArIG5bMF0ubGVuZ3RoKSA6IC0xO1xufVxuXG5mdW5jdGlvbiBwYXJzZUxpdGVyYWxQZXJjZW50KGQsIHN0cmluZywgaSkge1xuICB2YXIgbiA9IHBlcmNlbnRSZS5leGVjKHN0cmluZy5zbGljZShpLCBpICsgMSkpO1xuICByZXR1cm4gbiA/IGkgKyBuWzBdLmxlbmd0aCA6IC0xO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXlPZk1vbnRoKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldERhdGUoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEhvdXIyNChkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRIb3VycygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0SG91cjEyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldEhvdXJzKCkgJSAxMiB8fCAxMiwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdERheU9mWWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoMSArIHRpbWVEYXkuY291bnQodGltZVllYXIoZCksIGQpLCBwLCAzKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TWlsbGlzZWNvbmRzKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldE1pbGxpc2Vjb25kcygpLCBwLCAzKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0TW9udGhOdW1iZXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0TW9udGgoKSArIDEsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRNaW51dGVzKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldE1pbnV0ZXMoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0U2Vjb25kcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2Vla051bWJlclN1bmRheShkLCBwKSB7XG4gIHJldHVybiBwYWQodGltZVN1bmRheS5jb3VudCh0aW1lWWVhcihkKSwgZCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRXZWVrZGF5TnVtYmVyKGQpIHtcbiAgcmV0dXJuIGQuZ2V0RGF5KCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFdlZWtOdW1iZXJNb25kYXkoZCwgcCkge1xuICByZXR1cm4gcGFkKHRpbWVNb25kYXkuY291bnQodGltZVllYXIoZCksIGQpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0WWVhcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRGdWxsWWVhcigpICUgMTAwLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RnVsbFllYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0RnVsbFllYXIoKSAlIDEwMDAwLCBwLCA0KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0Wm9uZShkKSB7XG4gIHZhciB6ID0gZC5nZXRUaW1lem9uZU9mZnNldCgpO1xuICByZXR1cm4gKHogPiAwID8gXCItXCIgOiAoeiAqPSAtMSwgXCIrXCIpKVxuICAgICAgKyBwYWQoeiAvIDYwIHwgMCwgXCIwXCIsIDIpXG4gICAgICArIHBhZCh6ICUgNjAsIFwiMFwiLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDRGF5T2ZNb250aChkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENEYXRlKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENIb3VyMjQoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDSG91cnMoKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0hvdXIxMihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENIb3VycygpICUgMTIgfHwgMTIsIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENEYXlPZlllYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKDEgKyB1dGNEYXkuY291bnQodXRjWWVhcihkKSwgZCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENNaWxsaXNlY29uZHMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksIHAsIDMpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENNb250aE51bWJlcihkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENNb250aCgpICsgMSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ01pbnV0ZXMoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDTWludXRlcygpLCBwLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VVRDU2Vjb25kcyhkLCBwKSB7XG4gIHJldHVybiBwYWQoZC5nZXRVVENTZWNvbmRzKCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrTnVtYmVyU3VuZGF5KGQsIHApIHtcbiAgcmV0dXJuIHBhZCh1dGNTdW5kYXkuY291bnQodXRjWWVhcihkKSwgZCksIHAsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRVVENXZWVrZGF5TnVtYmVyKGQpIHtcbiAgcmV0dXJuIGQuZ2V0VVRDRGF5KCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1dlZWtOdW1iZXJNb25kYXkoZCwgcCkge1xuICByZXR1cm4gcGFkKHV0Y01vbmRheS5jb3VudCh1dGNZZWFyKGQpLCBkKSwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1llYXIoZCwgcCkge1xuICByZXR1cm4gcGFkKGQuZ2V0VVRDRnVsbFllYXIoKSAlIDEwMCwgcCwgMik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ0Z1bGxZZWFyKGQsIHApIHtcbiAgcmV0dXJuIHBhZChkLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDAwMCwgcCwgNCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFVUQ1pvbmUoKSB7XG4gIHJldHVybiBcIiswMDAwXCI7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdExpdGVyYWxQZXJjZW50KCkge1xuICByZXR1cm4gXCIlXCI7XG59XG4iLCJpbXBvcnQge3V0Y0Zvcm1hdH0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZVwiO1xuXG5leHBvcnQgdmFyIGlzb1NwZWNpZmllciA9IFwiJVktJW0tJWRUJUg6JU06JVMuJUxaXCI7XG5cbmZ1bmN0aW9uIGZvcm1hdElzb05hdGl2ZShkYXRlKSB7XG4gIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XG59XG5cbnZhciBmb3JtYXRJc28gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZ1xuICAgID8gZm9ybWF0SXNvTmF0aXZlXG4gICAgOiB1dGNGb3JtYXQoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0SXNvO1xuIiwiaW1wb3J0IHtpc29TcGVjaWZpZXJ9IGZyb20gXCIuL2lzb0Zvcm1hdFwiO1xuaW1wb3J0IHt1dGNQYXJzZX0gZnJvbSBcIi4vZGVmYXVsdExvY2FsZVwiO1xuXG5mdW5jdGlvbiBwYXJzZUlzb05hdGl2ZShzdHJpbmcpIHtcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZShzdHJpbmcpO1xuICByZXR1cm4gaXNOYU4oZGF0ZSkgPyBudWxsIDogZGF0ZTtcbn1cblxudmFyIHBhcnNlSXNvID0gK25ldyBEYXRlKFwiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaXCIpXG4gICAgPyBwYXJzZUlzb05hdGl2ZVxuICAgIDogdXRjUGFyc2UoaXNvU3BlY2lmaWVyKTtcblxuZXhwb3J0IGRlZmF1bHQgcGFyc2VJc287XG4iLCJpbXBvcnQge2Jpc2VjdG9yLCB0aWNrU3RlcH0gZnJvbSBcImQzLWFycmF5XCI7XG5pbXBvcnQge2ludGVycG9sYXRlTnVtYmVyIGFzIHJlaW50ZXJwb2xhdGV9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuaW1wb3J0IHt0aW1lWWVhciwgdGltZU1vbnRoLCB0aW1lV2VlaywgdGltZURheSwgdGltZUhvdXIsIHRpbWVNaW51dGUsIHRpbWVTZWNvbmQsIHRpbWVNaWxsaXNlY29uZH0gZnJvbSBcImQzLXRpbWVcIjtcbmltcG9ydCB7dGltZUZvcm1hdH0gZnJvbSBcImQzLXRpbWUtZm9ybWF0XCI7XG5pbXBvcnQge21hcH0gZnJvbSBcIi4vYXJyYXlcIjtcbmltcG9ydCB7ZGVmYXVsdCBhcyBjb250aW51b3VzLCBjb3B5LCBkZWludGVycG9sYXRlTGluZWFyIGFzIGRlaW50ZXJwb2xhdGV9IGZyb20gXCIuL2NvbnRpbnVvdXNcIjtcbmltcG9ydCBuaWNlIGZyb20gXCIuL25pY2VcIjtcblxudmFyIGR1cmF0aW9uU2Vjb25kID0gMTAwMCxcbiAgICBkdXJhdGlvbk1pbnV0ZSA9IGR1cmF0aW9uU2Vjb25kICogNjAsXG4gICAgZHVyYXRpb25Ib3VyID0gZHVyYXRpb25NaW51dGUgKiA2MCxcbiAgICBkdXJhdGlvbkRheSA9IGR1cmF0aW9uSG91ciAqIDI0LFxuICAgIGR1cmF0aW9uV2VlayA9IGR1cmF0aW9uRGF5ICogNyxcbiAgICBkdXJhdGlvbk1vbnRoID0gZHVyYXRpb25EYXkgKiAzMCxcbiAgICBkdXJhdGlvblllYXIgPSBkdXJhdGlvbkRheSAqIDM2NTtcblxuZnVuY3Rpb24gZGF0ZSh0KSB7XG4gIHJldHVybiBuZXcgRGF0ZSh0KTtcbn1cblxuZnVuY3Rpb24gbnVtYmVyKHQpIHtcbiAgcmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlID8gK3QgOiArbmV3IERhdGUoK3QpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsZW5kYXIoeWVhciwgbW9udGgsIHdlZWssIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBmb3JtYXQpIHtcbiAgdmFyIHNjYWxlID0gY29udGludW91cyhkZWludGVycG9sYXRlLCByZWludGVycG9sYXRlKSxcbiAgICAgIGludmVydCA9IHNjYWxlLmludmVydCxcbiAgICAgIGRvbWFpbiA9IHNjYWxlLmRvbWFpbjtcblxuICB2YXIgZm9ybWF0TWlsbGlzZWNvbmQgPSBmb3JtYXQoXCIuJUxcIiksXG4gICAgICBmb3JtYXRTZWNvbmQgPSBmb3JtYXQoXCI6JVNcIiksXG4gICAgICBmb3JtYXRNaW51dGUgPSBmb3JtYXQoXCIlSTolTVwiKSxcbiAgICAgIGZvcm1hdEhvdXIgPSBmb3JtYXQoXCIlSSAlcFwiKSxcbiAgICAgIGZvcm1hdERheSA9IGZvcm1hdChcIiVhICVkXCIpLFxuICAgICAgZm9ybWF0V2VlayA9IGZvcm1hdChcIiViICVkXCIpLFxuICAgICAgZm9ybWF0TW9udGggPSBmb3JtYXQoXCIlQlwiKSxcbiAgICAgIGZvcm1hdFllYXIgPSBmb3JtYXQoXCIlWVwiKTtcblxuICB2YXIgdGlja0ludGVydmFscyA9IFtcbiAgICBbc2Vjb25kLCAgMSwgICAgICBkdXJhdGlvblNlY29uZF0sXG4gICAgW3NlY29uZCwgIDUsICA1ICogZHVyYXRpb25TZWNvbmRdLFxuICAgIFtzZWNvbmQsIDE1LCAxNSAqIGR1cmF0aW9uU2Vjb25kXSxcbiAgICBbc2Vjb25kLCAzMCwgMzAgKiBkdXJhdGlvblNlY29uZF0sXG4gICAgW21pbnV0ZSwgIDEsICAgICAgZHVyYXRpb25NaW51dGVdLFxuICAgIFttaW51dGUsICA1LCAgNSAqIGR1cmF0aW9uTWludXRlXSxcbiAgICBbbWludXRlLCAxNSwgMTUgKiBkdXJhdGlvbk1pbnV0ZV0sXG4gICAgW21pbnV0ZSwgMzAsIDMwICogZHVyYXRpb25NaW51dGVdLFxuICAgIFsgIGhvdXIsICAxLCAgICAgIGR1cmF0aW9uSG91ciAgXSxcbiAgICBbICBob3VyLCAgMywgIDMgKiBkdXJhdGlvbkhvdXIgIF0sXG4gICAgWyAgaG91ciwgIDYsICA2ICogZHVyYXRpb25Ib3VyICBdLFxuICAgIFsgIGhvdXIsIDEyLCAxMiAqIGR1cmF0aW9uSG91ciAgXSxcbiAgICBbICAgZGF5LCAgMSwgICAgICBkdXJhdGlvbkRheSAgIF0sXG4gICAgWyAgIGRheSwgIDIsICAyICogZHVyYXRpb25EYXkgICBdLFxuICAgIFsgIHdlZWssICAxLCAgICAgIGR1cmF0aW9uV2VlayAgXSxcbiAgICBbIG1vbnRoLCAgMSwgICAgICBkdXJhdGlvbk1vbnRoIF0sXG4gICAgWyBtb250aCwgIDMsICAzICogZHVyYXRpb25Nb250aCBdLFxuICAgIFsgIHllYXIsICAxLCAgICAgIGR1cmF0aW9uWWVhciAgXVxuICBdO1xuXG4gIGZ1bmN0aW9uIHRpY2tGb3JtYXQoZGF0ZSkge1xuICAgIHJldHVybiAoc2Vjb25kKGRhdGUpIDwgZGF0ZSA/IGZvcm1hdE1pbGxpc2Vjb25kXG4gICAgICAgIDogbWludXRlKGRhdGUpIDwgZGF0ZSA/IGZvcm1hdFNlY29uZFxuICAgICAgICA6IGhvdXIoZGF0ZSkgPCBkYXRlID8gZm9ybWF0TWludXRlXG4gICAgICAgIDogZGF5KGRhdGUpIDwgZGF0ZSA/IGZvcm1hdEhvdXJcbiAgICAgICAgOiBtb250aChkYXRlKSA8IGRhdGUgPyAod2VlayhkYXRlKSA8IGRhdGUgPyBmb3JtYXREYXkgOiBmb3JtYXRXZWVrKVxuICAgICAgICA6IHllYXIoZGF0ZSkgPCBkYXRlID8gZm9ybWF0TW9udGhcbiAgICAgICAgOiBmb3JtYXRZZWFyKShkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpY2tJbnRlcnZhbChpbnRlcnZhbCwgc3RhcnQsIHN0b3AsIHN0ZXApIHtcbiAgICBpZiAoaW50ZXJ2YWwgPT0gbnVsbCkgaW50ZXJ2YWwgPSAxMDtcblxuICAgIC8vIElmIGEgZGVzaXJlZCB0aWNrIGNvdW50IGlzIHNwZWNpZmllZCwgcGljayBhIHJlYXNvbmFibGUgdGljayBpbnRlcnZhbFxuICAgIC8vIGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgdGhlIGRvbWFpbiBhbmQgYSByb3VnaCBlc3RpbWF0ZSBvZiB0aWNrIHNpemUuXG4gICAgLy8gT3RoZXJ3aXNlLCBhc3N1bWUgaW50ZXJ2YWwgaXMgYWxyZWFkeSBhIHRpbWUgaW50ZXJ2YWwgYW5kIHVzZSBpdC5cbiAgICBpZiAodHlwZW9mIGludGVydmFsID09PSBcIm51bWJlclwiKSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gTWF0aC5hYnMoc3RvcCAtIHN0YXJ0KSAvIGludGVydmFsLFxuICAgICAgICAgIGkgPSBiaXNlY3RvcihmdW5jdGlvbihpKSB7IHJldHVybiBpWzJdOyB9KS5yaWdodCh0aWNrSW50ZXJ2YWxzLCB0YXJnZXQpO1xuICAgICAgaWYgKGkgPT09IHRpY2tJbnRlcnZhbHMubGVuZ3RoKSB7XG4gICAgICAgIHN0ZXAgPSB0aWNrU3RlcChzdGFydCAvIGR1cmF0aW9uWWVhciwgc3RvcCAvIGR1cmF0aW9uWWVhciwgaW50ZXJ2YWwpO1xuICAgICAgICBpbnRlcnZhbCA9IHllYXI7XG4gICAgICB9IGVsc2UgaWYgKGkpIHtcbiAgICAgICAgaSA9IHRpY2tJbnRlcnZhbHNbdGFyZ2V0IC8gdGlja0ludGVydmFsc1tpIC0gMV1bMl0gPCB0aWNrSW50ZXJ2YWxzW2ldWzJdIC8gdGFyZ2V0ID8gaSAtIDEgOiBpXTtcbiAgICAgICAgc3RlcCA9IGlbMV07XG4gICAgICAgIGludGVydmFsID0gaVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ZXAgPSB0aWNrU3RlcChzdGFydCwgc3RvcCwgaW50ZXJ2YWwpO1xuICAgICAgICBpbnRlcnZhbCA9IG1pbGxpc2Vjb25kO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwID09IG51bGwgPyBpbnRlcnZhbCA6IGludGVydmFsLmV2ZXJ5KHN0ZXApO1xuICB9XG5cbiAgc2NhbGUuaW52ZXJ0ID0gZnVuY3Rpb24oeSkge1xuICAgIHJldHVybiBuZXcgRGF0ZShpbnZlcnQoeSkpO1xuICB9O1xuXG4gIHNjYWxlLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IGRvbWFpbihtYXAuY2FsbChfLCBudW1iZXIpKSA6IGRvbWFpbigpLm1hcChkYXRlKTtcbiAgfTtcblxuICBzY2FsZS50aWNrcyA9IGZ1bmN0aW9uKGludGVydmFsLCBzdGVwKSB7XG4gICAgdmFyIGQgPSBkb21haW4oKSxcbiAgICAgICAgdDAgPSBkWzBdLFxuICAgICAgICB0MSA9IGRbZC5sZW5ndGggLSAxXSxcbiAgICAgICAgciA9IHQxIDwgdDAsXG4gICAgICAgIHQ7XG4gICAgaWYgKHIpIHQgPSB0MCwgdDAgPSB0MSwgdDEgPSB0O1xuICAgIHQgPSB0aWNrSW50ZXJ2YWwoaW50ZXJ2YWwsIHQwLCB0MSwgc3RlcCk7XG4gICAgdCA9IHQgPyB0LnJhbmdlKHQwLCB0MSArIDEpIDogW107IC8vIGluY2x1c2l2ZSBzdG9wXG4gICAgcmV0dXJuIHIgPyB0LnJldmVyc2UoKSA6IHQ7XG4gIH07XG5cbiAgc2NhbGUudGlja0Zvcm1hdCA9IGZ1bmN0aW9uKGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyID09IG51bGwgPyB0aWNrRm9ybWF0IDogZm9ybWF0KHNwZWNpZmllcik7XG4gIH07XG5cbiAgc2NhbGUubmljZSA9IGZ1bmN0aW9uKGludGVydmFsLCBzdGVwKSB7XG4gICAgdmFyIGQgPSBkb21haW4oKTtcbiAgICByZXR1cm4gKGludGVydmFsID0gdGlja0ludGVydmFsKGludGVydmFsLCBkWzBdLCBkW2QubGVuZ3RoIC0gMV0sIHN0ZXApKVxuICAgICAgICA/IGRvbWFpbihuaWNlKGQsIGludGVydmFsKSlcbiAgICAgICAgOiBzY2FsZTtcbiAgfTtcblxuICBzY2FsZS5jb3B5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGNvcHkoc2NhbGUsIGNhbGVuZGFyKHllYXIsIG1vbnRoLCB3ZWVrLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgZm9ybWF0KSk7XG4gIH07XG5cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNhbGVuZGFyKHRpbWVZZWFyLCB0aW1lTW9udGgsIHRpbWVXZWVrLCB0aW1lRGF5LCB0aW1lSG91ciwgdGltZU1pbnV0ZSwgdGltZVNlY29uZCwgdGltZU1pbGxpc2Vjb25kLCB0aW1lRm9ybWF0KS5kb21haW4oW25ldyBEYXRlKDIwMDAsIDAsIDEpLCBuZXcgRGF0ZSgyMDAwLCAwLCAyKV0pO1xufVxuIiwiZnVuY3Rpb24gTGluZWFyKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG59XG5cbkxpbmVhci5wcm90b3R5cGUgPSB7XG4gIGFyZWFTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IDA7XG4gIH0sXG4gIGFyZWFFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX2xpbmUgPSBOYU47XG4gIH0sXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fcG9pbnQgPSAwO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fbGluZSB8fCAodGhpcy5fbGluZSAhPT0gMCAmJiB0aGlzLl9wb2ludCA9PT0gMSkpIHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7XG4gICAgdGhpcy5fbGluZSA9IDEgLSB0aGlzLl9saW5lO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHggPSAreCwgeSA9ICt5O1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDogdGhpcy5fcG9pbnQgPSAxOyB0aGlzLl9saW5lID8gdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSkgOiB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTsgYnJlYWs7XG4gICAgICBjYXNlIDE6IHRoaXMuX3BvaW50ID0gMjsgLy8gcHJvY2VlZFxuICAgICAgZGVmYXVsdDogdGhpcy5fY29udGV4dC5saW5lVG8oeCwgeSk7IGJyZWFrO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY29udGV4dCkge1xuICByZXR1cm4gbmV3IExpbmVhcihjb250ZXh0KTtcbn1cbiIsImV4cG9ydCBmdW5jdGlvbiB4KHApIHtcbiAgcmV0dXJuIHBbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB5KHApIHtcbiAgcmV0dXJuIHBbMV07XG59XG4iLCJmdW5jdGlvbiBzaWduKHgpIHtcbiAgcmV0dXJuIHggPCAwID8gLTEgOiAxO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIHNsb3BlcyBvZiB0aGUgdGFuZ2VudHMgKEhlcm1pdGUtdHlwZSBpbnRlcnBvbGF0aW9uKSBiYXNlZCBvblxuLy8gdGhlIGZvbGxvd2luZyBwYXBlcjogU3RlZmZlbiwgTS4gMTk5MC4gQSBTaW1wbGUgTWV0aG9kIGZvciBNb25vdG9uaWNcbi8vIEludGVycG9sYXRpb24gaW4gT25lIERpbWVuc2lvbi4gQXN0cm9ub215IGFuZCBBc3Ryb3BoeXNpY3MsIFZvbC4gMjM5LCBOTy5cbi8vIE5PVihJSSksIFAuIDQ0MywgMTk5MC5cbmZ1bmN0aW9uIHNsb3BlMyh0aGF0LCB4MiwgeTIpIHtcbiAgdmFyIGgwID0gdGhhdC5feDEgLSB0aGF0Ll94MCxcbiAgICAgIGgxID0geDIgLSB0aGF0Ll94MSxcbiAgICAgIHMwID0gKHRoYXQuX3kxIC0gdGhhdC5feTApIC8gKGgwIHx8IGgxIDwgMCAmJiAtMCksXG4gICAgICBzMSA9ICh5MiAtIHRoYXQuX3kxKSAvIChoMSB8fCBoMCA8IDAgJiYgLTApLFxuICAgICAgcCA9IChzMCAqIGgxICsgczEgKiBoMCkgLyAoaDAgKyBoMSk7XG4gIHJldHVybiAoc2lnbihzMCkgKyBzaWduKHMxKSkgKiBNYXRoLm1pbihNYXRoLmFicyhzMCksIE1hdGguYWJzKHMxKSwgMC41ICogTWF0aC5hYnMocCkpIHx8IDA7XG59XG5cbi8vIENhbGN1bGF0ZSBhIG9uZS1zaWRlZCBzbG9wZS5cbmZ1bmN0aW9uIHNsb3BlMih0aGF0LCB0KSB7XG4gIHZhciBoID0gdGhhdC5feDEgLSB0aGF0Ll94MDtcbiAgcmV0dXJuIGggPyAoMyAqICh0aGF0Ll95MSAtIHRoYXQuX3kwKSAvIGggLSB0KSAvIDIgOiB0O1xufVxuXG4vLyBBY2NvcmRpbmcgdG8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3ViaWNfSGVybWl0ZV9zcGxpbmUjUmVwcmVzZW50YXRpb25zXG4vLyBcInlvdSBjYW4gZXhwcmVzcyBjdWJpYyBIZXJtaXRlIGludGVycG9sYXRpb24gaW4gdGVybXMgb2YgY3ViaWMgQsOpemllciBjdXJ2ZXNcbi8vIHdpdGggcmVzcGVjdCB0byB0aGUgZm91ciB2YWx1ZXMgcDAsIHAwICsgbTAgLyAzLCBwMSAtIG0xIC8gMywgcDFcIi5cbmZ1bmN0aW9uIHBvaW50KHRoYXQsIHQwLCB0MSkge1xuICB2YXIgeDAgPSB0aGF0Ll94MCxcbiAgICAgIHkwID0gdGhhdC5feTAsXG4gICAgICB4MSA9IHRoYXQuX3gxLFxuICAgICAgeTEgPSB0aGF0Ll95MSxcbiAgICAgIGR4ID0gKHgxIC0geDApIC8gMztcbiAgdGhhdC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHgwICsgZHgsIHkwICsgZHggKiB0MCwgeDEgLSBkeCwgeTEgLSBkeCAqIHQxLCB4MSwgeTEpO1xufVxuXG5mdW5jdGlvbiBNb25vdG9uZVgoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuTW9ub3RvbmVYLnByb3RvdHlwZSA9IHtcbiAgYXJlYVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgYXJlYUVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxID1cbiAgICB0aGlzLl95MCA9IHRoaXMuX3kxID1cbiAgICB0aGlzLl90MCA9IE5hTjtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMjogdGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsIHRoaXMuX3kxKTsgYnJlYWs7XG4gICAgICBjYXNlIDM6IHBvaW50KHRoaXMsIHRoaXMuX3QwLCBzbG9wZTIodGhpcywgdGhpcy5fdDApKTsgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0aGlzLl9saW5lIHx8ICh0aGlzLl9saW5lICE9PSAwICYmIHRoaXMuX3BvaW50ID09PSAxKSkgdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICB0aGlzLl9saW5lID0gMSAtIHRoaXMuX2xpbmU7XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHQxID0gTmFOO1xuXG4gICAgeCA9ICt4LCB5ID0gK3k7XG4gICAgaWYgKHggPT09IHRoaXMuX3gxICYmIHkgPT09IHRoaXMuX3kxKSByZXR1cm47IC8vIElnbm9yZSBjb2luY2lkZW50IHBvaW50cy5cbiAgICBzd2l0Y2ggKHRoaXMuX3BvaW50KSB7XG4gICAgICBjYXNlIDA6IHRoaXMuX3BvaW50ID0gMTsgdGhpcy5fbGluZSA/IHRoaXMuX2NvbnRleHQubGluZVRvKHgsIHkpIDogdGhpcy5fY29udGV4dC5tb3ZlVG8oeCwgeSk7IGJyZWFrO1xuICAgICAgY2FzZSAxOiB0aGlzLl9wb2ludCA9IDI7IGJyZWFrO1xuICAgICAgY2FzZSAyOiB0aGlzLl9wb2ludCA9IDM7IHBvaW50KHRoaXMsIHNsb3BlMih0aGlzLCB0MSA9IHNsb3BlMyh0aGlzLCB4LCB5KSksIHQxKTsgYnJlYWs7XG4gICAgICBkZWZhdWx0OiBwb2ludCh0aGlzLCB0aGlzLl90MCwgdDEgPSBzbG9wZTModGhpcywgeCwgeSkpOyBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl94MCA9IHRoaXMuX3gxLCB0aGlzLl94MSA9IHg7XG4gICAgdGhpcy5feTAgPSB0aGlzLl95MSwgdGhpcy5feTEgPSB5O1xuICAgIHRoaXMuX3QwID0gdDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gTW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgdGhpcy5fY29udGV4dCA9IG5ldyBSZWZsZWN0Q29udGV4dChjb250ZXh0KTtcbn1cblxuKE1vbm90b25lWS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE1vbm90b25lWC5wcm90b3R5cGUpKS5wb2ludCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgTW9ub3RvbmVYLnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsIHksIHgpO1xufTtcblxuZnVuY3Rpb24gUmVmbGVjdENvbnRleHQoY29udGV4dCkge1xuICB0aGlzLl9jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUmVmbGVjdENvbnRleHQucHJvdG90eXBlID0ge1xuICBtb3ZlVG86IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5fY29udGV4dC5tb3ZlVG8oeSwgeCk7IH0sXG4gIGNsb3NlUGF0aDogZnVuY3Rpb24oKSB7IHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7IH0sXG4gIGxpbmVUbzogZnVuY3Rpb24oeCwgeSkgeyB0aGlzLl9jb250ZXh0LmxpbmVUbyh5LCB4KTsgfSxcbiAgYmV6aWVyQ3VydmVUbzogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIHgsIHkpIHsgdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHkxLCB4MSwgeTIsIHgyLCB5LCB4KTsgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vbm90b25lWChjb250ZXh0KSB7XG4gIHJldHVybiBuZXcgTW9ub3RvbmVYKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ub3RvbmVZKGNvbnRleHQpIHtcbiAgcmV0dXJuIG5ldyBNb25vdG9uZVkoY29udGV4dCk7XG59XG4iLCJpbXBvcnQge3NlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBhdHRyc0Z1bmN0aW9uKHNlbGVjdGlvbiwgbWFwKSB7XG4gIHJldHVybiBzZWxlY3Rpb24uZWFjaChmdW5jdGlvbigpIHtcbiAgICB2YXIgeCA9IG1hcC5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCBzID0gc2VsZWN0KHRoaXMpO1xuICAgIGZvciAodmFyIG5hbWUgaW4geCkgcy5hdHRyKG5hbWUsIHhbbmFtZV0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXR0cnNPYmplY3Qoc2VsZWN0aW9uLCBtYXApIHtcbiAgZm9yICh2YXIgbmFtZSBpbiBtYXApIHNlbGVjdGlvbi5hdHRyKG5hbWUsIG1hcFtuYW1lXSk7XG4gIHJldHVybiBzZWxlY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hcCkge1xuICByZXR1cm4gKHR5cGVvZiBtYXAgPT09IFwiZnVuY3Rpb25cIiA/IGF0dHJzRnVuY3Rpb24gOiBhdHRyc09iamVjdCkodGhpcywgbWFwKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0fSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5cbmZ1bmN0aW9uIHN0eWxlc0Z1bmN0aW9uKHNlbGVjdGlvbiwgbWFwLCBwcmlvcml0eSkge1xuICByZXR1cm4gc2VsZWN0aW9uLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgdmFyIHggPSBtYXAuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgcyA9IHNlbGVjdCh0aGlzKTtcbiAgICBmb3IgKHZhciBuYW1lIGluIHgpIHMuc3R5bGUobmFtZSwgeFtuYW1lXSwgcHJpb3JpdHkpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc3R5bGVzT2JqZWN0KHNlbGVjdGlvbiwgbWFwLCBwcmlvcml0eSkge1xuICBmb3IgKHZhciBuYW1lIGluIG1hcCkgc2VsZWN0aW9uLnN0eWxlKG5hbWUsIG1hcFtuYW1lXSwgcHJpb3JpdHkpO1xuICByZXR1cm4gc2VsZWN0aW9uO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihtYXAsIHByaW9yaXR5KSB7XG4gIHJldHVybiAodHlwZW9mIG1hcCA9PT0gXCJmdW5jdGlvblwiID8gc3R5bGVzRnVuY3Rpb24gOiBzdHlsZXNPYmplY3QpKHRoaXMsIG1hcCwgcHJpb3JpdHkgPT0gbnVsbCA/IFwiXCIgOiBwcmlvcml0eSk7XG59XG4iLCJpbXBvcnQge3NlbGVjdH0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuXG5mdW5jdGlvbiBwcm9wZXJ0aWVzRnVuY3Rpb24oc2VsZWN0aW9uLCBtYXApIHtcbiAgcmV0dXJuIHNlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIHZhciB4ID0gbWFwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHMgPSBzZWxlY3QodGhpcyk7XG4gICAgZm9yICh2YXIgbmFtZSBpbiB4KSBzLnByb3BlcnR5KG5hbWUsIHhbbmFtZV0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJvcGVydGllc09iamVjdChzZWxlY3Rpb24sIG1hcCkge1xuICBmb3IgKHZhciBuYW1lIGluIG1hcCkgc2VsZWN0aW9uLnByb3BlcnR5KG5hbWUsIG1hcFtuYW1lXSk7XG4gIHJldHVybiBzZWxlY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hcCkge1xuICByZXR1cm4gKHR5cGVvZiBtYXAgPT09IFwiZnVuY3Rpb25cIiA/IHByb3BlcnRpZXNGdW5jdGlvbiA6IHByb3BlcnRpZXNPYmplY3QpKHRoaXMsIG1hcCk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogYSA+PSBiID8gMCA6IE5hTjtcbn1cbiIsImltcG9ydCBhc2NlbmRpbmcgZnJvbSBcIi4vYXNjZW5kaW5nXCI7XG5pbXBvcnQgYmlzZWN0b3IgZnJvbSBcIi4vYmlzZWN0b3JcIjtcblxudmFyIGFzY2VuZGluZ0Jpc2VjdCA9IGJpc2VjdG9yKGFzY2VuZGluZyk7XG5leHBvcnQgdmFyIGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xuZXhwb3J0IHZhciBiaXNlY3RMZWZ0ID0gYXNjZW5kaW5nQmlzZWN0LmxlZnQ7XG5leHBvcnQgZGVmYXVsdCBiaXNlY3RSaWdodDtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlcywgdmFsdWVvZikge1xuICB2YXIgbiA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICBpID0gLTEsXG4gICAgICB2YWx1ZSxcbiAgICAgIG1heDtcblxuICBpZiAodmFsdWVvZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlc1tpXSkgIT0gbnVsbCAmJiB2YWx1ZSA+IG1heCkge1xuICAgICAgICAgICAgbWF4ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gRmluZCB0aGUgZmlyc3QgY29tcGFyYWJsZSB2YWx1ZS5cbiAgICAgIGlmICgodmFsdWUgPSB2YWx1ZW9mKHZhbHVlc1tpXSwgaSwgdmFsdWVzKSkgIT0gbnVsbCAmJiB2YWx1ZSA+PSB2YWx1ZSkge1xuICAgICAgICBtYXggPSB2YWx1ZTtcbiAgICAgICAgd2hpbGUgKCsraSA8IG4pIHsgLy8gQ29tcGFyZSB0aGUgcmVtYWluaW5nIHZhbHVlcy5cbiAgICAgICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgdmFsdWUgPiBtYXgpIHtcbiAgICAgICAgICAgIG1heCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXg7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih2YWx1ZXMsIHZhbHVlb2YpIHtcbiAgdmFyIG4gPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgaSA9IC0xLFxuICAgICAgdmFsdWUsXG4gICAgICBtaW47XG5cbiAgaWYgKHZhbHVlb2YgPT0gbnVsbCkge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIEZpbmQgdGhlIGZpcnN0IGNvbXBhcmFibGUgdmFsdWUuXG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVzW2ldKSAhPSBudWxsICYmIHZhbHVlID49IHZhbHVlKSB7XG4gICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICB3aGlsZSAoKytpIDwgbikgeyAvLyBDb21wYXJlIHRoZSByZW1haW5pbmcgdmFsdWVzLlxuICAgICAgICAgIGlmICgodmFsdWUgPSB2YWx1ZXNbaV0pICE9IG51bGwgJiYgbWluID4gdmFsdWUpIHtcbiAgICAgICAgICAgIG1pbiA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIEZpbmQgdGhlIGZpcnN0IGNvbXBhcmFibGUgdmFsdWUuXG4gICAgICBpZiAoKHZhbHVlID0gdmFsdWVvZih2YWx1ZXNbaV0sIGksIHZhbHVlcykpICE9IG51bGwgJiYgdmFsdWUgPj0gdmFsdWUpIHtcbiAgICAgICAgbWluID0gdmFsdWU7XG4gICAgICAgIHdoaWxlICgrK2kgPCBuKSB7IC8vIENvbXBhcmUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuXG4gICAgICAgICAgaWYgKCh2YWx1ZSA9IHZhbHVlb2YodmFsdWVzW2ldLCBpLCB2YWx1ZXMpKSAhPSBudWxsICYmIG1pbiA+IHZhbHVlKSB7XG4gICAgICAgICAgICBtaW4gPSB2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWluO1xufVxuIiwiZXhwb3J0IHZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iLCJleHBvcnQgdmFyIHhodG1sID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3ZnOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gIHhodG1sOiB4aHRtbCxcbiAgeGxpbms6IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuICB4bWw6IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXG4gIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCJcbn07XG4iLCJpbXBvcnQgbmFtZXNwYWNlcyBmcm9tIFwiLi9uYW1lc3BhY2VzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIHByZWZpeCA9IG5hbWUgKz0gXCJcIiwgaSA9IHByZWZpeC5pbmRleE9mKFwiOlwiKTtcbiAgaWYgKGkgPj0gMCAmJiAocHJlZml4ID0gbmFtZS5zbGljZSgwLCBpKSkgIT09IFwieG1sbnNcIikgbmFtZSA9IG5hbWUuc2xpY2UoaSArIDEpO1xuICByZXR1cm4gbmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcmVmaXgpID8ge3NwYWNlOiBuYW1lc3BhY2VzW3ByZWZpeF0sIGxvY2FsOiBuYW1lfSA6IG5hbWU7XG59XG4iLCJ2YXIgbWF0Y2hlciA9IGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgfTtcbn07XG5cbmlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIGlmICghZWxlbWVudC5tYXRjaGVzKSB7XG4gICAgdmFyIHZlbmRvck1hdGNoZXMgPSBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvclxuICAgICAgICB8fCBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgIHx8IGVsZW1lbnQubW96TWF0Y2hlc1NlbGVjdG9yXG4gICAgICAgIHx8IGVsZW1lbnQub01hdGNoZXNTZWxlY3RvcjtcbiAgICBtYXRjaGVyID0gZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHZlbmRvck1hdGNoZXMuY2FsbCh0aGlzLCBzZWxlY3Rvcik7XG4gICAgICB9O1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbWF0Y2hlcjtcbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNlbGVjdG9yIGZyb20gXCIuLi9zZWxlY3RvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3Ioc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBzdWJub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChzdWJub2RlID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSkge1xuICAgICAgICBpZiAoXCJfX2RhdGFfX1wiIGluIG5vZGUpIHN1Ym5vZGUuX19kYXRhX18gPSBub2RlLl9fZGF0YV9fO1xuICAgICAgICBzdWJncm91cFtpXSA9IHN1Ym5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IHNlbGVjdG9yQWxsIGZyb20gXCIuLi9zZWxlY3RvckFsbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzZWxlY3QpIHtcbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBzdWJncm91cHMucHVzaChzZWxlY3QuY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24oc3ViZ3JvdXBzLCBwYXJlbnRzKTtcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuaW1wb3J0IG1hdGNoZXIgZnJvbSBcIi4uL21hdGNoZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obWF0Y2gpIHtcbiAgaWYgKHR5cGVvZiBtYXRjaCAhPT0gXCJmdW5jdGlvblwiKSBtYXRjaCA9IG1hdGNoZXIobWF0Y2gpO1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgbSA9IGdyb3Vwcy5sZW5ndGgsIHN1Ymdyb3VwcyA9IG5ldyBBcnJheShtKSwgaiA9IDA7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgbiA9IGdyb3VwLmxlbmd0aCwgc3ViZ3JvdXAgPSBzdWJncm91cHNbal0gPSBbXSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmICgobm9kZSA9IGdyb3VwW2ldKSAmJiBtYXRjaC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSkge1xuICAgICAgICBzdWJncm91cC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgU2VsZWN0aW9uKHN1Ymdyb3VwcywgdGhpcy5fcGFyZW50cyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih1cGRhdGUpIHtcbiAgcmV0dXJuIG5ldyBBcnJheSh1cGRhdGUubGVuZ3RoKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwiaW1wb3J0IHNwYXJzZSBmcm9tIFwiLi9zcGFyc2VcIjtcbmltcG9ydCB7U2VsZWN0aW9ufSBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24odGhpcy5fZXhpdCB8fCB0aGlzLl9ncm91cHMubWFwKHNwYXJzZSksIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHNlbGVjdGlvbikge1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSBzZWxlY3Rpb24uX2dyb3VwcywgbTAgPSBncm91cHMwLmxlbmd0aCwgbTEgPSBncm91cHMxLmxlbmd0aCwgbSA9IE1hdGgubWluKG0wLCBtMSksIG1lcmdlcyA9IG5ldyBBcnJheShtMCksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAwID0gZ3JvdXBzMFtqXSwgZ3JvdXAxID0gZ3JvdXBzMVtqXSwgbiA9IGdyb3VwMC5sZW5ndGgsIG1lcmdlID0gbWVyZ2VzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cDBbaV0gfHwgZ3JvdXAxW2ldKSB7XG4gICAgICAgIG1lcmdlW2ldID0gbm9kZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaiA8IG0wOyArK2opIHtcbiAgICBtZXJnZXNbal0gPSBncm91cHMwW2pdO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBTZWxlY3Rpb24obWVyZ2VzLCB0aGlzLl9wYXJlbnRzKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IC0xLCBtID0gZ3JvdXBzLmxlbmd0aDsgKytqIDwgbTspIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IGdyb3VwLmxlbmd0aCAtIDEsIG5leHQgPSBncm91cFtpXSwgbm9kZTsgLS1pID49IDA7KSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSB7XG4gICAgICAgIGlmIChuZXh0ICYmIG5leHQgIT09IG5vZGUubmV4dFNpYmxpbmcpIG5leHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgbmV4dCk7XG4gICAgICAgIG5leHQgPSBub2RlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBjYWxsYmFjayA9IGFyZ3VtZW50c1swXTtcbiAgYXJndW1lbnRzWzBdID0gdGhpcztcbiAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIG5vZGVzID0gbmV3IEFycmF5KHRoaXMuc2l6ZSgpKSwgaSA9IC0xO1xuICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7IG5vZGVzWysraV0gPSB0aGlzOyB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG5cbiAgZm9yICh2YXIgZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLCBqID0gMCwgbSA9IGdyb3Vwcy5sZW5ndGg7IGogPCBtOyArK2opIHtcbiAgICBmb3IgKHZhciBncm91cCA9IGdyb3Vwc1tqXSwgaSA9IDAsIG4gPSBncm91cC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIHZhciBub2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAobm9kZSkgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHNpemUgPSAwO1xuICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7ICsrc2l6ZTsgfSk7XG4gIHJldHVybiBzaXplO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHJldHVybiAhdGhpcy5ub2RlKCk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuXG4gIGZvciAodmFyIGdyb3VwcyA9IHRoaXMuX2dyb3VwcywgaiA9IDAsIG0gPSBncm91cHMubGVuZ3RoOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIGkgPSAwLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAobm9kZSA9IGdyb3VwW2ldKSBjYWxsYmFjay5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLm93bmVyRG9jdW1lbnQgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSAvLyBub2RlIGlzIGEgTm9kZVxuICAgICAgfHwgKG5vZGUuZG9jdW1lbnQgJiYgbm9kZSkgLy8gbm9kZSBpcyBhIFdpbmRvd1xuICAgICAgfHwgbm9kZS5kZWZhdWx0VmlldzsgLy8gbm9kZSBpcyBhIERvY3VtZW50XG59XG4iLCJpbXBvcnQgY3JlYXRvciBmcm9tIFwiLi4vY3JlYXRvclwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjcmVhdGUgPSB0eXBlb2YgbmFtZSA9PT0gXCJmdW5jdGlvblwiID8gbmFtZSA6IGNyZWF0b3IobmFtZSk7XG4gIHJldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChjcmVhdGUuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH0pO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgID8gdGhpcy5wcm9wZXJ0eShcIl9fZGF0YV9fXCIsIHZhbHVlKVxuICAgICAgOiB0aGlzLm5vZGUoKS5fX2RhdGFfXztcbn1cbiIsImltcG9ydCB7U2VsZWN0aW9uLCByb290fSBmcm9tIFwiLi9zZWxlY3Rpb24vaW5kZXhcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBuZXcgU2VsZWN0aW9uKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcildXSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pXG4gICAgICA6IG5ldyBTZWxlY3Rpb24oW1tzZWxlY3Rvcl1dLCByb290KTtcbn1cbiIsImV4cG9ydCB2YXIgZGVnMnJhZCA9IE1hdGguUEkgLyAxODA7XG5leHBvcnQgdmFyIHJhZDJkZWcgPSAxODAgLyBNYXRoLlBJO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJpbXBvcnQge3JnYiBhcyBjb2xvclJnYn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgYmFzaXMgZnJvbSBcIi4vYmFzaXNcIjtcbmltcG9ydCBiYXNpc0Nsb3NlZCBmcm9tIFwiLi9iYXNpc0Nsb3NlZFwiO1xuaW1wb3J0IG5vZ2FtbWEsIHtnYW1tYX0gZnJvbSBcIi4vY29sb3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIHJnYkdhbW1hKHkpIHtcbiAgdmFyIGNvbG9yID0gZ2FtbWEoeSk7XG5cbiAgZnVuY3Rpb24gcmdiKHN0YXJ0LCBlbmQpIHtcbiAgICB2YXIgciA9IGNvbG9yKChzdGFydCA9IGNvbG9yUmdiKHN0YXJ0KSkuciwgKGVuZCA9IGNvbG9yUmdiKGVuZCkpLnIpLFxuICAgICAgICBnID0gY29sb3Ioc3RhcnQuZywgZW5kLmcpLFxuICAgICAgICBiID0gY29sb3Ioc3RhcnQuYiwgZW5kLmIpLFxuICAgICAgICBvcGFjaXR5ID0gbm9nYW1tYShzdGFydC5vcGFjaXR5LCBlbmQub3BhY2l0eSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIHN0YXJ0LnIgPSByKHQpO1xuICAgICAgc3RhcnQuZyA9IGcodCk7XG4gICAgICBzdGFydC5iID0gYih0KTtcbiAgICAgIHN0YXJ0Lm9wYWNpdHkgPSBvcGFjaXR5KHQpO1xuICAgICAgcmV0dXJuIHN0YXJ0ICsgXCJcIjtcbiAgICB9O1xuICB9XG5cbiAgcmdiLmdhbW1hID0gcmdiR2FtbWE7XG5cbiAgcmV0dXJuIHJnYjtcbn0pKDEpO1xuXG5mdW5jdGlvbiByZ2JTcGxpbmUoc3BsaW5lKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xvcnMpIHtcbiAgICB2YXIgbiA9IGNvbG9ycy5sZW5ndGgsXG4gICAgICAgIHIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGcgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGIgPSBuZXcgQXJyYXkobiksXG4gICAgICAgIGksIGNvbG9yO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGNvbG9yID0gY29sb3JSZ2IoY29sb3JzW2ldKTtcbiAgICAgIHJbaV0gPSBjb2xvci5yIHx8IDA7XG4gICAgICBnW2ldID0gY29sb3IuZyB8fCAwO1xuICAgICAgYltpXSA9IGNvbG9yLmIgfHwgMDtcbiAgICB9XG4gICAgciA9IHNwbGluZShyKTtcbiAgICBnID0gc3BsaW5lKGcpO1xuICAgIGIgPSBzcGxpbmUoYik7XG4gICAgY29sb3Iub3BhY2l0eSA9IDE7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICAgIGNvbG9yLnIgPSByKHQpO1xuICAgICAgY29sb3IuZyA9IGcodCk7XG4gICAgICBjb2xvci5iID0gYih0KTtcbiAgICAgIHJldHVybiBjb2xvciArIFwiXCI7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IHZhciByZ2JCYXNpcyA9IHJnYlNwbGluZShiYXNpcyk7XG5leHBvcnQgdmFyIHJnYkJhc2lzQ2xvc2VkID0gcmdiU3BsaW5lKGJhc2lzQ2xvc2VkKTtcbiIsImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBuYiA9IGIgPyBiLmxlbmd0aCA6IDAsXG4gICAgICBuYSA9IGEgPyBNYXRoLm1pbihuYiwgYS5sZW5ndGgpIDogMCxcbiAgICAgIHggPSBuZXcgQXJyYXkobmIpLFxuICAgICAgYyA9IG5ldyBBcnJheShuYiksXG4gICAgICBpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBuYTsgKytpKSB4W2ldID0gdmFsdWUoYVtpXSwgYltpXSk7XG4gIGZvciAoOyBpIDwgbmI7ICsraSkgY1tpXSA9IGJbaV07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKHQpIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbmE7ICsraSkgY1tpXSA9IHhbaV0odCk7XG4gICAgcmV0dXJuIGM7XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBkID0gbmV3IERhdGU7XG4gIHJldHVybiBhID0gK2EsIGIgLT0gYSwgZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBkLnNldFRpbWUoYSArIGIgKiB0KSwgZDtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiAtPSBhLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIGEgKyBiICogdDtcbiAgfTtcbn1cbiIsImltcG9ydCB2YWx1ZSBmcm9tIFwiLi92YWx1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciBpID0ge30sXG4gICAgICBjID0ge30sXG4gICAgICBrO1xuXG4gIGlmIChhID09PSBudWxsIHx8IHR5cGVvZiBhICE9PSBcIm9iamVjdFwiKSBhID0ge307XG4gIGlmIChiID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSBcIm9iamVjdFwiKSBiID0ge307XG5cbiAgZm9yIChrIGluIGIpIHtcbiAgICBpZiAoayBpbiBhKSB7XG4gICAgICBpW2tdID0gdmFsdWUoYVtrXSwgYltrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNba10gPSBiW2tdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgZm9yIChrIGluIGkpIGNba10gPSBpW2tdKHQpO1xuICAgIHJldHVybiBjO1xuICB9O1xufVxuIiwiaW1wb3J0IHtjb2xvcn0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQgcmdiIGZyb20gXCIuL3JnYlwiO1xuaW1wb3J0IGFycmF5IGZyb20gXCIuL2FycmF5XCI7XG5pbXBvcnQgZGF0ZSBmcm9tIFwiLi9kYXRlXCI7XG5pbXBvcnQgbnVtYmVyIGZyb20gXCIuL251bWJlclwiO1xuaW1wb3J0IG9iamVjdCBmcm9tIFwiLi9vYmplY3RcIjtcbmltcG9ydCBzdHJpbmcgZnJvbSBcIi4vc3RyaW5nXCI7XG5pbXBvcnQgY29uc3RhbnQgZnJvbSBcIi4vY29uc3RhbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgdCA9IHR5cGVvZiBiLCBjO1xuICByZXR1cm4gYiA9PSBudWxsIHx8IHQgPT09IFwiYm9vbGVhblwiID8gY29uc3RhbnQoYilcbiAgICAgIDogKHQgPT09IFwibnVtYmVyXCIgPyBudW1iZXJcbiAgICAgIDogdCA9PT0gXCJzdHJpbmdcIiA/ICgoYyA9IGNvbG9yKGIpKSA/IChiID0gYywgcmdiKSA6IHN0cmluZylcbiAgICAgIDogYiBpbnN0YW5jZW9mIGNvbG9yID8gcmdiXG4gICAgICA6IGIgaW5zdGFuY2VvZiBEYXRlID8gZGF0ZVxuICAgICAgOiBBcnJheS5pc0FycmF5KGIpID8gYXJyYXlcbiAgICAgIDogdHlwZW9mIGIudmFsdWVPZiAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBiLnRvU3RyaW5nICE9PSBcImZ1bmN0aW9uXCIgfHwgaXNOYU4oYikgPyBvYmplY3RcbiAgICAgIDogbnVtYmVyKShhLCBiKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIpIHtcbiAgcmV0dXJuIGEgPSArYSwgYiAtPSBhLCBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoYSArIGIgKiB0KTtcbiAgfTtcbn1cbiIsInZhciBkZWdyZWVzID0gMTgwIC8gTWF0aC5QSTtcblxuZXhwb3J0IHZhciBpZGVudGl0eSA9IHtcbiAgdHJhbnNsYXRlWDogMCxcbiAgdHJhbnNsYXRlWTogMCxcbiAgcm90YXRlOiAwLFxuICBza2V3WDogMCxcbiAgc2NhbGVYOiAxLFxuICBzY2FsZVk6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFyIHNjYWxlWCwgc2NhbGVZLCBza2V3WDtcbiAgaWYgKHNjYWxlWCA9IE1hdGguc3FydChhICogYSArIGIgKiBiKSkgYSAvPSBzY2FsZVgsIGIgLz0gc2NhbGVYO1xuICBpZiAoc2tld1ggPSBhICogYyArIGIgKiBkKSBjIC09IGEgKiBza2V3WCwgZCAtPSBiICogc2tld1g7XG4gIGlmIChzY2FsZVkgPSBNYXRoLnNxcnQoYyAqIGMgKyBkICogZCkpIGMgLz0gc2NhbGVZLCBkIC89IHNjYWxlWSwgc2tld1ggLz0gc2NhbGVZO1xuICBpZiAoYSAqIGQgPCBiICogYykgYSA9IC1hLCBiID0gLWIsIHNrZXdYID0gLXNrZXdYLCBzY2FsZVggPSAtc2NhbGVYO1xuICByZXR1cm4ge1xuICAgIHRyYW5zbGF0ZVg6IGUsXG4gICAgdHJhbnNsYXRlWTogZixcbiAgICByb3RhdGU6IE1hdGguYXRhbjIoYiwgYSkgKiBkZWdyZWVzLFxuICAgIHNrZXdYOiBNYXRoLmF0YW4oc2tld1gpICogZGVncmVlcyxcbiAgICBzY2FsZVg6IHNjYWxlWCxcbiAgICBzY2FsZVk6IHNjYWxlWVxuICB9O1xufVxuIiwiaW1wb3J0IHtUaW1lcn0gZnJvbSBcIi4vdGltZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2ssIGRlbGF5LCB0aW1lKSB7XG4gIHZhciB0ID0gbmV3IFRpbWVyO1xuICBkZWxheSA9IGRlbGF5ID09IG51bGwgPyAwIDogK2RlbGF5O1xuICB0LnJlc3RhcnQoZnVuY3Rpb24oZWxhcHNlZCkge1xuICAgIHQuc3RvcCgpO1xuICAgIGNhbGxiYWNrKGVsYXBzZWQgKyBkZWxheSk7XG4gIH0sIGRlbGF5LCB0aW1lKTtcbiAgcmV0dXJuIHQ7XG59XG4iLCJpbXBvcnQge1NUQVJUSU5HLCBFTkRJTkcsIEVOREVEfSBmcm9tIFwiLi90cmFuc2l0aW9uL3NjaGVkdWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG5vZGUsIG5hbWUpIHtcbiAgdmFyIHNjaGVkdWxlcyA9IG5vZGUuX190cmFuc2l0aW9uLFxuICAgICAgc2NoZWR1bGUsXG4gICAgICBhY3RpdmUsXG4gICAgICBlbXB0eSA9IHRydWUsXG4gICAgICBpO1xuXG4gIGlmICghc2NoZWR1bGVzKSByZXR1cm47XG5cbiAgbmFtZSA9IG5hbWUgPT0gbnVsbCA/IG51bGwgOiBuYW1lICsgXCJcIjtcblxuICBmb3IgKGkgaW4gc2NoZWR1bGVzKSB7XG4gICAgaWYgKChzY2hlZHVsZSA9IHNjaGVkdWxlc1tpXSkubmFtZSAhPT0gbmFtZSkgeyBlbXB0eSA9IGZhbHNlOyBjb250aW51ZTsgfVxuICAgIGFjdGl2ZSA9IHNjaGVkdWxlLnN0YXRlID4gU1RBUlRJTkcgJiYgc2NoZWR1bGUuc3RhdGUgPCBFTkRJTkc7XG4gICAgc2NoZWR1bGUuc3RhdGUgPSBFTkRFRDtcbiAgICBzY2hlZHVsZS50aW1lci5zdG9wKCk7XG4gICAgaWYgKGFjdGl2ZSkgc2NoZWR1bGUub24uY2FsbChcImludGVycnVwdFwiLCBub2RlLCBub2RlLl9fZGF0YV9fLCBzY2hlZHVsZS5pbmRleCwgc2NoZWR1bGUuZ3JvdXApO1xuICAgIGRlbGV0ZSBzY2hlZHVsZXNbaV07XG4gIH1cblxuICBpZiAoZW1wdHkpIGRlbGV0ZSBub2RlLl9fdHJhbnNpdGlvbjtcbn1cbiIsImltcG9ydCBpbnRlcnJ1cHQgZnJvbSBcIi4uL2ludGVycnVwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgaW50ZXJydXB0KHRoaXMsIG5hbWUpO1xuICB9KTtcbn1cbiIsImltcG9ydCB7Y29sb3J9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZU51bWJlciwgaW50ZXJwb2xhdGVSZ2IsIGludGVycG9sYXRlU3RyaW5nfSBmcm9tIFwiZDMtaW50ZXJwb2xhdGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oYSwgYikge1xuICB2YXIgYztcbiAgcmV0dXJuICh0eXBlb2YgYiA9PT0gXCJudW1iZXJcIiA/IGludGVycG9sYXRlTnVtYmVyXG4gICAgICA6IGIgaW5zdGFuY2VvZiBjb2xvciA/IGludGVycG9sYXRlUmdiXG4gICAgICA6IChjID0gY29sb3IoYikpID8gKGIgPSBjLCBpbnRlcnBvbGF0ZVJnYilcbiAgICAgIDogaW50ZXJwb2xhdGVTdHJpbmcpKGEsIGIpO1xufVxuIiwiaW1wb3J0IHttYXRjaGVyfSBmcm9tIFwiZDMtc2VsZWN0aW9uXCI7XG5pbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG1hdGNoKSB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggIT09IFwiZnVuY3Rpb25cIikgbWF0Y2ggPSBtYXRjaGVyKG1hdGNoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gW10sIG5vZGUsIGkgPSAwOyBpIDwgbjsgKytpKSB7XG4gICAgICBpZiAoKG5vZGUgPSBncm91cFtpXSkgJiYgbWF0Y2guY2FsbChub2RlLCBub2RlLl9fZGF0YV9fLCBpLCBncm91cCkpIHtcbiAgICAgICAgc3ViZ3JvdXAucHVzaChub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IFRyYW5zaXRpb24oc3ViZ3JvdXBzLCB0aGlzLl9wYXJlbnRzLCB0aGlzLl9uYW1lLCB0aGlzLl9pZCk7XG59XG4iLCJpbXBvcnQge1RyYW5zaXRpb259IGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHRyYW5zaXRpb24pIHtcbiAgaWYgKHRyYW5zaXRpb24uX2lkICE9PSB0aGlzLl9pZCkgdGhyb3cgbmV3IEVycm9yO1xuXG4gIGZvciAodmFyIGdyb3VwczAgPSB0aGlzLl9ncm91cHMsIGdyb3VwczEgPSB0cmFuc2l0aW9uLl9ncm91cHMsIG0wID0gZ3JvdXBzMC5sZW5ndGgsIG0xID0gZ3JvdXBzMS5sZW5ndGgsIG0gPSBNYXRoLm1pbihtMCwgbTEpLCBtZXJnZXMgPSBuZXcgQXJyYXkobTApLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwMCA9IGdyb3VwczBbal0sIGdyb3VwMSA9IGdyb3VwczFbal0sIG4gPSBncm91cDAubGVuZ3RoLCBtZXJnZSA9IG1lcmdlc1tqXSA9IG5ldyBBcnJheShuKSwgbm9kZSwgaSA9IDA7IGkgPCBuOyArK2kpIHtcbiAgICAgIGlmIChub2RlID0gZ3JvdXAwW2ldIHx8IGdyb3VwMVtpXSkge1xuICAgICAgICBtZXJnZVtpXSA9IG5vZGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICg7IGogPCBtMDsgKytqKSB7XG4gICAgbWVyZ2VzW2pdID0gZ3JvdXBzMFtqXTtcbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihtZXJnZXMsIHRoaXMuX3BhcmVudHMsIHRoaXMuX25hbWUsIHRoaXMuX2lkKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0b3J9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkID0gdGhpcy5faWQ7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3Ioc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBuZXcgQXJyYXkobSksIGogPSAwOyBqIDwgbTsgKytqKSB7XG4gICAgZm9yICh2YXIgZ3JvdXAgPSBncm91cHNbal0sIG4gPSBncm91cC5sZW5ndGgsIHN1Ymdyb3VwID0gc3ViZ3JvdXBzW2pdID0gbmV3IEFycmF5KG4pLCBub2RlLCBzdWJub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKChub2RlID0gZ3JvdXBbaV0pICYmIChzdWJub2RlID0gc2VsZWN0LmNhbGwobm9kZSwgbm9kZS5fX2RhdGFfXywgaSwgZ3JvdXApKSkge1xuICAgICAgICBpZiAoXCJfX2RhdGFfX1wiIGluIG5vZGUpIHN1Ym5vZGUuX19kYXRhX18gPSBub2RlLl9fZGF0YV9fO1xuICAgICAgICBzdWJncm91cFtpXSA9IHN1Ym5vZGU7XG4gICAgICAgIHNjaGVkdWxlKHN1Ymdyb3VwW2ldLCBuYW1lLCBpZCwgaSwgc3ViZ3JvdXAsIGdldChub2RlLCBpZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihzdWJncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkKTtcbn1cbiIsImltcG9ydCB7c2VsZWN0b3JBbGx9IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcbmltcG9ydCB7VHJhbnNpdGlvbn0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc2VsZWN0KSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkID0gdGhpcy5faWQ7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3QgIT09IFwiZnVuY3Rpb25cIikgc2VsZWN0ID0gc2VsZWN0b3JBbGwoc2VsZWN0KTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBzdWJncm91cHMgPSBbXSwgcGFyZW50cyA9IFtdLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICBmb3IgKHZhciBjaGlsZHJlbiA9IHNlbGVjdC5jYWxsKG5vZGUsIG5vZGUuX19kYXRhX18sIGksIGdyb3VwKSwgY2hpbGQsIGluaGVyaXQgPSBnZXQobm9kZSwgaWQpLCBrID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgayA8IGw7ICsraykge1xuICAgICAgICAgIGlmIChjaGlsZCA9IGNoaWxkcmVuW2tdKSB7XG4gICAgICAgICAgICBzY2hlZHVsZShjaGlsZCwgbmFtZSwgaWQsIGssIGNoaWxkcmVuLCBpbmhlcml0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc3ViZ3JvdXBzLnB1c2goY2hpbGRyZW4pO1xuICAgICAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ldyBUcmFuc2l0aW9uKHN1Ymdyb3VwcywgcGFyZW50cywgbmFtZSwgaWQpO1xufVxuIiwiaW1wb3J0IHtzZWxlY3Rpb259IGZyb20gXCJkMy1zZWxlY3Rpb25cIjtcblxudmFyIFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3I7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFNlbGVjdGlvbih0aGlzLl9ncm91cHMsIHRoaXMuX3BhcmVudHMpO1xufVxuIiwiaW1wb3J0IHtUcmFuc2l0aW9uLCBuZXdJZH0gZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBzY2hlZHVsZSwge2dldH0gZnJvbSBcIi4vc2NoZWR1bGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBuYW1lID0gdGhpcy5fbmFtZSxcbiAgICAgIGlkMCA9IHRoaXMuX2lkLFxuICAgICAgaWQxID0gbmV3SWQoKTtcblxuICBmb3IgKHZhciBncm91cHMgPSB0aGlzLl9ncm91cHMsIG0gPSBncm91cHMubGVuZ3RoLCBqID0gMDsgaiA8IG07ICsraikge1xuICAgIGZvciAodmFyIGdyb3VwID0gZ3JvdXBzW2pdLCBuID0gZ3JvdXAubGVuZ3RoLCBub2RlLCBpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgaWYgKG5vZGUgPSBncm91cFtpXSkge1xuICAgICAgICB2YXIgaW5oZXJpdCA9IGdldChub2RlLCBpZDApO1xuICAgICAgICBzY2hlZHVsZShub2RlLCBuYW1lLCBpZDEsIGksIGdyb3VwLCB7XG4gICAgICAgICAgdGltZTogaW5oZXJpdC50aW1lICsgaW5oZXJpdC5kZWxheSArIGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZGVsYXk6IDAsXG4gICAgICAgICAgZHVyYXRpb246IGluaGVyaXQuZHVyYXRpb24sXG4gICAgICAgICAgZWFzZTogaW5oZXJpdC5lYXNlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgVHJhbnNpdGlvbihncm91cHMsIHRoaXMuX3BhcmVudHMsIG5hbWUsIGlkMSk7XG59XG4iLCJ2YXIgZXhwb25lbnQgPSAzO1xuXG5leHBvcnQgdmFyIHBvbHlJbiA9IChmdW5jdGlvbiBjdXN0b20oZSkge1xuICBlID0gK2U7XG5cbiAgZnVuY3Rpb24gcG9seUluKHQpIHtcbiAgICByZXR1cm4gTWF0aC5wb3codCwgZSk7XG4gIH1cblxuICBwb2x5SW4uZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlJbjtcbn0pKGV4cG9uZW50KTtcblxuZXhwb3J0IHZhciBwb2x5T3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5T3V0KHQpIHtcbiAgICByZXR1cm4gMSAtIE1hdGgucG93KDEgLSB0LCBlKTtcbiAgfVxuXG4gIHBvbHlPdXQuZXhwb25lbnQgPSBjdXN0b207XG5cbiAgcmV0dXJuIHBvbHlPdXQ7XG59KShleHBvbmVudCk7XG5cbmV4cG9ydCB2YXIgcG9seUluT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShlKSB7XG4gIGUgPSArZTtcblxuICBmdW5jdGlvbiBwb2x5SW5PdXQodCkge1xuICAgIHJldHVybiAoKHQgKj0gMikgPD0gMSA/IE1hdGgucG93KHQsIGUpIDogMiAtIE1hdGgucG93KDIgLSB0LCBlKSkgLyAyO1xuICB9XG5cbiAgcG9seUluT3V0LmV4cG9uZW50ID0gY3VzdG9tO1xuXG4gIHJldHVybiBwb2x5SW5PdXQ7XG59KShleHBvbmVudCk7XG4iLCJ2YXIgb3ZlcnNob290ID0gMS43MDE1ODtcblxuZXhwb3J0IHZhciBiYWNrSW4gPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tJbih0KSB7XG4gICAgcmV0dXJuIHQgKiB0ICogKChzICsgMSkgKiB0IC0gcyk7XG4gIH1cblxuICBiYWNrSW4ub3ZlcnNob290ID0gY3VzdG9tO1xuXG4gIHJldHVybiBiYWNrSW47XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tPdXQgPSAoZnVuY3Rpb24gY3VzdG9tKHMpIHtcbiAgcyA9ICtzO1xuXG4gIGZ1bmN0aW9uIGJhY2tPdXQodCkge1xuICAgIHJldHVybiAtLXQgKiB0ICogKChzICsgMSkgKiB0ICsgcykgKyAxO1xuICB9XG5cbiAgYmFja091dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tPdXQ7XG59KShvdmVyc2hvb3QpO1xuXG5leHBvcnQgdmFyIGJhY2tJbk91dCA9IChmdW5jdGlvbiBjdXN0b20ocykge1xuICBzID0gK3M7XG5cbiAgZnVuY3Rpb24gYmFja0luT3V0KHQpIHtcbiAgICByZXR1cm4gKCh0ICo9IDIpIDwgMSA/IHQgKiB0ICogKChzICsgMSkgKiB0IC0gcykgOiAodCAtPSAyKSAqIHQgKiAoKHMgKyAxKSAqIHQgKyBzKSArIDIpIC8gMjtcbiAgfVxuXG4gIGJhY2tJbk91dC5vdmVyc2hvb3QgPSBjdXN0b207XG5cbiAgcmV0dXJuIGJhY2tJbk91dDtcbn0pKG92ZXJzaG9vdCk7XG4iLCJ2YXIgdGF1ID0gMiAqIE1hdGguUEksXG4gICAgYW1wbGl0dWRlID0gMSxcbiAgICBwZXJpb2QgPSAwLjM7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY0luID0gKGZ1bmN0aW9uIGN1c3RvbShhLCBwKSB7XG4gIHZhciBzID0gTWF0aC5hc2luKDEgLyAoYSA9IE1hdGgubWF4KDEsIGEpKSkgKiAocCAvPSB0YXUpO1xuXG4gIGZ1bmN0aW9uIGVsYXN0aWNJbih0KSB7XG4gICAgcmV0dXJuIGEgKiBNYXRoLnBvdygyLCAxMCAqIC0tdCkgKiBNYXRoLnNpbigocyAtIHQpIC8gcCk7XG4gIH1cblxuICBlbGFzdGljSW4uYW1wbGl0dWRlID0gZnVuY3Rpb24oYSkgeyByZXR1cm4gY3VzdG9tKGEsIHAgKiB0YXUpOyB9O1xuICBlbGFzdGljSW4ucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljSW47XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY091dCA9IChmdW5jdGlvbiBjdXN0b20oYSwgcCkge1xuICB2YXIgcyA9IE1hdGguYXNpbigxIC8gKGEgPSBNYXRoLm1heCgxLCBhKSkpICogKHAgLz0gdGF1KTtcblxuICBmdW5jdGlvbiBlbGFzdGljT3V0KHQpIHtcbiAgICByZXR1cm4gMSAtIGEgKiBNYXRoLnBvdygyLCAtMTAgKiAodCA9ICt0KSkgKiBNYXRoLnNpbigodCArIHMpIC8gcCk7XG4gIH1cblxuICBlbGFzdGljT3V0LmFtcGxpdHVkZSA9IGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGN1c3RvbShhLCBwICogdGF1KTsgfTtcbiAgZWxhc3RpY091dC5wZXJpb2QgPSBmdW5jdGlvbihwKSB7IHJldHVybiBjdXN0b20oYSwgcCk7IH07XG5cbiAgcmV0dXJuIGVsYXN0aWNPdXQ7XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG5cbmV4cG9ydCB2YXIgZWxhc3RpY0luT3V0ID0gKGZ1bmN0aW9uIGN1c3RvbShhLCBwKSB7XG4gIHZhciBzID0gTWF0aC5hc2luKDEgLyAoYSA9IE1hdGgubWF4KDEsIGEpKSkgKiAocCAvPSB0YXUpO1xuXG4gIGZ1bmN0aW9uIGVsYXN0aWNJbk91dCh0KSB7XG4gICAgcmV0dXJuICgodCA9IHQgKiAyIC0gMSkgPCAwXG4gICAgICAgID8gYSAqIE1hdGgucG93KDIsIDEwICogdCkgKiBNYXRoLnNpbigocyAtIHQpIC8gcClcbiAgICAgICAgOiAyIC0gYSAqIE1hdGgucG93KDIsIC0xMCAqIHQpICogTWF0aC5zaW4oKHMgKyB0KSAvIHApKSAvIDI7XG4gIH1cblxuICBlbGFzdGljSW5PdXQuYW1wbGl0dWRlID0gZnVuY3Rpb24oYSkgeyByZXR1cm4gY3VzdG9tKGEsIHAgKiB0YXUpOyB9O1xuICBlbGFzdGljSW5PdXQucGVyaW9kID0gZnVuY3Rpb24ocCkgeyByZXR1cm4gY3VzdG9tKGEsIHApOyB9O1xuXG4gIHJldHVybiBlbGFzdGljSW5PdXQ7XG59KShhbXBsaXR1ZGUsIHBlcmlvZCk7XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9pbnRlcnJ1cHQgZnJvbSBcIi4vaW50ZXJydXB0XCI7XG5pbXBvcnQgc2VsZWN0aW9uX3RyYW5zaXRpb24gZnJvbSBcIi4vdHJhbnNpdGlvblwiO1xuXG5zZWxlY3Rpb24ucHJvdG90eXBlLmludGVycnVwdCA9IHNlbGVjdGlvbl9pbnRlcnJ1cHQ7XG5zZWxlY3Rpb24ucHJvdG90eXBlLnRyYW5zaXRpb24gPSBzZWxlY3Rpb25fdHJhbnNpdGlvbjtcbiIsImV4cG9ydCB2YXIgY29zID0gTWF0aC5jb3M7XG5leHBvcnQgdmFyIHNpbiA9IE1hdGguc2luO1xuZXhwb3J0IHZhciBwaSA9IE1hdGguUEk7XG5leHBvcnQgdmFyIGhhbGZQaSA9IHBpIC8gMjtcbmV4cG9ydCB2YXIgdGF1ID0gcGkgKiAyO1xuZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbiIsImltcG9ydCBkc3YgZnJvbSBcIi4vZHN2XCI7XG5cbnZhciBjc3YgPSBkc3YoXCIsXCIpO1xuXG5leHBvcnQgdmFyIGNzdlBhcnNlID0gY3N2LnBhcnNlO1xuZXhwb3J0IHZhciBjc3ZQYXJzZVJvd3MgPSBjc3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciBjc3ZGb3JtYXQgPSBjc3YuZm9ybWF0O1xuZXhwb3J0IHZhciBjc3ZGb3JtYXRSb3dzID0gY3N2LmZvcm1hdFJvd3M7XG4iLCJpbXBvcnQgZHN2IGZyb20gXCIuL2RzdlwiO1xuXG52YXIgdHN2ID0gZHN2KFwiXFx0XCIpO1xuXG5leHBvcnQgdmFyIHRzdlBhcnNlID0gdHN2LnBhcnNlO1xuZXhwb3J0IHZhciB0c3ZQYXJzZVJvd3MgPSB0c3YucGFyc2VSb3dzO1xuZXhwb3J0IHZhciB0c3ZGb3JtYXQgPSB0c3YuZm9ybWF0O1xuZXhwb3J0IHZhciB0c3ZGb3JtYXRSb3dzID0gdHN2LmZvcm1hdFJvd3M7XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5KSB7XG4gIGlmIChpc05hTih4ID0gK3gpIHx8IGlzTmFOKHkgPSAreSkpIHJldHVybiB0aGlzOyAvLyBpZ25vcmUgaW52YWxpZCBwb2ludHNcblxuICB2YXIgeDAgPSB0aGlzLl94MCxcbiAgICAgIHkwID0gdGhpcy5feTAsXG4gICAgICB4MSA9IHRoaXMuX3gxLFxuICAgICAgeTEgPSB0aGlzLl95MTtcblxuICAvLyBJZiB0aGUgcXVhZHRyZWUgaGFzIG5vIGV4dGVudCwgaW5pdGlhbGl6ZSB0aGVtLlxuICAvLyBJbnRlZ2VyIGV4dGVudCBhcmUgbmVjZXNzYXJ5IHNvIHRoYXQgaWYgd2UgbGF0ZXIgZG91YmxlIHRoZSBleHRlbnQsXG4gIC8vIHRoZSBleGlzdGluZyBxdWFkcmFudCBib3VuZGFyaWVzIGRvbuKAmXQgY2hhbmdlIGR1ZSB0byBmbG9hdGluZyBwb2ludCBlcnJvciFcbiAgaWYgKGlzTmFOKHgwKSkge1xuICAgIHgxID0gKHgwID0gTWF0aC5mbG9vcih4KSkgKyAxO1xuICAgIHkxID0gKHkwID0gTWF0aC5mbG9vcih5KSkgKyAxO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCBkb3VibGUgcmVwZWF0ZWRseSB0byBjb3Zlci5cbiAgZWxzZSBpZiAoeDAgPiB4IHx8IHggPiB4MSB8fCB5MCA+IHkgfHwgeSA+IHkxKSB7XG4gICAgdmFyIHogPSB4MSAtIHgwLFxuICAgICAgICBub2RlID0gdGhpcy5fcm9vdCxcbiAgICAgICAgcGFyZW50LFxuICAgICAgICBpO1xuXG4gICAgc3dpdGNoIChpID0gKHkgPCAoeTAgKyB5MSkgLyAyKSA8PCAxIHwgKHggPCAoeDAgKyB4MSkgLyAyKSkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIGRvIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgd2hpbGUgKHogKj0gMiwgeDEgPSB4MCArIHosIHkxID0geTAgKyB6LCB4ID4geDEgfHwgeSA+IHkxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgZG8gcGFyZW50ID0gbmV3IEFycmF5KDQpLCBwYXJlbnRbaV0gPSBub2RlLCBub2RlID0gcGFyZW50O1xuICAgICAgICB3aGlsZSAoeiAqPSAyLCB4MCA9IHgxIC0geiwgeTEgPSB5MCArIHosIHgwID4geCB8fCB5ID4geTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMjoge1xuICAgICAgICBkbyBwYXJlbnQgPSBuZXcgQXJyYXkoNCksIHBhcmVudFtpXSA9IG5vZGUsIG5vZGUgPSBwYXJlbnQ7XG4gICAgICAgIHdoaWxlICh6ICo9IDIsIHgxID0geDAgKyB6LCB5MCA9IHkxIC0geiwgeCA+IHgxIHx8IHkwID4geSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAzOiB7XG4gICAgICAgIGRvIHBhcmVudCA9IG5ldyBBcnJheSg0KSwgcGFyZW50W2ldID0gbm9kZSwgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgd2hpbGUgKHogKj0gMiwgeDAgPSB4MSAtIHosIHkwID0geTEgLSB6LCB4MCA+IHggfHwgeTAgPiB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Jvb3QgJiYgdGhpcy5fcm9vdC5sZW5ndGgpIHRoaXMuX3Jvb3QgPSBub2RlO1xuICB9XG5cbiAgLy8gSWYgdGhlIHF1YWR0cmVlIGNvdmVycyB0aGUgcG9pbnQgYWxyZWFkeSwganVzdCByZXR1cm4uXG4gIGVsc2UgcmV0dXJuIHRoaXM7XG5cbiAgdGhpcy5feDAgPSB4MDtcbiAgdGhpcy5feTAgPSB5MDtcbiAgdGhpcy5feDEgPSB4MTtcbiAgdGhpcy5feTEgPSB5MTtcbiAgcmV0dXJuIHRoaXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIGRhdGEgPSBbXTtcbiAgdGhpcy52aXNpdChmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKCFub2RlLmxlbmd0aCkgZG8gZGF0YS5wdXNoKG5vZGUuZGF0YSk7IHdoaWxlIChub2RlID0gbm9kZS5uZXh0KVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoXG4gICAgICA/IHRoaXMuY292ZXIoK19bMF1bMF0sICtfWzBdWzFdKS5jb3ZlcigrX1sxXVswXSwgK19bMV1bMV0pXG4gICAgICA6IGlzTmFOKHRoaXMuX3gwKSA/IHVuZGVmaW5lZCA6IFtbdGhpcy5feDAsIHRoaXMuX3kwXSwgW3RoaXMuX3gxLCB0aGlzLl95MV1dO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obm9kZSwgeDAsIHkwLCB4MSwgeTEpIHtcbiAgdGhpcy5ub2RlID0gbm9kZTtcbiAgdGhpcy54MCA9IHgwO1xuICB0aGlzLnkwID0geTA7XG4gIHRoaXMueDEgPSB4MTtcbiAgdGhpcy55MSA9IHkxO1xufVxuIiwiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCB5LCByYWRpdXMpIHtcbiAgdmFyIGRhdGEsXG4gICAgICB4MCA9IHRoaXMuX3gwLFxuICAgICAgeTAgPSB0aGlzLl95MCxcbiAgICAgIHgxLFxuICAgICAgeTEsXG4gICAgICB4MixcbiAgICAgIHkyLFxuICAgICAgeDMgPSB0aGlzLl94MSxcbiAgICAgIHkzID0gdGhpcy5feTEsXG4gICAgICBxdWFkcyA9IFtdLFxuICAgICAgbm9kZSA9IHRoaXMuX3Jvb3QsXG4gICAgICBxLFxuICAgICAgaTtcblxuICBpZiAobm9kZSkgcXVhZHMucHVzaChuZXcgUXVhZChub2RlLCB4MCwgeTAsIHgzLCB5MykpO1xuICBpZiAocmFkaXVzID09IG51bGwpIHJhZGl1cyA9IEluZmluaXR5O1xuICBlbHNlIHtcbiAgICB4MCA9IHggLSByYWRpdXMsIHkwID0geSAtIHJhZGl1cztcbiAgICB4MyA9IHggKyByYWRpdXMsIHkzID0geSArIHJhZGl1cztcbiAgICByYWRpdXMgKj0gcmFkaXVzO1xuICB9XG5cbiAgd2hpbGUgKHEgPSBxdWFkcy5wb3AoKSkge1xuXG4gICAgLy8gU3RvcCBzZWFyY2hpbmcgaWYgdGhpcyBxdWFkcmFudCBjYW7igJl0IGNvbnRhaW4gYSBjbG9zZXIgbm9kZS5cbiAgICBpZiAoIShub2RlID0gcS5ub2RlKVxuICAgICAgICB8fCAoeDEgPSBxLngwKSA+IHgzXG4gICAgICAgIHx8ICh5MSA9IHEueTApID4geTNcbiAgICAgICAgfHwgKHgyID0gcS54MSkgPCB4MFxuICAgICAgICB8fCAoeTIgPSBxLnkxKSA8IHkwKSBjb250aW51ZTtcblxuICAgIC8vIEJpc2VjdCB0aGUgY3VycmVudCBxdWFkcmFudC5cbiAgICBpZiAobm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MSArIHgyKSAvIDIsXG4gICAgICAgICAgeW0gPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgICBxdWFkcy5wdXNoKFxuICAgICAgICBuZXcgUXVhZChub2RlWzNdLCB4bSwgeW0sIHgyLCB5MiksXG4gICAgICAgIG5ldyBRdWFkKG5vZGVbMl0sIHgxLCB5bSwgeG0sIHkyKSxcbiAgICAgICAgbmV3IFF1YWQobm9kZVsxXSwgeG0sIHkxLCB4MiwgeW0pLFxuICAgICAgICBuZXcgUXVhZChub2RlWzBdLCB4MSwgeTEsIHhtLCB5bSlcbiAgICAgICk7XG5cbiAgICAgIC8vIFZpc2l0IHRoZSBjbG9zZXN0IHF1YWRyYW50IGZpcnN0LlxuICAgICAgaWYgKGkgPSAoeSA+PSB5bSkgPDwgMSB8ICh4ID49IHhtKSkge1xuICAgICAgICBxID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMV07XG4gICAgICAgIHF1YWRzW3F1YWRzLmxlbmd0aCAtIDFdID0gcXVhZHNbcXVhZHMubGVuZ3RoIC0gMSAtIGldO1xuICAgICAgICBxdWFkc1txdWFkcy5sZW5ndGggLSAxIC0gaV0gPSBxO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZpc2l0IHRoaXMgcG9pbnQuIChWaXNpdGluZyBjb2luY2lkZW50IHBvaW50cyBpc27igJl0IG5lY2Vzc2FyeSEpXG4gICAgZWxzZSB7XG4gICAgICB2YXIgZHggPSB4IC0gK3RoaXMuX3guY2FsbChudWxsLCBub2RlLmRhdGEpLFxuICAgICAgICAgIGR5ID0geSAtICt0aGlzLl95LmNhbGwobnVsbCwgbm9kZS5kYXRhKSxcbiAgICAgICAgICBkMiA9IGR4ICogZHggKyBkeSAqIGR5O1xuICAgICAgaWYgKGQyIDwgcmFkaXVzKSB7XG4gICAgICAgIHZhciBkID0gTWF0aC5zcXJ0KHJhZGl1cyA9IGQyKTtcbiAgICAgICAgeDAgPSB4IC0gZCwgeTAgPSB5IC0gZDtcbiAgICAgICAgeDMgPSB4ICsgZCwgeTMgPSB5ICsgZDtcbiAgICAgICAgZGF0YSA9IG5vZGUuZGF0YTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGF0YTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fcm9vdDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgc2l6ZSA9IDA7XG4gIHRoaXMudmlzaXQoZnVuY3Rpb24obm9kZSkge1xuICAgIGlmICghbm9kZS5sZW5ndGgpIGRvICsrc2l6ZTsgd2hpbGUgKG5vZGUgPSBub2RlLm5leHQpXG4gIH0pO1xuICByZXR1cm4gc2l6ZTtcbn1cbiIsImltcG9ydCBRdWFkIGZyb20gXCIuL3F1YWRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHF1YWRzID0gW10sIHEsIG5vZGUgPSB0aGlzLl9yb290LCBjaGlsZCwgeDAsIHkwLCB4MSwgeTE7XG4gIGlmIChub2RlKSBxdWFkcy5wdXNoKG5ldyBRdWFkKG5vZGUsIHRoaXMuX3gwLCB0aGlzLl95MCwgdGhpcy5feDEsIHRoaXMuX3kxKSk7XG4gIHdoaWxlIChxID0gcXVhZHMucG9wKCkpIHtcbiAgICBpZiAoIWNhbGxiYWNrKG5vZGUgPSBxLm5vZGUsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSkgJiYgbm9kZS5sZW5ndGgpIHtcbiAgICAgIHZhciB4bSA9ICh4MCArIHgxKSAvIDIsIHltID0gKHkwICsgeTEpIC8gMjtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbM10pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHhtLCB5bSwgeDEsIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzJdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeW0sIHhtLCB5MSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMF0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5MCwgeG0sIHltKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufVxuIiwiaW1wb3J0IFF1YWQgZnJvbSBcIi4vcXVhZFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgcXVhZHMgPSBbXSwgbmV4dCA9IFtdLCBxO1xuICBpZiAodGhpcy5fcm9vdCkgcXVhZHMucHVzaChuZXcgUXVhZCh0aGlzLl9yb290LCB0aGlzLl94MCwgdGhpcy5feTAsIHRoaXMuX3gxLCB0aGlzLl95MSkpO1xuICB3aGlsZSAocSA9IHF1YWRzLnBvcCgpKSB7XG4gICAgdmFyIG5vZGUgPSBxLm5vZGU7XG4gICAgaWYgKG5vZGUubGVuZ3RoKSB7XG4gICAgICB2YXIgY2hpbGQsIHgwID0gcS54MCwgeTAgPSBxLnkwLCB4MSA9IHEueDEsIHkxID0gcS55MSwgeG0gPSAoeDAgKyB4MSkgLyAyLCB5bSA9ICh5MCArIHkxKSAvIDI7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzBdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4MCwgeTAsIHhtLCB5bSkpO1xuICAgICAgaWYgKGNoaWxkID0gbm9kZVsxXSkgcXVhZHMucHVzaChuZXcgUXVhZChjaGlsZCwgeG0sIHkwLCB4MSwgeW0pKTtcbiAgICAgIGlmIChjaGlsZCA9IG5vZGVbMl0pIHF1YWRzLnB1c2gobmV3IFF1YWQoY2hpbGQsIHgwLCB5bSwgeG0sIHkxKSk7XG4gICAgICBpZiAoY2hpbGQgPSBub2RlWzNdKSBxdWFkcy5wdXNoKG5ldyBRdWFkKGNoaWxkLCB4bSwgeW0sIHgxLCB5MSkpO1xuICAgIH1cbiAgICBuZXh0LnB1c2gocSk7XG4gIH1cbiAgd2hpbGUgKHEgPSBuZXh0LnBvcCgpKSB7XG4gICAgY2FsbGJhY2socS5ub2RlLCBxLngwLCBxLnkwLCBxLngxLCBxLnkxKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsIi8vIENvbXB1dGVzIHRoZSBkZWNpbWFsIGNvZWZmaWNpZW50IGFuZCBleHBvbmVudCBvZiB0aGUgc3BlY2lmaWVkIG51bWJlciB4IHdpdGhcbi8vIHNpZ25pZmljYW50IGRpZ2l0cyBwLCB3aGVyZSB4IGlzIHBvc2l0aXZlIGFuZCBwIGlzIGluIFsxLCAyMV0gb3IgdW5kZWZpbmVkLlxuLy8gRm9yIGV4YW1wbGUsIGZvcm1hdERlY2ltYWwoMS4yMykgcmV0dXJucyBbXCIxMjNcIiwgMF0uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIGlmICgoaSA9ICh4ID0gcCA/IHgudG9FeHBvbmVudGlhbChwIC0gMSkgOiB4LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZihcImVcIikpIDwgMCkgcmV0dXJuIG51bGw7IC8vIE5hTiwgwrFJbmZpbml0eVxuICB2YXIgaSwgY29lZmZpY2llbnQgPSB4LnNsaWNlKDAsIGkpO1xuXG4gIC8vIFRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdG9FeHBvbmVudGlhbCBlaXRoZXIgaGFzIHRoZSBmb3JtIFxcZFxcLlxcZCtlWy0rXVxcZCtcbiAgLy8gKGUuZy4sIDEuMmUrMykgb3IgdGhlIGZvcm0gXFxkZVstK11cXGQrIChlLmcuLCAxZSszKS5cbiAgcmV0dXJuIFtcbiAgICBjb2VmZmljaWVudC5sZW5ndGggPiAxID8gY29lZmZpY2llbnRbMF0gKyBjb2VmZmljaWVudC5zbGljZSgyKSA6IGNvZWZmaWNpZW50LFxuICAgICt4LnNsaWNlKGkgKyAxKVxuICBdO1xufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgdmFyIHByZWZpeEV4cG9uZW50O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbCh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV0sXG4gICAgICBpID0gZXhwb25lbnQgLSAocHJlZml4RXhwb25lbnQgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCAvIDMpKSkgKiAzKSArIDEsXG4gICAgICBuID0gY29lZmZpY2llbnQubGVuZ3RoO1xuICByZXR1cm4gaSA9PT0gbiA/IGNvZWZmaWNpZW50XG4gICAgICA6IGkgPiBuID8gY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoaSAtIG4gKyAxKS5qb2luKFwiMFwiKVxuICAgICAgOiBpID4gMCA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGkpICsgXCIuXCIgKyBjb2VmZmljaWVudC5zbGljZShpKVxuICAgICAgOiBcIjAuXCIgKyBuZXcgQXJyYXkoMSAtIGkpLmpvaW4oXCIwXCIpICsgZm9ybWF0RGVjaW1hbCh4LCBNYXRoLm1heCgwLCBwICsgaSAtIDEpKVswXTsgLy8gbGVzcyB0aGFuIDF5IVxufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4ID0gZm9ybWF0RGVjaW1hbChNYXRoLmFicyh4KSksIHggPyB4WzFdIDogTmFOO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oZ3JvdXBpbmcsIHRob3VzYW5kcykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIHdpZHRoKSB7XG4gICAgdmFyIGkgPSB2YWx1ZS5sZW5ndGgsXG4gICAgICAgIHQgPSBbXSxcbiAgICAgICAgaiA9IDAsXG4gICAgICAgIGcgPSBncm91cGluZ1swXSxcbiAgICAgICAgbGVuZ3RoID0gMDtcblxuICAgIHdoaWxlIChpID4gMCAmJiBnID4gMCkge1xuICAgICAgaWYgKGxlbmd0aCArIGcgKyAxID4gd2lkdGgpIGcgPSBNYXRoLm1heCgxLCB3aWR0aCAtIGxlbmd0aCk7XG4gICAgICB0LnB1c2godmFsdWUuc3Vic3RyaW5nKGkgLT0gZywgaSArIGcpKTtcbiAgICAgIGlmICgobGVuZ3RoICs9IGcgKyAxKSA+IHdpZHRoKSBicmVhaztcbiAgICAgIGcgPSBncm91cGluZ1tqID0gKGogKyAxKSAlIGdyb3VwaW5nLmxlbmd0aF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHQucmV2ZXJzZSgpLmpvaW4odGhvdXNhbmRzKTtcbiAgfTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG51bWVyYWxzKSB7XG4gIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bMC05XS9nLCBmdW5jdGlvbihpKSB7XG4gICAgICByZXR1cm4gbnVtZXJhbHNbK2ldO1xuICAgIH0pO1xuICB9O1xufVxuIiwiaW1wb3J0IGZvcm1hdERlY2ltYWwgZnJvbSBcIi4vZm9ybWF0RGVjaW1hbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4LCBwKSB7XG4gIHZhciBkID0gZm9ybWF0RGVjaW1hbCh4LCBwKTtcbiAgaWYgKCFkKSByZXR1cm4geCArIFwiXCI7XG4gIHZhciBjb2VmZmljaWVudCA9IGRbMF0sXG4gICAgICBleHBvbmVudCA9IGRbMV07XG4gIHJldHVybiBleHBvbmVudCA8IDAgPyBcIjAuXCIgKyBuZXcgQXJyYXkoLWV4cG9uZW50KS5qb2luKFwiMFwiKSArIGNvZWZmaWNpZW50XG4gICAgICA6IGNvZWZmaWNpZW50Lmxlbmd0aCA+IGV4cG9uZW50ICsgMSA/IGNvZWZmaWNpZW50LnNsaWNlKDAsIGV4cG9uZW50ICsgMSkgKyBcIi5cIiArIGNvZWZmaWNpZW50LnNsaWNlKGV4cG9uZW50ICsgMSlcbiAgICAgIDogY29lZmZpY2llbnQgKyBuZXcgQXJyYXkoZXhwb25lbnQgLSBjb2VmZmljaWVudC5sZW5ndGggKyAyKS5qb2luKFwiMFwiKTtcbn1cbiIsImltcG9ydCBmb3JtYXREZWZhdWx0IGZyb20gXCIuL2Zvcm1hdERlZmF1bHRcIjtcbmltcG9ydCBmb3JtYXRQcmVmaXhBdXRvIGZyb20gXCIuL2Zvcm1hdFByZWZpeEF1dG9cIjtcbmltcG9ydCBmb3JtYXRSb3VuZGVkIGZyb20gXCIuL2Zvcm1hdFJvdW5kZWRcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBcIlwiOiBmb3JtYXREZWZhdWx0LFxuICBcIiVcIjogZnVuY3Rpb24oeCwgcCkgeyByZXR1cm4gKHggKiAxMDApLnRvRml4ZWQocCk7IH0sXG4gIFwiYlwiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDIpOyB9LFxuICBcImNcIjogZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIFwiXCI7IH0sXG4gIFwiZFwiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDEwKTsgfSxcbiAgXCJlXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9FeHBvbmVudGlhbChwKTsgfSxcbiAgXCJmXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9GaXhlZChwKTsgfSxcbiAgXCJnXCI6IGZ1bmN0aW9uKHgsIHApIHsgcmV0dXJuIHgudG9QcmVjaXNpb24ocCk7IH0sXG4gIFwib1wiOiBmdW5jdGlvbih4KSB7IHJldHVybiBNYXRoLnJvdW5kKHgpLnRvU3RyaW5nKDgpOyB9LFxuICBcInBcIjogZnVuY3Rpb24oeCwgcCkgeyByZXR1cm4gZm9ybWF0Um91bmRlZCh4ICogMTAwLCBwKTsgfSxcbiAgXCJyXCI6IGZvcm1hdFJvdW5kZWQsXG4gIFwic1wiOiBmb3JtYXRQcmVmaXhBdXRvLFxuICBcIlhcIjogZnVuY3Rpb24oeCkgeyByZXR1cm4gTWF0aC5yb3VuZCh4KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsgfSxcbiAgXCJ4XCI6IGZ1bmN0aW9uKHgpIHsgcmV0dXJuIE1hdGgucm91bmQoeCkudG9TdHJpbmcoMTYpOyB9XG59O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCwgcCkge1xuICB4ID0geC50b1ByZWNpc2lvbihwKTtcblxuICBvdXQ6IGZvciAodmFyIG4gPSB4Lmxlbmd0aCwgaSA9IDEsIGkwID0gLTEsIGkxOyBpIDwgbjsgKytpKSB7XG4gICAgc3dpdGNoICh4W2ldKSB7XG4gICAgICBjYXNlIFwiLlwiOiBpMCA9IGkxID0gaTsgYnJlYWs7XG4gICAgICBjYXNlIFwiMFwiOiBpZiAoaTAgPT09IDApIGkwID0gaTsgaTEgPSBpOyBicmVhaztcbiAgICAgIGNhc2UgXCJlXCI6IGJyZWFrIG91dDtcbiAgICAgIGRlZmF1bHQ6IGlmIChpMCA+IDApIGkwID0gMDsgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGkwID4gMCA/IHguc2xpY2UoMCwgaTApICsgeC5zbGljZShpMSArIDEpIDogeDtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59XG4iLCJpbXBvcnQgZm9ybWF0TG9jYWxlIGZyb20gXCIuL2xvY2FsZVwiO1xuXG52YXIgbG9jYWxlO1xuZXhwb3J0IHZhciBmb3JtYXQ7XG5leHBvcnQgdmFyIGZvcm1hdFByZWZpeDtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRlY2ltYWw6IFwiLlwiLFxuICB0aG91c2FuZHM6IFwiLFwiLFxuICBncm91cGluZzogWzNdLFxuICBjdXJyZW5jeTogW1wiJFwiLCBcIlwiXVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmF1bHRMb2NhbGUoZGVmaW5pdGlvbikge1xuICBsb2NhbGUgPSBmb3JtYXRMb2NhbGUoZGVmaW5pdGlvbik7XG4gIGZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIGZvcm1hdFByZWZpeCA9IGxvY2FsZS5mb3JtYXRQcmVmaXg7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcbmltcG9ydCBmb3JtYXRHcm91cCBmcm9tIFwiLi9mb3JtYXRHcm91cFwiO1xuaW1wb3J0IGZvcm1hdE51bWVyYWxzIGZyb20gXCIuL2Zvcm1hdE51bWVyYWxzXCI7XG5pbXBvcnQgZm9ybWF0U3BlY2lmaWVyIGZyb20gXCIuL2Zvcm1hdFNwZWNpZmllclwiO1xuaW1wb3J0IGZvcm1hdFR5cGVzIGZyb20gXCIuL2Zvcm1hdFR5cGVzXCI7XG5pbXBvcnQge3ByZWZpeEV4cG9uZW50fSBmcm9tIFwiLi9mb3JtYXRQcmVmaXhBdXRvXCI7XG5pbXBvcnQgaWRlbnRpdHkgZnJvbSBcIi4vaWRlbnRpdHlcIjtcblxudmFyIHByZWZpeGVzID0gW1wieVwiLFwielwiLFwiYVwiLFwiZlwiLFwicFwiLFwiblwiLFwiwrVcIixcIm1cIixcIlwiLFwia1wiLFwiTVwiLFwiR1wiLFwiVFwiLFwiUFwiLFwiRVwiLFwiWlwiLFwiWVwiXTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24obG9jYWxlKSB7XG4gIHZhciBncm91cCA9IGxvY2FsZS5ncm91cGluZyAmJiBsb2NhbGUudGhvdXNhbmRzID8gZm9ybWF0R3JvdXAobG9jYWxlLmdyb3VwaW5nLCBsb2NhbGUudGhvdXNhbmRzKSA6IGlkZW50aXR5LFxuICAgICAgY3VycmVuY3kgPSBsb2NhbGUuY3VycmVuY3ksXG4gICAgICBkZWNpbWFsID0gbG9jYWxlLmRlY2ltYWwsXG4gICAgICBudW1lcmFscyA9IGxvY2FsZS5udW1lcmFscyA/IGZvcm1hdE51bWVyYWxzKGxvY2FsZS5udW1lcmFscykgOiBpZGVudGl0eSxcbiAgICAgIHBlcmNlbnQgPSBsb2NhbGUucGVyY2VudCB8fCBcIiVcIjtcblxuICBmdW5jdGlvbiBuZXdGb3JtYXQoc3BlY2lmaWVyKSB7XG4gICAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllcik7XG5cbiAgICB2YXIgZmlsbCA9IHNwZWNpZmllci5maWxsLFxuICAgICAgICBhbGlnbiA9IHNwZWNpZmllci5hbGlnbixcbiAgICAgICAgc2lnbiA9IHNwZWNpZmllci5zaWduLFxuICAgICAgICBzeW1ib2wgPSBzcGVjaWZpZXIuc3ltYm9sLFxuICAgICAgICB6ZXJvID0gc3BlY2lmaWVyLnplcm8sXG4gICAgICAgIHdpZHRoID0gc3BlY2lmaWVyLndpZHRoLFxuICAgICAgICBjb21tYSA9IHNwZWNpZmllci5jb21tYSxcbiAgICAgICAgcHJlY2lzaW9uID0gc3BlY2lmaWVyLnByZWNpc2lvbixcbiAgICAgICAgdHlwZSA9IHNwZWNpZmllci50eXBlO1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgcHJlZml4IGFuZCBzdWZmaXguXG4gICAgLy8gRm9yIFNJLXByZWZpeCwgdGhlIHN1ZmZpeCBpcyBsYXppbHkgY29tcHV0ZWQuXG4gICAgdmFyIHByZWZpeCA9IHN5bWJvbCA9PT0gXCIkXCIgPyBjdXJyZW5jeVswXSA6IHN5bWJvbCA9PT0gXCIjXCIgJiYgL1tib3hYXS8udGVzdCh0eXBlKSA/IFwiMFwiICsgdHlwZS50b0xvd2VyQ2FzZSgpIDogXCJcIixcbiAgICAgICAgc3VmZml4ID0gc3ltYm9sID09PSBcIiRcIiA/IGN1cnJlbmN5WzFdIDogL1slcF0vLnRlc3QodHlwZSkgPyBwZXJjZW50IDogXCJcIjtcblxuICAgIC8vIFdoYXQgZm9ybWF0IGZ1bmN0aW9uIHNob3VsZCB3ZSB1c2U/XG4gICAgLy8gSXMgdGhpcyBhbiBpbnRlZ2VyIHR5cGU/XG4gICAgLy8gQ2FuIHRoaXMgdHlwZSBnZW5lcmF0ZSBleHBvbmVudGlhbCBub3RhdGlvbj9cbiAgICB2YXIgZm9ybWF0VHlwZSA9IGZvcm1hdFR5cGVzW3R5cGVdLFxuICAgICAgICBtYXliZVN1ZmZpeCA9ICF0eXBlIHx8IC9bZGVmZ3BycyVdLy50ZXN0KHR5cGUpO1xuXG4gICAgLy8gU2V0IHRoZSBkZWZhdWx0IHByZWNpc2lvbiBpZiBub3Qgc3BlY2lmaWVkLFxuICAgIC8vIG9yIGNsYW1wIHRoZSBzcGVjaWZpZWQgcHJlY2lzaW9uIHRvIHRoZSBzdXBwb3J0ZWQgcmFuZ2UuXG4gICAgLy8gRm9yIHNpZ25pZmljYW50IHByZWNpc2lvbiwgaXQgbXVzdCBiZSBpbiBbMSwgMjFdLlxuICAgIC8vIEZvciBmaXhlZCBwcmVjaXNpb24sIGl0IG11c3QgYmUgaW4gWzAsIDIwXS5cbiAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/ICh0eXBlID8gNiA6IDEyKVxuICAgICAgICA6IC9bZ3Byc10vLnRlc3QodHlwZSkgPyBNYXRoLm1heCgxLCBNYXRoLm1pbigyMSwgcHJlY2lzaW9uKSlcbiAgICAgICAgOiBNYXRoLm1heCgwLCBNYXRoLm1pbigyMCwgcHJlY2lzaW9uKSk7XG5cbiAgICBmdW5jdGlvbiBmb3JtYXQodmFsdWUpIHtcbiAgICAgIHZhciB2YWx1ZVByZWZpeCA9IHByZWZpeCxcbiAgICAgICAgICB2YWx1ZVN1ZmZpeCA9IHN1ZmZpeCxcbiAgICAgICAgICBpLCBuLCBjO1xuXG4gICAgICBpZiAodHlwZSA9PT0gXCJjXCIpIHtcbiAgICAgICAgdmFsdWVTdWZmaXggPSBmb3JtYXRUeXBlKHZhbHVlKSArIHZhbHVlU3VmZml4O1xuICAgICAgICB2YWx1ZSA9IFwiXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9ICt2YWx1ZTtcblxuICAgICAgICAvLyBQZXJmb3JtIHRoZSBpbml0aWFsIGZvcm1hdHRpbmcuXG4gICAgICAgIHZhciB2YWx1ZU5lZ2F0aXZlID0gdmFsdWUgPCAwO1xuICAgICAgICB2YWx1ZSA9IGZvcm1hdFR5cGUoTWF0aC5hYnModmFsdWUpLCBwcmVjaXNpb24pO1xuXG4gICAgICAgIC8vIElmIGEgbmVnYXRpdmUgdmFsdWUgcm91bmRzIHRvIHplcm8gZHVyaW5nIGZvcm1hdHRpbmcsIHRyZWF0IGFzIHBvc2l0aXZlLlxuICAgICAgICBpZiAodmFsdWVOZWdhdGl2ZSAmJiArdmFsdWUgPT09IDApIHZhbHVlTmVnYXRpdmUgPSBmYWxzZTtcblxuICAgICAgICAvLyBDb21wdXRlIHRoZSBwcmVmaXggYW5kIHN1ZmZpeC5cbiAgICAgICAgdmFsdWVQcmVmaXggPSAodmFsdWVOZWdhdGl2ZSA/IChzaWduID09PSBcIihcIiA/IHNpZ24gOiBcIi1cIikgOiBzaWduID09PSBcIi1cIiB8fCBzaWduID09PSBcIihcIiA/IFwiXCIgOiBzaWduKSArIHZhbHVlUHJlZml4O1xuICAgICAgICB2YWx1ZVN1ZmZpeCA9IHZhbHVlU3VmZml4ICsgKHR5cGUgPT09IFwic1wiID8gcHJlZml4ZXNbOCArIHByZWZpeEV4cG9uZW50IC8gM10gOiBcIlwiKSArICh2YWx1ZU5lZ2F0aXZlICYmIHNpZ24gPT09IFwiKFwiID8gXCIpXCIgOiBcIlwiKTtcblxuICAgICAgICAvLyBCcmVhayB0aGUgZm9ybWF0dGVkIHZhbHVlIGludG8gdGhlIGludGVnZXIg4oCcdmFsdWXigJ0gcGFydCB0aGF0IGNhbiBiZVxuICAgICAgICAvLyBncm91cGVkLCBhbmQgZnJhY3Rpb25hbCBvciBleHBvbmVudGlhbCDigJxzdWZmaXjigJ0gcGFydCB0aGF0IGlzIG5vdC5cbiAgICAgICAgaWYgKG1heWJlU3VmZml4KSB7XG4gICAgICAgICAgaSA9IC0xLCBuID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICAgICAgICBpZiAoYyA9IHZhbHVlLmNoYXJDb2RlQXQoaSksIDQ4ID4gYyB8fCBjID4gNTcpIHtcbiAgICAgICAgICAgICAgdmFsdWVTdWZmaXggPSAoYyA9PT0gNDYgPyBkZWNpbWFsICsgdmFsdWUuc2xpY2UoaSArIDEpIDogdmFsdWUuc2xpY2UoaSkpICsgdmFsdWVTdWZmaXg7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgbm90IFwiMFwiLCBncm91cGluZyBpcyBhcHBsaWVkIGJlZm9yZSBwYWRkaW5nLlxuICAgICAgaWYgKGNvbW1hICYmICF6ZXJvKSB2YWx1ZSA9IGdyb3VwKHZhbHVlLCBJbmZpbml0eSk7XG5cbiAgICAgIC8vIENvbXB1dGUgdGhlIHBhZGRpbmcuXG4gICAgICB2YXIgbGVuZ3RoID0gdmFsdWVQcmVmaXgubGVuZ3RoICsgdmFsdWUubGVuZ3RoICsgdmFsdWVTdWZmaXgubGVuZ3RoLFxuICAgICAgICAgIHBhZGRpbmcgPSBsZW5ndGggPCB3aWR0aCA/IG5ldyBBcnJheSh3aWR0aCAtIGxlbmd0aCArIDEpLmpvaW4oZmlsbCkgOiBcIlwiO1xuXG4gICAgICAvLyBJZiB0aGUgZmlsbCBjaGFyYWN0ZXIgaXMgXCIwXCIsIGdyb3VwaW5nIGlzIGFwcGxpZWQgYWZ0ZXIgcGFkZGluZy5cbiAgICAgIGlmIChjb21tYSAmJiB6ZXJvKSB2YWx1ZSA9IGdyb3VwKHBhZGRpbmcgKyB2YWx1ZSwgcGFkZGluZy5sZW5ndGggPyB3aWR0aCAtIHZhbHVlU3VmZml4Lmxlbmd0aCA6IEluZmluaXR5KSwgcGFkZGluZyA9IFwiXCI7XG5cbiAgICAgIC8vIFJlY29uc3RydWN0IHRoZSBmaW5hbCBvdXRwdXQgYmFzZWQgb24gdGhlIGRlc2lyZWQgYWxpZ25tZW50LlxuICAgICAgc3dpdGNoIChhbGlnbikge1xuICAgICAgICBjYXNlIFwiPFwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgdmFsdWUgKyB2YWx1ZVN1ZmZpeCArIHBhZGRpbmc7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiPVwiOiB2YWx1ZSA9IHZhbHVlUHJlZml4ICsgcGFkZGluZyArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgICBjYXNlIFwiXlwiOiB2YWx1ZSA9IHBhZGRpbmcuc2xpY2UoMCwgbGVuZ3RoID0gcGFkZGluZy5sZW5ndGggPj4gMSkgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXggKyBwYWRkaW5nLnNsaWNlKGxlbmd0aCk7IGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiB2YWx1ZSA9IHBhZGRpbmcgKyB2YWx1ZVByZWZpeCArIHZhbHVlICsgdmFsdWVTdWZmaXg7IGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVtZXJhbHModmFsdWUpO1xuICAgIH1cblxuICAgIGZvcm1hdC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHNwZWNpZmllciArIFwiXCI7XG4gICAgfTtcblxuICAgIHJldHVybiBmb3JtYXQ7XG4gIH1cblxuICBmdW5jdGlvbiBmb3JtYXRQcmVmaXgoc3BlY2lmaWVyLCB2YWx1ZSkge1xuICAgIHZhciBmID0gbmV3Rm9ybWF0KChzcGVjaWZpZXIgPSBmb3JtYXRTcGVjaWZpZXIoc3BlY2lmaWVyKSwgc3BlY2lmaWVyLnR5cGUgPSBcImZcIiwgc3BlY2lmaWVyKSksXG4gICAgICAgIGUgPSBNYXRoLm1heCgtOCwgTWF0aC5taW4oOCwgTWF0aC5mbG9vcihleHBvbmVudCh2YWx1ZSkgLyAzKSkpICogMyxcbiAgICAgICAgayA9IE1hdGgucG93KDEwLCAtZSksXG4gICAgICAgIHByZWZpeCA9IHByZWZpeGVzWzggKyBlIC8gM107XG4gICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZihrICogdmFsdWUpICsgcHJlZml4O1xuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZvcm1hdDogbmV3Rm9ybWF0LFxuICAgIGZvcm1hdFByZWZpeDogZm9ybWF0UHJlZml4XG4gIH07XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCkge1xuICByZXR1cm4gTWF0aC5tYXgoMCwgLWV4cG9uZW50KE1hdGguYWJzKHN0ZXApKSk7XG59XG4iLCJpbXBvcnQgZXhwb25lbnQgZnJvbSBcIi4vZXhwb25lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oc3RlcCwgdmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIE1hdGgubWF4KC04LCBNYXRoLm1pbig4LCBNYXRoLmZsb29yKGV4cG9uZW50KHZhbHVlKSAvIDMpKSkgKiAzIC0gZXhwb25lbnQoTWF0aC5hYnMoc3RlcCkpKTtcbn1cbiIsImltcG9ydCBleHBvbmVudCBmcm9tIFwiLi9leHBvbmVudFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzdGVwLCBtYXgpIHtcbiAgc3RlcCA9IE1hdGguYWJzKHN0ZXApLCBtYXggPSBNYXRoLmFicyhtYXgpIC0gc3RlcDtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIGV4cG9uZW50KG1heCkgLSBleHBvbmVudChzdGVwKSkgKyAxO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2F0YW4yLCBjb3MsIHF1YXJ0ZXJQaSwgcmFkaWFucywgc2luLCB0YXV9IGZyb20gXCIuL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuL25vb3BcIjtcbmltcG9ydCBzdHJlYW0gZnJvbSBcIi4vc3RyZWFtXCI7XG5cbmV4cG9ydCB2YXIgYXJlYVJpbmdTdW0gPSBhZGRlcigpO1xuXG52YXIgYXJlYVN1bSA9IGFkZGVyKCksXG4gICAgbGFtYmRhMDAsXG4gICAgcGhpMDAsXG4gICAgbGFtYmRhMCxcbiAgICBjb3NQaGkwLFxuICAgIHNpblBoaTA7XG5cbmV4cG9ydCB2YXIgYXJlYVN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogbm9vcCxcbiAgbGluZUVuZDogbm9vcCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBhcmVhUmluZ1N1bS5yZXNldCgpO1xuICAgIGFyZWFTdHJlYW0ubGluZVN0YXJ0ID0gYXJlYVJpbmdTdGFydDtcbiAgICBhcmVhU3RyZWFtLmxpbmVFbmQgPSBhcmVhUmluZ0VuZDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWFSaW5nID0gK2FyZWFSaW5nU3VtO1xuICAgIGFyZWFTdW0uYWRkKGFyZWFSaW5nIDwgMCA/IHRhdSArIGFyZWFSaW5nIDogYXJlYVJpbmcpO1xuICAgIHRoaXMubGluZVN0YXJ0ID0gdGhpcy5saW5lRW5kID0gdGhpcy5wb2ludCA9IG5vb3A7XG4gIH0sXG4gIHNwaGVyZTogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN1bS5hZGQodGF1KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYXJlYVJpbmdTdGFydCgpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludEZpcnN0O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KGxhbWJkYTAwLCBwaGkwMCk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludEZpcnN0KGxhbWJkYSwgcGhpKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnQ7XG4gIGxhbWJkYTAwID0gbGFtYmRhLCBwaGkwMCA9IHBoaTtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zKHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGkpLCBzaW5QaGkwID0gc2luKHBoaSk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHBoaSA9IHBoaSAvIDIgKyBxdWFydGVyUGk7IC8vIGhhbGYgdGhlIGFuZ3VsYXIgZGlzdGFuY2UgZnJvbSBzb3V0aCBwb2xlXG5cbiAgLy8gU3BoZXJpY2FsIGV4Y2VzcyBFIGZvciBhIHNwaGVyaWNhbCB0cmlhbmdsZSB3aXRoIHZlcnRpY2VzOiBzb3V0aCBwb2xlLFxuICAvLyBwcmV2aW91cyBwb2ludCwgY3VycmVudCBwb2ludC4gIFVzZXMgYSBmb3JtdWxhIGRlcml2ZWQgZnJvbSBDYWdub2xp4oCZc1xuICAvLyB0aGVvcmVtLiAgU2VlIFRvZGh1bnRlciwgU3BoZXJpY2FsIFRyaWcuICgxODcxKSwgU2VjLiAxMDMsIEVxLiAoMikuXG4gIHZhciBkTGFtYmRhID0gbGFtYmRhIC0gbGFtYmRhMCxcbiAgICAgIHNkTGFtYmRhID0gZExhbWJkYSA+PSAwID8gMSA6IC0xLFxuICAgICAgYWRMYW1iZGEgPSBzZExhbWJkYSAqIGRMYW1iZGEsXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIHNpblBoaSA9IHNpbihwaGkpLFxuICAgICAgayA9IHNpblBoaTAgKiBzaW5QaGksXG4gICAgICB1ID0gY29zUGhpMCAqIGNvc1BoaSArIGsgKiBjb3MoYWRMYW1iZGEpLFxuICAgICAgdiA9IGsgKiBzZExhbWJkYSAqIHNpbihhZExhbWJkYSk7XG4gIGFyZWFSaW5nU3VtLmFkZChhdGFuMih2LCB1KSk7XG5cbiAgLy8gQWR2YW5jZSB0aGUgcHJldmlvdXMgcG9pbnRzLlxuICBsYW1iZGEwID0gbGFtYmRhLCBjb3NQaGkwID0gY29zUGhpLCBzaW5QaGkwID0gc2luUGhpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihvYmplY3QpIHtcbiAgYXJlYVN1bS5yZXNldCgpO1xuICBzdHJlYW0ob2JqZWN0LCBhcmVhU3RyZWFtKTtcbiAgcmV0dXJuIGFyZWFTdW0gKiAyO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2FyZWFTdHJlYW0sIGFyZWFSaW5nU3VtfSBmcm9tIFwiLi9hcmVhXCI7XG5pbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UsIHNwaGVyaWNhbH0gZnJvbSBcIi4vY2FydGVzaWFuXCI7XG5pbXBvcnQge2FicywgZGVncmVlcywgZXBzaWxvbiwgcmFkaWFuc30gZnJvbSBcIi4vbWF0aFwiO1xuaW1wb3J0IHN0cmVhbSBmcm9tIFwiLi9zdHJlYW1cIjtcblxudmFyIGxhbWJkYTAsIHBoaTAsIGxhbWJkYTEsIHBoaTEsIC8vIGJvdW5kc1xuICAgIGxhbWJkYTIsIC8vIHByZXZpb3VzIGxhbWJkYS1jb29yZGluYXRlXG4gICAgbGFtYmRhMDAsIHBoaTAwLCAvLyBmaXJzdCBwb2ludFxuICAgIHAwLCAvLyBwcmV2aW91cyAzRCBwb2ludFxuICAgIGRlbHRhU3VtID0gYWRkZXIoKSxcbiAgICByYW5nZXMsXG4gICAgcmFuZ2U7XG5cbnZhciBib3VuZHNTdHJlYW0gPSB7XG4gIHBvaW50OiBib3VuZHNQb2ludCxcbiAgbGluZVN0YXJ0OiBib3VuZHNMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGJvdW5kc0xpbmVFbmQsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUmluZ1BvaW50O1xuICAgIGJvdW5kc1N0cmVhbS5saW5lU3RhcnQgPSBib3VuZHNSaW5nU3RhcnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVFbmQgPSBib3VuZHNSaW5nRW5kO1xuICAgIGRlbHRhU3VtLnJlc2V0KCk7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uU3RhcnQoKTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uRW5kKCk7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUG9pbnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVTdGFydCA9IGJvdW5kc0xpbmVTdGFydDtcbiAgICBib3VuZHNTdHJlYW0ubGluZUVuZCA9IGJvdW5kc0xpbmVFbmQ7XG4gICAgaWYgKGFyZWFSaW5nU3VtIDwgMCkgbGFtYmRhMCA9IC0obGFtYmRhMSA9IDE4MCksIHBoaTAgPSAtKHBoaTEgPSA5MCk7XG4gICAgZWxzZSBpZiAoZGVsdGFTdW0gPiBlcHNpbG9uKSBwaGkxID0gOTA7XG4gICAgZWxzZSBpZiAoZGVsdGFTdW0gPCAtZXBzaWxvbikgcGhpMCA9IC05MDtcbiAgICByYW5nZVswXSA9IGxhbWJkYTAsIHJhbmdlWzFdID0gbGFtYmRhMTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYm91bmRzUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgcmFuZ2VzLnB1c2gocmFuZ2UgPSBbbGFtYmRhMCA9IGxhbWJkYSwgbGFtYmRhMSA9IGxhbWJkYV0pO1xuICBpZiAocGhpIDwgcGhpMCkgcGhpMCA9IHBoaTtcbiAgaWYgKHBoaSA+IHBoaTEpIHBoaTEgPSBwaGk7XG59XG5cbmZ1bmN0aW9uIGxpbmVQb2ludChsYW1iZGEsIHBoaSkge1xuICB2YXIgcCA9IGNhcnRlc2lhbihbbGFtYmRhICogcmFkaWFucywgcGhpICogcmFkaWFuc10pO1xuICBpZiAocDApIHtcbiAgICB2YXIgbm9ybWFsID0gY2FydGVzaWFuQ3Jvc3MocDAsIHApLFxuICAgICAgICBlcXVhdG9yaWFsID0gW25vcm1hbFsxXSwgLW5vcm1hbFswXSwgMF0sXG4gICAgICAgIGluZmxlY3Rpb24gPSBjYXJ0ZXNpYW5Dcm9zcyhlcXVhdG9yaWFsLCBub3JtYWwpO1xuICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoaW5mbGVjdGlvbik7XG4gICAgaW5mbGVjdGlvbiA9IHNwaGVyaWNhbChpbmZsZWN0aW9uKTtcbiAgICB2YXIgZGVsdGEgPSBsYW1iZGEgLSBsYW1iZGEyLFxuICAgICAgICBzaWduID0gZGVsdGEgPiAwID8gMSA6IC0xLFxuICAgICAgICBsYW1iZGFpID0gaW5mbGVjdGlvblswXSAqIGRlZ3JlZXMgKiBzaWduLFxuICAgICAgICBwaGlpLFxuICAgICAgICBhbnRpbWVyaWRpYW4gPSBhYnMoZGVsdGEpID4gMTgwO1xuICAgIGlmIChhbnRpbWVyaWRpYW4gXiAoc2lnbiAqIGxhbWJkYTIgPCBsYW1iZGFpICYmIGxhbWJkYWkgPCBzaWduICogbGFtYmRhKSkge1xuICAgICAgcGhpaSA9IGluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPiBwaGkxKSBwaGkxID0gcGhpaTtcbiAgICB9IGVsc2UgaWYgKGxhbWJkYWkgPSAobGFtYmRhaSArIDM2MCkgJSAzNjAgLSAxODAsIGFudGltZXJpZGlhbiBeIChzaWduICogbGFtYmRhMiA8IGxhbWJkYWkgJiYgbGFtYmRhaSA8IHNpZ24gKiBsYW1iZGEpKSB7XG4gICAgICBwaGlpID0gLWluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPCBwaGkwKSBwaGkwID0gcGhpaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBoaSA8IHBoaTApIHBoaTAgPSBwaGk7XG4gICAgICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbiAgICB9XG4gICAgaWYgKGFudGltZXJpZGlhbikge1xuICAgICAgaWYgKGxhbWJkYSA8IGxhbWJkYTIpIHtcbiAgICAgICAgaWYgKGFuZ2xlKGxhbWJkYTAsIGxhbWJkYSkgPiBhbmdsZShsYW1iZGEwLCBsYW1iZGExKSkgbGFtYmRhMSA9IGxhbWJkYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChhbmdsZShsYW1iZGEsIGxhbWJkYTEpID4gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkpIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsYW1iZGExID49IGxhbWJkYTApIHtcbiAgICAgICAgaWYgKGxhbWJkYSA8IGxhbWJkYTApIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICAgIGlmIChsYW1iZGEgPiBsYW1iZGExKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxhbWJkYSA+IGxhbWJkYTIpIHtcbiAgICAgICAgICBpZiAoYW5nbGUobGFtYmRhMCwgbGFtYmRhKSA+IGFuZ2xlKGxhbWJkYTAsIGxhbWJkYTEpKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChhbmdsZShsYW1iZGEsIGxhbWJkYTEpID4gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkpIGxhbWJkYTAgPSBsYW1iZGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmFuZ2VzLnB1c2gocmFuZ2UgPSBbbGFtYmRhMCA9IGxhbWJkYSwgbGFtYmRhMSA9IGxhbWJkYV0pO1xuICB9XG4gIGlmIChwaGkgPCBwaGkwKSBwaGkwID0gcGhpO1xuICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbiAgcDAgPSBwLCBsYW1iZGEyID0gbGFtYmRhO1xufVxuXG5mdW5jdGlvbiBib3VuZHNMaW5lU3RhcnQoKSB7XG4gIGJvdW5kc1N0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbn1cblxuZnVuY3Rpb24gYm91bmRzTGluZUVuZCgpIHtcbiAgcmFuZ2VbMF0gPSBsYW1iZGEwLCByYW5nZVsxXSA9IGxhbWJkYTE7XG4gIGJvdW5kc1N0cmVhbS5wb2ludCA9IGJvdW5kc1BvaW50O1xuICBwMCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdQb2ludChsYW1iZGEsIHBoaSkge1xuICBpZiAocDApIHtcbiAgICB2YXIgZGVsdGEgPSBsYW1iZGEgLSBsYW1iZGEyO1xuICAgIGRlbHRhU3VtLmFkZChhYnMoZGVsdGEpID4gMTgwID8gZGVsdGEgKyAoZGVsdGEgPiAwID8gMzYwIDogLTM2MCkgOiBkZWx0YSk7XG4gIH0gZWxzZSB7XG4gICAgbGFtYmRhMDAgPSBsYW1iZGEsIHBoaTAwID0gcGhpO1xuICB9XG4gIGFyZWFTdHJlYW0ucG9pbnQobGFtYmRhLCBwaGkpO1xuICBsaW5lUG9pbnQobGFtYmRhLCBwaGkpO1xufVxuXG5mdW5jdGlvbiBib3VuZHNSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ubGluZVN0YXJ0KCk7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdFbmQoKSB7XG4gIGJvdW5kc1JpbmdQb2ludChsYW1iZGEwMCwgcGhpMDApO1xuICBhcmVhU3RyZWFtLmxpbmVFbmQoKTtcbiAgaWYgKGFicyhkZWx0YVN1bSkgPiBlcHNpbG9uKSBsYW1iZGEwID0gLShsYW1iZGExID0gMTgwKTtcbiAgcmFuZ2VbMF0gPSBsYW1iZGEwLCByYW5nZVsxXSA9IGxhbWJkYTE7XG4gIHAwID0gbnVsbDtcbn1cblxuLy8gRmluZHMgdGhlIGxlZnQtcmlnaHQgZGlzdGFuY2UgYmV0d2VlbiB0d28gbG9uZ2l0dWRlcy5cbi8vIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIChsYW1iZGExIC0gbGFtYmRhMCArIDM2MMKwKSAlIDM2MMKwLCBleGNlcHQgdGhhdCB3ZSB3YW50XG4vLyB0aGUgZGlzdGFuY2UgYmV0d2VlbiDCsTE4MMKwIHRvIGJlIDM2MMKwLlxuZnVuY3Rpb24gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkge1xuICByZXR1cm4gKGxhbWJkYTEgLT0gbGFtYmRhMCkgPCAwID8gbGFtYmRhMSArIDM2MCA6IGxhbWJkYTE7XG59XG5cbmZ1bmN0aW9uIHJhbmdlQ29tcGFyZShhLCBiKSB7XG4gIHJldHVybiBhWzBdIC0gYlswXTtcbn1cblxuZnVuY3Rpb24gcmFuZ2VDb250YWlucyhyYW5nZSwgeCkge1xuICByZXR1cm4gcmFuZ2VbMF0gPD0gcmFuZ2VbMV0gPyByYW5nZVswXSA8PSB4ICYmIHggPD0gcmFuZ2VbMV0gOiB4IDwgcmFuZ2VbMF0gfHwgcmFuZ2VbMV0gPCB4O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihmZWF0dXJlKSB7XG4gIHZhciBpLCBuLCBhLCBiLCBtZXJnZWQsIGRlbHRhTWF4LCBkZWx0YTtcblxuICBwaGkxID0gbGFtYmRhMSA9IC0obGFtYmRhMCA9IHBoaTAgPSBJbmZpbml0eSk7XG4gIHJhbmdlcyA9IFtdO1xuICBzdHJlYW0oZmVhdHVyZSwgYm91bmRzU3RyZWFtKTtcblxuICAvLyBGaXJzdCwgc29ydCByYW5nZXMgYnkgdGhlaXIgbWluaW11bSBsb25naXR1ZGVzLlxuICBpZiAobiA9IHJhbmdlcy5sZW5ndGgpIHtcbiAgICByYW5nZXMuc29ydChyYW5nZUNvbXBhcmUpO1xuXG4gICAgLy8gVGhlbiwgbWVyZ2UgYW55IHJhbmdlcyB0aGF0IG92ZXJsYXAuXG4gICAgZm9yIChpID0gMSwgYSA9IHJhbmdlc1swXSwgbWVyZ2VkID0gW2FdOyBpIDwgbjsgKytpKSB7XG4gICAgICBiID0gcmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlQ29udGFpbnMoYSwgYlswXSkgfHwgcmFuZ2VDb250YWlucyhhLCBiWzFdKSkge1xuICAgICAgICBpZiAoYW5nbGUoYVswXSwgYlsxXSkgPiBhbmdsZShhWzBdLCBhWzFdKSkgYVsxXSA9IGJbMV07XG4gICAgICAgIGlmIChhbmdsZShiWzBdLCBhWzFdKSA+IGFuZ2xlKGFbMF0sIGFbMV0pKSBhWzBdID0gYlswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZC5wdXNoKGEgPSBiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5hbGx5LCBmaW5kIHRoZSBsYXJnZXN0IGdhcCBiZXR3ZWVuIHRoZSBtZXJnZWQgcmFuZ2VzLlxuICAgIC8vIFRoZSBmaW5hbCBib3VuZGluZyBib3ggd2lsbCBiZSB0aGUgaW52ZXJzZSBvZiB0aGlzIGdhcC5cbiAgICBmb3IgKGRlbHRhTWF4ID0gLUluZmluaXR5LCBuID0gbWVyZ2VkLmxlbmd0aCAtIDEsIGkgPSAwLCBhID0gbWVyZ2VkW25dOyBpIDw9IG47IGEgPSBiLCArK2kpIHtcbiAgICAgIGIgPSBtZXJnZWRbaV07XG4gICAgICBpZiAoKGRlbHRhID0gYW5nbGUoYVsxXSwgYlswXSkpID4gZGVsdGFNYXgpIGRlbHRhTWF4ID0gZGVsdGEsIGxhbWJkYTAgPSBiWzBdLCBsYW1iZGExID0gYVsxXTtcbiAgICB9XG4gIH1cblxuICByYW5nZXMgPSByYW5nZSA9IG51bGw7XG5cbiAgcmV0dXJuIGxhbWJkYTAgPT09IEluZmluaXR5IHx8IHBoaTAgPT09IEluZmluaXR5XG4gICAgICA/IFtbTmFOLCBOYU5dLCBbTmFOLCBOYU5dXVxuICAgICAgOiBbW2xhbWJkYTAsIHBoaTBdLCBbbGFtYmRhMSwgcGhpMV1dO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2NhcnRlc2lhbiwgY2FydGVzaWFuQ3Jvc3MsIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2V9IGZyb20gXCIuL2NhcnRlc2lhblwiO1xuaW1wb3J0IHthc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCBwaSwgcXVhcnRlclBpLCBzaW4sIHRhdX0gZnJvbSBcIi4vbWF0aFwiO1xuXG52YXIgc3VtID0gYWRkZXIoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocG9seWdvbiwgcG9pbnQpIHtcbiAgdmFyIGxhbWJkYSA9IHBvaW50WzBdLFxuICAgICAgcGhpID0gcG9pbnRbMV0sXG4gICAgICBub3JtYWwgPSBbc2luKGxhbWJkYSksIC1jb3MobGFtYmRhKSwgMF0sXG4gICAgICBhbmdsZSA9IDAsXG4gICAgICB3aW5kaW5nID0gMDtcblxuICBzdW0ucmVzZXQoKTtcblxuICBmb3IgKHZhciBpID0gMCwgbiA9IHBvbHlnb24ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgaWYgKCEobSA9IChyaW5nID0gcG9seWdvbltpXSkubGVuZ3RoKSkgY29udGludWU7XG4gICAgdmFyIHJpbmcsXG4gICAgICAgIG0sXG4gICAgICAgIHBvaW50MCA9IHJpbmdbbSAtIDFdLFxuICAgICAgICBsYW1iZGEwID0gcG9pbnQwWzBdLFxuICAgICAgICBwaGkwID0gcG9pbnQwWzFdIC8gMiArIHF1YXJ0ZXJQaSxcbiAgICAgICAgc2luUGhpMCA9IHNpbihwaGkwKSxcbiAgICAgICAgY29zUGhpMCA9IGNvcyhwaGkwKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqLCBsYW1iZGEwID0gbGFtYmRhMSwgc2luUGhpMCA9IHNpblBoaTEsIGNvc1BoaTAgPSBjb3NQaGkxLCBwb2ludDAgPSBwb2ludDEpIHtcbiAgICAgIHZhciBwb2ludDEgPSByaW5nW2pdLFxuICAgICAgICAgIGxhbWJkYTEgPSBwb2ludDFbMF0sXG4gICAgICAgICAgcGhpMSA9IHBvaW50MVsxXSAvIDIgKyBxdWFydGVyUGksXG4gICAgICAgICAgc2luUGhpMSA9IHNpbihwaGkxKSxcbiAgICAgICAgICBjb3NQaGkxID0gY29zKHBoaTEpLFxuICAgICAgICAgIGRlbHRhID0gbGFtYmRhMSAtIGxhbWJkYTAsXG4gICAgICAgICAgc2lnbiA9IGRlbHRhID49IDAgPyAxIDogLTEsXG4gICAgICAgICAgYWJzRGVsdGEgPSBzaWduICogZGVsdGEsXG4gICAgICAgICAgYW50aW1lcmlkaWFuID0gYWJzRGVsdGEgPiBwaSxcbiAgICAgICAgICBrID0gc2luUGhpMCAqIHNpblBoaTE7XG5cbiAgICAgIHN1bS5hZGQoYXRhbjIoayAqIHNpZ24gKiBzaW4oYWJzRGVsdGEpLCBjb3NQaGkwICogY29zUGhpMSArIGsgKiBjb3MoYWJzRGVsdGEpKSk7XG4gICAgICBhbmdsZSArPSBhbnRpbWVyaWRpYW4gPyBkZWx0YSArIHNpZ24gKiB0YXUgOiBkZWx0YTtcblxuICAgICAgLy8gQXJlIHRoZSBsb25naXR1ZGVzIGVpdGhlciBzaWRlIG9mIHRoZSBwb2ludOKAmXMgbWVyaWRpYW4gKGxhbWJkYSksXG4gICAgICAvLyBhbmQgYXJlIHRoZSBsYXRpdHVkZXMgc21hbGxlciB0aGFuIHRoZSBwYXJhbGxlbCAocGhpKT9cbiAgICAgIGlmIChhbnRpbWVyaWRpYW4gXiBsYW1iZGEwID49IGxhbWJkYSBeIGxhbWJkYTEgPj0gbGFtYmRhKSB7XG4gICAgICAgIHZhciBhcmMgPSBjYXJ0ZXNpYW5Dcm9zcyhjYXJ0ZXNpYW4ocG9pbnQwKSwgY2FydGVzaWFuKHBvaW50MSkpO1xuICAgICAgICBjYXJ0ZXNpYW5Ob3JtYWxpemVJblBsYWNlKGFyYyk7XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBjYXJ0ZXNpYW5Dcm9zcyhub3JtYWwsIGFyYyk7XG4gICAgICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoaW50ZXJzZWN0aW9uKTtcbiAgICAgICAgdmFyIHBoaUFyYyA9IChhbnRpbWVyaWRpYW4gXiBkZWx0YSA+PSAwID8gLTEgOiAxKSAqIGFzaW4oaW50ZXJzZWN0aW9uWzJdKTtcbiAgICAgICAgaWYgKHBoaSA+IHBoaUFyYyB8fCBwaGkgPT09IHBoaUFyYyAmJiAoYXJjWzBdIHx8IGFyY1sxXSkpIHtcbiAgICAgICAgICB3aW5kaW5nICs9IGFudGltZXJpZGlhbiBeIGRlbHRhID49IDAgPyAxIDogLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaXJzdCwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIFNvdXRoIHBvbGUgaXMgaW5zaWRlIG9yIG91dHNpZGU6XG4gIC8vXG4gIC8vIEl0IGlzIGluc2lkZSBpZjpcbiAgLy8gKiB0aGUgcG9seWdvbiB3aW5kcyBhcm91bmQgaXQgaW4gYSBjbG9ja3dpc2UgZGlyZWN0aW9uLlxuICAvLyAqIHRoZSBwb2x5Z29uIGRvZXMgbm90IChjdW11bGF0aXZlbHkpIHdpbmQgYXJvdW5kIGl0LCBidXQgaGFzIGEgbmVnYXRpdmVcbiAgLy8gICAoY291bnRlci1jbG9ja3dpc2UpIGFyZWEuXG4gIC8vXG4gIC8vIFNlY29uZCwgY291bnQgdGhlIChzaWduZWQpIG51bWJlciBvZiB0aW1lcyBhIHNlZ21lbnQgY3Jvc3NlcyBhIGxhbWJkYVxuICAvLyBmcm9tIHRoZSBwb2ludCB0byB0aGUgU291dGggcG9sZS4gIElmIGl0IGlzIHplcm8sIHRoZW4gdGhlIHBvaW50IGlzIHRoZVxuICAvLyBzYW1lIHNpZGUgYXMgdGhlIFNvdXRoIHBvbGUuXG5cbiAgcmV0dXJuIChhbmdsZSA8IC1lcHNpbG9uIHx8IGFuZ2xlIDwgZXBzaWxvbiAmJiBzdW0gPCAtZXBzaWxvbikgXiAod2luZGluZyAmIDEpO1xufVxuIiwiaW1wb3J0IGFkZGVyIGZyb20gXCIuL2FkZGVyXCI7XG5pbXBvcnQge2FicywgYXRhbjIsIGNvcywgcmFkaWFucywgc2luLCBzcXJ0fSBmcm9tIFwiLi9tYXRoXCI7XG5pbXBvcnQgbm9vcCBmcm9tIFwiLi9ub29wXCI7XG5pbXBvcnQgc3RyZWFtIGZyb20gXCIuL3N0cmVhbVwiO1xuXG52YXIgbGVuZ3RoU3VtID0gYWRkZXIoKSxcbiAgICBsYW1iZGEwLFxuICAgIHNpblBoaTAsXG4gICAgY29zUGhpMDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgc3BoZXJlOiBub29wLFxuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBsZW5ndGhMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogbm9vcCxcbiAgcG9seWdvbkVuZDogbm9vcFxufTtcblxuZnVuY3Rpb24gbGVuZ3RoTGluZVN0YXJ0KCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludEZpcnN0O1xuICBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IGxlbmd0aExpbmVFbmQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVFbmQoKSB7XG4gIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFN0cmVhbS5saW5lRW5kID0gbm9vcDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW4ocGhpKSwgY29zUGhpMCA9IGNvcyhwaGkpO1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIGRlbHRhID0gYWJzKGxhbWJkYSAtIGxhbWJkYTApLFxuICAgICAgY29zRGVsdGEgPSBjb3MoZGVsdGEpLFxuICAgICAgc2luRGVsdGEgPSBzaW4oZGVsdGEpLFxuICAgICAgeCA9IGNvc1BoaSAqIHNpbkRlbHRhLFxuICAgICAgeSA9IGNvc1BoaTAgKiBzaW5QaGkgLSBzaW5QaGkwICogY29zUGhpICogY29zRGVsdGEsXG4gICAgICB6ID0gc2luUGhpMCAqIHNpblBoaSArIGNvc1BoaTAgKiBjb3NQaGkgKiBjb3NEZWx0YTtcbiAgbGVuZ3RoU3VtLmFkZChhdGFuMihzcXJ0KHggKiB4ICsgeSAqIHkpLCB6KSk7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIHNpblBoaTAgPSBzaW5QaGksIGNvc1BoaTAgPSBjb3NQaGk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKG9iamVjdCkge1xuICBsZW5ndGhTdW0ucmVzZXQoKTtcbiAgc3RyZWFtKG9iamVjdCwgbGVuZ3RoU3RyZWFtKTtcbiAgcmV0dXJuICtsZW5ndGhTdW07XG59XG4iLCJpbXBvcnQgYWRkZXIgZnJvbSBcIi4uL2FkZGVyXCI7XG5pbXBvcnQge2Fic30gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wXCI7XG5cbnZhciBhcmVhU3VtID0gYWRkZXIoKSxcbiAgICBhcmVhUmluZ1N1bSA9IGFkZGVyKCksXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGFyZWFTdHJlYW0gPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhUmluZ1N0YXJ0O1xuICAgIGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3RyZWFtLmxpbmVTdGFydCA9IGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFTdHJlYW0ucG9pbnQgPSBub29wO1xuICAgIGFyZWFTdW0uYWRkKGFicyhhcmVhUmluZ1N1bSkpO1xuICAgIGFyZWFSaW5nU3VtLnJlc2V0KCk7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZWEgPSBhcmVhU3VtIC8gMjtcbiAgICBhcmVhU3VtLnJlc2V0KCk7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFyZWFSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ucG9pbnQgPSBhcmVhUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QoeCwgeSkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50O1xuICB4MDAgPSB4MCA9IHgsIHkwMCA9IHkwID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50KHgsIHkpIHtcbiAgYXJlYVJpbmdTdW0uYWRkKHkwICogeCAtIHgwICogeSk7XG4gIHgwID0geCwgeTAgPSB5O1xufVxuXG5mdW5jdGlvbiBhcmVhUmluZ0VuZCgpIHtcbiAgYXJlYVBvaW50KHgwMCwgeTAwKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJlYVN0cmVhbTtcbiIsImltcG9ydCBhZGRlciBmcm9tIFwiLi4vYWRkZXJcIjtcbmltcG9ydCB7c3FydH0gZnJvbSBcIi4uL21hdGhcIjtcbmltcG9ydCBub29wIGZyb20gXCIuLi9ub29wXCI7XG5cbnZhciBsZW5ndGhTdW0gPSBhZGRlcigpLFxuICAgIGxlbmd0aFJpbmcsXG4gICAgeDAwLFxuICAgIHkwMCxcbiAgICB4MCxcbiAgICB5MDtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgcG9pbnQ6IG5vb3AsXG4gIGxpbmVTdGFydDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdDtcbiAgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgaWYgKGxlbmd0aFJpbmcpIGxlbmd0aFBvaW50KHgwMCwgeTAwKTtcbiAgICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBub29wO1xuICB9LFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFJpbmcgPSB0cnVlO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gbnVsbDtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuZ3RoID0gK2xlbmd0aFN1bTtcbiAgICBsZW5ndGhTdW0ucmVzZXQoKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9XG59O1xuXG5mdW5jdGlvbiBsZW5ndGhQb2ludEZpcnN0KHgsIHkpIHtcbiAgbGVuZ3RoU3RyZWFtLnBvaW50ID0gbGVuZ3RoUG9pbnQ7XG4gIHgwMCA9IHgwID0geCwgeTAwID0geTAgPSB5O1xufVxuXG5mdW5jdGlvbiBsZW5ndGhQb2ludCh4LCB5KSB7XG4gIHgwIC09IHgsIHkwIC09IHk7XG4gIGxlbmd0aFN1bS5hZGQoc3FydCh4MCAqIHgwICsgeTAgKiB5MCkpO1xuICB4MCA9IHgsIHkwID0geTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGVuZ3RoU3RyZWFtO1xuIiwiaW1wb3J0IHtjYXJ0ZXNpYW59IGZyb20gXCIuLi9jYXJ0ZXNpYW5cIjtcbmltcG9ydCB7YWJzLCBhc2luLCBhdGFuMiwgY29zLCBlcHNpbG9uLCByYWRpYW5zLCBzcXJ0fSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcn0gZnJvbSBcIi4uL3RyYW5zZm9ybVwiO1xuXG52YXIgbWF4RGVwdGggPSAxNiwgLy8gbWF4aW11bSBkZXB0aCBvZiBzdWJkaXZpc2lvblxuICAgIGNvc01pbkRpc3RhbmNlID0gY29zKDMwICogcmFkaWFucyk7IC8vIGNvcyhtaW5pbXVtIGFuZ3VsYXIgZGlzdGFuY2UpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHByb2plY3QsIGRlbHRhMikge1xuICByZXR1cm4gK2RlbHRhMiA/IHJlc2FtcGxlKHByb2plY3QsIGRlbHRhMikgOiByZXNhbXBsZU5vbmUocHJvamVjdCk7XG59XG5cbmZ1bmN0aW9uIHJlc2FtcGxlTm9uZShwcm9qZWN0KSB7XG4gIHJldHVybiB0cmFuc2Zvcm1lcih7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIHggPSBwcm9qZWN0KHgsIHkpO1xuICAgICAgdGhpcy5zdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVzYW1wbGUocHJvamVjdCwgZGVsdGEyKSB7XG5cbiAgZnVuY3Rpb24gcmVzYW1wbGVMaW5lVG8oeDAsIHkwLCBsYW1iZGEwLCBhMCwgYjAsIGMwLCB4MSwgeTEsIGxhbWJkYTEsIGExLCBiMSwgYzEsIGRlcHRoLCBzdHJlYW0pIHtcbiAgICB2YXIgZHggPSB4MSAtIHgwLFxuICAgICAgICBkeSA9IHkxIC0geTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgaWYgKGQyID4gNCAqIGRlbHRhMiAmJiBkZXB0aC0tKSB7XG4gICAgICB2YXIgYSA9IGEwICsgYTEsXG4gICAgICAgICAgYiA9IGIwICsgYjEsXG4gICAgICAgICAgYyA9IGMwICsgYzEsXG4gICAgICAgICAgbSA9IHNxcnQoYSAqIGEgKyBiICogYiArIGMgKiBjKSxcbiAgICAgICAgICBwaGkyID0gYXNpbihjIC89IG0pLFxuICAgICAgICAgIGxhbWJkYTIgPSBhYnMoYWJzKGMpIC0gMSkgPCBlcHNpbG9uIHx8IGFicyhsYW1iZGEwIC0gbGFtYmRhMSkgPCBlcHNpbG9uID8gKGxhbWJkYTAgKyBsYW1iZGExKSAvIDIgOiBhdGFuMihiLCBhKSxcbiAgICAgICAgICBwID0gcHJvamVjdChsYW1iZGEyLCBwaGkyKSxcbiAgICAgICAgICB4MiA9IHBbMF0sXG4gICAgICAgICAgeTIgPSBwWzFdLFxuICAgICAgICAgIGR4MiA9IHgyIC0geDAsXG4gICAgICAgICAgZHkyID0geTIgLSB5MCxcbiAgICAgICAgICBkeiA9IGR5ICogZHgyIC0gZHggKiBkeTI7XG4gICAgICBpZiAoZHogKiBkeiAvIGQyID4gZGVsdGEyIC8vIHBlcnBlbmRpY3VsYXIgcHJvamVjdGVkIGRpc3RhbmNlXG4gICAgICAgICAgfHwgYWJzKChkeCAqIGR4MiArIGR5ICogZHkyKSAvIGQyIC0gMC41KSA+IDAuMyAvLyBtaWRwb2ludCBjbG9zZSB0byBhbiBlbmRcbiAgICAgICAgICB8fCBhMCAqIGExICsgYjAgKiBiMSArIGMwICogYzEgPCBjb3NNaW5EaXN0YW5jZSkgeyAvLyBhbmd1bGFyIGRpc3RhbmNlXG4gICAgICAgIHJlc2FtcGxlTGluZVRvKHgwLCB5MCwgbGFtYmRhMCwgYTAsIGIwLCBjMCwgeDIsIHkyLCBsYW1iZGEyLCBhIC89IG0sIGIgLz0gbSwgYywgZGVwdGgsIHN0cmVhbSk7XG4gICAgICAgIHN0cmVhbS5wb2ludCh4MiwgeTIpO1xuICAgICAgICByZXNhbXBsZUxpbmVUbyh4MiwgeTIsIGxhbWJkYTIsIGEsIGIsIGMsIHgxLCB5MSwgbGFtYmRhMSwgYTEsIGIxLCBjMSwgZGVwdGgsIHN0cmVhbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgbGFtYmRhMDAsIHgwMCwgeTAwLCBhMDAsIGIwMCwgYzAwLCAvLyBmaXJzdCBwb2ludFxuICAgICAgICBsYW1iZGEwLCB4MCwgeTAsIGEwLCBiMCwgYzA7IC8vIHByZXZpb3VzIHBvaW50XG5cbiAgICB2YXIgcmVzYW1wbGVTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvblN0YXJ0KCk7IHJlc2FtcGxlU3RyZWFtLmxpbmVTdGFydCA9IHJpbmdTdGFydDsgfSxcbiAgICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvbkVuZCgpOyByZXNhbXBsZVN0cmVhbS5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7IH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgeCA9IHByb2plY3QoeCwgeSk7XG4gICAgICBzdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgeDAgPSBOYU47XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgICAgIHZhciBjID0gY2FydGVzaWFuKFtsYW1iZGEsIHBoaV0pLCBwID0gcHJvamVjdChsYW1iZGEsIHBoaSk7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwID0gcFswXSwgeTAgPSBwWzFdLCBsYW1iZGEwID0gbGFtYmRhLCBhMCA9IGNbMF0sIGIwID0gY1sxXSwgYzAgPSBjWzJdLCBtYXhEZXB0aCwgc3RyZWFtKTtcbiAgICAgIHN0cmVhbS5wb2ludCh4MCwgeTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IHBvaW50O1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByaW5nU3RhcnQoKSB7XG4gICAgICBsaW5lU3RhcnQoKTtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gcmluZ1BvaW50O1xuICAgICAgcmVzYW1wbGVTdHJlYW0ubGluZUVuZCA9IHJpbmdFbmQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gICAgICBsaW5lUG9pbnQobGFtYmRhMDAgPSBsYW1iZGEsIHBoaSksIHgwMCA9IHgwLCB5MDAgPSB5MCwgYTAwID0gYTAsIGIwMCA9IGIwLCBjMDAgPSBjMDtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwMCwgeTAwLCBsYW1iZGEwMCwgYTAwLCBiMDAsIGMwMCwgbWF4RGVwdGgsIHN0cmVhbSk7XG4gICAgICByZXNhbXBsZVN0cmVhbS5saW5lRW5kID0gbGluZUVuZDtcbiAgICAgIGxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzYW1wbGVTdHJlYW07XG4gIH07XG59XG4iLCJpbXBvcnQge2FzaW4sIHNxcnR9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQge2F6aW11dGhhbFJhdywgYXppbXV0aGFsSW52ZXJ0fSBmcm9tIFwiLi9hemltdXRoYWxcIjtcbmltcG9ydCBwcm9qZWN0aW9uIGZyb20gXCIuL2luZGV4XCI7XG5cbmV4cG9ydCB2YXIgYXppbXV0aGFsRXF1YWxBcmVhUmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGN4Y3kpIHtcbiAgcmV0dXJuIHNxcnQoMiAvICgxICsgY3hjeSkpO1xufSk7XG5cbmF6aW11dGhhbEVxdWFsQXJlYVJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGFzaW4oeiAvIDIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihhemltdXRoYWxFcXVhbEFyZWFSYXcpXG4gICAgICAuc2NhbGUoMTI0Ljc1KVxuICAgICAgLmNsaXBBbmdsZSgxODAgLSAxZS0zKTtcbn1cbiIsImltcG9ydCB7YWNvcywgc2lufSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHthemltdXRoYWxSYXcsIGF6aW11dGhhbEludmVydH0gZnJvbSBcIi4vYXppbXV0aGFsXCI7XG5pbXBvcnQgcHJvamVjdGlvbiBmcm9tIFwiLi9pbmRleFwiO1xuXG5leHBvcnQgdmFyIGF6aW11dGhhbEVxdWlkaXN0YW50UmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGMpIHtcbiAgcmV0dXJuIChjID0gYWNvcyhjKSkgJiYgYyAvIHNpbihjKTtcbn0pO1xuXG5hemltdXRoYWxFcXVpZGlzdGFudFJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gejtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoNzkuNDE4OClcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgbm9kZSA9IHRoaXMsIGN1cnJlbnQsIG5leHQgPSBbbm9kZV0sIGNoaWxkcmVuLCBpLCBuO1xuICBkbyB7XG4gICAgY3VycmVudCA9IG5leHQucmV2ZXJzZSgpLCBuZXh0ID0gW107XG4gICAgd2hpbGUgKG5vZGUgPSBjdXJyZW50LnBvcCgpKSB7XG4gICAgICBjYWxsYmFjayhub2RlKSwgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuKSBmb3IgKGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIG5leHQucHVzaChjaGlsZHJlbltpXSk7XG4gICAgICB9XG4gICAgfVxuICB9IHdoaWxlIChuZXh0Lmxlbmd0aCk7XG4gIHJldHVybiB0aGlzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIG5vZGUgPSB0aGlzLCBub2RlcyA9IFtub2RlXSwgY2hpbGRyZW4sIGk7XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBjYWxsYmFjayhub2RlKSwgY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuO1xuICAgIGlmIChjaGlsZHJlbikgZm9yIChpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV0sIG5leHQgPSBbXSwgY2hpbGRyZW4sIGksIG47XG4gIHdoaWxlIChub2RlID0gbm9kZXMucG9wKCkpIHtcbiAgICBuZXh0LnB1c2gobm9kZSksIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjtcbiAgICBpZiAoY2hpbGRyZW4pIGZvciAoaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICAgIG5vZGVzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgfVxuICB3aGlsZSAobm9kZSA9IG5leHQucG9wKCkpIHtcbiAgICBjYWxsYmFjayhub2RlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmVhY2hBZnRlcihmdW5jdGlvbihub2RlKSB7XG4gICAgdmFyIHN1bSA9ICt2YWx1ZShub2RlLmRhdGEpIHx8IDAsXG4gICAgICAgIGNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbixcbiAgICAgICAgaSA9IGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHN1bSArPSBjaGlsZHJlbltpXS52YWx1ZTtcbiAgICBub2RlLnZhbHVlID0gc3VtO1xuICB9KTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGNvbXBhcmUpIHtcbiAgcmV0dXJuIHRoaXMuZWFjaEJlZm9yZShmdW5jdGlvbihub2RlKSB7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uc29ydChjb21wYXJlKTtcbiAgICB9XG4gIH0pO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBub2RlID0gdGhpcywgbm9kZXMgPSBbbm9kZV07XG4gIHdoaWxlIChub2RlID0gbm9kZS5wYXJlbnQpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9XG4gIHJldHVybiBub2Rlcztcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKCkge1xuICB2YXIgbm9kZXMgPSBbXTtcbiAgdGhpcy5lYWNoKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9KTtcbiAgcmV0dXJuIG5vZGVzO1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciBsZWF2ZXMgPSBbXTtcbiAgdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGxlYXZlcy5wdXNoKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBsZWF2ZXM7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbigpIHtcbiAgdmFyIHJvb3QgPSB0aGlzLCBsaW5rcyA9IFtdO1xuICByb290LmVhY2goZnVuY3Rpb24obm9kZSkge1xuICAgIGlmIChub2RlICE9PSByb290KSB7IC8vIERvbuKAmXQgaW5jbHVkZSB0aGUgcm9vdOKAmXMgcGFyZW50LCBpZiBhbnkuXG4gICAgICBsaW5rcy5wdXNoKHtzb3VyY2U6IG5vZGUucGFyZW50LCB0YXJnZXQ6IG5vZGV9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGlua3M7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwYXJlbnQsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBub2RlcyA9IHBhcmVudC5jaGlsZHJlbixcbiAgICAgIG5vZGUsXG4gICAgICBpID0gLTEsXG4gICAgICBuID0gbm9kZXMubGVuZ3RoLFxuICAgICAgayA9IHBhcmVudC52YWx1ZSAmJiAoeTEgLSB5MCkgLyBwYXJlbnQudmFsdWU7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICBub2RlID0gbm9kZXNbaV0sIG5vZGUueDAgPSB4MCwgbm9kZS54MSA9IHgxO1xuICAgIG5vZGUueTAgPSB5MCwgbm9kZS55MSA9IHkwICs9IG5vZGUudmFsdWUgKiBrO1xuICB9XG59XG4iLCJ2YXIgYXJyYXkgPSBBcnJheS5wcm90b3R5cGU7XG5cbmV4cG9ydCB2YXIgbWFwID0gYXJyYXkubWFwO1xuZXhwb3J0IHZhciBzbGljZSA9IGFycmF5LnNsaWNlO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oeCkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHg7XG4gIH07XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbih4KSB7XG4gIHJldHVybiAreDtcbn1cbiIsImltcG9ydCB7dGlja1N0ZXB9IGZyb20gXCJkMy1hcnJheVwiO1xuaW1wb3J0IHtmb3JtYXQsIGZvcm1hdFByZWZpeCwgZm9ybWF0U3BlY2lmaWVyLCBwcmVjaXNpb25GaXhlZCwgcHJlY2lzaW9uUHJlZml4LCBwcmVjaXNpb25Sb3VuZH0gZnJvbSBcImQzLWZvcm1hdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihkb21haW4sIGNvdW50LCBzcGVjaWZpZXIpIHtcbiAgdmFyIHN0YXJ0ID0gZG9tYWluWzBdLFxuICAgICAgc3RvcCA9IGRvbWFpbltkb21haW4ubGVuZ3RoIC0gMV0sXG4gICAgICBzdGVwID0gdGlja1N0ZXAoc3RhcnQsIHN0b3AsIGNvdW50ID09IG51bGwgPyAxMCA6IGNvdW50KSxcbiAgICAgIHByZWNpc2lvbjtcbiAgc3BlY2lmaWVyID0gZm9ybWF0U3BlY2lmaWVyKHNwZWNpZmllciA9PSBudWxsID8gXCIsZlwiIDogc3BlY2lmaWVyKTtcbiAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgIGNhc2UgXCJzXCI6IHtcbiAgICAgIHZhciB2YWx1ZSA9IE1hdGgubWF4KE1hdGguYWJzKHN0YXJ0KSwgTWF0aC5hYnMoc3RvcCkpO1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUHJlZml4KHN0ZXAsIHZhbHVlKSkpIHNwZWNpZmllci5wcmVjaXNpb24gPSBwcmVjaXNpb247XG4gICAgICByZXR1cm4gZm9ybWF0UHJlZml4KHNwZWNpZmllciwgdmFsdWUpO1xuICAgIH1cbiAgICBjYXNlIFwiXCI6XG4gICAgY2FzZSBcImVcIjpcbiAgICBjYXNlIFwiZ1wiOlxuICAgIGNhc2UgXCJwXCI6XG4gICAgY2FzZSBcInJcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uUm91bmQoc3RlcCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RhcnQpLCBNYXRoLmFicyhzdG9wKSkpKSkgc3BlY2lmaWVyLnByZWNpc2lvbiA9IHByZWNpc2lvbiAtIChzcGVjaWZpZXIudHlwZSA9PT0gXCJlXCIpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgXCJmXCI6XG4gICAgY2FzZSBcIiVcIjoge1xuICAgICAgaWYgKHNwZWNpZmllci5wcmVjaXNpb24gPT0gbnVsbCAmJiAhaXNOYU4ocHJlY2lzaW9uID0gcHJlY2lzaW9uRml4ZWQoc3RlcCkpKSBzcGVjaWZpZXIucHJlY2lzaW9uID0gcHJlY2lzaW9uIC0gKHNwZWNpZmllci50eXBlID09PSBcIiVcIikgKiAyO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXQoc3BlY2lmaWVyKTtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGRvbWFpbiwgaW50ZXJ2YWwpIHtcbiAgZG9tYWluID0gZG9tYWluLnNsaWNlKCk7XG5cbiAgdmFyIGkwID0gMCxcbiAgICAgIGkxID0gZG9tYWluLmxlbmd0aCAtIDEsXG4gICAgICB4MCA9IGRvbWFpbltpMF0sXG4gICAgICB4MSA9IGRvbWFpbltpMV0sXG4gICAgICB0O1xuXG4gIGlmICh4MSA8IHgwKSB7XG4gICAgdCA9IGkwLCBpMCA9IGkxLCBpMSA9IHQ7XG4gICAgdCA9IHgwLCB4MCA9IHgxLCB4MSA9IHQ7XG4gIH1cblxuICBkb21haW5baTBdID0gaW50ZXJ2YWwuZmxvb3IoeDApO1xuICBkb21haW5baTFdID0gaW50ZXJ2YWwuY2VpbCh4MSk7XG4gIHJldHVybiBkb21haW47XG59XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIG1pbGxpc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oKSB7XG4gIC8vIG5vb3Bcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQgLSBzdGFydDtcbn0pO1xuXG4vLyBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMgc2ltcGxlIGNhc2UuXG5taWxsaXNlY29uZC5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgayA9IE1hdGguZmxvb3Ioayk7XG4gIGlmICghaXNGaW5pdGUoaykgfHwgIShrID4gMCkpIHJldHVybiBudWxsO1xuICBpZiAoIShrID4gMSkpIHJldHVybiBtaWxsaXNlY29uZDtcbiAgcmV0dXJuIGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gaykgKiBrKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBrKTtcbiAgfSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gaztcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBtaWxsaXNlY29uZDtcbmV4cG9ydCB2YXIgbWlsbGlzZWNvbmRzID0gbWlsbGlzZWNvbmQucmFuZ2U7XG4iLCJleHBvcnQgdmFyIGR1cmF0aW9uU2Vjb25kID0gMWUzO1xuZXhwb3J0IHZhciBkdXJhdGlvbk1pbnV0ZSA9IDZlNDtcbmV4cG9ydCB2YXIgZHVyYXRpb25Ib3VyID0gMzZlNTtcbmV4cG9ydCB2YXIgZHVyYXRpb25EYXkgPSA4NjRlNTtcbmV4cG9ydCB2YXIgZHVyYXRpb25XZWVrID0gNjA0OGU1O1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uU2Vjb25kfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgc2Vjb25kID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gZHVyYXRpb25TZWNvbmQpICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25TZWNvbmQpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uU2Vjb25kO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENTZWNvbmRzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc2Vjb25kO1xuZXhwb3J0IHZhciBzZWNvbmRzID0gc2Vjb25kLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgbWludXRlID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcihkYXRlIC8gZHVyYXRpb25NaW51dGUpICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgbWludXRlO1xuZXhwb3J0IHZhciBtaW51dGVzID0gbWludXRlLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91ciwgZHVyYXRpb25NaW51dGV9IGZyb20gXCIuL2R1cmF0aW9uXCI7XG5cbnZhciBob3VyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICB2YXIgb2Zmc2V0ID0gZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpICogZHVyYXRpb25NaW51dGUgJSBkdXJhdGlvbkhvdXI7XG4gIGlmIChvZmZzZXQgPCAwKSBvZmZzZXQgKz0gZHVyYXRpb25Ib3VyO1xuICBkYXRlLnNldFRpbWUoTWF0aC5mbG9vcigoK2RhdGUgLSBvZmZzZXQpIC8gZHVyYXRpb25Ib3VyKSAqIGR1cmF0aW9uSG91ciArIG9mZnNldCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VGltZSgrZGF0ZSArIHN0ZXAgKiBkdXJhdGlvbkhvdXIpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uSG91cjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBob3VyO1xuZXhwb3J0IHZhciBob3VycyA9IGhvdXIucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcbmltcG9ydCB7ZHVyYXRpb25EYXksIGR1cmF0aW9uTWludXRlfSBmcm9tIFwiLi9kdXJhdGlvblwiO1xuXG52YXIgZGF5ID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgKyBzdGVwKTtcbn0sIGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHtcbiAgcmV0dXJuIChlbmQgLSBzdGFydCAtIChlbmQuZ2V0VGltZXpvbmVPZmZzZXQoKSAtIHN0YXJ0LmdldFRpbWV6b25lT2Zmc2V0KCkpICogZHVyYXRpb25NaW51dGUpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldERhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZGF5O1xuZXhwb3J0IHZhciBkYXlzID0gZGF5LnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5cbnZhciBtb250aCA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXREYXRlKDEpO1xuICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldE1vbnRoKCkgLSBzdGFydC5nZXRNb250aCgpICsgKGVuZC5nZXRGdWxsWWVhcigpIC0gc3RhcnQuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbn0sIGZ1bmN0aW9uKGRhdGUpIHtcbiAgcmV0dXJuIGRhdGUuZ2V0TW9udGgoKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBtb250aDtcbmV4cG9ydCB2YXIgbW9udGhzID0gbW9udGgucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIHllYXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0RnVsbFllYXIoKSAtIHN0YXJ0LmdldEZ1bGxZZWFyKCk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCk7XG59KTtcblxuLy8gQW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGZvciB0aGlzIHNpbXBsZSBjYXNlLlxueWVhci5ldmVyeSA9IGZ1bmN0aW9uKGspIHtcbiAgcmV0dXJuICFpc0Zpbml0ZShrID0gTWF0aC5mbG9vcihrKSkgfHwgIShrID4gMCkgPyBudWxsIDogaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyBrKSAqIGspO1xuICAgIGRhdGUuc2V0TW9udGgoMCwgMSk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgfSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICAgIGRhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpICsgc3RlcCAqIGspO1xuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHllYXI7XG5leHBvcnQgdmFyIHllYXJzID0geWVhci5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbk1pbnV0ZX0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y01pbnV0ZSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENTZWNvbmRzKDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFRpbWUoK2RhdGUgKyBzdGVwICogZHVyYXRpb25NaW51dGUpO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gKGVuZCAtIHN0YXJ0KSAvIGR1cmF0aW9uTWludXRlO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNaW51dGVzKCk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjTWludXRlO1xuZXhwb3J0IHZhciB1dGNNaW51dGVzID0gdXRjTWludXRlLnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5pbXBvcnQge2R1cmF0aW9uSG91cn0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y0hvdXIgPSBpbnRlcnZhbChmdW5jdGlvbihkYXRlKSB7XG4gIGRhdGUuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgc3RlcCAqIGR1cmF0aW9uSG91cik7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25Ib3VyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENIb3VycygpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y0hvdXI7XG5leHBvcnQgdmFyIHV0Y0hvdXJzID0gdXRjSG91ci5yYW5nZTtcbiIsImltcG9ydCBpbnRlcnZhbCBmcm9tIFwiLi9pbnRlcnZhbFwiO1xuaW1wb3J0IHtkdXJhdGlvbkRheX0gZnJvbSBcIi4vZHVyYXRpb25cIjtcblxudmFyIHV0Y0RheSA9IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbn0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiAoZW5kIC0gc3RhcnQpIC8gZHVyYXRpb25EYXk7XG59LCBmdW5jdGlvbihkYXRlKSB7XG4gIHJldHVybiBkYXRlLmdldFVUQ0RhdGUoKSAtIDE7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgdXRjRGF5O1xuZXhwb3J0IHZhciB1dGNEYXlzID0gdXRjRGF5LnJhbmdlO1xuIiwiaW1wb3J0IGludGVydmFsIGZyb20gXCIuL2ludGVydmFsXCI7XG5cbnZhciB1dGNZZWFyID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xufSwgZnVuY3Rpb24oZGF0ZSwgc3RlcCkge1xuICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXApO1xufSwgZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICByZXR1cm4gZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xufSk7XG5cbi8vIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBzaW1wbGUgY2FzZS5cbnV0Y1llYXIuZXZlcnkgPSBmdW5jdGlvbihrKSB7XG4gIHJldHVybiAhaXNGaW5pdGUoayA9IE1hdGguZmxvb3IoaykpIHx8ICEoayA+IDApID8gbnVsbCA6IGludGVydmFsKGZ1bmN0aW9uKGRhdGUpIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZGF0ZS5nZXRVVENGdWxsWWVhcigpIC8gaykgKiBrKTtcbiAgICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIH0sIGZ1bmN0aW9uKGRhdGUsIHN0ZXApIHtcbiAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSArIHN0ZXAgKiBrKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1dGNZZWFyO1xuZXhwb3J0IHZhciB1dGNZZWFycyA9IHV0Y1llYXIucmFuZ2U7XG4iLCJpbXBvcnQgaW50ZXJ2YWwgZnJvbSBcIi4vaW50ZXJ2YWxcIjtcblxudmFyIHV0Y01vbnRoID0gaW50ZXJ2YWwoZnVuY3Rpb24oZGF0ZSkge1xuICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG59LCBmdW5jdGlvbihkYXRlLCBzdGVwKSB7XG4gIGRhdGUuc2V0VVRDTW9udGgoZGF0ZS5nZXRVVENNb250aCgpICsgc3RlcCk7XG59LCBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gIHJldHVybiBlbmQuZ2V0VVRDTW9udGgoKSAtIHN0YXJ0LmdldFVUQ01vbnRoKCkgKyAoZW5kLmdldFVUQ0Z1bGxZZWFyKCkgLSBzdGFydC5nZXRVVENGdWxsWWVhcigpKSAqIDEyO1xufSwgZnVuY3Rpb24oZGF0ZSkge1xuICByZXR1cm4gZGF0ZS5nZXRVVENNb250aCgpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0Y01vbnRoO1xuZXhwb3J0IHZhciB1dGNNb250aHMgPSB1dGNNb250aC5yYW5nZTtcbiIsImltcG9ydCBmb3JtYXRMb2NhbGUgZnJvbSBcIi4vbG9jYWxlXCI7XG5cbnZhciBsb2NhbGU7XG5leHBvcnQgdmFyIHRpbWVGb3JtYXQ7XG5leHBvcnQgdmFyIHRpbWVQYXJzZTtcbmV4cG9ydCB2YXIgdXRjRm9ybWF0O1xuZXhwb3J0IHZhciB1dGNQYXJzZTtcblxuZGVmYXVsdExvY2FsZSh7XG4gIGRhdGVUaW1lOiBcIiV4LCAlWFwiLFxuICBkYXRlOiBcIiUtbS8lLWQvJVlcIixcbiAgdGltZTogXCIlLUk6JU06JVMgJXBcIixcbiAgcGVyaW9kczogW1wiQU1cIiwgXCJQTVwiXSxcbiAgZGF5czogW1wiU3VuZGF5XCIsIFwiTW9uZGF5XCIsIFwiVHVlc2RheVwiLCBcIldlZG5lc2RheVwiLCBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIl0sXG4gIHNob3J0RGF5czogW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdLFxuICBtb250aHM6IFtcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJdLFxuICBzaG9ydE1vbnRoczogW1wiSmFuXCIsIFwiRmViXCIsIFwiTWFyXCIsIFwiQXByXCIsIFwiTWF5XCIsIFwiSnVuXCIsIFwiSnVsXCIsIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsIFwiTm92XCIsIFwiRGVjXCJdXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVmYXVsdExvY2FsZShkZWZpbml0aW9uKSB7XG4gIGxvY2FsZSA9IGZvcm1hdExvY2FsZShkZWZpbml0aW9uKTtcbiAgdGltZUZvcm1hdCA9IGxvY2FsZS5mb3JtYXQ7XG4gIHRpbWVQYXJzZSA9IGxvY2FsZS5wYXJzZTtcbiAgdXRjRm9ybWF0ID0gbG9jYWxlLnV0Y0Zvcm1hdDtcbiAgdXRjUGFyc2UgPSBsb2NhbGUudXRjUGFyc2U7XG4gIHJldHVybiBsb2NhbGU7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihzKSB7XG4gIHJldHVybiBzLm1hdGNoKC8uezZ9L2cpLm1hcChmdW5jdGlvbih4KSB7XG4gICAgcmV0dXJuIFwiI1wiICsgeDtcbiAgfSk7XG59XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2ZcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIzOTNiNzk1MjU0YTM2YjZlY2Y5YzllZGU2Mzc5Mzk4Y2EyNTJiNWNmNmJjZWRiOWM4YzZkMzFiZDllMzllN2JhNTJlN2NiOTQ4NDNjMzlhZDQ5NGFkNjYxNmJlNzk2OWM3YjQxNzNhNTUxOTRjZTZkYmRkZTllZDZcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDlcIik7XG4iLCJpbXBvcnQgY29sb3JzIGZyb20gXCIuL2NvbG9yc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnMoXCIxZjc3YjRhZWM3ZThmZjdmMGVmZmJiNzgyY2EwMmM5OGRmOGFkNjI3MjhmZjk4OTY5NDY3YmRjNWIwZDU4YzU2NGJjNDljOTRlMzc3YzJmN2I2ZDI3ZjdmN2ZjN2M3YzdiY2JkMjJkYmRiOGQxN2JlY2Y5ZWRhZTVcIik7XG4iLCJpbXBvcnQge2N1YmVoZWxpeH0gZnJvbSBcImQzLWNvbG9yXCI7XG5pbXBvcnQge2ludGVycG9sYXRlQ3ViZWhlbGl4TG9uZ30gZnJvbSBcImQzLWludGVycG9sYXRlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZyhjdWJlaGVsaXgoMzAwLCAwLjUsIDAuMCksIGN1YmVoZWxpeCgtMjQwLCAwLjUsIDEuMCkpO1xuIiwiaW1wb3J0IHtjdWJlaGVsaXh9IGZyb20gXCJkMy1jb2xvclwiO1xuaW1wb3J0IHtpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmd9IGZyb20gXCJkMy1pbnRlcnBvbGF0ZVwiO1xuXG5leHBvcnQgdmFyIHdhcm0gPSBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmcoY3ViZWhlbGl4KC0xMDAsIDAuNzUsIDAuMzUpLCBjdWJlaGVsaXgoODAsIDEuNTAsIDAuOCkpO1xuXG5leHBvcnQgdmFyIGNvb2wgPSBpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmcoY3ViZWhlbGl4KDI2MCwgMC43NSwgMC4zNSksIGN1YmVoZWxpeCg4MCwgMS41MCwgMC44KSk7XG5cbnZhciByYWluYm93ID0gY3ViZWhlbGl4KCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHQpIHtcbiAgaWYgKHQgPCAwIHx8IHQgPiAxKSB0IC09IE1hdGguZmxvb3IodCk7XG4gIHZhciB0cyA9IE1hdGguYWJzKHQgLSAwLjUpO1xuICByYWluYm93LmggPSAzNjAgKiB0IC0gMTAwO1xuICByYWluYm93LnMgPSAxLjUgLSAxLjUgKiB0cztcbiAgcmFpbmJvdy5sID0gMC44IC0gMC45ICogdHM7XG4gIHJldHVybiByYWluYm93ICsgXCJcIjtcbn1cbiIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbnN0YW50KCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufVxuIiwiaW1wb3J0IHtwYXRofSBmcm9tIFwiZDMtcGF0aFwiO1xuaW1wb3J0IGNvbnN0YW50IGZyb20gXCIuL2NvbnN0YW50XCI7XG5pbXBvcnQgY3VydmVMaW5lYXIgZnJvbSBcIi4vY3VydmUvbGluZWFyXCI7XG5pbXBvcnQge3ggYXMgcG9pbnRYLCB5IGFzIHBvaW50WX0gZnJvbSBcIi4vcG9pbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oKSB7XG4gIHZhciB4ID0gcG9pbnRYLFxuICAgICAgeSA9IHBvaW50WSxcbiAgICAgIGRlZmluZWQgPSBjb25zdGFudCh0cnVlKSxcbiAgICAgIGNvbnRleHQgPSBudWxsLFxuICAgICAgY3VydmUgPSBjdXJ2ZUxpbmVhcixcbiAgICAgIG91dHB1dCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbGluZShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgZCxcbiAgICAgICAgZGVmaW5lZDAgPSBmYWxzZSxcbiAgICAgICAgYnVmZmVyO1xuXG4gICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgb3V0cHV0ID0gY3VydmUoYnVmZmVyID0gcGF0aCgpKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgKytpKSB7XG4gICAgICBpZiAoIShpIDwgbiAmJiBkZWZpbmVkKGQgPSBkYXRhW2ldLCBpLCBkYXRhKSkgPT09IGRlZmluZWQwKSB7XG4gICAgICAgIGlmIChkZWZpbmVkMCA9ICFkZWZpbmVkMCkgb3V0cHV0LmxpbmVTdGFydCgpO1xuICAgICAgICBlbHNlIG91dHB1dC5saW5lRW5kKCk7XG4gICAgICB9XG4gICAgICBpZiAoZGVmaW5lZDApIG91dHB1dC5wb2ludCgreChkLCBpLCBkYXRhKSwgK3koZCwgaSwgZGF0YSkpO1xuICAgIH1cblxuICAgIGlmIChidWZmZXIpIHJldHVybiBvdXRwdXQgPSBudWxsLCBidWZmZXIgKyBcIlwiIHx8IG51bGw7XG4gIH1cblxuICBsaW5lLnggPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeCA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBsaW5lKSA6IHg7XG4gIH07XG5cbiAgbGluZS55ID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHkgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KCtfKSwgbGluZSkgOiB5O1xuICB9O1xuXG4gIGxpbmUuZGVmaW5lZCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWZpbmVkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCghIV8pLCBsaW5lKSA6IGRlZmluZWQ7XG4gIH07XG5cbiAgbGluZS5jdXJ2ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjdXJ2ZSA9IF8sIGNvbnRleHQgIT0gbnVsbCAmJiAob3V0cHV0ID0gY3VydmUoY29udGV4dCkpLCBsaW5lKSA6IGN1cnZlO1xuICB9O1xuXG4gIGxpbmUuY29udGV4dCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChfID09IG51bGwgPyBjb250ZXh0ID0gb3V0cHV0ID0gbnVsbCA6IG91dHB1dCA9IGN1cnZlKGNvbnRleHQgPSBfKSwgbGluZSkgOiBjb250ZXh0O1xuICB9O1xuXG4gIHJldHVybiBsaW5lO1xufVxuIiwiaW1wb3J0IHthZGRCZWFjaCwgcmVtb3ZlQmVhY2h9IGZyb20gXCIuL0JlYWNoXCI7XG5pbXBvcnQge3NvcnRDZWxsSGFsZmVkZ2VzLCBjZWxsSGFsZmVkZ2VTdGFydCwgY2xpcENlbGxzfSBmcm9tIFwiLi9DZWxsXCI7XG5pbXBvcnQge2ZpcnN0Q2lyY2xlfSBmcm9tIFwiLi9DaXJjbGVcIjtcbmltcG9ydCB7Y2xpcEVkZ2VzfSBmcm9tIFwiLi9FZGdlXCI7XG5pbXBvcnQgUmVkQmxhY2tUcmVlIGZyb20gXCIuL1JlZEJsYWNrVHJlZVwiO1xuXG5leHBvcnQgdmFyIGVwc2lsb24gPSAxZS02O1xuZXhwb3J0IHZhciBlcHNpbG9uMiA9IDFlLTEyO1xuZXhwb3J0IHZhciBiZWFjaGVzO1xuZXhwb3J0IHZhciBjZWxscztcbmV4cG9ydCB2YXIgY2lyY2xlcztcbmV4cG9ydCB2YXIgZWRnZXM7XG5cbmZ1bmN0aW9uIHRyaWFuZ2xlQXJlYShhLCBiLCBjKSB7XG4gIHJldHVybiAoYVswXSAtIGNbMF0pICogKGJbMV0gLSBhWzFdKSAtIChhWzBdIC0gYlswXSkgKiAoY1sxXSAtIGFbMV0pO1xufVxuXG5mdW5jdGlvbiBsZXhpY29ncmFwaGljKGEsIGIpIHtcbiAgcmV0dXJuIGJbMV0gLSBhWzFdXG4gICAgICB8fCBiWzBdIC0gYVswXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGlhZ3JhbShzaXRlcywgZXh0ZW50KSB7XG4gIHZhciBzaXRlID0gc2l0ZXMuc29ydChsZXhpY29ncmFwaGljKS5wb3AoKSxcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgY2lyY2xlO1xuXG4gIGVkZ2VzID0gW107XG4gIGNlbGxzID0gbmV3IEFycmF5KHNpdGVzLmxlbmd0aCk7XG4gIGJlYWNoZXMgPSBuZXcgUmVkQmxhY2tUcmVlO1xuICBjaXJjbGVzID0gbmV3IFJlZEJsYWNrVHJlZTtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNpcmNsZSA9IGZpcnN0Q2lyY2xlO1xuICAgIGlmIChzaXRlICYmICghY2lyY2xlIHx8IHNpdGVbMV0gPCBjaXJjbGUueSB8fCAoc2l0ZVsxXSA9PT0gY2lyY2xlLnkgJiYgc2l0ZVswXSA8IGNpcmNsZS54KSkpIHtcbiAgICAgIGlmIChzaXRlWzBdICE9PSB4IHx8IHNpdGVbMV0gIT09IHkpIHtcbiAgICAgICAgYWRkQmVhY2goc2l0ZSk7XG4gICAgICAgIHggPSBzaXRlWzBdLCB5ID0gc2l0ZVsxXTtcbiAgICAgIH1cbiAgICAgIHNpdGUgPSBzaXRlcy5wb3AoKTtcbiAgICB9IGVsc2UgaWYgKGNpcmNsZSkge1xuICAgICAgcmVtb3ZlQmVhY2goY2lyY2xlLmFyYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNvcnRDZWxsSGFsZmVkZ2VzKCk7XG5cbiAgaWYgKGV4dGVudCkge1xuICAgIHZhciB4MCA9ICtleHRlbnRbMF1bMF0sXG4gICAgICAgIHkwID0gK2V4dGVudFswXVsxXSxcbiAgICAgICAgeDEgPSArZXh0ZW50WzFdWzBdLFxuICAgICAgICB5MSA9ICtleHRlbnRbMV1bMV07XG4gICAgY2xpcEVkZ2VzKHgwLCB5MCwgeDEsIHkxKTtcbiAgICBjbGlwQ2VsbHMoeDAsIHkwLCB4MSwgeTEpO1xuICB9XG5cbiAgdGhpcy5lZGdlcyA9IGVkZ2VzO1xuICB0aGlzLmNlbGxzID0gY2VsbHM7XG5cbiAgYmVhY2hlcyA9XG4gIGNpcmNsZXMgPVxuICBlZGdlcyA9XG4gIGNlbGxzID0gbnVsbDtcbn1cblxuRGlhZ3JhbS5wcm90b3R5cGUgPSB7XG4gIGNvbnN0cnVjdG9yOiBEaWFncmFtLFxuXG4gIHBvbHlnb25zOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgZWRnZXMgPSB0aGlzLmVkZ2VzO1xuXG4gICAgcmV0dXJuIHRoaXMuY2VsbHMubWFwKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgIHZhciBwb2x5Z29uID0gY2VsbC5oYWxmZWRnZXMubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIGNlbGxIYWxmZWRnZVN0YXJ0KGNlbGwsIGVkZ2VzW2ldKTsgfSk7XG4gICAgICBwb2x5Z29uLmRhdGEgPSBjZWxsLnNpdGUuZGF0YTtcbiAgICAgIHJldHVybiBwb2x5Z29uO1xuICAgIH0pO1xuICB9LFxuXG4gIHRyaWFuZ2xlczogZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRyaWFuZ2xlcyA9IFtdLFxuICAgICAgICBlZGdlcyA9IHRoaXMuZWRnZXM7XG5cbiAgICB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oY2VsbCwgaSkge1xuICAgICAgaWYgKCEobSA9IChoYWxmZWRnZXMgPSBjZWxsLmhhbGZlZGdlcykubGVuZ3RoKSkgcmV0dXJuO1xuICAgICAgdmFyIHNpdGUgPSBjZWxsLnNpdGUsXG4gICAgICAgICAgaGFsZmVkZ2VzLFxuICAgICAgICAgIGogPSAtMSxcbiAgICAgICAgICBtLFxuICAgICAgICAgIHMwLFxuICAgICAgICAgIGUxID0gZWRnZXNbaGFsZmVkZ2VzW20gLSAxXV0sXG4gICAgICAgICAgczEgPSBlMS5sZWZ0ID09PSBzaXRlID8gZTEucmlnaHQgOiBlMS5sZWZ0O1xuXG4gICAgICB3aGlsZSAoKytqIDwgbSkge1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgICBlMSA9IGVkZ2VzW2hhbGZlZGdlc1tqXV07XG4gICAgICAgIHMxID0gZTEubGVmdCA9PT0gc2l0ZSA/IGUxLnJpZ2h0IDogZTEubGVmdDtcbiAgICAgICAgaWYgKHMwICYmIHMxICYmIGkgPCBzMC5pbmRleCAmJiBpIDwgczEuaW5kZXggJiYgdHJpYW5nbGVBcmVhKHNpdGUsIHMwLCBzMSkgPCAwKSB7XG4gICAgICAgICAgdHJpYW5nbGVzLnB1c2goW3NpdGUuZGF0YSwgczAuZGF0YSwgczEuZGF0YV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJpYW5nbGVzO1xuICB9LFxuXG4gIGxpbmtzOiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoZnVuY3Rpb24oZWRnZSkge1xuICAgICAgcmV0dXJuIGVkZ2UucmlnaHQ7XG4gICAgfSkubWFwKGZ1bmN0aW9uKGVkZ2UpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogZWRnZS5sZWZ0LmRhdGEsXG4gICAgICAgIHRhcmdldDogZWRnZS5yaWdodC5kYXRhXG4gICAgICB9O1xuICAgIH0pO1xuICB9LFxuXG4gIGZpbmQ6IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykge1xuICAgIHZhciB0aGF0ID0gdGhpcywgaTAsIGkxID0gdGhhdC5fZm91bmQgfHwgMCwgbiA9IHRoYXQuY2VsbHMubGVuZ3RoLCBjZWxsO1xuXG4gICAgLy8gVXNlIHRoZSBwcmV2aW91c2x5LWZvdW5kIGNlbGwsIG9yIHN0YXJ0IHdpdGggYW4gYXJiaXRyYXJ5IG9uZS5cbiAgICB3aGlsZSAoIShjZWxsID0gdGhhdC5jZWxsc1tpMV0pKSBpZiAoKytpMSA+PSBuKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZHggPSB4IC0gY2VsbC5zaXRlWzBdLCBkeSA9IHkgLSBjZWxsLnNpdGVbMV0sIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG5cbiAgICAvLyBUcmF2ZXJzZSB0aGUgaGFsZi1lZGdlcyB0byBmaW5kIGEgY2xvc2VyIGNlbGwsIGlmIGFueS5cbiAgICBkbyB7XG4gICAgICBjZWxsID0gdGhhdC5jZWxsc1tpMCA9IGkxXSwgaTEgPSBudWxsO1xuICAgICAgY2VsbC5oYWxmZWRnZXMuZm9yRWFjaChmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciBlZGdlID0gdGhhdC5lZGdlc1tlXSwgdiA9IGVkZ2UubGVmdDtcbiAgICAgICAgaWYgKCh2ID09PSBjZWxsLnNpdGUgfHwgIXYpICYmICEodiA9IGVkZ2UucmlnaHQpKSByZXR1cm47XG4gICAgICAgIHZhciB2eCA9IHggLSB2WzBdLCB2eSA9IHkgLSB2WzFdLCB2MiA9IHZ4ICogdnggKyB2eSAqIHZ5O1xuICAgICAgICBpZiAodjIgPCBkMikgZDIgPSB2MiwgaTEgPSB2LmluZGV4O1xuICAgICAgfSk7XG4gICAgfSB3aGlsZSAoaTEgIT09IG51bGwpO1xuXG4gICAgdGhhdC5fZm91bmQgPSBpMDtcblxuICAgIHJldHVybiByYWRpdXMgPT0gbnVsbCB8fCBkMiA8PSByYWRpdXMgKiByYWRpdXMgPyBjZWxsLnNpdGUgOiBudWxsO1xuICB9XG59XG4iLCJpbXBvcnQge3NlbGVjdGlvbn0gZnJvbSBcImQzLXNlbGVjdGlvblwiO1xuaW1wb3J0IHt0cmFuc2l0aW9ufSBmcm9tIFwiZDMtdHJhbnNpdGlvblwiO1xuaW1wb3J0IHNlbGVjdGlvbl9hdHRycyBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uL2F0dHJzXCI7XG5pbXBvcnQgc2VsZWN0aW9uX3N0eWxlcyBmcm9tIFwiLi9zcmMvc2VsZWN0aW9uL3N0eWxlc1wiO1xuaW1wb3J0IHNlbGVjdGlvbl9wcm9wZXJ0aWVzIGZyb20gXCIuL3NyYy9zZWxlY3Rpb24vcHJvcGVydGllc1wiO1xuaW1wb3J0IHRyYW5zaXRpb25fYXR0cnMgZnJvbSBcIi4vc3JjL3RyYW5zaXRpb24vYXR0cnNcIjtcbmltcG9ydCB0cmFuc2l0aW9uX3N0eWxlcyBmcm9tIFwiLi9zcmMvdHJhbnNpdGlvbi9zdHlsZXNcIjtcblxuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycyA9IHNlbGVjdGlvbl9hdHRycztcbnNlbGVjdGlvbi5wcm90b3R5cGUuc3R5bGVzID0gc2VsZWN0aW9uX3N0eWxlcztcbnNlbGVjdGlvbi5wcm90b3R5cGUucHJvcGVydGllcyA9IHNlbGVjdGlvbl9wcm9wZXJ0aWVzO1xudHJhbnNpdGlvbi5wcm90b3R5cGUuYXR0cnMgPSB0cmFuc2l0aW9uX2F0dHJzO1xudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzID0gdHJhbnNpdGlvbl9zdHlsZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydCBjb25zdCBDT05TVEFOVFMgPSB7XG4gICdOQU1FU1BBQ0UnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAnQ0xBU1MnOiBbJ28tY2hhcnQnXSxcbiAgJ1NUWUxFJzogW1xuICAgICdmb250LXNpemU6IDEzcHgnLFxuICAgICdmb250LWZhbWlseTogSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwgLHNhbnMtc2VyaWYnLFxuICAgICdmb250LXdlaWdodDogNDAwJyxcbiAgICAnbWF4LXdpZHRoOiAxMDAlJ1xuICBdLFxuICAnRE9UU19SQURJVVMnOiA0LFxuICAnQkFSX0dBUCc6IDAuNSxcbiAgJ0xFR0VORF9NQVJHSU5fVE9QJzogNTYsXG4gICdMRUdFTkRfTUFSR0lOX0JPVFRPTSc6IDEwXG59OyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICdkMy1zZWxlY3Rpb24tbXVsdGknO1xuaW1wb3J0IHtDT05TVEFOVFMgYXMgQ09OU1RBTlRTfSBmcm9tICcuL28tY2hhcnRzLmNvbnN0YW50cyc7XG5cbmNsYXNzIG9DaGFydHMge1xuXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzLCBkYXRhKSB7XG5cbiAgICB0aGlzLmNoYXJ0ID0ge307XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG4gICAgdGhpcy5jaGFydC5lbGVtZW50ID0gZDMuc2VsZWN0KHRoaXMuc2V0dGluZ3Muc2VsZWN0b3IpO1xuICAgIHRoaXMudGltZVBhcnNlID0gZDMudGltZVBhcnNlKHRoaXMuc2V0dGluZ3MuZm9ybWF0cy50aW1lKTtcblxuICB9XG5cbiAgdHJhbnNsYXRlKHgsIHkpIHtcbiAgICByZXR1cm4gJ3RyYW5zbGF0ZSgnICsgeCArICcsJyArIHkgKyAnKSc7XG4gIH1cblxuICBzbHVnKFRleHQsIHNwYWNlKSB7XG4gICAgcmV0dXJuIFRleHQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXlxcdyBdKy9nLCcgJykucmVwbGFjZSgvICsvZywgc3BhY2UpO1xuICB9XG5cbiAgaW5pdCgpIHtcblxuICAgIHRoaXMucmVuZGVyKHtcbiAgICAgICdzZXR0aW5ncyc6IHRoaXMuc2V0dGluZ3MsXG4gICAgICAnY2hhcnQnOiB0aGlzLmNoYXJ0LFxuICAgICAgJ2RhdGEnOiB0aGlzLmRhdGEsXG4gICAgICAnbmFtZXNwYWNlJzogJ2NyZWF0ZSdcbiAgICB9KVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5yZW5kZXIoe1xuICAgICAgICAnc2V0dGluZ3MnOiB0aGlzLnNldHRpbmdzLFxuICAgICAgICAnY2hhcnQnOiB0aGlzLmNoYXJ0LFxuICAgICAgICAnZGF0YSc6IHRoaXMuZGF0YSxcbiAgICAgICAgJ25hbWVzcGFjZSc6ICd1cGRhdGUnXG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9XG5cbiAgcmVuZGVyKGFyZ3MpIHtcblxuICAgIGxldCBzID0gYXJncy5zZXR0aW5ncztcbiAgICBsZXQgYyA9IGFyZ3MuY2hhcnQ7XG4gICAgbGV0IGQgPSBhcmdzLmRhdGE7XG4gICAgbGV0IG4gPSBhcmdzLm5hbWVzcGFjZTtcblxuICAgIGMgPSB0aGlzLnN2ZyhzLCBjKVtuXSgpO1xuICAgIHMgPSB0aGlzLmRlZmluZShzLCBkKTtcbiAgICBzID0gdGhpcy5kb21haW5zKHMsIGQpO1xuICAgIGMgPSB0aGlzLnBsb3RzKHMsIGMsIGQpW25dKCk7XG4gICAgYyA9IHRoaXMuYXhpcyhzLCBjKVtuXSgpO1xuXG4gIH1cblxuICAvLyBDcmVhdGUgU1ZHXG4gIHN2ZyhzZXR0aW5ncywgY2hhcnQpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBfdGhpcy5zdmcuY3JlYXRlID0gY3JlYXRlO1xuICAgIF90aGlzLnN2Zy51cGRhdGUgPSB1cGRhdGU7XG4gICAgX3RoaXMuc3ZnLnNlbGVjdGlvbnMgPSBzZWxlY3Rpb25zO1xuICAgIF90aGlzLnN2Zy5jbGFzc2VzID0gY2xhc3NlcztcblxuICAgIHJldHVybiBfdGhpcy5zdmc7XG5cbiAgICBmdW5jdGlvbiBjbGFzc2VzKEtFWSkge1xuXG4gICAgICBsZXQgYyA9IHtcbiAgICAgICAgJ2JhY2tncm91bmQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2JnJyxcbiAgICAgICAgICAnZmlsbC0nICsgc2V0dGluZ3MuY29sb3JzLmJhY2tncm91bmQsXG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjW0tFWV0uam9pbignICcpO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlKCkge1xuXG4gICAgICBjaGFydC5zdmcgPSBjaGFydC5lbGVtZW50LmFwcGVuZCgnc3ZnJykuYXR0cnMoe1xuICAgICAgICAneG1sbnMnOiBDT05TVEFOVFMuTkFNRVNQQUNFLFxuICAgICAgICAnd2lkdGgnOiAwXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuYmcgPSBjaGFydC5zdmcuYXBwZW5kKCdyZWN0JykuYXR0cnMoe1xuICAgICAgICAnY2xhc3MnOiBfdGhpcy5zdmcuY2xhc3NlcygnYmFja2dyb3VuZCcpXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuZGVmcyA9IGNoYXJ0LnN2Zy5hcHBlbmQoJ2RlZnMnKTtcbiAgICAgIGNoYXJ0LmcgPSBjaGFydC5zdmcuYXBwZW5kKCdnJyk7XG5cbiAgICAgIHJldHVybiBfdGhpcy5zdmcudXBkYXRlKCk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LnN2ZyA9IF90aGlzLnN2Zy5zZWxlY3Rpb25zKCkuc3ZnO1xuICAgICAgY2hhcnQuZyA9IF90aGlzLnN2Zy5zZWxlY3Rpb25zKCkuZztcblxuICAgICAgc2V0dGluZ3Mud2lkdGggPSBjaGFydC5lbGVtZW50LnByb3BlcnR5KCdjbGllbnRXaWR0aCcpO1xuXG4gICAgICBjaGFydC5zdmcuYXR0cnMoe1xuICAgICAgICAnY2xhc3MnOiBDT05TVEFOVFMuQ0xBU1Muam9pbignICcpLFxuICAgICAgICAnc3R5bGUnOiBDT05TVEFOVFMuU1RZTEUuam9pbignOycpLFxuICAgICAgICAnd2lkdGgnOiBzZXR0aW5ncy53aWR0aCxcbiAgICAgICAgJ2hlaWdodCc6IHNldHRpbmdzLmhlaWdodFxuICAgICAgfSk7XG5cbiAgICAgIGNoYXJ0LmJnLmF0dHJzKHtcbiAgICAgICAgJ3dpZHRoJzogc2V0dGluZ3Mud2lkdGgsXG4gICAgICAgICdoZWlnaHQnOiBzZXR0aW5ncy5oZWlnaHRcbiAgICAgIH0pO1xuXG4gICAgICBjaGFydC5nLmF0dHJzKHtcbiAgICAgICAgJ3RyYW5zZm9ybSc6IF90aGlzLnRyYW5zbGF0ZShzZXR0aW5ncy5tYXJnaW5bM10sIHNldHRpbmdzLm1hcmdpblswXSlcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY2hhcnQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZWxlY3Rpb25zKCkge1xuXG4gICAgICBjaGFydC5zdmcgPSBjaGFydC5lbGVtZW50LnNlbGVjdCgnc3ZnJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgICdlbGVtZW50JzogY2hhcnQuZWxlbWVudCxcbiAgICAgICAgJ3N2Zyc6IGNoYXJ0LnN2ZyxcbiAgICAgICAgJ2cnOiBjaGFydC5zdmcuc2VsZWN0KCdnJylcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgZGVmaW5lKHNldHRpbmdzLCBkYXRhKSB7XG5cbiAgICAvLyB0aGlzIHVzZWQgdHAgYmUgYSBwcm9taXNlIGNoYWluLCBJJ20gbm90IHN1cmUgb2YgaXQncyBpbXBvcnRhbmNlIHRvIGJlIHNvIGFueW1vcmVcbiAgICAvLyAtIGRldm93aGlwcGl0XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZUxheW91dChzZXR0aW5ncyk7XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZVNjYWxlcyhzZXR0aW5ncyk7XG4gICAgc2V0dGluZ3MgPSB0aGlzLmRlZmluZUF4aXMoc2V0dGluZ3MpO1xuICAgIHNldHRpbmdzID0gdGhpcy5kZWZpbmVQbG90cyhzZXR0aW5ncyk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRlZmluZUxheW91dChzZXR0aW5ncykge1xuXG4gICAgc2V0dGluZ3MuaW5uZXJXaWR0aCA9IHNldHRpbmdzLndpZHRoICAtIChzZXR0aW5ncy5tYXJnaW5bMV0gKyBzZXR0aW5ncy5tYXJnaW5bM10pO1xuICAgIHNldHRpbmdzLmlubmVySGVpZ2h0ID0gc2V0dGluZ3MuaGVpZ2h0IC0gKHNldHRpbmdzLm1hcmdpblswXSArIHNldHRpbmdzLm1hcmdpblsyXSk7XG4gICAgc2V0dGluZ3MudG9wID0gc2V0dGluZ3MucGFkZGluZ1swXTtcbiAgICBzZXR0aW5ncy5yaWdodCA9IHNldHRpbmdzLmlubmVyV2lkdGggLSAoc2V0dGluZ3MucGFkZGluZ1sxXSArIHNldHRpbmdzLnBhZGRpbmdbM10pO1xuICAgIHNldHRpbmdzLmJvdHRvbSA9IHNldHRpbmdzLmlubmVySGVpZ2h0IC0gKHNldHRpbmdzLnBhZGRpbmdbMF0gKyBzZXR0aW5ncy5wYWRkaW5nWzJdKTtcbiAgICBzZXR0aW5ncy5sZWZ0ID0gc2V0dGluZ3MucGFkZGluZ1szXTtcblxuICAgIHJldHVybiBzZXR0aW5ncztcblxuICB9XG5cbiAgZGVmaW5lU2NhbGVzKHNldHRpbmdzKSB7XG5cbiAgICBzZXR0aW5ncy5zY2FsZXMgPSB7fTtcbiAgICBzZXR0aW5ncy5zY2FsZXMueCA9IGQzLnNjYWxlVGltZSgpXG4gICAgICAucmFuZ2UoW3NldHRpbmdzLmxlZnQsIHNldHRpbmdzLnJpZ2h0XSk7XG4gICAgc2V0dGluZ3Muc2NhbGVzLnkgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgICAucmFuZ2UoW3NldHRpbmdzLmJvdHRvbSwgc2V0dGluZ3MudG9wXSlcbiAgICAgIC5jbGFtcCh0cnVlKTtcblxuICAgIHJldHVybiBzZXR0aW5ncztcblxuICB9XG5cbiAgZGVmaW5lQXhpcyhzZXR0aW5ncykge1xuXG4gICAgc2V0dGluZ3MuYXhpcyA9IHt9O1xuICAgIHNldHRpbmdzLmF4aXMueCA9IGQzLmF4aXNCb3R0b20oKVxuICAgICAgLnNjYWxlKHNldHRpbmdzLnNjYWxlcy54KTtcbiAgICBzZXR0aW5ncy5heGlzLnkgPSBkMy5heGlzTGVmdCgpXG4gICAgICAuc2NhbGUoc2V0dGluZ3Muc2NhbGVzLnkpXG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRlZmluZVBsb3RzKHNldHRpbmdzKSB7XG5cbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xuXG4gICAgc2V0dGluZ3MucGxvdHMgPSB7fTtcbiAgICBzZXR0aW5ncy5wbG90cy5saW5lID0gZDMubGluZSgpXG4gICAgICAueChmdW5jdGlvbihkKSB7XG4gICAgICAgIHJldHVybiBzZXR0aW5ncy5zY2FsZXMueChfdGhpcy50aW1lUGFyc2UoZFswXSkpO1xuICAgICAgfSlcbiAgICAgIC55KGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgcmV0dXJuIHNldHRpbmdzLnNjYWxlcy55KGRbMV0pO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIGRvbWFpbnMoc2V0dGluZ3MsIGRhdGEpIHtcblxuICAgIGxldCBfdGhpcyA9IHRoaXM7XG5cbiAgICBsZXQgbWluID0gZnVuY3Rpb24oZGF0YSwgaW5kZXgpIHtcbiAgICAgIHJldHVybiBkMy5taW4oZGF0YSwgZnVuY3Rpb24oZCkge1xuICAgICAgICByZXR1cm4gZDMubWluKGQuZGF0YSwgZnVuY3Rpb24oZSkge1xuICAgICAgICAgIHJldHVybiBlW2luZGV4XTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbGV0IG1heCA9IGZ1bmN0aW9uKGRhdGEsIGluZGV4KSB7XG4gICAgICByZXR1cm4gZDMubWF4KGRhdGEsIGZ1bmN0aW9uKGQpIHtcbiAgICAgICAgcmV0dXJuIGQzLm1heChkLmRhdGEsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICByZXR1cm4gZVtpbmRleF07XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBsZXQgYmFycyA9IGRhdGEuZmlsdGVyKHggPT4geC50eXBlID09PSAnYmFyJykubGVuZ3RoO1xuXG4gICAgbGV0IHgwID0gX3RoaXMudGltZVBhcnNlKG1pbihkYXRhLCAwKSk7XG4gICAgbGV0IHgxID0gX3RoaXMudGltZVBhcnNlKG1heChkYXRhLCAwKSk7XG5cbiAgICAvLyBpZiB0aGVyZSBhcmUgYmFycyBpdCdzIG5pY2UgdG8gZ2l2ZSBlYWNoIHNpZGUgZXh0cmEgc3BhY2VcbiAgICBpZiAoYmFycyA+IDApIHtcbiAgICAgIHgwID0gZDMudGltZU1vbnRoLm9mZnNldCh4MCwgLTEpO1xuICAgICAgeDEgPSBkMy50aW1lTW9udGgub2Zmc2V0KHgxLCAxKTtcbiAgICB9XG5cbiAgICBsZXQgeTAgPSBtaW4oZGF0YSwgMSk7XG4gICAgbGV0IHkxID0gbWF4KGRhdGEsIDEpO1xuXG4gICAgc2V0dGluZ3Muc2NhbGVzLnguZG9tYWluKFt4MCwgeDFdKS5uaWNlKCk7XG4gICAgc2V0dGluZ3Muc2NhbGVzLnkuZG9tYWluKFt5MCwgeTFdKS5uaWNlKCk7XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG5cbiAgfVxuXG4gIHBsb3RzKHNldHRpbmdzLCBjaGFydCwgZGF0YSkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLnBsb3RzLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBfdGhpcy5wbG90cy5saW5lID0gbGluZTtcbiAgICBfdGhpcy5wbG90cy5iYXIgPSBiYXI7XG4gICAgX3RoaXMucGxvdHMudXBkYXRlID0gdXBkYXRlO1xuICAgIF90aGlzLnBsb3RzLmNsYXNzZXMgPSBjbGFzc2VzO1xuXG4gICAgcmV0dXJuIF90aGlzLnBsb3RzO1xuXG4gICAgZnVuY3Rpb24gY2xhc3NlcyhLRVksIG5hbWUsIGlkKSB7XG5cbiAgICAgIGxldCBjID0ge1xuICAgICAgICAncGxvdCc6IFtcbiAgICAgICAgICAnby1jaGFydF9fcGxvdCcsXG4gICAgICAgICAgJ28tY2hhcnRfX3Bsb3QtLScgKyBfdGhpcy5zbHVnKG5hbWUsICctJyksXG4gICAgICAgICAgJ28tY2hhcnRfX3Bsb3QtLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpXG4gICAgICAgIF0sXG4gICAgICAgICdsaW5lJzogW1xuICAgICAgICAgICdvLWNoYXJ0X19saW5lJyxcbiAgICAgICAgICAnc3Ryb2tlLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpXG4gICAgICAgIF0sXG4gICAgICAgICdkb3RzJzogW1xuICAgICAgICAgICdvLWNoYXJ0X19kb3QnLFxuICAgICAgICAgICdmaWxsLScgKyBfdGhpcy5zbHVnKGlkLCAnLScpLFxuICAgICAgICAgICdzdHJva2UtJyArIHNldHRpbmdzLmNvbG9ycy5iYWNrZ3JvdW5kXG4gICAgICAgIF0sXG4gICAgICAgICdiYXInOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2JhcicsXG4gICAgICAgICAgJ2ZpbGwtJyArIF90aGlzLnNsdWcoaWQsICctJyksXG4gICAgICAgIF1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBjW0tFWV0uam9pbignICcpO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlKCkge1xuXG4gICAgICAvLyByZW1vdmUgb2xkIGNvbnRhaW5lcnNcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0QWxsKCcuby1jaGFydF9fcGxvdCcpLnJlbW92ZSgpO1xuXG4gICAgICAvLyBhZGQgcGxvdCBjb250YWluZXJzXG4gICAgICBjaGFydC5wbG90cyA9IGNoYXJ0Lmcuc2VsZWN0QWxsKCcuby1jaGFydF9fcGxvdCcpXG4gICAgICAgICAgLmRhdGEoZGF0YSlcbiAgICAgICAgLmVudGVyKCkuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgbGV0IGQgPSBkMy5zZWxlY3QodGhpcykuZGF0YSgpWzBdO1xuICAgICAgICAgIHJldHVybiBfdGhpcy5wbG90cy5jbGFzc2VzKCdwbG90JywgZC5sYWJlbCwgZC5sYWJlbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBydW4gZWFjaCBwbG90IHRocm91Z2ggaXQncyBvd24gcmVuZGVyaW5nIGZ1bmN0aW9uIGJhc2VkIG9uIHR5cGVcbiAgICAgIGNoYXJ0LnBsb3RzLmVhY2goZnVuY3Rpb24oZCkge1xuICAgICAgICBfdGhpcy5wbG90c1tkLnR5cGVdKGQzLnNlbGVjdCh0aGlzKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNoYXJ0O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZShwbG90KSB7XG5cbiAgICAgIHBsb3QuYXBwZW5kKCdwYXRoJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgKGQpID0+IF90aGlzLnBsb3RzLmNsYXNzZXMoJ2xpbmUnLCAnJywgZC5jb2xvcikpXG4gICAgICAgIC5hdHRyKCdkJywgKGQpID0+IHNldHRpbmdzLnBsb3RzLmxpbmUoZC5kYXRhKSk7XG5cbiAgICAgIHBsb3Quc2VsZWN0QWxsKCcuby1jaGFydF9fZG90JylcbiAgICAgICAgICAuZGF0YSgoZCkgPT4gZC5kYXRhKVxuICAgICAgICAuZW50ZXIoKS5hcHBlbmQoJ2NpcmNsZScpXG4gICAgICAgIC5hdHRycyh7XG4gICAgICAgICAgJ2N4Jzogc2V0dGluZ3MucGxvdHMubGluZS54KCksXG4gICAgICAgICAgJ2N5Jzogc2V0dGluZ3MucGxvdHMubGluZS55KCksXG4gICAgICAgICAgJ3InOiBDT05TVEFOVFMuRE9UU19SQURJVVNcbiAgICAgICAgfSkuYXR0cignY2xhc3MnLCBmdW5jdGlvbihkKSB7XG4gICAgICAgICAgICB2YXIgZCA9IGQzLnNlbGVjdCh0aGlzLnBhcmVudE5vZGUpLmRhdGEoKVswXTtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5wbG90cy5jbGFzc2VzKCdkb3RzJywgJycsIGQuY29sb3IpO1xuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJhcihwbG90KSB7XG5cbiAgICAgIGxldCBiYXJzID0gZGF0YS5maWx0ZXIoeCA9PiB4LnR5cGUgPT09ICdiYXInKTsgLy8gZ2V0IGp1c3QgdGhlIGJhciBwbG90c1xuICAgICAgbGV0IHAgPSBwbG90LmRhdGEoKVswXTsgLy8gZ2V0IHRoZSBwbG90J3MgZGF0YS9jb25maWd1cmF0aW9uXG4gICAgICBsZXQgbWF4ID0gTWF0aC5tYXgoMCwgcC5kYXRhLmxlbmd0aCk7IC8vIEkgdGhpbmsgdGhlIG1heCBiZSB0aGUgbWF4IGxlbmd0aCBvZiB0aGUgbGFyZ2VzdCBwbG90P1xuICAgICAgbGV0IHdpZHRoID0gKChzZXR0aW5ncy5yaWdodCAvIG1heCkgKiBDT05TVEFOVFMuQkFSX0dBUCApIC8gYmFycy5sZW5ndGg7IC8vIGNhbGN1bGF0ZSB0aGUgd2lkdGhcbiAgICAgIGxldCBjbGFzc2VzID0gX3RoaXMucGxvdHMuY2xhc3NlcygnYmFyJywgJycsIHAuY29sb3IpOyAvLyBzZXQgdGhlIGNvbG9yXG4gICAgICBsZXQgb3JkZXIgPSAoYmFycy5tYXAoKGQpID0+IGQubGFiZWwpLmluZGV4T2YocC5sYWJlbCkpICsgMTsgLy8gZ2V0IG9yZGVyIG9mIHRoaXMgcGxvdFxuICAgICAgbGV0IG9mZnNldCA9ICh3aWR0aCAqIG9yZGVyKSAtICgod2lkdGggKiBiYXJzLmxlbmd0aCkgLyAyKTsgLy8gY2FsY3VsYXRlIHRoZSBvZmZzZXRcblxuICAgICAgcGxvdC5zZWxlY3RBbGwoJy5vLWNoYXJ0X19iYXInKVxuICAgICAgICAgIC5kYXRhKChkKSA9PiBwLmRhdGEpXG4gICAgICAgIC5lbnRlcigpLmFwcGVuZCgncmVjdCcpXG4gICAgICAgIC5hdHRycyh7XG4gICAgICAgICAgJ2NsYXNzJzogY2xhc3NlcyxcbiAgICAgICAgICAnd2lkdGgnOiB3aWR0aCxcbiAgICAgICAgICAneCc6IChkKSA9PiBzZXR0aW5ncy5zY2FsZXMueChfdGhpcy50aW1lUGFyc2UoZFswXSkpIC0gb2Zmc2V0LFxuICAgICAgICAgICd5JzogKGQpID0+IHNldHRpbmdzLnNjYWxlcy55KE1hdGgubWF4KDAsIGRbMV0pKSxcbiAgICAgICAgICAnaGVpZ2h0JzogKGQpID0+IE1hdGguYWJzKFxuICAgICAgICAgICAgTWF0aC5taW4oc2V0dGluZ3Muc2NhbGVzLnkoMCksIHNldHRpbmdzLmJvdHRvbSkgLSBzZXR0aW5ncy5zY2FsZXMueShkWzFdKVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlKCkge1xuXG4gICAgICByZXR1cm4gX3RoaXMucGxvdHMuY3JlYXRlKCk7XG5cbiAgICB9XG5cbiAgfVxuXG4gICAgLy8gQXhpc1xuICBheGlzKHNldHRpbmdzLCBjaGFydCkge1xuXG4gICAgbGV0IF90aGlzID0gdGhpcztcblxuICAgIF90aGlzLmF4aXMuY3JlYXRlID0gY3JlYXRlO1xuICAgIF90aGlzLmF4aXMudXBkYXRlID0gdXBkYXRlO1xuICAgIF90aGlzLmF4aXMubGFiZWxzID0gbGFiZWxzO1xuICAgIF90aGlzLmF4aXMudGV4dCA9IHRleHQ7XG4gICAgX3RoaXMuYXhpcy5tb2RpZnkgPSBtb2RpZnk7XG4gICAgX3RoaXMuYXhpcy5jbGFzc2VzID0gY2xhc3NlcztcblxuICAgIHJldHVybiBfdGhpcy5heGlzO1xuXG4gICAgZnVuY3Rpb24gY2xhc3NlcyhLRVkpIHtcblxuICAgICAgbGV0IGMgPSB7XG4gICAgICAgICdheGlzX3RvcCc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcycsXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS10b3AnXG4gICAgICAgIF0sXG4gICAgICAgICdheGlzX2JvdHRvbSc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcycsXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS1ib3R0b20nXG4gICAgICAgIF0sXG4gICAgICAgICdheGlzX2xlZnQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy0tbGVmdCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2F4aXNfcmlnaHQnOiBbXG4gICAgICAgICAgJ28tY2hhcnRfX2F4aXMnLFxuICAgICAgICAgICdvLWNoYXJ0X19heGlzLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy0tcmlnaHQnXG4gICAgICAgIF0sXG4gICAgICAgICdsYWJlbF90b3AnOiBbXG4gICAgICAgICAgJ2ZpbGwtJyArIHNldHRpbmdzLmNvbG9ycy5sYWJlbHMsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsJyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXgnLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbC0tdG9wJ1xuICAgICAgICBdLFxuICAgICAgICAnbGFiZWxfYm90dG9tJzogW1xuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMubGFiZWxzLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbCcsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsLS14JyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLWJvdHRvbSdcbiAgICAgICAgXSxcbiAgICAgICAgJ2xhYmVsX2xlZnQnOiBbXG4gICAgICAgICAgJ2ZpbGwtJyArIHNldHRpbmdzLmNvbG9ycy5sYWJlbHMsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsJyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXknLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbC0tbGVmdCdcbiAgICAgICAgXSxcbiAgICAgICAgJ2xhYmVsX3JpZ2h0JzogW1xuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMubGFiZWxzLFxuICAgICAgICAgICdvLWNoYXJ0X19sYWJlbCcsXG4gICAgICAgICAgJ28tY2hhcnRfX2xhYmVsLS15JyxcbiAgICAgICAgICAnby1jaGFydF9fbGFiZWwtLXJpZ2h0J1xuICAgICAgICBdLFxuICAgICAgICAndGlja3MnOiBbXG4gICAgICAgICAgJ3RpY2snLFxuICAgICAgICAgICdmaWxsLScgKyBzZXR0aW5ncy5jb2xvcnMuYXhpc1xuICAgICAgICBdLFxuICAgICAgICAnbGluZV94JzogW1xuICAgICAgICAgICdvLWNoYXJ0X19heGlzLWdhcC0teCcsXG4gICAgICAgICAgJ3N0cm9rZS0nICsgc2V0dGluZ3MuY29sb3JzLmF4aXNcbiAgICAgICAgXSxcbiAgICAgICAgJ2xpbmVfeSc6IFtcbiAgICAgICAgICAnby1jaGFydF9fYXhpcy1nYXAtLXknLFxuICAgICAgICAgICdzdHJva2UtJyArIHNldHRpbmdzLmNvbG9ycy5heGlzXG4gICAgICAgIF1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNbS0VZXS5qb2luKCcgJyk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LmF4aXMgPSB7fTtcblxuICAgICAgY2hhcnQuYXhpcy54ID0gY2hhcnQuZy5hcHBlbmQoJ2cnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCBfdGhpcy5heGlzLmNsYXNzZXMoJ2F4aXNfYm90dG9tJykpXG5cbiAgICAgIGNoYXJ0LmF4aXMueSA9IGNoYXJ0LmcuYXBwZW5kKCdnJylcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgX3RoaXMuYXhpcy5jbGFzc2VzKCdheGlzX2xlZnQnKSlcblxuICAgICAgX3RoaXMuYXhpcy51cGRhdGUoKTtcblxuICAgICAgX3RoaXMuYXhpcy5tb2RpZnkoKTtcblxuICAgICAgcmV0dXJuIF90aGlzLmF4aXMubGFiZWxzKCk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1cGRhdGUoKSB7XG5cbiAgICAgIGNoYXJ0LmF4aXMueC5jYWxsKHNldHRpbmdzLmF4aXMueClcbiAgICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIF90aGlzLnRyYW5zbGF0ZSgwLCBzZXR0aW5ncy5pbm5lckhlaWdodCkpXG5cbiAgICAgIGNoYXJ0LmF4aXMueS5jYWxsKHNldHRpbmdzLmF4aXMueSk7XG5cbiAgICAgIGNoYXJ0LmF4aXMueC5zZWxlY3QoJy5vLWNoYXJ0X19heGlzLWdhcC0teCcpLmF0dHJzKHtcbiAgICAgICAgJ3gxJzogMCwgJ3kxJzogMCwgICd5Mic6IDAsXG4gICAgICAgICd4Mic6IHNldHRpbmdzLmlubmVyV2lkdGgsXG4gICAgICB9KTtcblxuICAgICAgY2hhcnQuYXhpcy55LnNlbGVjdCgnLm8tY2hhcnRfX2F4aXMtZ2FwLS15JykuYXR0cnMoe1xuICAgICAgICAneDEnOiAwLCAneTEnOiAwLCAneDInOiAwLFxuICAgICAgICAneTInOiBzZXR0aW5ncy5pbm5lckhlaWdodFxuICAgICAgfSk7XG5cbiAgICAgIGNoYXJ0Lmcuc2VsZWN0QWxsKCcudGljaycpLmF0dHIoJ2NsYXNzJywgX3RoaXMuYXhpcy5jbGFzc2VzKCd0aWNrcycpKTtcblxuICAgICAgLy8gcG9zaXRpb24gdGhlIHggYXhpcyBsYWJlbFxuICAgICAgY2hhcnQuZy5zZWxlY3QoJy5vLWNoYXJ0X19sYWJlbC0teCcpLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgeHQgPSBkMy5zZWxlY3QodGhpcykuc2VsZWN0KCd0ZXh0Jyk7XG4gICAgICAgIHZhciB4ID0gc2V0dGluZ3MubGVmdCArIChzZXR0aW5ncy5pbm5lcldpZHRoIC8gMik7XG4gICAgICAgIHZhciB5ID0gc2V0dGluZ3MuaGVpZ2h0IC0geHQubm9kZSgpLmdldEJCb3goKS5oZWlnaHRcbiAgICAgICAgcmV0dXJuIF90aGlzLnRyYW5zbGF0ZSh4LCB5KTtcbiAgICAgIH0pXG5cbiAgICAgIC8vIHBvc2l0aW9uIHRoZSB5IGF4aXMgbGFiZWxcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0KCcuby1jaGFydF9fbGFiZWwtLXknKS5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHggPSAwIC0gc2V0dGluZ3MubWFyZ2luWzNdICsgKGQzLnNlbGVjdCh0aGlzKS5ub2RlKCkuZ2V0QkJveCgpLmhlaWdodCk7XG4gICAgICAgIHZhciB5ID0gc2V0dGluZ3MuaW5uZXJIZWlnaHQgLyAyO1xuICAgICAgICByZXR1cm4gW190aGlzLnRyYW5zbGF0ZSh4LCB5KSwgJ3JvdGF0ZSgnKyAtOTAgKycpJ10uam9pbignICcpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjaGFydDtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxhYmVscygpIHtcblxuICAgICAgLy8gY3JlYXRlIGxhYmVsc1xuICAgICAgY2hhcnQuYXhpcy54LmxhYmVsID0gY2hhcnQuZy5hcHBlbmQoJ2cnKVxuICAgICAgICAuYXR0cignY2xhc3MnLCBfdGhpcy5heGlzLmNsYXNzZXMoJ2xhYmVsX2JvdHRvbScpKTtcblxuICAgICAgY2hhcnQuYXhpcy54LmxhYmVsLmFwcGVuZCgndGV4dCcpLmF0dHJzKHtcbiAgICAgICAgJ3RleHQtYW5jaG9yJzogJ21pZGRsZSdcbiAgICAgIH0pO1xuXG4gICAgICBjaGFydC5heGlzLnkubGFiZWwgPSBjaGFydC5nLmFwcGVuZCgnZycpXG4gICAgICAgIC5hdHRyKCdjbGFzcycsIF90aGlzLmF4aXMuY2xhc3NlcygnbGFiZWxfbGVmdCcpKTtcblxuICAgICAgY2hhcnQuYXhpcy55LmxhYmVsLmFwcGVuZCgndGV4dCcpLmF0dHJzKHtcbiAgICAgICAgJ3RleHQtYW5jaG9yJzogJ21pZGRsZSdcbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5heGlzLnRleHQoKTtcblxuICAgICAgcmV0dXJuIGNoYXJ0O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGV4dCgpIHtcblxuICAgICAgLy8gQWRkIHRleHQgdG8gdGhlIGxhYmVsIGNvbnRhaW5lcnNcbiAgICAgIGNoYXJ0Lmcuc2VsZWN0KCcuby1jaGFydF9fbGFiZWwtLXgnKS5zZWxlY3QoJ3RleHQnKVxuICAgICAgICAudGV4dChzZXR0aW5ncy5sYWJlbHMuYXhpcy54KTtcblxuICAgICAgY2hhcnQuZy5zZWxlY3QoJy5vLWNoYXJ0X19sYWJlbC0teScpLnNlbGVjdCgndGV4dCcpXG4gICAgICAgIC50ZXh0KHNldHRpbmdzLmxhYmVscy5heGlzLnkpO1xuXG4gICAgICBfdGhpcy5heGlzLnVwZGF0ZSgpO1xuXG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBjaGFuZ2VzIHRoZSBuYXRpdmUgYXhpcyBzdHlsaW5nIG9mIEQzXG4gICAgZnVuY3Rpb24gbW9kaWZ5KCkge1xuXG4gICAgICAvLyBBZGQgbGluZXMgdGhhdCB2aXN1YWxseSBjb25uZWN0IHRoZSB4IGF4aXMgdG8gdGhlIGNvcm5lclxuICAgICAgY2hhcnQuYXhpcy54LmFwcGVuZCgnbGluZScpLmF0dHJzKHtcbiAgICAgICAgJ3gxJzogMCwgJ3kxJzogMCwgJ3kyJzogMCxcbiAgICAgICAgJ3gyJzogc2V0dGluZ3MuaW5uZXJXaWR0aCxcbiAgICAgICAgJ2NsYXNzJzogX3RoaXMuYXhpcy5jbGFzc2VzKCdsaW5lX3gnKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIGhpZGUgdGhlIG9yaWdpbmFsIHggYXhpcyBkb21haW5cbiAgICAgIGNoYXJ0LmF4aXMueC5zZWxlY3QoJy5kb21haW4nKS5hdHRyKCdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgICAgLy8gQWRkIGxpbmVzIHRoYXQgdmlzdWFsbHkgY29ubmVjdCB0aGUgeSBheGlzIHRvIHRoZSBjb3JuZXJcbiAgICAgIGNoYXJ0LmF4aXMueS5hcHBlbmQoJ2xpbmUnKS5hdHRycyh7XG4gICAgICAgICd4MSc6IDAsICd5MSc6IDAsICd4Mic6IDAsXG4gICAgICAgICd5Mic6IHNldHRpbmdzLmlubmVySGVpZ2h0LFxuICAgICAgICAnY2xhc3MnOiBfdGhpcy5heGlzLmNsYXNzZXMoJ2xpbmVfeScpXG4gICAgICB9KTtcblxuICAgICAgLy8gaGlkZSB0aGUgb3JpZ2luYWwgeSBheGlzIGRvbWFpblxuICAgICAgY2hhcnQuYXhpcy55LnNlbGVjdCgnLmRvbWFpbicpLmF0dHIoJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgfVxuXG4gIH1cblxuICAvLyBMZWdlbmRcblxufVxuXG5leHBvcnQgZGVmYXVsdCBvQ2hhcnRzOyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG9DaGFydHMgZnJvbSAnLi9tb2R1bGVzL28tY2hhcnRzJztcbi8qKiBpbXBvcnQgbW9kdWxlcyBoZXJlIGFzIHRoZXkgYXJlIHdyaXR0ZW4gKi9cblxuY2xhc3MgbnljbyB7XG5cbiAgY2hhcnRzKHNldHRpbmdzLCBkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBvQ2hhcnRzKHNldHRpbmdzLCBkYXRhKS5pbml0KCk7XG4gIH1cblxuICAvKiogYWRkIEFQSXMgaGVyZSBhcyB0aGV5IGFyZSB3cml0dGVuICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgbnljbzsiXSwibmFtZXMiOlsiYXNjZW5kaW5nQ29tcGFyYXRvciIsImYiLCJkIiwieCIsImFzY2VuZGluZyIsInRpY2tJbmNyZW1lbnQiLCJzdGFydCIsInN0b3AiLCJjb3VudCIsInN0ZXAiLCJNYXRoIiwibWF4IiwicG93ZXIiLCJmbG9vciIsImxvZyIsIkxOMTAiLCJlcnJvciIsInBvdyIsImUxMCIsImU1IiwiZTIiLCJ0aWNrU3RlcCIsInN0ZXAwIiwiYWJzIiwic3RlcDEiLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsInkiLCJjZW50ZXIiLCJzY2FsZSIsIm9mZnNldCIsImJhbmR3aWR0aCIsInJvdW5kIiwiZW50ZXJpbmciLCJ0aGlzIiwiX19heGlzIiwiYXhpcyIsIm9yaWVudCIsImNvbnRleHQiLCJ2YWx1ZXMiLCJ0aWNrVmFsdWVzIiwidGlja3MiLCJhcHBseSIsInRpY2tBcmd1bWVudHMiLCJkb21haW4iLCJmb3JtYXQiLCJ0aWNrRm9ybWF0IiwiaWRlbnRpdHkiLCJzcGFjaW5nIiwidGlja1NpemVJbm5lciIsInRpY2tQYWRkaW5nIiwicmFuZ2UiLCJyYW5nZTAiLCJyYW5nZTEiLCJsZW5ndGgiLCJwb3NpdGlvbiIsImNvcHkiLCJzZWxlY3Rpb24iLCJwYXRoIiwic2VsZWN0QWxsIiwiZGF0YSIsInRpY2siLCJvcmRlciIsInRpY2tFeGl0IiwiZXhpdCIsInRpY2tFbnRlciIsImVudGVyIiwiYXBwZW5kIiwiYXR0ciIsImxpbmUiLCJzZWxlY3QiLCJ0ZXh0IiwibWVyZ2UiLCJpbnNlcnQiLCJrIiwidG9wIiwiYm90dG9tIiwidHJhbnNpdGlvbiIsImVwc2lsb24iLCJpc0Zpbml0ZSIsInRyYW5zZm9ybSIsImdldEF0dHJpYnV0ZSIsInAiLCJwYXJlbnROb2RlIiwicmVtb3ZlIiwibGVmdCIsInJpZ2h0IiwidGlja1NpemVPdXRlciIsImZpbHRlciIsImVhY2giLCJfIiwiYXJndW1lbnRzIiwic2xpY2UiLCJjYWxsIiwidGlja1NpemUiLCJheGlzQm90dG9tIiwiYXhpc0xlZnQiLCJkaXNwYXRjaCIsInQiLCJpIiwibiIsIkVycm9yIiwiRGlzcGF0Y2giLCJwYXJzZVR5cGVuYW1lcyIsInR5cGVuYW1lcyIsInR5cGVzIiwidHJpbSIsInNwbGl0IiwibWFwIiwibmFtZSIsImluZGV4T2YiLCJoYXNPd25Qcm9wZXJ0eSIsInR5cGUiLCJnZXQiLCJjIiwidmFsdWUiLCJzZXQiLCJjYWxsYmFjayIsIm5vb3AiLCJjb25jYXQiLCJwdXNoIiwiY3JlYXRvckluaGVyaXQiLCJkb2N1bWVudCIsIm93bmVyRG9jdW1lbnQiLCJ1cmkiLCJuYW1lc3BhY2VVUkkiLCJ4aHRtbCIsImRvY3VtZW50RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjcmVhdGVFbGVtZW50TlMiLCJjcmVhdG9yRml4ZWQiLCJmdWxsbmFtZSIsInNwYWNlIiwibG9jYWwiLCJmaWx0ZXJDb250ZXh0TGlzdGVuZXIiLCJsaXN0ZW5lciIsImluZGV4IiwiZ3JvdXAiLCJjb250ZXh0TGlzdGVuZXIiLCJldmVudCIsInJlbGF0ZWQiLCJyZWxhdGVkVGFyZ2V0IiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJldmVudDEiLCJldmVudDAiLCJfX2RhdGFfXyIsIm9uUmVtb3ZlIiwidHlwZW5hbWUiLCJvbiIsIl9fb24iLCJvIiwiaiIsIm0iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uQWRkIiwid3JhcCIsImZpbHRlckV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJub25lIiwiZW1wdHkiLCJFbnRlck5vZGUiLCJwYXJlbnQiLCJkYXR1bSIsIl9uZXh0IiwiX3BhcmVudCIsImJpbmRJbmRleCIsInVwZGF0ZSIsIm5vZGUiLCJncm91cExlbmd0aCIsImRhdGFMZW5ndGgiLCJiaW5kS2V5Iiwia2V5Iiwia2V5VmFsdWUiLCJub2RlQnlLZXlWYWx1ZSIsImtleVZhbHVlcyIsIkFycmF5Iiwia2V5UHJlZml4IiwiYSIsImIiLCJOYU4iLCJhdHRyUmVtb3ZlIiwicmVtb3ZlQXR0cmlidXRlIiwiYXR0clJlbW92ZU5TIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJhdHRyQ29uc3RhbnQiLCJzZXRBdHRyaWJ1dGUiLCJhdHRyQ29uc3RhbnROUyIsInNldEF0dHJpYnV0ZU5TIiwiYXR0ckZ1bmN0aW9uIiwidiIsImF0dHJGdW5jdGlvbk5TIiwic3R5bGVSZW1vdmUiLCJzdHlsZSIsInJlbW92ZVByb3BlcnR5Iiwic3R5bGVDb25zdGFudCIsInByaW9yaXR5Iiwic2V0UHJvcGVydHkiLCJzdHlsZUZ1bmN0aW9uIiwic3R5bGVWYWx1ZSIsImdldFByb3BlcnR5VmFsdWUiLCJkZWZhdWx0VmlldyIsImdldENvbXB1dGVkU3R5bGUiLCJwcm9wZXJ0eVJlbW92ZSIsInByb3BlcnR5Q29uc3RhbnQiLCJwcm9wZXJ0eUZ1bmN0aW9uIiwiY2xhc3NBcnJheSIsInN0cmluZyIsImNsYXNzTGlzdCIsIkNsYXNzTGlzdCIsIl9ub2RlIiwiX25hbWVzIiwiY2xhc3NlZEFkZCIsIm5hbWVzIiwibGlzdCIsImFkZCIsImNsYXNzZWRSZW1vdmUiLCJjbGFzc2VkVHJ1ZSIsImNsYXNzZWRGYWxzZSIsImNsYXNzZWRGdW5jdGlvbiIsInRleHRSZW1vdmUiLCJ0ZXh0Q29udGVudCIsInRleHRDb25zdGFudCIsInRleHRGdW5jdGlvbiIsImh0bWxSZW1vdmUiLCJpbm5lckhUTUwiLCJodG1sQ29uc3RhbnQiLCJodG1sRnVuY3Rpb24iLCJyYWlzZSIsIm5leHRTaWJsaW5nIiwiYXBwZW5kQ2hpbGQiLCJsb3dlciIsInByZXZpb3VzU2libGluZyIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJjb25zdGFudE51bGwiLCJyZW1vdmVDaGlsZCIsImRpc3BhdGNoRXZlbnQiLCJwYXJhbXMiLCJ3aW5kb3ciLCJDdXN0b21FdmVudCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJkZXRhaWwiLCJkaXNwYXRjaENvbnN0YW50IiwiZGlzcGF0Y2hGdW5jdGlvbiIsIlNlbGVjdGlvbiIsImdyb3VwcyIsInBhcmVudHMiLCJfZ3JvdXBzIiwiX3BhcmVudHMiLCJyb290IiwiZXh0ZW5kIiwiZGVmaW5pdGlvbiIsInByb3RvdHlwZSIsIk9iamVjdCIsImNyZWF0ZSIsIkNvbG9yIiwiY29sb3IiLCJ0b0xvd2VyQ2FzZSIsInJlSGV4MyIsImV4ZWMiLCJwYXJzZUludCIsIlJnYiIsInJlSGV4NiIsInJnYm4iLCJyZVJnYkludGVnZXIiLCJyZVJnYlBlcmNlbnQiLCJyZVJnYmFJbnRlZ2VyIiwicmdiYSIsInJlUmdiYVBlcmNlbnQiLCJyZUhzbFBlcmNlbnQiLCJoc2xhIiwicmVIc2xhUGVyY2VudCIsIm5hbWVkIiwiciIsImciLCJyZ2JDb252ZXJ0IiwicmdiIiwib3BhY2l0eSIsImgiLCJzIiwibCIsIkhzbCIsImhzbENvbnZlcnQiLCJtaW4iLCJoc2wiLCJoc2wycmdiIiwibTEiLCJtMiIsImxhYkNvbnZlcnQiLCJMYWIiLCJIY2wiLCJkZWcycmFkIiwiY29zIiwic2luIiwicmdiMnh5eiIsInh5ejJsYWIiLCJYbiIsIlluIiwiWm4iLCJsYWIiLCJ0MyIsInQyIiwidDAiLCJsYWIyeHl6IiwidDEiLCJ4eXoycmdiIiwiaGNsQ29udmVydCIsImF0YW4yIiwicmFkMmRlZyIsInNxcnQiLCJoY2wiLCJjdWJlaGVsaXhDb252ZXJ0IiwiQ3ViZWhlbGl4IiwiQkNfREEiLCJFRCIsIkVCIiwiYmwiLCJFIiwiQyIsIkQiLCJjdWJlaGVsaXgiLCJsaW5lYXIiLCJleHBvbmVudGlhbCIsImh1ZSIsImNvbnN0YW50IiwiaXNOYU4iLCJnYW1tYSIsIm5vZ2FtbWEiLCJ6ZXJvIiwib25lIiwicGFyc2VDc3MiLCJjc3NOb2RlIiwiY3NzUm9vdCIsImNzc1ZpZXciLCJkZWNvbXBvc2UiLCJwYXJzZVN2ZyIsInN2Z05vZGUiLCJiYXNlVmFsIiwiY29uc29saWRhdGUiLCJtYXRyaXgiLCJlIiwiaW50ZXJwb2xhdGVUcmFuc2Zvcm0iLCJwYXJzZSIsInB4Q29tbWEiLCJweFBhcmVuIiwiZGVnUGFyZW4iLCJwb3AiLCJ0cmFuc2xhdGUiLCJ4YSIsInlhIiwieGIiLCJ5YiIsInEiLCJudW1iZXIiLCJyb3RhdGUiLCJza2V3WCIsInNjYWxlWCIsInNjYWxlWSIsImpvaW4iLCJjdWJlaGVsaXhHYW1tYSIsImVuZCIsImNvbG9yQ3ViZWhlbGl4Iiwibm93IiwiY2xvY2tOb3ciLCJzZXRGcmFtZSIsImNsZWFyTm93IiwiY2xvY2siLCJjbG9ja1NrZXciLCJUaW1lciIsIl9jYWxsIiwiX3RpbWUiLCJ0aW1lciIsImRlbGF5IiwidGltZSIsInJlc3RhcnQiLCJ0aW1lckZsdXNoIiwiZnJhbWUiLCJ0YXNrSGVhZCIsIndha2UiLCJjbG9ja0xhc3QiLCJ0aW1lb3V0IiwibmFwIiwicG9rZSIsInBva2VEZWxheSIsIkluZmluaXR5IiwidGFza1RhaWwiLCJzbGVlcCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJpbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImluaXQiLCJpZCIsInNjaGVkdWxlIiwiX190cmFuc2l0aW9uIiwic3RhdGUiLCJDUkVBVEVEIiwiU1RBUlRJTkciLCJzZWxmIiwiZWxhcHNlZCIsIlNDSEVEVUxFRCIsInNjaGVkdWxlcyIsIlNUQVJURUQiLCJSVU5OSU5HIiwiRU5ERUQiLCJ0d2VlbiIsImR1cmF0aW9uIiwiZWFzZSIsIkVORElORyIsInR3ZWVuUmVtb3ZlIiwidHdlZW4wIiwidHdlZW4xIiwic3BsaWNlIiwidHdlZW5GdW5jdGlvbiIsInR3ZWVuVmFsdWUiLCJfaWQiLCJpbnRlcnBvbGF0ZSIsInZhbHVlMSIsInZhbHVlMDAiLCJpbnRlcnBvbGF0ZTAiLCJ2YWx1ZTAiLCJnZXRBdHRyaWJ1dGVOUyIsInZhbHVlMTAiLCJhdHRyVHdlZW5OUyIsIl92YWx1ZSIsImF0dHJUd2VlbiIsImRlbGF5RnVuY3Rpb24iLCJkZWxheUNvbnN0YW50IiwiZHVyYXRpb25GdW5jdGlvbiIsImR1cmF0aW9uQ29uc3RhbnQiLCJlYXNlQ29uc3RhbnQiLCJldmVyeSIsIm9uRnVuY3Rpb24iLCJvbjAiLCJvbjEiLCJzaXQiLCJyZW1vdmVGdW5jdGlvbiIsInN0eWxlUmVtb3ZlRW5kIiwic3R5bGVUd2VlbiIsIlRyYW5zaXRpb24iLCJfbmFtZSIsIm5ld0lkIiwiY3ViaWNJbk91dCIsImluaGVyaXQiLCJ0aW1pbmciLCJkZWZhdWx0VGltaW5nIiwiUGF0aCIsIl94MCIsIl95MCIsIl94MSIsIl95MSIsIk1hcCIsIm9iamVjdCIsImlzQXJyYXkiLCJTZXQiLCJvYmplY3RDb252ZXJ0ZXIiLCJjb2x1bW5zIiwiRnVuY3Rpb24iLCJKU09OIiwic3RyaW5naWZ5IiwiY3VzdG9tQ29udmVydGVyIiwicm93IiwiaW5mZXJDb2x1bW5zIiwicm93cyIsImNvbHVtblNldCIsImZvckVhY2giLCJjb2x1bW4iLCJ0cmVlIiwieG0iLCJ5bSIsInhwIiwieXAiLCJfcm9vdCIsImxlYWYiLCJ4MCIsInkwIiwieDEiLCJ5MSIsIl94IiwiX3kiLCJuZXh0IiwiYWRkQWxsIiwieHoiLCJ5eiIsImNvdmVyIiwicmVtb3ZlQWxsIiwiZGVmYXVsdFgiLCJkZWZhdWx0WSIsInF1YWR0cmVlIiwibm9kZXMiLCJRdWFkdHJlZSIsInVuZGVmaW5lZCIsImxlYWZfY29weSIsImZvcm1hdFNwZWNpZmllciIsInNwZWNpZmllciIsIkZvcm1hdFNwZWNpZmllciIsIm1hdGNoIiwicmUiLCJmaWxsIiwiYWxpZ24iLCJzaWduIiwic3ltYm9sIiwid2lkdGgiLCJjb21tYSIsInByZWNpc2lvbiIsImZvcm1hdFR5cGVzIiwiQWRkZXIiLCJyZXNldCIsImFkZGVyIiwiYnYiLCJhdiIsImFjb3MiLCJwaSIsImFzaW4iLCJoYWxmUGkiLCJhemltdXRoYWxSYXciLCJjeCIsImN5IiwiYXppbXV0aGFsSW52ZXJ0IiwiYW5nbGUiLCJ6Iiwic2MiLCJjYyIsInN1bSIsImNoaWxkcmVuIiwibGVhc3RDb21tb25BbmNlc3RvciIsImFOb2RlcyIsImFuY2VzdG9ycyIsImJOb2RlcyIsImhpZXJhcmNoeSIsImNoaWxkIiwiY2hpbGRzIiwiTm9kZSIsInZhbHVlZCIsImRlZmF1bHRDaGlsZHJlbiIsImRlcHRoIiwiZWFjaEJlZm9yZSIsImNvbXB1dGVIZWlnaHQiLCJub2RlX2NvcHkiLCJjb3B5RGF0YSIsImhlaWdodCIsIlRyZWVOb2RlIiwiQSIsIl9zdGFydCIsIl90YXNrcyIsIl9lbmRlZCIsIl9hY3RpdmUiLCJhYm9ydCIsIl9kYXRhIiwiX3dhaXRpbmciLCJfc2l6ZSIsIm5vYWJvcnQiLCJfZXJyb3IiLCJtYXliZU5vdGlmeSIsImRlaW50ZXJwb2xhdGVMaW5lYXIiLCJkZWludGVycG9sYXRlQ2xhbXAiLCJkZWludGVycG9sYXRlIiwicmVpbnRlcnBvbGF0ZUNsYW1wIiwicmVpbnRlcnBvbGF0ZSIsImJpbWFwIiwiZDAiLCJkMSIsInIwIiwicjEiLCJwb2x5bWFwIiwicmV2ZXJzZSIsImJpc2VjdCIsInNvdXJjZSIsInRhcmdldCIsImNsYW1wIiwiY29udGludW91cyIsInJlc2NhbGUiLCJwaWVjZXdpc2UiLCJvdXRwdXQiLCJpbnB1dCIsInVuaXQiLCJpbnRlcnBvbGF0ZVZhbHVlIiwiaW52ZXJ0IiwicmFuZ2VSb3VuZCIsImludGVycG9sYXRlUm91bmQiLCJsaW5lYXJpc2giLCJuaWNlIiwiaTAiLCJpMSIsImNlaWwiLCJuZXdJbnRlcnZhbCIsImZsb29yaSIsIm9mZnNldGkiLCJmaWVsZCIsImRhdGUiLCJEYXRlIiwidGVzdCIsInNldFRpbWUiLCJ3ZWVrZGF5Iiwic2V0RGF0ZSIsImdldERhdGUiLCJnZXREYXkiLCJzZXRIb3VycyIsImdldFRpbWV6b25lT2Zmc2V0IiwiZHVyYXRpb25NaW51dGUiLCJkdXJhdGlvbldlZWsiLCJ1dGNXZWVrZGF5Iiwic2V0VVRDRGF0ZSIsImdldFVUQ0RhdGUiLCJnZXRVVENEYXkiLCJzZXRVVENIb3VycyIsImxvY2FsRGF0ZSIsIkgiLCJNIiwiUyIsIkwiLCJzZXRGdWxsWWVhciIsInV0Y0RhdGUiLCJVVEMiLCJzZXRVVENGdWxsWWVhciIsIm5ld1llYXIiLCJmb3JtYXRMb2NhbGUiLCJsb2NhbGUiLCJuZXdGb3JtYXQiLCJmb3JtYXRzIiwicGFkIiwiY2hhckNvZGVBdCIsInBhZHMiLCJjaGFyQXQiLCJuZXdQYXJzZSIsIm5ld0RhdGUiLCJwYXJzZVNwZWNpZmllciIsInciLCJkYXkiLCJXIiwiVSIsIloiLCJwYXJzZXMiLCJwYXJzZVBlcmlvZCIsInBlcmlvZFJlIiwicGVyaW9kTG9va3VwIiwicGFyc2VTaG9ydFdlZWtkYXkiLCJzaG9ydFdlZWtkYXlSZSIsInNob3J0V2Vla2RheUxvb2t1cCIsInBhcnNlV2Vla2RheSIsIndlZWtkYXlSZSIsIndlZWtkYXlMb29rdXAiLCJwYXJzZVNob3J0TW9udGgiLCJzaG9ydE1vbnRoUmUiLCJzaG9ydE1vbnRoTG9va3VwIiwicGFyc2VNb250aCIsIm1vbnRoUmUiLCJtb250aExvb2t1cCIsInBhcnNlTG9jYWxlRGF0ZVRpbWUiLCJsb2NhbGVfZGF0ZVRpbWUiLCJwYXJzZUxvY2FsZURhdGUiLCJsb2NhbGVfZGF0ZSIsInBhcnNlTG9jYWxlVGltZSIsImxvY2FsZV90aW1lIiwiZm9ybWF0U2hvcnRXZWVrZGF5IiwibG9jYWxlX3Nob3J0V2Vla2RheXMiLCJmb3JtYXRXZWVrZGF5IiwibG9jYWxlX3dlZWtkYXlzIiwiZm9ybWF0U2hvcnRNb250aCIsImxvY2FsZV9zaG9ydE1vbnRocyIsImdldE1vbnRoIiwiZm9ybWF0TW9udGgiLCJsb2NhbGVfbW9udGhzIiwiZm9ybWF0UGVyaW9kIiwibG9jYWxlX3BlcmlvZHMiLCJnZXRIb3VycyIsImZvcm1hdFVUQ1Nob3J0V2Vla2RheSIsImZvcm1hdFVUQ1dlZWtkYXkiLCJmb3JtYXRVVENTaG9ydE1vbnRoIiwiZ2V0VVRDTW9udGgiLCJmb3JtYXRVVENNb250aCIsImZvcm1hdFVUQ1BlcmlvZCIsImdldFVUQ0hvdXJzIiwiZGF0ZVRpbWUiLCJwZXJpb2RzIiwiZGF5cyIsInNob3J0RGF5cyIsIm1vbnRocyIsInNob3J0TW9udGhzIiwiZm9ybWF0UmUiLCJmb3JtYXRMb29rdXAiLCJCIiwiZm9ybWF0RGF5T2ZNb250aCIsImZvcm1hdEhvdXIyNCIsIkkiLCJmb3JtYXRIb3VyMTIiLCJmb3JtYXREYXlPZlllYXIiLCJmb3JtYXRNaWxsaXNlY29uZHMiLCJmb3JtYXRNb250aE51bWJlciIsImZvcm1hdE1pbnV0ZXMiLCJmb3JtYXRTZWNvbmRzIiwiZm9ybWF0V2Vla051bWJlclN1bmRheSIsImZvcm1hdFdlZWtkYXlOdW1iZXIiLCJmb3JtYXRXZWVrTnVtYmVyTW9uZGF5IiwiWCIsImZvcm1hdFllYXIiLCJZIiwiZm9ybWF0RnVsbFllYXIiLCJmb3JtYXRab25lIiwiJSIsImZvcm1hdExpdGVyYWxQZXJjZW50IiwidXRjRm9ybWF0cyIsImZvcm1hdFVUQ0RheU9mTW9udGgiLCJmb3JtYXRVVENIb3VyMjQiLCJmb3JtYXRVVENIb3VyMTIiLCJmb3JtYXRVVENEYXlPZlllYXIiLCJmb3JtYXRVVENNaWxsaXNlY29uZHMiLCJmb3JtYXRVVENNb250aE51bWJlciIsImZvcm1hdFVUQ01pbnV0ZXMiLCJmb3JtYXRVVENTZWNvbmRzIiwiZm9ybWF0VVRDV2Vla051bWJlclN1bmRheSIsImZvcm1hdFVUQ1dlZWtkYXlOdW1iZXIiLCJmb3JtYXRVVENXZWVrTnVtYmVyTW9uZGF5IiwiZm9ybWF0VVRDWWVhciIsImZvcm1hdFVUQ0Z1bGxZZWFyIiwiZm9ybWF0VVRDWm9uZSIsInBhcnNlRGF5T2ZNb250aCIsInBhcnNlSG91cjI0IiwicGFyc2VEYXlPZlllYXIiLCJwYXJzZU1pbGxpc2Vjb25kcyIsInBhcnNlTW9udGhOdW1iZXIiLCJwYXJzZU1pbnV0ZXMiLCJwYXJzZVNlY29uZHMiLCJwYXJzZVdlZWtOdW1iZXJTdW5kYXkiLCJwYXJzZVdlZWtkYXlOdW1iZXIiLCJwYXJzZVdlZWtOdW1iZXJNb25kYXkiLCJwYXJzZVllYXIiLCJwYXJzZUZ1bGxZZWFyIiwicGFyc2Vab25lIiwicGFyc2VMaXRlcmFsUGVyY2VudCIsInRvU3RyaW5nIiwidXRjRm9ybWF0IiwidXRjUGFyc2UiLCJyZXF1b3RlIiwicmVwbGFjZSIsInJlcXVvdGVSZSIsIlJlZ0V4cCIsIm51bWJlclJlIiwicGVyY2VudFJlIiwidGltZURheSIsInRpbWVZZWFyIiwiZ2V0TWlsbGlzZWNvbmRzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJ0aW1lU3VuZGF5IiwidGltZU1vbmRheSIsImdldEZ1bGxZZWFyIiwidXRjRGF5IiwidXRjWWVhciIsImdldFVUQ01pbGxpc2Vjb25kcyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwidXRjU3VuZGF5IiwidXRjTW9uZGF5IiwiZ2V0VVRDRnVsbFllYXIiLCJmb3JtYXRJc29OYXRpdmUiLCJ0b0lTT1N0cmluZyIsInBhcnNlSXNvTmF0aXZlIiwiY2FsZW5kYXIiLCJ5ZWFyIiwibW9udGgiLCJ3ZWVrIiwiaG91ciIsIm1pbnV0ZSIsInNlY29uZCIsIm1pbGxpc2Vjb25kIiwiZm9ybWF0TWlsbGlzZWNvbmQiLCJmb3JtYXRTZWNvbmQiLCJmb3JtYXRNaW51dGUiLCJmb3JtYXRIb3VyIiwiZm9ybWF0RGF5IiwiZm9ybWF0V2VlayIsInRpY2tJbnRlcnZhbCIsImJpc2VjdG9yIiwidGlja0ludGVydmFscyIsImR1cmF0aW9uWWVhciIsImR1cmF0aW9uU2Vjb25kIiwiZHVyYXRpb25Ib3VyIiwiZHVyYXRpb25EYXkiLCJkdXJhdGlvbk1vbnRoIiwiTGluZWFyIiwiX2NvbnRleHQiLCJzbG9wZTMiLCJ0aGF0IiwieDIiLCJ5MiIsImgwIiwiaDEiLCJzMCIsInMxIiwic2xvcGUyIiwicG9pbnQiLCJkeCIsImJlemllckN1cnZlVG8iLCJNb25vdG9uZVgiLCJNb25vdG9uZVkiLCJSZWZsZWN0Q29udGV4dCIsImF0dHJzRnVuY3Rpb24iLCJhdHRyc09iamVjdCIsInN0eWxlc0Z1bmN0aW9uIiwic3R5bGVzT2JqZWN0IiwicHJvcGVydGllc0Z1bmN0aW9uIiwicHJvcGVydHkiLCJwcm9wZXJ0aWVzT2JqZWN0IiwiY29tcGFyZSIsImxvIiwiaGkiLCJtaWQiLCJiaXNlY3RSaWdodCIsInZhbHVlb2YiLCJjb25zdHJ1Y3RvciIsIlQiLCJhcmdzIiwic3ZnIiwieGxpbmsiLCJ4bWwiLCJ4bWxucyIsInByZWZpeCIsIm5hbWVzcGFjZXMiLCJuYW1lc3BhY2UiLCJtYXRjaGVyIiwic2VsZWN0b3IiLCJtYXRjaGVzIiwiZWxlbWVudCIsInZlbmRvck1hdGNoZXMiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsInF1ZXJ5U2VsZWN0b3IiLCJzdWJncm91cHMiLCJzdWJub2RlIiwic3ViZ3JvdXAiLCJxdWVyeVNlbGVjdG9yQWxsIiwic2VsZWN0b3JBbGwiLCJfZW50ZXIiLCJzcGFyc2UiLCJzaXplIiwiYmluZCIsImVudGVyR3JvdXAiLCJ1cGRhdGVHcm91cCIsInByZXZpb3VzIiwiX2V4aXQiLCJncm91cHMwIiwiZ3JvdXBzMSIsIm0wIiwibWVyZ2VzIiwiZ3JvdXAwIiwiZ3JvdXAxIiwiY29tcGFyZU5vZGUiLCJzb3J0Z3JvdXBzIiwic29ydGdyb3VwIiwic29ydCIsImNvbnRhaW5zIiwiY3JlYXRvciIsImJlZm9yZSIsInNlbGVjdGlvbl9zZWxlY3QiLCJzZWxlY3Rpb25fc2VsZWN0QWxsIiwic2VsZWN0aW9uX2ZpbHRlciIsInNlbGVjdGlvbl9kYXRhIiwic2VsZWN0aW9uX2VudGVyIiwic2VsZWN0aW9uX2V4aXQiLCJzZWxlY3Rpb25fbWVyZ2UiLCJzZWxlY3Rpb25fb3JkZXIiLCJzZWxlY3Rpb25fc29ydCIsInNlbGVjdGlvbl9jYWxsIiwic2VsZWN0aW9uX25vZGVzIiwic2VsZWN0aW9uX25vZGUiLCJzZWxlY3Rpb25fc2l6ZSIsInNlbGVjdGlvbl9lbXB0eSIsInNlbGVjdGlvbl9lYWNoIiwic2VsZWN0aW9uX2F0dHIiLCJzZWxlY3Rpb25fc3R5bGUiLCJzZWxlY3Rpb25fcHJvcGVydHkiLCJjbGFzc2VkIiwic2VsZWN0aW9uX2NsYXNzZWQiLCJzZWxlY3Rpb25fdGV4dCIsImh0bWwiLCJzZWxlY3Rpb25faHRtbCIsInNlbGVjdGlvbl9yYWlzZSIsInNlbGVjdGlvbl9sb3dlciIsInNlbGVjdGlvbl9hcHBlbmQiLCJzZWxlY3Rpb25faW5zZXJ0Iiwic2VsZWN0aW9uX3JlbW92ZSIsInNlbGVjdGlvbl9kYXR1bSIsInNlbGVjdGlvbl9vbiIsInNlbGVjdGlvbl9kaXNwYXRjaCIsImZhY3RvcnkiLCJyZUkiLCJyZU4iLCJyZVAiLCJhbGljZWJsdWUiLCJhbnRpcXVld2hpdGUiLCJhcXVhIiwiYXF1YW1hcmluZSIsImF6dXJlIiwiYmVpZ2UiLCJiaXNxdWUiLCJibGFjayIsImJsYW5jaGVkYWxtb25kIiwiYmx1ZSIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImNhZGV0Ymx1ZSIsImNoYXJ0cmV1c2UiLCJjaG9jb2xhdGUiLCJjb3JhbCIsImNvcm5mbG93ZXJibHVlIiwiY29ybnNpbGsiLCJjcmltc29uIiwiY3lhbiIsImRhcmtibHVlIiwiZGFya2N5YW4iLCJkYXJrZ29sZGVucm9kIiwiZGFya2dyYXkiLCJkYXJrZ3JlZW4iLCJkYXJrZ3JleSIsImRhcmtraGFraSIsImRhcmttYWdlbnRhIiwiZGFya29saXZlZ3JlZW4iLCJkYXJrb3JhbmdlIiwiZGFya29yY2hpZCIsImRhcmtyZWQiLCJkYXJrc2FsbW9uIiwiZGFya3NlYWdyZWVuIiwiZGFya3NsYXRlYmx1ZSIsImRhcmtzbGF0ZWdyYXkiLCJkYXJrc2xhdGVncmV5IiwiZGFya3R1cnF1b2lzZSIsImRhcmt2aW9sZXQiLCJkZWVwcGluayIsImRlZXBza3libHVlIiwiZGltZ3JheSIsImRpbWdyZXkiLCJkb2RnZXJibHVlIiwiZmlyZWJyaWNrIiwiZmxvcmFsd2hpdGUiLCJmb3Jlc3RncmVlbiIsImZ1Y2hzaWEiLCJnYWluc2Jvcm8iLCJnaG9zdHdoaXRlIiwiZ29sZCIsImdvbGRlbnJvZCIsImdyYXkiLCJncmVlbiIsImdyZWVueWVsbG93IiwiZ3JleSIsImhvbmV5ZGV3IiwiaG90cGluayIsImluZGlhbnJlZCIsImluZGlnbyIsIml2b3J5Iiwia2hha2kiLCJsYXZlbmRlciIsImxhdmVuZGVyYmx1c2giLCJsYXduZ3JlZW4iLCJsZW1vbmNoaWZmb24iLCJsaWdodGJsdWUiLCJsaWdodGNvcmFsIiwibGlnaHRjeWFuIiwibGlnaHRnb2xkZW5yb2R5ZWxsb3ciLCJsaWdodGdyYXkiLCJsaWdodGdyZWVuIiwibGlnaHRncmV5IiwibGlnaHRwaW5rIiwibGlnaHRzYWxtb24iLCJsaWdodHNlYWdyZWVuIiwibGlnaHRza3libHVlIiwibGlnaHRzbGF0ZWdyYXkiLCJsaWdodHNsYXRlZ3JleSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lIiwibGltZWdyZWVuIiwibGluZW4iLCJtYWdlbnRhIiwibWFyb29uIiwibWVkaXVtYXF1YW1hcmluZSIsIm1lZGl1bWJsdWUiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJtZWRpdW1zZWFncmVlbiIsIm1lZGl1bXNsYXRlYmx1ZSIsIm1lZGl1bXNwcmluZ2dyZWVuIiwibWVkaXVtdHVycXVvaXNlIiwibWVkaXVtdmlvbGV0cmVkIiwibWlkbmlnaHRibHVlIiwibWludGNyZWFtIiwibWlzdHlyb3NlIiwibW9jY2FzaW4iLCJuYXZham93aGl0ZSIsIm5hdnkiLCJvbGRsYWNlIiwib2xpdmUiLCJvbGl2ZWRyYWIiLCJvcmFuZ2UiLCJvcmFuZ2VyZWQiLCJvcmNoaWQiLCJwYWxlZ29sZGVucm9kIiwicGFsZWdyZWVuIiwicGFsZXR1cnF1b2lzZSIsInBhbGV2aW9sZXRyZWQiLCJwYXBheWF3aGlwIiwicGVhY2hwdWZmIiwicGVydSIsInBpbmsiLCJwbHVtIiwicG93ZGVyYmx1ZSIsInB1cnBsZSIsInJlYmVjY2FwdXJwbGUiLCJyZWQiLCJyb3N5YnJvd24iLCJyb3lhbGJsdWUiLCJzYWRkbGVicm93biIsInNhbG1vbiIsInNhbmR5YnJvd24iLCJzZWFncmVlbiIsInNlYXNoZWxsIiwic2llbm5hIiwic2lsdmVyIiwic2t5Ymx1ZSIsInNsYXRlYmx1ZSIsInNsYXRlZ3JheSIsInNsYXRlZ3JleSIsInNub3ciLCJzcHJpbmdncmVlbiIsInN0ZWVsYmx1ZSIsInRhbiIsInRlYWwiLCJ0aGlzdGxlIiwidG9tYXRvIiwidHVycXVvaXNlIiwidmlvbGV0Iiwid2hlYXQiLCJ3aGl0ZSIsIndoaXRlc21va2UiLCJ5ZWxsb3ciLCJ5ZWxsb3dncmVlbiIsImRlZmluZSIsImRpc3BsYXlhYmxlIiwiYnJpZ2h0ZXIiLCJkYXJrZXIiLCJQSSIsImNvc2giLCJzaW5oIiwicmdiR2FtbWEiLCJjb2xvclJnYiIsIm5iIiwibmEiLCJyZUEiLCJyZUIiLCJhbSIsImJtIiwiYnMiLCJiaSIsImxhc3RJbmRleCIsImFycmF5IiwidmFsdWVPZiIsImRlZ3JlZXMiLCJhdGFuIiwiaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3MiLCJpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZyIsImN1YmVoZWxpeCQxIiwiY3ViZWhlbGl4TG9uZyIsInBlcmZvcm1hbmNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiVHlwZUVycm9yIiwiZW1wdHlPbiIsImVtcHR5VHdlZW4iLCJhY3RpdmUiLCJpbnRlcnJ1cHQiLCJpbnRlcnBvbGF0ZU51bWJlciIsImludGVycG9sYXRlUmdiIiwiaW50ZXJwb2xhdGVTdHJpbmciLCJpZDAiLCJpZDEiLCJzZWxlY3Rpb25fcHJvdG90eXBlIiwidHJhbnNpdGlvbl9zZWxlY3QiLCJ0cmFuc2l0aW9uX3NlbGVjdEFsbCIsInRyYW5zaXRpb25fZmlsdGVyIiwidHJhbnNpdGlvbl9tZXJnZSIsInRyYW5zaXRpb25fc2VsZWN0aW9uIiwidHJhbnNpdGlvbl90cmFuc2l0aW9uIiwidHJhbnNpdGlvbl9vbiIsInRyYW5zaXRpb25fYXR0ciIsInRyYW5zaXRpb25fYXR0clR3ZWVuIiwidHJhbnNpdGlvbl9zdHlsZSIsInRyYW5zaXRpb25fc3R5bGVUd2VlbiIsInRyYW5zaXRpb25fdGV4dCIsInRyYW5zaXRpb25fcmVtb3ZlIiwidHJhbnNpdGlvbl90d2VlbiIsInRyYW5zaXRpb25fZGVsYXkiLCJ0cmFuc2l0aW9uX2R1cmF0aW9uIiwidHJhbnNpdGlvbl9lYXNlIiwiY3VzdG9tIiwicG9seUluIiwiZXhwb25lbnQiLCJwb2x5T3V0IiwicG9seUluT3V0IiwiYmFja0luIiwib3ZlcnNob290IiwiYmFja091dCIsImJhY2tJbk91dCIsInRhdSIsImVsYXN0aWNJbiIsImFtcGxpdHVkZSIsInBlcmlvZCIsImVsYXN0aWNPdXQiLCJlbGFzdGljSW5PdXQiLCJlYXNlQ3ViaWNJbk91dCIsInNlbGVjdGlvbl9pbnRlcnJ1cHQiLCJzZWxlY3Rpb25fdHJhbnNpdGlvbiIsInRhdUVwc2lsb24iLCJtb3ZlVG8iLCJjbG9zZVBhdGgiLCJsaW5lVG8iLCJxdWFkcmF0aWNDdXJ2ZVRvIiwiYXJjVG8iLCJ4MjEiLCJ5MjEiLCJ4MDEiLCJ5MDEiLCJsMDFfMiIsIngyMCIsInkyMCIsImwyMV8yIiwibDIwXzIiLCJsMjEiLCJsMDEiLCJ0MDEiLCJ0MjEiLCJhcmMiLCJhMCIsImExIiwiY2N3IiwiZHkiLCJjdyIsImRhIiwicmVjdCIsImhhcyIsImNsZWFyIiwia2V5cyIsImVudHJpZXMiLCJwcm90byIsImRlbGltaXRlciIsImNvbnZlcnQiLCJwYXJzZVJvd3MiLCJ0b2tlbiIsIk4iLCJFT0YiLCJlb2wiLCJFT0wiLCJkZWxpbWl0ZXJDb2RlIiwiZm9ybWF0VmFsdWUiLCJmb3JtYXRSb3dzIiwiZm9ybWF0Um93IiwicmVGb3JtYXQiLCJkc3YiLCJ2aXNpdCIsInJhZGl1cyIsIngzIiwieTMiLCJxdWFkcyIsIlF1YWQiLCJkMiIsInJldGFpbmVyIiwidHJlZVByb3RvIiwidHJlZV9hZGQiLCJ0cmVlX2FkZEFsbCIsInRyZWVfY292ZXIiLCJ0cmVlX2RhdGEiLCJleHRlbnQiLCJ0cmVlX2V4dGVudCIsImZpbmQiLCJ0cmVlX2ZpbmQiLCJ0cmVlX3JlbW92ZSIsInRyZWVfcmVtb3ZlQWxsIiwidHJlZV9yb290IiwidHJlZV9zaXplIiwidHJlZV92aXNpdCIsInZpc2l0QWZ0ZXIiLCJ0cmVlX3Zpc2l0QWZ0ZXIiLCJ0cmVlX3giLCJ0cmVlX3kiLCJwcmVmaXhFeHBvbmVudCIsInRvRXhwb25lbnRpYWwiLCJjb2VmZmljaWVudCIsImZvcm1hdERlY2ltYWwiLCJncm91cGluZyIsInRob3VzYW5kcyIsInN1YnN0cmluZyIsIm51bWVyYWxzIiwib3V0IiwidG9QcmVjaXNpb24iLCJ0b0ZpeGVkIiwiZm9ybWF0Um91bmRlZCIsInRvVXBwZXJDYXNlIiwiZm9ybWF0UHJlZml4IiwicHJlZml4ZXMiLCJ2YWx1ZVByZWZpeCIsInZhbHVlU3VmZml4Iiwic3VmZml4IiwiZm9ybWF0VHlwZSIsInZhbHVlTmVnYXRpdmUiLCJtYXliZVN1ZmZpeCIsImRlY2ltYWwiLCJwYWRkaW5nIiwiY3VycmVuY3kiLCJwZXJjZW50IiwiZm9ybWF0R3JvdXAiLCJmb3JtYXROdW1lcmFscyIsInRlbXAiLCJyYWRpYW5zIiwiY3hjeSIsImVhY2hBZnRlciIsImN1cnJlbnQiLCJhbmNlc3RvciIsImxlYXZlcyIsImxpbmtzIiwibm9kZV9jb3VudCIsIm5vZGVfZWFjaCIsIm5vZGVfZWFjaEFmdGVyIiwibm9kZV9lYWNoQmVmb3JlIiwibm9kZV9zdW0iLCJub2RlX3NvcnQiLCJub2RlX3BhdGgiLCJub2RlX2FuY2VzdG9ycyIsImRlc2NlbmRhbnRzIiwibm9kZV9kZXNjZW5kYW50cyIsIm5vZGVfbGVhdmVzIiwibm9kZV9saW5rcyIsInByZWNpc2lvblByZWZpeCIsInByZWNpc2lvblJvdW5kIiwicHJlY2lzaW9uRml4ZWQiLCJzdW5kYXkiLCJtb25kYXkiLCJzZXRNb250aCIsInNldFVUQ1NlY29uZHMiLCJzZXRVVENNaW51dGVzIiwic2V0VVRDTW9udGgiLCJ0aW1lRm9ybWF0IiwidGltZVBhcnNlIiwiLSIsIjAiLCJ0aW1lTW9udGgiLCJ0aW1lV2VlayIsInRpbWVIb3VyIiwidGltZU1pbnV0ZSIsInRpbWVTZWNvbmQiLCJ0aW1lTWlsbGlzZWNvbmQiLCJjb2xvcnMiLCJpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmciLCJhcmVhU3RhcnQiLCJfbGluZSIsImFyZWFFbmQiLCJsaW5lU3RhcnQiLCJfcG9pbnQiLCJsaW5lRW5kIiwiYnVmZmVyIiwiZGVmaW5lZDAiLCJjdXJ2ZSIsImRlZmluZWQiLCJwb2ludFgiLCJwb2ludFkiLCJjdXJ2ZUxpbmVhciIsIl90MCIsImF0dHJzIiwic2VsZWN0aW9uX2F0dHJzIiwic3R5bGVzIiwic2VsZWN0aW9uX3N0eWxlcyIsInByb3BlcnRpZXMiLCJzZWxlY3Rpb25fcHJvcGVydGllcyIsIkNPTlNUQU5UUyIsIm9DaGFydHMiLCJzZXR0aW5ncyIsImNoYXJ0IiwiZDMiLCJUZXh0IiwicmVuZGVyIiwiX3RoaXMyIiwiZG9tYWlucyIsInBsb3RzIiwiY2xhc3NlcyIsIktFWSIsImJhY2tncm91bmQiLCJOQU1FU1BBQ0UiLCJiZyIsIl90aGlzIiwiZGVmcyIsInNlbGVjdGlvbnMiLCJDTEFTUyIsIlNUWUxFIiwibWFyZ2luIiwiZGVmaW5lTGF5b3V0IiwiZGVmaW5lU2NhbGVzIiwiZGVmaW5lQXhpcyIsImRlZmluZVBsb3RzIiwiaW5uZXJXaWR0aCIsImlubmVySGVpZ2h0Iiwic2NhbGVzIiwiYmFycyIsInNsdWciLCJsYWJlbCIsInBsb3QiLCJET1RTX1JBRElVUyIsImJhciIsIkJBUl9HQVAiLCJsYWJlbHMiLCJtb2RpZnkiLCJ4dCIsImdldEJCb3giXSwibWFwcGluZ3MiOiJpQ0E0QkEsU0FBU0EsRUFBb0JDLEdBQzNCLE9BQU8sU0FBU0MsRUFBR0MsR0FDakIsT0FBT0MsR0FBVUgsRUFBRUMsR0FBSUMsSUNFM0IsU0FBZ0JFLEVBQWNDLEVBQU9DLEVBQU1DLEdBQ3pDLElBQUlDLEdBQVFGLEVBQU9ELEdBQVNJLEtBQUtDLElBQUksRUFBR0gsR0FDcENJLEVBQVFGLEtBQUtHLE1BQU1ILEtBQUtJLElBQUlMLEdBQVFDLEtBQUtLLE1BQ3pD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 diff --git a/dist/styles/site.min.css b/dist/styles/site.min.css index 786e3ffe..df45345e 100644 --- a/dist/styles/site.min.css +++ b/dist/styles/site.min.css @@ -1,2 +1,2 @@ -body{color:#333;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;line-height:20px}p{margin-top:0}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:700;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1,h2{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px;line-height:normal}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}code,pre{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0}a{text-decoration:none}path{fill:none}pre{display:block;padding:16px}code{display:inline-block;white-space:nowrap;padding:4px 8px}code,pre{color:#fff;background-color:#333;border-radius:3px}.btn,a,input,select,textarea{transition-property:opacity,background,color,border,box-shadow,outline,transform;transition-duration:.25s;backface-visibility:hidden}.c-nav-block{display:inline-block}.c-nav-block>*{display:block;margin-bottom:8px}.c-nav-inline-block{display:inline-block}.c-nav-inline-block>*{display:inline-block;margin:inherit;margin:0 8px}.c-nav-inline-block>:first-child{margin-left:0}.c-nav-inline-block>:last-child{margin-right:0}.c-table{font-size:1em;line-height:1em}.c-table,.c-table table{border-collapse:collapse}.c-table table{width:100%}.c-table table td{border:none}.c-table td,.c-table th{border-right:1px solid;border-color:inherit;padding:16px}.c-table td:last-of-type,.c-table th:last-of-type{border-right:none}.c-table-small{font-size:.75em;line-height:.9em}.c-table-small td,.c-table-small th{padding:12px}.c-table-td-1-right td:first-child,.c-table-td-2-right td:nth-child(2),.c-table-td-3-right td:nth-child(3),.c-table-td-4-right td:nth-child(4),.c-table-td-5-right td:nth-child(5),.c-table-td-6-right td:nth-child(6),.c-table-td-7-right td:nth-child(7),.c-table-td-8-right td:nth-child(8),.c-table-td-9-right td:nth-child(9),.c-table-td-10-right td:nth-child(10),.c-table-td-11-right td:nth-child(11),.c-table-td-12-right td:nth-child(12),.c-table-td-last-right td:last-child,.c-table-td-right td,.c-table-th-1-right th:first-child,.c-table-th-2-right th:nth-child(2),.c-table-th-3-right th:nth-child(3),.c-table-th-4-right th:nth-child(4),.c-table-th-5-right th:nth-child(5),.c-table-th-6-right th:nth-child(6),.c-table-th-7-right th:nth-child(7),.c-table-th-8-right th:nth-child(8),.c-table-th-9-right th:nth-child(9),.c-table-th-10-right th:nth-child(10),.c-table-th-11-right th:nth-child(11),.c-table-th-12-right th:nth-child(12),.c-table-th-last-right th:last-child{text-align:right}.c-aside_header{display:block;padding:24px}.c-aside_header>:first-child{font-size:1em;line-height:1em;margin:0;padding:0}.c-aside_body{padding:16px 24px 24px}.c-aside_body>:last-child{margin-bottom:0}.c-example{border:1px solid;border-color:#acaeb9;padding:24px 32px}.o-chart__axis{shape-rendering:crispEdges}.o-chart__line{stroke-width:1px;stroke-linejoin:round;stroke-linecap:square}.o-chart__dot{stroke-width:2px}.o-chart__axis-gap--x{stroke-linecap:square}.o-chart__label text{font-size:13px}.f-smooth{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.f-aliased{-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.bg-base-white{color:#333;background-color:#fff}.btn.bg-base-white:active,.btn.bg-base-white:focus,html:not(.touchevents) .btn.bg-base-white:hover{color:#333;background-color:#d9d9d9}.bg-base-black{color:#fff;background-color:#333}.btn.bg-base-black:active,.btn.bg-base-black:focus,html:not(.touchevents) .btn.bg-base-black:hover{color:#fff;background-color:#0d0d0d}.bg-secondary-grey{color:#2f334f;background-color:#acaeb9}.btn.bg-secondary-grey:active,.btn.bg-secondary-grey:focus,html:not(.touchevents) .btn.bg-secondary-grey:hover{color:#2f334f;background-color:#838696}.bg-secondary-grey-70t{color:#2f334f;background-color:#c4c6cd}.btn.bg-secondary-grey-70t:active,.btn.bg-secondary-grey-70t:focus,html:not(.touchevents) .btn.bg-secondary-grey-70t:hover{color:#2f334f;background-color:#9b9eaa}.bg-secondary-grey-50t{color:#2f334f;background-color:#d5d6dc}.btn.bg-secondary-grey-50t:active,.btn.bg-secondary-grey-50t:focus,html:not(.touchevents) .btn.bg-secondary-grey-50t:hover{color:#2f334f;background-color:#abadb9}.bg-secondary-grey-30t{color:#2f334f;background-color:#e8e7e9}.btn.bg-secondary-grey-30t:active,.btn.bg-secondary-grey-30t:focus,html:not(.touchevents) .btn.bg-secondary-grey-30t:hover{color:#2f334f;background-color:#c2bfc4}.bg-secondary-white{color:#2f334f;background-color:#f3f3f3}.btn.bg-secondary-white:active,.btn.bg-secondary-white:focus,html:not(.touchevents) .btn.bg-secondary-white:hover{color:#2f334f;background-color:#cdcdcd}.bg-secondary-white-70t{color:#2f334f;background-color:#f6f6f6}.btn.bg-secondary-white-70t:active,.btn.bg-secondary-white-70t:focus,html:not(.touchevents) .btn.bg-secondary-white-70t:hover{color:#2f334f;background-color:#d0d0d0}.bg-secondary-white-50t{color:#2f334f;background-color:#f9f9fa}.btn.bg-secondary-white-50t:active,.btn.bg-secondary-white-50t:focus,html:not(.touchevents) .btn.bg-secondary-white-50t:hover{color:#2f334f;background-color:#cfcfd7}.bg-secondary-white-30t{color:#2f334f;background-color:#fbfcfc}.btn.bg-secondary-white-30t:active,.btn.bg-secondary-white-30t:focus,html:not(.touchevents) .btn.bg-secondary-white-30t:hover{color:#2f334f;background-color:#cfdbdb}.bg-secondary-orange{color:#2f334f;background-color:#f9a137}.btn.bg-secondary-orange:active,.btn.bg-secondary-orange:focus,html:not(.touchevents) .btn.bg-secondary-orange:hover{color:#2f334f;background-color:#dd7c07}.bg-secondary-orange-70t{color:#2f334f;background-color:#ffa133}.btn.bg-secondary-orange-70t:active,.btn.bg-secondary-orange-70t:focus,html:not(.touchevents) .btn.bg-secondary-orange-70t:hover{color:#2f334f;background-color:#e67c00}.bg-secondary-orange-50t{color:#2f334f;background-color:#fed09a}.btn.bg-secondary-orange-50t:active,.btn.bg-secondary-orange-50t:focus,html:not(.touchevents) .btn.bg-secondary-orange-50t:hover{color:#2f334f;background-color:#fdad4e}.bg-secondary-orange-30t{color:#2f334f;background-color:#ffe3c2}.btn.bg-secondary-orange-30t:active,.btn.bg-secondary-orange-30t:focus,html:not(.touchevents) .btn.bg-secondary-orange-30t:hover{color:#2f334f;background-color:#ffc076}.bg-secondary-pink{color:#2f334f;background-color:#ebbcd8}.btn.bg-secondary-pink:active,.btn.bg-secondary-pink:focus,html:not(.touchevents) .btn.bg-secondary-pink:hover{color:#2f334f;background-color:#d981b6}.bg-secondary-pink-70t{color:#2f334f;background-color:#f2d0e3}.btn.bg-secondary-pink-70t:active,.btn.bg-secondary-pink-70t:focus,html:not(.touchevents) .btn.bg-secondary-pink-70t:hover{color:#2f334f;background-color:#e194bf}.bg-secondary-pink-50t{color:#2f334f;background-color:#f7ddeb}.btn.bg-secondary-pink-50t:active,.btn.bg-secondary-pink-50t:focus,html:not(.touchevents) .btn.bg-secondary-pink-50t:hover{color:#2f334f;background-color:#e89fc7}.bg-secondary-pink-30t{color:#2f334f;background-color:#fdebf3}.btn.bg-secondary-pink-30t:active,.btn.bg-secondary-pink-30t:focus,html:not(.touchevents) .btn.bg-secondary-pink-30t:hover{color:#2f334f;background-color:#f6a5c9}.bg-primary-navy{color:#f3f3f3;background-color:#2f334f}.btn.bg-primary-navy:active,.btn.bg-primary-navy:focus,html:not(.touchevents) .btn.bg-primary-navy:hover{color:#f3f3f3;background-color:#12141f}.bg-primary-navy-70t{color:#f3f3f3;background-color:#6e7085}.btn.bg-primary-navy-70t:active,.btn.bg-primary-navy-70t:focus,html:not(.touchevents) .btn.bg-primary-navy-70t:hover{color:#f3f3f3;background-color:#4b4d5b}.bg-primary-navy-50t{color:#f3f3f3;background-color:#9698a7}.btn.bg-primary-navy-50t:active,.btn.bg-primary-navy-50t:focus,html:not(.touchevents) .btn.bg-primary-navy-50t:hover{color:#f3f3f3;background-color:#6e7083}.bg-primary-navy-30t{color:#f3f3f3;background-color:#c0c2ca}.btn.bg-primary-navy-30t:active,.btn.bg-primary-navy-30t:focus,html:not(.touchevents) .btn.bg-primary-navy-30t:hover{color:#f3f3f3;background-color:#969aa7}.bg-primary-blue{color:#f3f3f3;background-color:#3155a6}.btn.bg-primary-blue:active,.btn.bg-primary-blue:focus,html:not(.touchevents) .btn.bg-primary-blue:hover{color:#f3f3f3;background-color:#20376b}.bg-primary-blue-70t{color:#f3f3f3;background-color:#6c88c1}.btn.bg-primary-blue-70t:active,.btn.bg-primary-blue-70t:focus,html:not(.touchevents) .btn.bg-primary-blue-70t:hover{color:#f3f3f3;background-color:#43619e}.bg-primary-blue-50t{color:#f3f3f3;background-color:#96abd2}.btn.bg-primary-blue-50t:active,.btn.bg-primary-blue-50t:focus,html:not(.touchevents) .btn.bg-primary-blue-50t:hover{color:#f3f3f3;background-color:#6080bb}.bg-primary-blue-30t{color:#f3f3f3;background-color:#c0cce3}.btn.bg-primary-blue-30t:active,.btn.bg-primary-blue-30t:focus,html:not(.touchevents) .btn.bg-primary-blue-30t:hover{color:#f3f3f3;background-color:#8ba1cb}.bg-primary-red{color:#f3f3f3;background-color:#f2695d}.btn.bg-primary-red:active,.btn.bg-primary-red:focus,html:not(.touchevents) .btn.bg-primary-red:hover{color:#f3f3f3;background-color:#ec2716}.bg-primary-red-70t{color:#f3f3f3;background-color:#f6958d}.btn.bg-primary-red-70t:active,.btn.bg-primary-red-70t:focus,html:not(.touchevents) .btn.bg-primary-red-70t:hover{color:#f3f3f3;background-color:#f05346}.bg-primary-red-50t{color:#f3f3f3;background-color:#f8b2ad}.btn.bg-primary-red-50t:active,.btn.bg-primary-red-50t:focus,html:not(.touchevents) .btn.bg-primary-red-50t:hover{color:#f3f3f3;background-color:#f27067}.bg-primary-red-30t{color:#f3f3f3;background-color:#fbd1ce}.btn.bg-primary-red-30t:active,.btn.bg-primary-red-30t:focus,html:not(.touchevents) .btn.bg-primary-red-30t:hover{color:#f3f3f3;background-color:#f58f87}.c-base-white{color:#fff!important}.b-base-white{border-color:#fff}.fill-base-white{fill:#fff}.stroke-base-white{stroke:#fff}.c-base-black{color:#333!important}.b-base-black{border-color:#333}.fill-base-black{fill:#333}.stroke-base-black{stroke:#333}.c-secondary-grey{color:#acaeb9!important}.b-secondary-grey{border-color:#acaeb9}.fill-secondary-grey{fill:#acaeb9}.stroke-secondary-grey{stroke:#acaeb9}.c-secondary-grey-70t{color:#c4c6cd!important}.b-secondary-grey-70t{border-color:#c4c6cd}.fill-secondary-grey-70t{fill:#c4c6cd}.stroke-secondary-grey-70t{stroke:#c4c6cd}.c-secondary-grey-50t{color:#d5d6dc!important}.b-secondary-grey-50t{border-color:#d5d6dc}.fill-secondary-grey-50t{fill:#d5d6dc}.stroke-secondary-grey-50t{stroke:#d5d6dc}.c-secondary-grey-30t{color:#e8e7e9!important}.b-secondary-grey-30t{border-color:#e8e7e9}.fill-secondary-grey-30t{fill:#e8e7e9}.stroke-secondary-grey-30t{stroke:#e8e7e9}.c-secondary-white{color:#f3f3f3!important}.b-secondary-white{border-color:#f3f3f3}.fill-secondary-white{fill:#f3f3f3}.stroke-secondary-white{stroke:#f3f3f3}.c-secondary-white-70t{color:#f6f6f6!important}.b-secondary-white-70t{border-color:#f6f6f6}.fill-secondary-white-70t{fill:#f6f6f6}.stroke-secondary-white-70t{stroke:#f6f6f6}.c-secondary-white-50t{color:#f9f9fa!important}.b-secondary-white-50t{border-color:#f9f9fa}.fill-secondary-white-50t{fill:#f9f9fa}.stroke-secondary-white-50t{stroke:#f9f9fa}.c-secondary-white-30t{color:#fbfcfc!important}.b-secondary-white-30t{border-color:#fbfcfc}.fill-secondary-white-30t{fill:#fbfcfc}.stroke-secondary-white-30t{stroke:#fbfcfc}.c-secondary-orange{color:#f9a137!important}.b-secondary-orange{border-color:#f9a137}.fill-secondary-orange{fill:#f9a137}.stroke-secondary-orange{stroke:#f9a137}.c-secondary-orange-70t{color:#ffa133!important}.b-secondary-orange-70t{border-color:#ffa133}.fill-secondary-orange-70t{fill:#ffa133}.stroke-secondary-orange-70t{stroke:#ffa133}.c-secondary-orange-50t{color:#fed09a!important}.b-secondary-orange-50t{border-color:#fed09a}.fill-secondary-orange-50t{fill:#fed09a}.stroke-secondary-orange-50t{stroke:#fed09a}.c-secondary-orange-30t{color:#ffe3c2!important}.b-secondary-orange-30t{border-color:#ffe3c2}.fill-secondary-orange-30t{fill:#ffe3c2}.stroke-secondary-orange-30t{stroke:#ffe3c2}.c-secondary-pink{color:#ebbcd8!important}.b-secondary-pink{border-color:#ebbcd8}.fill-secondary-pink{fill:#ebbcd8}.stroke-secondary-pink{stroke:#ebbcd8}.c-secondary-pink-70t{color:#f2d0e3!important}.b-secondary-pink-70t{border-color:#f2d0e3}.fill-secondary-pink-70t{fill:#f2d0e3}.stroke-secondary-pink-70t{stroke:#f2d0e3}.c-secondary-pink-50t{color:#f7ddeb!important}.b-secondary-pink-50t{border-color:#f7ddeb}.fill-secondary-pink-50t{fill:#f7ddeb}.stroke-secondary-pink-50t{stroke:#f7ddeb}.c-secondary-pink-30t{color:#fdebf3!important}.b-secondary-pink-30t{border-color:#fdebf3}.fill-secondary-pink-30t{fill:#fdebf3}.stroke-secondary-pink-30t{stroke:#fdebf3}.c-primary-navy{color:#2f334f!important}.b-primary-navy{border-color:#2f334f}.fill-primary-navy{fill:#2f334f}.stroke-primary-navy{stroke:#2f334f}.c-primary-navy-70t{color:#6e7085!important}.b-primary-navy-70t{border-color:#6e7085}.fill-primary-navy-70t{fill:#6e7085}.stroke-primary-navy-70t{stroke:#6e7085}.c-primary-navy-50t{color:#9698a7!important}.b-primary-navy-50t{border-color:#9698a7}.fill-primary-navy-50t{fill:#9698a7}.stroke-primary-navy-50t{stroke:#9698a7}.c-primary-navy-30t{color:#c0c2ca!important}.b-primary-navy-30t{border-color:#c0c2ca}.fill-primary-navy-30t{fill:#c0c2ca}.stroke-primary-navy-30t{stroke:#c0c2ca}.c-primary-blue{color:#3155a6!important}.b-primary-blue{border-color:#3155a6}.fill-primary-blue{fill:#3155a6}.stroke-primary-blue{stroke:#3155a6}.c-primary-blue-70t{color:#6c88c1!important}.b-primary-blue-70t{border-color:#6c88c1}.fill-primary-blue-70t{fill:#6c88c1}.stroke-primary-blue-70t{stroke:#6c88c1}.c-primary-blue-50t{color:#96abd2!important}.b-primary-blue-50t{border-color:#96abd2}.fill-primary-blue-50t{fill:#96abd2}.stroke-primary-blue-50t{stroke:#96abd2}.c-primary-blue-30t{color:#c0cce3!important}.b-primary-blue-30t{border-color:#c0cce3}.fill-primary-blue-30t{fill:#c0cce3}.stroke-primary-blue-30t{stroke:#c0cce3}.c-primary-red{color:#f2695d!important}.b-primary-red{border-color:#f2695d}.fill-primary-red{fill:#f2695d}.stroke-primary-red{stroke:#f2695d}.c-primary-red-70t{color:#f6958d!important}.b-primary-red-70t{border-color:#f6958d}.fill-primary-red-70t{fill:#f6958d}.stroke-primary-red-70t{stroke:#f6958d}.c-primary-red-50t{color:#f8b2ad!important}.b-primary-red-50t{border-color:#f8b2ad}.fill-primary-red-50t{fill:#f8b2ad}.stroke-primary-red-50t{stroke:#f8b2ad}.c-primary-red-30t{color:#fbd1ce!important}.b-primary-red-30t{border-color:#fbd1ce}.fill-primary-red-30t{fill:#fbd1ce}.stroke-primary-red-30t{stroke:#fbd1ce}.b-transparent{border-color:transparent}.b{border-width:1px;border-style:solid}.b-top{border-top-width:1px;border-top-style:solid}.b-bottom{border-bottom-width:1px;border-bottom-style:solid}.b-left{border-left-width:1px;border-left-style:solid}.b-right{border-right-width:1px;border-right-style:solid}.b-2{border-width:2px}.b-3{border-width:3px}.b-4{border-width:4px}.b-5{border-width:5px}.b-6{border-width:6px}.b-7{border-width:7px}.b-none{border:none!important}.m-3{margin:24px!important}.m-top-3{margin-top:24px!important}.m-right-3{margin-right:24px!important}.m-bottom-3{margin-bottom:24px!important}.m-horizontal-3,.m-left-3{margin-left:24px!important}.m-horizontal-3{margin-right:24px!important}.m-vertical-3{margin-top:24px!important;margin-bottom:24px!important}.m-2{margin:16px!important}.m-top-2{margin-top:16px!important}.m-right-2{margin-right:16px!important}.m-bottom-2{margin-bottom:16px!important}.m-horizontal-2,.m-left-2{margin-left:16px!important}.m-horizontal-2{margin-right:16px!important}.m-vertical-2{margin-top:16px!important;margin-bottom:16px!important}.m{margin:8px!important}.m-top{margin-top:8px!important}.m-right{margin-right:8px!important}.m-bottom{margin-bottom:8px!important}.m-horizontal,.m-left{margin-left:8px!important}.m-horizontal{margin-right:8px!important}.m-vertical{margin-top:8px!important;margin-bottom:8px!important}.p-3{padding:24px!important}.p-top-3{padding-top:24px!important}.p-right-3{padding-right:24px!important}.p-bottom-3{padding-bottom:24px!important}.p-horizontal-3,.p-left-3{padding-left:24px!important}.p-horizontal-3{padding-right:24px!important}.p-vertical-3{padding-top:24px!important;padding-bottom:24px!important}.p-2{padding:16px!important}.p-top-2{padding-top:16px!important}.p-right-2{padding-right:16px!important}.p-bottom-2{padding-bottom:16px!important}.p-horizontal-2,.p-left-2{padding-left:16px!important}.p-horizontal-2{padding-right:16px!important}.p-vertical-2{padding-top:16px!important;padding-bottom:16px!important}.p{padding:8px!important}.p-top{padding-top:8px!important}.p-right{padding-right:8px!important}.p-bottom{padding-bottom:8px!important}.p-horizontal,.p-left{padding-left:8px!important}.p-horizontal{padding-right:8px!important}.p-vertical{padding-top:8px!important;padding-bottom:8px!important}.p-0{padding:0!important}.m-0{margin:0!important}.wrap{max-width:992px;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto}.d-flex{display:flex}.d-block{display:block}.d-inline-block{display:inline-block}.f-1{flex:1}.f-2{flex:2}.f-3{flex:3}.f-4{flex:4}.f-5{flex:5}.f-6{flex:6}.f-7{flex:7}.f-8{flex:8}.f-9{flex:9}.f-10{flex:10}.f-11{flex:11}.f-12{flex:12}.o--1{order:-1}.jc-start{justify-content:flex-start}.jc-end{justify-content:flex-end}.jc-center{justify-content:center}.ai-start{align-items:flex-start}.ai-end{align-items:flex-end}.ai-center{align-items:center}.ai-stretch{align-items:stretch}.ai-baseline{align-items:baseline}.t-center{text-align:center!important}.t-left{text-align:left!important}.t-right{text-align:right!important}.t-uppercase{text-transform:uppercase!important}.t-none{text-transform:none!important}.ws-nowrap{white-space:nowrap}.w-100p{width:100%}.sw-1px{stroke-width:1px}.sw-2px{stroke-width:2px}.sw-3px{stroke-width:3px}.slj-round{stroke-linejoin:round}.slc-square{stroke-linecap:square}.image-optimize{image-rendering:-webkit-optimize-contrast;image-rendering:optimizequality} -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fZm9udHMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fdmFycy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19mb250cy5taXhpbnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fYmFzZS5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19ncmlkLnZhcnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fdHJhbnNpdGlvbnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvX2MtbmF2cy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9fYy10YWJsZXMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvX2MtYXNpZGVzLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL19jLWV4YW1wbGUuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvX28tY2hhcnRzLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fZm9udHMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fY29sb3JzLm1peGlucy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy91dGlsaXRpZXMvX2NvbG9ycy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy91dGlsaXRpZXMvX2JvcmRlcnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fZ3JpZC5taXhpbnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19ncmlkLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fZGlzcGxheS5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy91dGlsaXRpZXMvX3RleHQuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19kaW1lbnNpb25zLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fc3ZnLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9faW1hZ2VzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsS0FDRSxXQ0hjLEFESWQsc0RBQTJELEFBQzNELGVDVmlCLEFEV2pCLGdCQ1ZtQixDRFdwQixBQUVELEVBQ0UsWUFBYSxDQUNkLEFBRUQsa0JBQ0UsY0FBYyxBQUNkLG9CQUFvQixBQUNwQixnQkFBZ0IsQUFDaEIsaUJBQWlCLEFBQ2pCLGNBQWMsQUFDZCxpQ0FBa0MsQ0FDbkMsQUFFRCxNQUNFLGdCQUFpQixDQUNsQixBQUVELEdBQ0UsZ0JBQWlCLENBQ2xCLEFBRUQsR0FDRSxnQkFBaUIsQ0FDbEIsQUFFRCxHQUNFLGlCQUFpQixBQUNqQixrQkFBbUIsQ0FDcEIsQUFFRCxHQUNFLGdCQUFpQixDQUNsQixBQUVELEdBQ0UsY0FBZSxDQUNoQixBQUVELEdBQ0UsZ0JBQWlCLENBQ2xCLEFBRUQsU0V4Q0Usa0NBQWtDLEFBQ2xDLG1DQUFtQyxBQUNuQyxpQ0FDRixDRnVDQyxBR3BERCxLQUNFLFNBQVMsQUFDVCxTQUFVLENBQ1gsQUFFRCxFQUNFLG9CQUNGLENBQUUsQUFFRixLQUNFLFNBQ0YsQ0FBRSxBQUVGLElBQ0UsY0FBYyxBQUNkLFlBQTBDLENBQzNDLEFBRUQsS0FDRSxxQkFBcUIsQUFDckIsbUJBQW1CLEFBQ25CLGVDMUJhLENEMkJkLEFBRUQsU0FDRSxXRnZCYyxBRXdCZCxzQkYzQmMsQUU0QmQsaUJBQWtCLENBQ25CLEFFN0JELDZCQUNFLGlGQUF1RixBQUN2Rix5QkFBMEIsQUFDMUIsMEJBQTJCLENBQzVCLEFDRUQsYUFDRSxvQkFBcUIsQ0FDdEIsQUFFRCxlQUNFLGNBQWMsQUFDZCxpQkZoQmEsQ0VpQmQsQUFFRCxvQkFDRSxvQkFBcUIsQ0FDdEIsQUFFRCxzQkFDRSxxQkFBcUIsQUFDckIsZUFDRixBQUdFLFlGN0JhLENFMEJiLEFBTUYsaUNBQ0UsYUFDRixDQUFFLEFBRUYsZ0NBQ0UsY0FDRixDQUFFLEFDakNGLFNBRUUsY0wyQmdDLEFLMUJoQyxlTDBCZ0MsQ0tMakMsQUF4QkQsd0JBSUUsd0JBQXlCLENBUXhCLEFBWkgsZUFRSSxVQUFXLENBSVosQUFaSCxrQkFVTSxXQUNGLENBQUUsQUFYTix3QkFlSSx1QkFBdUIsQUFDdkIscUJBQXFCLEFBQ3JCLFlBQXFCLENBQ3RCLEFBbEJILGtEQXFCSSxpQkFDRixDQUFFLEFBSUosZUFFRSxnQkxDZ0MsQUtBaEMsZ0JMQWdDLENLTWpDLEFBVEQsb0NBTUksWUFBdUIsQ0FDeEIsQUFzQ0QseThCQUdJLGdCQUFpQixDQUNsQixBQ3hFTCxnQkFDRSxjQUFjLEFBQ2QsWUFBMEMsQ0FTM0MsQUFYRCw2QkFLSSxjTnFCOEIsQU1wQjlCLGdCTm9COEIsQU1uQjlCLFNBQVMsQUFDVCxTQUFVLENBQ1gsQUFJSCxjQUNFLHNCQUEyRCxDQU01RCxBQVBELDBCQUlJLGVBQ0YsQ0FBRSxBQ3JCSixXQUNFLGlCQUFpQixBQUNqQixxQlJ1Q2MsQVF0Q2QsaUJBQTBDLENBQzNDLEFDTEQsZUFDRSwwQkFDRixDQUFFLEFBRUYsZUFDRSxpQkFBaUIsQUFDakIsc0JBQXNCLEFBQ3RCLHFCQUNGLENBQUUsQUFFRixjQUNFLGdCQUNGLENBQUUsQUFFRixzQkFDRSxxQkFDRixDQUFFLEFBRUYscUJBQ0UsY0FDRixDQUFFLEFDcEJGLFVUV0Usa0NBQWtDLEFBQ2xDLG1DQUFtQyxBQUNuQyxpQ0FDRixDU1pDLEFBRUQsV1RhRSw0Q0FBNEMsQUFDNUMsNEJBQ0YsQ1NiQyxBQ0dHLGVBQ0UsV1hWVSxBV1dWLHFCWFJVLENXU1gsQUFVRCxtR0FHRSxXWHpCVSxBVzBCVix3QkFBK0MsQ0FDaEQsQUFsQkQsZUFDRSxXWFBVLEFXUVYscUJYWFUsQ1dZWCxBQVVELG1HQUdFLFdYdEJVLEFXdUJWLHdCQUErQyxDQUNoRCxBQWxCRCxtQkFDRSxjWEpVLEFXS1Ysd0JYK0JVLENXOUJYLEFBVUQsK0dBR0UsY1huQlUsQVdvQlYsd0JBQStDLENBQ2hELEFBbEJELHVCQUNFLGNYSlUsQVdLVix3QlhrQ1UsQ1dqQ1gsQUFVRCwySEFHRSxjWG5CVSxBV29CVix3QkFBK0MsQ0FDaEQsQUFsQkQsdUJBQ0UsY1hKVSxBV0tWLHdCWHFDVSxDV3BDWCxBQVVELDJIQUdFLGNYbkJVLEFXb0JWLHdCQUErQyxDQUNoRCxBQWxCRCx1QkFDRSxjWEpVLEFXS1Ysd0JYd0NVLENXdkNYLEFBVUQsMkhBR0UsY1huQlUsQVdvQlYsd0JBQStDLENBQ2hELEFBbEJELG9CQUNFLGNYSlUsQVdLVix3QlgyQ1UsQ1cxQ1gsQUFVRCxrSEFHRSxjWG5CVSxBV29CVix3QkFBK0MsQ0FDaEQsQUFsQkQsd0JBQ0UsY1hKVSxBV0tWLHdCWDhDVSxDVzdDWCxBQVVELDhIQUdFLGNYbkJVLEFXb0JWLHdCQUErQyxDQUNoRCxBQWxCRCx3QkFDRSxjWEpVLEFXS1Ysd0JYaURVLENXaERYLEFBVUQsOEhBR0UsY1huQlUsQVdvQlYsd0JBQStDLENBQ2hELEFBbEJELHdCQUNFLGNYSlUsQVdLVix3QlhvRFUsQ1duRFgsQUFVRCw4SEFHRSxjWG5CVSxBV29CVix3QkFBK0MsQ0FDaEQsQUFsQkQscUJBQ0UsY1hKVSxBV0tWLHdCWHVEVSxDV3REWCxBQVVELHFIQUdFLGNYbkJVLEFXb0JWLHdCQUErQyxDQUNoRCxBQWxCRCx5QkFDRSxjWEpVLEFXS1Ysd0JYMERVLENXekRYLEFBVUQsaUlBR0UsY1huQlUsQVdvQlYsd0JBQStDLENBQ2hELEFBbEJELHlCQUNFLGNYSlUsQVdLVix3Qlg2RFUsQ1c1RFgsQUFVRCxpSUFHRSxjWG5CVSxBV29CVix3QkFBK0MsQ0FDaEQsQUFsQkQseUJBQ0UsY1hKVSxBV0tWLHdCWGdFVSxDVy9EWCxBQVVELGlJQUdFLGNYbkJVLEFXb0JWLHdCQUErQyxDQUNoRCxBQWxCRCxtQkFDRSxjWEpVLEFXS1Ysd0JYbUVVLENXbEVYLEFBVUQsK0dBR0UsY1huQlUsQVdvQlYsd0JBQStDLENBQ2hELEFBbEJELHVCQUNFLGNYSlUsQVdLVix3QlhzRVUsQ1dyRVgs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 */ \ No newline at end of file +body{color:#333;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;line-height:20px}p{margin-top:0}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:700;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1,h2{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px;line-height:normal}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}code,pre{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0}a{text-decoration:none}path{fill:none}fieldset,footer,header,main,section{display:block}fieldset:after,fieldset:before,footer:after,footer:before,header:after,header:before,main:after,main:before,section:after,section:before{content:"";display:table;clear:both}pre{display:block;padding:16px}code{display:inline-block;white-space:nowrap;padding:4px 8px}code,pre{color:#fff;background-color:#333;border-radius:3px}.btn,a,input,select,textarea{transition-property:opacity,background,color,border,box-shadow,outline,transform;transition-duration:.25s;backface-visibility:hidden}.c-nav-block{display:inline-block}.c-nav-block>*{display:block;margin-bottom:8px}.c-nav-inline-block{display:inline-block}.c-nav-inline-block>*{display:inline-block;margin:inherit;margin:0 8px}.c-nav-inline-block>:first-child{margin-left:0}.c-nav-inline-block>:last-child{margin-right:0}.c-table{font-size:1em;line-height:1em}.c-table,.c-table table{border-collapse:collapse}.c-table table{width:100%}.c-table table td{border:none}.c-table td,.c-table th{border-right:1px solid;border-color:inherit;padding:16px}.c-table td:last-of-type,.c-table th:last-of-type{border-right:none}.c-table-small{font-size:.75em;line-height:.9em}.c-table-small td,.c-table-small th{padding:12px}.c-table-td-1-right td:first-child,.c-table-td-2-right td:nth-child(2),.c-table-td-3-right td:nth-child(3),.c-table-td-4-right td:nth-child(4),.c-table-td-5-right td:nth-child(5),.c-table-td-6-right td:nth-child(6),.c-table-td-7-right td:nth-child(7),.c-table-td-8-right td:nth-child(8),.c-table-td-9-right td:nth-child(9),.c-table-td-10-right td:nth-child(10),.c-table-td-11-right td:nth-child(11),.c-table-td-12-right td:nth-child(12),.c-table-td-last-right td:last-child,.c-table-td-right td,.c-table-th-1-right th:first-child,.c-table-th-2-right th:nth-child(2),.c-table-th-3-right th:nth-child(3),.c-table-th-4-right th:nth-child(4),.c-table-th-5-right th:nth-child(5),.c-table-th-6-right th:nth-child(6),.c-table-th-7-right th:nth-child(7),.c-table-th-8-right th:nth-child(8),.c-table-th-9-right th:nth-child(9),.c-table-th-10-right th:nth-child(10),.c-table-th-11-right th:nth-child(11),.c-table-th-12-right th:nth-child(12),.c-table-th-last-right th:last-child{text-align:right}.c-aside_header{display:block;padding:24px}.c-aside_header>:first-child{font-size:1em;line-height:1em;margin:0;padding:0}.c-aside_body{padding:16px 24px 24px}.c-aside_body>:last-child{margin-bottom:0}.c-example{border:1px solid;border-color:#acaeb9;padding:24px 32px}.o-chart__axis{shape-rendering:crispEdges}.o-chart__line{stroke-width:1px;stroke-linejoin:round;stroke-linecap:square}.o-chart__dot{stroke-width:2px}.o-chart__axis-gap--x{stroke-linecap:square}.o-chart__label text{font-size:13px}.f-smooth{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.f-aliased{-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.ff-system{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.fw-normal{font-weight:400}.fw-bold{font-weight:700}.fs-italic{font-style:italic}.bg-base-white{color:#333;background-color:#fff}.btn.bg-base-white:active,.btn.bg-base-white:focus,html:not(.touchevents) .btn.bg-base-white:hover{color:#333;background-color:#d9d9d9}.bg-base-black{color:#fff;background-color:#333}.btn.bg-base-black:active,.btn.bg-base-black:focus,html:not(.touchevents) .btn.bg-base-black:hover{color:#fff;background-color:#0d0d0d}.bg-secondary-grey{color:#2f334f;background-color:#acaeb9}.btn.bg-secondary-grey:active,.btn.bg-secondary-grey:focus,html:not(.touchevents) .btn.bg-secondary-grey:hover{color:#2f334f;background-color:#838696}.bg-secondary-grey-70t{color:#2f334f;background-color:#c4c6cd}.btn.bg-secondary-grey-70t:active,.btn.bg-secondary-grey-70t:focus,html:not(.touchevents) .btn.bg-secondary-grey-70t:hover{color:#2f334f;background-color:#9b9eaa}.bg-secondary-grey-50t{color:#2f334f;background-color:#d5d6dc}.btn.bg-secondary-grey-50t:active,.btn.bg-secondary-grey-50t:focus,html:not(.touchevents) .btn.bg-secondary-grey-50t:hover{color:#2f334f;background-color:#abadb9}.bg-secondary-grey-30t{color:#2f334f;background-color:#e8e7e9}.btn.bg-secondary-grey-30t:active,.btn.bg-secondary-grey-30t:focus,html:not(.touchevents) .btn.bg-secondary-grey-30t:hover{color:#2f334f;background-color:#c2bfc4}.bg-secondary-white{color:#2f334f;background-color:#f3f3f3}.btn.bg-secondary-white:active,.btn.bg-secondary-white:focus,html:not(.touchevents) .btn.bg-secondary-white:hover{color:#2f334f;background-color:#cdcdcd}.bg-secondary-white-70t{color:#2f334f;background-color:#f6f6f6}.btn.bg-secondary-white-70t:active,.btn.bg-secondary-white-70t:focus,html:not(.touchevents) .btn.bg-secondary-white-70t:hover{color:#2f334f;background-color:#d0d0d0}.bg-secondary-white-50t{color:#2f334f;background-color:#f9f9fa}.btn.bg-secondary-white-50t:active,.btn.bg-secondary-white-50t:focus,html:not(.touchevents) .btn.bg-secondary-white-50t:hover{color:#2f334f;background-color:#cfcfd7}.bg-secondary-white-30t{color:#2f334f;background-color:#fbfcfc}.btn.bg-secondary-white-30t:active,.btn.bg-secondary-white-30t:focus,html:not(.touchevents) .btn.bg-secondary-white-30t:hover{color:#2f334f;background-color:#cfdbdb}.bg-secondary-orange{color:#2f334f;background-color:#f9a137}.btn.bg-secondary-orange:active,.btn.bg-secondary-orange:focus,html:not(.touchevents) .btn.bg-secondary-orange:hover{color:#2f334f;background-color:#dd7c07}.bg-secondary-orange-70t{color:#2f334f;background-color:#ffa133}.btn.bg-secondary-orange-70t:active,.btn.bg-secondary-orange-70t:focus,html:not(.touchevents) .btn.bg-secondary-orange-70t:hover{color:#2f334f;background-color:#e67c00}.bg-secondary-orange-50t{color:#2f334f;background-color:#fed09a}.btn.bg-secondary-orange-50t:active,.btn.bg-secondary-orange-50t:focus,html:not(.touchevents) .btn.bg-secondary-orange-50t:hover{color:#2f334f;background-color:#fdad4e}.bg-secondary-orange-30t{color:#2f334f;background-color:#ffe3c2}.btn.bg-secondary-orange-30t:active,.btn.bg-secondary-orange-30t:focus,html:not(.touchevents) .btn.bg-secondary-orange-30t:hover{color:#2f334f;background-color:#ffc076}.bg-secondary-pink{color:#2f334f;background-color:#ebbcd8}.btn.bg-secondary-pink:active,.btn.bg-secondary-pink:focus,html:not(.touchevents) .btn.bg-secondary-pink:hover{color:#2f334f;background-color:#d981b6}.bg-secondary-pink-70t{color:#2f334f;background-color:#f2d0e3}.btn.bg-secondary-pink-70t:active,.btn.bg-secondary-pink-70t:focus,html:not(.touchevents) .btn.bg-secondary-pink-70t:hover{color:#2f334f;background-color:#e194bf}.bg-secondary-pink-50t{color:#2f334f;background-color:#f7ddeb}.btn.bg-secondary-pink-50t:active,.btn.bg-secondary-pink-50t:focus,html:not(.touchevents) .btn.bg-secondary-pink-50t:hover{color:#2f334f;background-color:#e89fc7}.bg-secondary-pink-30t{color:#2f334f;background-color:#fdebf3}.btn.bg-secondary-pink-30t:active,.btn.bg-secondary-pink-30t:focus,html:not(.touchevents) .btn.bg-secondary-pink-30t:hover{color:#2f334f;background-color:#f6a5c9}.bg-primary-navy{color:#f3f3f3;background-color:#2f334f}.btn.bg-primary-navy:active,.btn.bg-primary-navy:focus,html:not(.touchevents) .btn.bg-primary-navy:hover{color:#f3f3f3;background-color:#12141f}.bg-primary-navy-70t{color:#f3f3f3;background-color:#6e7085}.btn.bg-primary-navy-70t:active,.btn.bg-primary-navy-70t:focus,html:not(.touchevents) .btn.bg-primary-navy-70t:hover{color:#f3f3f3;background-color:#4b4d5b}.bg-primary-navy-50t{color:#f3f3f3;background-color:#9698a7}.btn.bg-primary-navy-50t:active,.btn.bg-primary-navy-50t:focus,html:not(.touchevents) .btn.bg-primary-navy-50t:hover{color:#f3f3f3;background-color:#6e7083}.bg-primary-navy-30t{color:#f3f3f3;background-color:#c0c2ca}.btn.bg-primary-navy-30t:active,.btn.bg-primary-navy-30t:focus,html:not(.touchevents) .btn.bg-primary-navy-30t:hover{color:#f3f3f3;background-color:#969aa7}.bg-primary-blue{color:#f3f3f3;background-color:#3155a6}.btn.bg-primary-blue:active,.btn.bg-primary-blue:focus,html:not(.touchevents) .btn.bg-primary-blue:hover{color:#f3f3f3;background-color:#20376b}.bg-primary-blue-70t{color:#f3f3f3;background-color:#6c88c1}.btn.bg-primary-blue-70t:active,.btn.bg-primary-blue-70t:focus,html:not(.touchevents) .btn.bg-primary-blue-70t:hover{color:#f3f3f3;background-color:#43619e}.bg-primary-blue-50t{color:#f3f3f3;background-color:#96abd2}.btn.bg-primary-blue-50t:active,.btn.bg-primary-blue-50t:focus,html:not(.touchevents) .btn.bg-primary-blue-50t:hover{color:#f3f3f3;background-color:#6080bb}.bg-primary-blue-30t{color:#f3f3f3;background-color:#c0cce3}.btn.bg-primary-blue-30t:active,.btn.bg-primary-blue-30t:focus,html:not(.touchevents) .btn.bg-primary-blue-30t:hover{color:#f3f3f3;background-color:#8ba1cb}.bg-primary-red{color:#f3f3f3;background-color:#f2695d}.btn.bg-primary-red:active,.btn.bg-primary-red:focus,html:not(.touchevents) .btn.bg-primary-red:hover{color:#f3f3f3;background-color:#ec2716}.bg-primary-red-70t{color:#f3f3f3;background-color:#f6958d}.btn.bg-primary-red-70t:active,.btn.bg-primary-red-70t:focus,html:not(.touchevents) .btn.bg-primary-red-70t:hover{color:#f3f3f3;background-color:#f05346}.bg-primary-red-50t{color:#f3f3f3;background-color:#f8b2ad}.btn.bg-primary-red-50t:active,.btn.bg-primary-red-50t:focus,html:not(.touchevents) .btn.bg-primary-red-50t:hover{color:#f3f3f3;background-color:#f27067}.bg-primary-red-30t{color:#f3f3f3;background-color:#fbd1ce}.btn.bg-primary-red-30t:active,.btn.bg-primary-red-30t:focus,html:not(.touchevents) .btn.bg-primary-red-30t:hover{color:#f3f3f3;background-color:#f58f87}.c-base-white{color:#fff!important}.b-base-white{border-color:#fff}.fill-base-white{fill:#fff}.stroke-base-white{stroke:#fff}.c-base-black{color:#333!important}.b-base-black{border-color:#333}.fill-base-black{fill:#333}.stroke-base-black{stroke:#333}.c-secondary-grey{color:#acaeb9!important}.b-secondary-grey{border-color:#acaeb9}.fill-secondary-grey{fill:#acaeb9}.stroke-secondary-grey{stroke:#acaeb9}.c-secondary-grey-70t{color:#c4c6cd!important}.b-secondary-grey-70t{border-color:#c4c6cd}.fill-secondary-grey-70t{fill:#c4c6cd}.stroke-secondary-grey-70t{stroke:#c4c6cd}.c-secondary-grey-50t{color:#d5d6dc!important}.b-secondary-grey-50t{border-color:#d5d6dc}.fill-secondary-grey-50t{fill:#d5d6dc}.stroke-secondary-grey-50t{stroke:#d5d6dc}.c-secondary-grey-30t{color:#e8e7e9!important}.b-secondary-grey-30t{border-color:#e8e7e9}.fill-secondary-grey-30t{fill:#e8e7e9}.stroke-secondary-grey-30t{stroke:#e8e7e9}.c-secondary-white{color:#f3f3f3!important}.b-secondary-white{border-color:#f3f3f3}.fill-secondary-white{fill:#f3f3f3}.stroke-secondary-white{stroke:#f3f3f3}.c-secondary-white-70t{color:#f6f6f6!important}.b-secondary-white-70t{border-color:#f6f6f6}.fill-secondary-white-70t{fill:#f6f6f6}.stroke-secondary-white-70t{stroke:#f6f6f6}.c-secondary-white-50t{color:#f9f9fa!important}.b-secondary-white-50t{border-color:#f9f9fa}.fill-secondary-white-50t{fill:#f9f9fa}.stroke-secondary-white-50t{stroke:#f9f9fa}.c-secondary-white-30t{color:#fbfcfc!important}.b-secondary-white-30t{border-color:#fbfcfc}.fill-secondary-white-30t{fill:#fbfcfc}.stroke-secondary-white-30t{stroke:#fbfcfc}.c-secondary-orange{color:#f9a137!important}.b-secondary-orange{border-color:#f9a137}.fill-secondary-orange{fill:#f9a137}.stroke-secondary-orange{stroke:#f9a137}.c-secondary-orange-70t{color:#ffa133!important}.b-secondary-orange-70t{border-color:#ffa133}.fill-secondary-orange-70t{fill:#ffa133}.stroke-secondary-orange-70t{stroke:#ffa133}.c-secondary-orange-50t{color:#fed09a!important}.b-secondary-orange-50t{border-color:#fed09a}.fill-secondary-orange-50t{fill:#fed09a}.stroke-secondary-orange-50t{stroke:#fed09a}.c-secondary-orange-30t{color:#ffe3c2!important}.b-secondary-orange-30t{border-color:#ffe3c2}.fill-secondary-orange-30t{fill:#ffe3c2}.stroke-secondary-orange-30t{stroke:#ffe3c2}.c-secondary-pink{color:#ebbcd8!important}.b-secondary-pink{border-color:#ebbcd8}.fill-secondary-pink{fill:#ebbcd8}.stroke-secondary-pink{stroke:#ebbcd8}.c-secondary-pink-70t{color:#f2d0e3!important}.b-secondary-pink-70t{border-color:#f2d0e3}.fill-secondary-pink-70t{fill:#f2d0e3}.stroke-secondary-pink-70t{stroke:#f2d0e3}.c-secondary-pink-50t{color:#f7ddeb!important}.b-secondary-pink-50t{border-color:#f7ddeb}.fill-secondary-pink-50t{fill:#f7ddeb}.stroke-secondary-pink-50t{stroke:#f7ddeb}.c-secondary-pink-30t{color:#fdebf3!important}.b-secondary-pink-30t{border-color:#fdebf3}.fill-secondary-pink-30t{fill:#fdebf3}.stroke-secondary-pink-30t{stroke:#fdebf3}.c-primary-navy{color:#2f334f!important}.b-primary-navy{border-color:#2f334f}.fill-primary-navy{fill:#2f334f}.stroke-primary-navy{stroke:#2f334f}.c-primary-navy-70t{color:#6e7085!important}.b-primary-navy-70t{border-color:#6e7085}.fill-primary-navy-70t{fill:#6e7085}.stroke-primary-navy-70t{stroke:#6e7085}.c-primary-navy-50t{color:#9698a7!important}.b-primary-navy-50t{border-color:#9698a7}.fill-primary-navy-50t{fill:#9698a7}.stroke-primary-navy-50t{stroke:#9698a7}.c-primary-navy-30t{color:#c0c2ca!important}.b-primary-navy-30t{border-color:#c0c2ca}.fill-primary-navy-30t{fill:#c0c2ca}.stroke-primary-navy-30t{stroke:#c0c2ca}.c-primary-blue{color:#3155a6!important}.b-primary-blue{border-color:#3155a6}.fill-primary-blue{fill:#3155a6}.stroke-primary-blue{stroke:#3155a6}.c-primary-blue-70t{color:#6c88c1!important}.b-primary-blue-70t{border-color:#6c88c1}.fill-primary-blue-70t{fill:#6c88c1}.stroke-primary-blue-70t{stroke:#6c88c1}.c-primary-blue-50t{color:#96abd2!important}.b-primary-blue-50t{border-color:#96abd2}.fill-primary-blue-50t{fill:#96abd2}.stroke-primary-blue-50t{stroke:#96abd2}.c-primary-blue-30t{color:#c0cce3!important}.b-primary-blue-30t{border-color:#c0cce3}.fill-primary-blue-30t{fill:#c0cce3}.stroke-primary-blue-30t{stroke:#c0cce3}.c-primary-red{color:#f2695d!important}.b-primary-red{border-color:#f2695d}.fill-primary-red{fill:#f2695d}.stroke-primary-red{stroke:#f2695d}.c-primary-red-70t{color:#f6958d!important}.b-primary-red-70t{border-color:#f6958d}.fill-primary-red-70t{fill:#f6958d}.stroke-primary-red-70t{stroke:#f6958d}.c-primary-red-50t{color:#f8b2ad!important}.b-primary-red-50t{border-color:#f8b2ad}.fill-primary-red-50t{fill:#f8b2ad}.stroke-primary-red-50t{stroke:#f8b2ad}.c-primary-red-30t{color:#fbd1ce!important}.b-primary-red-30t{border-color:#fbd1ce}.fill-primary-red-30t{fill:#fbd1ce}.stroke-primary-red-30t{stroke:#fbd1ce}.b-transparent{border-color:transparent}.b{border-width:1px;border-style:solid}.b-top{border-top-width:1px;border-top-style:solid}.b-bottom{border-bottom-width:1px;border-bottom-style:solid}.b-left{border-left-width:1px;border-left-style:solid}.b-right{border-right-width:1px;border-right-style:solid}.b-2{border-width:2px}.b-3{border-width:3px}.b-4{border-width:4px}.b-5{border-width:5px}.b-6{border-width:6px}.b-7{border-width:7px}.b-none{border:none!important}.m-3{margin:24px!important}.m-top-3{margin-top:24px!important}.m-right-3{margin-right:24px!important}.m-bottom-3{margin-bottom:24px!important}.m-horizontal-3,.m-left-3{margin-left:24px!important}.m-horizontal-3{margin-right:24px!important}.m-vertical-3{margin-top:24px!important;margin-bottom:24px!important}.m-2{margin:16px!important}.m-top-2{margin-top:16px!important}.m-right-2{margin-right:16px!important}.m-bottom-2{margin-bottom:16px!important}.m-horizontal-2,.m-left-2{margin-left:16px!important}.m-horizontal-2{margin-right:16px!important}.m-vertical-2{margin-top:16px!important;margin-bottom:16px!important}.m{margin:8px!important}.m-top{margin-top:8px!important}.m-right{margin-right:8px!important}.m-bottom{margin-bottom:8px!important}.m-horizontal,.m-left{margin-left:8px!important}.m-horizontal{margin-right:8px!important}.m-vertical{margin-top:8px!important;margin-bottom:8px!important}.p-3{padding:24px!important}.p-top-3{padding-top:24px!important}.p-right-3{padding-right:24px!important}.p-bottom-3{padding-bottom:24px!important}.p-horizontal-3,.p-left-3{padding-left:24px!important}.p-horizontal-3{padding-right:24px!important}.p-vertical-3{padding-top:24px!important;padding-bottom:24px!important}.p-2{padding:16px!important}.p-top-2{padding-top:16px!important}.p-right-2{padding-right:16px!important}.p-bottom-2{padding-bottom:16px!important}.p-horizontal-2,.p-left-2{padding-left:16px!important}.p-horizontal-2{padding-right:16px!important}.p-vertical-2{padding-top:16px!important;padding-bottom:16px!important}.p{padding:8px!important}.p-top{padding-top:8px!important}.p-right{padding-right:8px!important}.p-bottom{padding-bottom:8px!important}.p-horizontal,.p-left{padding-left:8px!important}.p-horizontal{padding-right:8px!important}.p-vertical{padding-top:8px!important;padding-bottom:8px!important}.p-0{padding:0!important}.m-0{margin:0!important}.wrap{max-width:992px;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto}.wrap--full{max-width:100%}.d-flex{display:flex}.d-block{display:block}.d-inline-block{display:inline-block}.f-1{flex:1}.f-2{flex:2}.f-3{flex:3}.f-4{flex:4}.f-5{flex:5}.f-6{flex:6}.f-7{flex:7}.f-8{flex:8}.f-9{flex:9}.f-10{flex:10}.f-11{flex:11}.f-12{flex:12}.o--1{order:-1}.jc-start{justify-content:flex-start}.jc-end{justify-content:flex-end}.jc-center{justify-content:center}.ai-start{align-items:flex-start}.ai-end{align-items:flex-end}.ai-center{align-items:center}.ai-stretch{align-items:stretch}.ai-baseline{align-items:baseline}.t-center{text-align:center!important}.t-left{text-align:left!important}.t-right{text-align:right!important}.t-uppercase{text-transform:uppercase!important}.t-none{text-transform:none!important}.ws-nowrap{white-space:nowrap}.w-100p{width:100%}.mh-25vh{min-height:25vh}.mh-33vh{min-height:33.33vh}.mh-50vh{min-height:50vh}.mh-66vh{min-height:66.66vh}.mh-75vh{min-height:75vh}.mh-100vh{min-height:100vh}.sw-1px{stroke-width:1px}.sw-2px{stroke-width:2px}.sw-3px{stroke-width:3px}.slj-round{stroke-linejoin:round}.slc-square{stroke-linecap:square}.image-optimize{image-rendering:-webkit-optimize-contrast;image-rendering:optimizequality} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fZm9udHMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fdmFycy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19mb250cy5taXhpbnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvY29yZS9fYmFzZS5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19jbGVhcmZpeC5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19jb2RlLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL2NvcmUvX2dyaWQudmFycy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL190cmFuc2l0aW9ucy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9fYy1uYXZzLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL19jLXRhYmxlcy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9fYy1hc2lkZXMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvX2MtZXhhbXBsZS5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9fby1jaGFydHMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19mb250cy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19jb2xvcnMubWl4aW5zLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fY29sb3JzLnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fYm9yZGVycy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy9jb3JlL19ncmlkLm1peGlucy5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy91dGlsaXRpZXMvX2dyaWQuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19kaXNwbGF5LnNjc3MiLCJidW5kbGUvc3R5bGVzL3NyYy9zY3NzL3V0aWxpdGllcy9fdGV4dC5zY3NzIiwiYnVuZGxlL3N0eWxlcy9zcmMvc2Nzcy91dGlsaXRpZXMvX2RpbWVuc2lvbnMuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19zdmcuc2NzcyIsImJ1bmRsZS9zdHlsZXMvc3JjL3Njc3MvdXRpbGl0aWVzL19pbWFnZXMuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxLQUNFLFdDRmMsQURHZCxzREFBMkQsQUFDM0QsZUNUaUIsQURVakIsZ0JDVG1CLENEVXBCLEFBRUQsRUFDRSxZQUFhLENBQ2QsQUFFRCxrQkFDRSxjQUFjLEFBQ2Qsb0JBQW9CLEFBQ3BCLGdCQUFnQixBQUNoQixpQkFBaUIsQUFDakIsY0FBYyxBQUNkLGlDQUFrQyxDQUNuQyxBQUVELE1BQ0UsZ0JBQWlCLENBQ2xCLEFBRUQsR0FDRSxnQkFBaUIsQ0FDbEIsQUFFRCxHQUNFLGdCQUFpQixDQUNsQixBQUVELEdBQ0UsaUJBQWlCLEFBQ2pCLGtCQUFtQixDQUNwQixBQUVELEdBQ0UsZ0JBQWlCLENBQ2xCLEFBRUQsR0FDRSxjQUFlLENBQ2hCLEFBRUQsR0FDRSxnQkFBaUIsQ0FDbEIsQUFFRCxTRXhDRSxrQ0FBa0MsQUFDbEMsbUNBQW1DLEFBQ25DLGlDQUNGLENGdUNDLEFHbkRELEtBQ0UsU0FBUyxBQUNULFNBQVUsQ0FDWCxBQUVELEVBQ0Usb0JBQXFCLENBQ3RCLEFBRUQsS0FDRSxTQUNGLENBQUUsQUFFRixvQ0FDRSxhQUFjLENBRWYsQUFIRCx5SUNyQkksV0FBVyxBQUNYLGNBQWMsQUFDZCxVQUFXLENBQ1osQUNJSCxJQUNFLGNBQWMsQUFDZCxZQUEwQyxDQUMzQyxBQUVELEtBQ0UscUJBQXFCLEFBQ3JCLG1CQUFtQixBQUNuQixlQ2JhLENEY2QsQUFFRCxTQUNFLFdKVGMsQUlVZCxzQkpiYyxBSWNkLGlCQUFrQixDQUNuQixBRWhCRCw2QkFDRSxpRkFBdUYsQUFDdkYseUJBQTBC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YUlWLHdCYjhEVSxDYTdEWCxBQVVELGlJQUdFLGNibEJVLEFhbUJWLHdCQUErQyxDQUNoRCxBQWxCRCx5QkFDRSxjYkhVLEFhSVYsd0JiaUVVLENhaEVYLEFBVUQsaUlBR0UsY2JsQlUsQWFtQlYsd0JBQStDLENBQ2hELEFBbEJELG1CQUNFLGNiSFUsQWFJVix3QmJvRVUsQ2FuRVgsQUFVRCwrR0FHRSxjYmxCVSxBYW1CVix3QkFBK0MsQ0FDaEQsQUFsQkQsdUJBQ0UsY2JIVSxBYUlWLHdCYnVFVSxDYXRFWCxBQVVELDJIQUdFLGNibEJVLEFhbUJWLHdCQUErQyxDQUNoRCxBQWxCRCx1QkFDRSxjYkhVLEFhSVYsd0JiMEVVLENhekVYLEFBVUQsMkhBR0UsY2JsQlUsQWFtQlYsd0JBQStDLENBQ2hELEFBbEJELHVCQUNFLGNiSFUsQWFJVix3QmI2RVUsQ2E1RVgsQUFVRCwySEFHRSxjYmxCVSxBYW1CVix3QkFBK0MsQ0FDaEQsQUFsQkQsaUJBQ0UsY2I2Q1UsQWE1Q1Ysd0JiSlUsQ2FLWCxBQVVELHlHQUdFLGNiOEJVLEFhN0JWLHdCQUErQyxDQUNoRCxBQWxCRCxxQkFDRSxjYjZDVSxBYTVDVix3QmJEVSxDYUVYLEFBVUQscUhBR0UsY2I4QlUsQWE3QlYsd0JBQStDLENBQ2hELEFBbEJELHFCQUNFLGNiNkNVLEFhNUNWLHdCYkVVLENhRFgsQUFVRCxxSEFHRSxjYjhCVSxBYTdCVix3QkFBK0MsQ0FDaEQsQUFsQkQscUJBQ0UsY2I2Q1UsQWE1Q1Ysd0JiS1UsQ2FKWCxBQVVELHFIQUdFLGNiOEJVLEFhN0JWLHdCQUErQyxDQUNoRCxBQWxCRCxpQkFDRSxjYjZDVSxBYTVDVix3QmJRVSxDYVBYLEFBVUQseUdBR0UsY2I4QlUsQWE3QlYsd0JBQStDLENBQ2hELEFBbEJELHFCQUNFLGNiNkNVLEFhNUNWLHdCYldVLENhVlgsQUFVRCxxSEFHRSxjYjhCVSxBYTdCVix3QkFBK0MsQ0FDaEQsQUFsQkQscUJBQ0UsY2I2Q1UsQWE1Q1Ysd0JiY1UsQ2FiWCxBQVVELHFIQUdFLGNiOEJVLEFhN0JWLHdCQUErQyxD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c0MsQUFDdEMsNEJBQTRDLENBQzdDLEFDakNMLEtBQ0UsbUJBQ0YsQ0FBRSxBQUVGLEtBQ0Usa0JBQ0YsQ0FBRSxBQUVGLE1BRUUsZ0JBQXVDLEFBQ3ZDLGtCQUZ3QixBQUd4QixtQkFId0IsQUFJeEIsaUJBQWlCLEFBQ2pCLGlCQUFrQixDQUNuQixBQUVELFlBQ0UsY0FDRixDQUFFLEFDeEJGLFFBQ0UsWUFDRixDQUFFLEFBRUYsU0FDRSxhQUNGLENBQUUsQUFFRixnQkFDRSxvQkFDRixDQUFFLEFBS0EsS0FDRSxNQUgwQixDQUkzQixBQUZELEtBQ0UsTUFIMEIsQ0FJM0IsQUFGRCxLQUNFLE1BSDBCLENBSTNCLEFBRkQsS0FDRSxNQUgwQixDQUkzQixBQUZELEtBQ0UsTUFIMEIsQ0FJM0IsQUFGRCxLQUNFLE1BSDBCLENBSTNCLEFBRkQsS0FDRSxNQUgwQixDQUkzQixBQUZELEtBQ0UsTUFIMEIsQ0FJM0IsQUFGRCxLQUNFLE1BSDBCLENBSTNCLEFBRkQsTUFDRSxPQUgwQixDQUkzQixBQUZELE1BQ0UsT0FIMEIsQ0FJM0IsQUFGRCxNQUNFLE9BSDBCLENBSTNCLEFBSUgsTUFDRSxRQUNGLENBQUUsQUFFRixVQUNFLDBCQUNGLENBQUUsQUFFRixRQUNFLHdCQUNGLENBQUUsQUFFRixXQUNFLHNCQUNGLENBQUUsQUFFRixVQUNFLHNCQUNGLENBQUUsQUFFRixRQUNFLG9CQUNGLENBQUUsQUFFRixXQUNFLGtCQUNGLENBQUUsQUFFRixZQUNFLG1CQUNGLENBQUUsQUFFRixhQUNFLG9CQUNGLENBQUUsQUN2REYsVUFDRSwyQkFDRixDQUFFLEFBRUYsUUFDRSx5QkFDRixDQUFFLEFBRUYsU0FDRSwwQkFDRixDQUFFLEFBRUYsYUFDRSxrQ0FDRixDQUFFLEFBRUYsUUFDRSw2QkFDRixDQUFFLEFBRUYsV0FDRSxrQkFDRixDQUFFLEFDdEJGLFFBQ0UsVUFBVyxDQUNaLEFBRUQsU0FDRSxlQUNGLENBQUUsQUFFRixTQUNFLGtCQUNGLENBQUUsQUFFRixTQUNFLGVBQ0YsQ0FBRSxBQUVGLFNBQ0Usa0JBQ0YsQ0FBRSxBQUVGLFNBQ0UsZUFDRixDQUFFLEFBRUYsVUFDRSxnQkFDRixDQUFFLEFDMUJGLFFBQ0UsZ0JBQ0YsQ0FBRSxBQUVGLFFBQ0UsZ0JBQ0YsQ0FBRSxBQUVGLFFBQ0UsZ0JBQ0YsQ0FBRSxBQUVGLFdBQ0UscUJBQ0YsQ0FBRSxBQUVGLFlBQ0UscUJBQ0YsQ0FBRSxBQ2xCRixnQkFDRSwwQ0FBMEMsQUFDMUMsK0JBQWdDLENBQ2pDIiwiZmlsZSI6InRvLmNzcyJ9 */ \ No newline at end of file diff --git a/dist/team-site.html b/dist/team-site.html index 572850d2..62381cb8 100644 --- a/dist/team-site.html +++ b/dist/team-site.html @@ -1 +1 @@ -Team Site | NYC Opportunity Patterns

Team Site

This page imports the global team site stylesheet found on the nyc.gov. The stylesheet uses a partial import of Bootstrap 2.3.

Typography

Base Font Styles

font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size: 16px;
line-height: 20px;

Headings

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Paragraphs

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

Lead

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

Buttons

Default Button

Forms

Default Styles

Contact Us

*Indicates required fields

Grid

Live Grid Example

1
1
1
1
1
1
1
1
1
1
1
1
2
3
3
4
6
6
12
\ No newline at end of file +Team Site | NYC Opportunity Patterns

NYCO Patterns

Team Site

This page imports the global team site stylesheet found on the nyc.gov. The stylesheet uses a partial import of Bootstrap 2.3. Below are some of the styles used in that library.

Typography

Base Font Styles

font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif;
font-size: 16px;
line-height: 20px;

Headings

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Paragraphs

Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla.

Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit.

Lead

Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus.

Buttons

Default Button

Forms

Default Styles

Contact Us

*Indicates required fields

Grid

Live Grid Example

1
1
1
1
1
1
1
1
1
1
1
1
2
3
3
4
6
6
12
\ No newline at end of file diff --git a/package.json b/package.json index 380adf22..bf54eeb6 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "port": "8080", "style_src": "src/scss/site.scss", "style_bundle": "bundle/styles/site.concat.css", - "style_dist": "dist/styles/site.min.css" + "style_dist": "dist/styles/site.min.css", + "vars": "src/vars.json" }, "name": "nyco-patterns", "version": "0.0.3", @@ -11,13 +12,13 @@ "main": "index.js", "scripts": { "test": "", - "start": "PORT=$npm_package_config_port concurrently 'npm run styles-watch' 'npm run scripts-watch' 'npm run build-watch' 'npm run serve' 'npm run sync'", + "start": "PORT=$npm_package_config_port VARS=$npm_package_config_vars concurrently 'npm run styles-watch' 'npm run scripts-watch' 'npm run build-watch' 'npm run serve' 'npm run sync'", "serve": "node serve.js --ext slm --watch src", "sync": "browser-sync start --files 'src' --no-open --no-ui --reload-delay 1000 --proxy \"http://localhost:$npm_package_config_port\"", "build": "node build.js", "publish": "node publish.js", "build-watch": "nodemon --ext slm --watch src/views -x 'npm run build'", - "styles-vars": "json-sass -i src/data/vars.json -o src/scss/core/_vars.scss -p '$vars:'", + "styles-vars": "json-sass -i $npm_package_config_vars -o src/scss/core/_vars.scss -p '$vars:'", "styles-watch": "nodemon --ext scss --watch src/scss --ignore _vars.scss -x 'npm run styles'", "styles-postcss": "cssnano --sourcemap < $npm_package_config_style_bundle > $npm_package_config_style_dist", "styles": "npm run styles-vars && node-sass --sourceMapEmbed true --include-path node_modules $npm_package_config_style_src $npm_package_config_style_bundle && npm run styles-postcss", diff --git a/serve.js b/serve.js index aee9b32e..a1430ecd 100644 --- a/serve.js +++ b/serve.js @@ -10,7 +10,7 @@ const STATIC = PATH.join(__dirname, 'dist'); const VIEWS = PATH.join(__dirname, 'src/views'); const ENGINE = 'slm'; const LOCALS = { - 'vars': require(PATH.join(__dirname, 'src/data/vars.json')) + 'vars': require(PATH.join(__dirname, process.env.VARS)) }; diff --git a/src/js/modules/o-charts.js b/src/js/modules/o-charts.js index b0f8f53b..f19f11a1 100644 --- a/src/js/modules/o-charts.js +++ b/src/js/modules/o-charts.js @@ -87,7 +87,8 @@ class oCharts { function create() { chart.svg = chart.element.append('svg').attrs({ - 'xmlns': CONSTANTS.NAMESPACE + 'xmlns': CONSTANTS.NAMESPACE, + 'width': 0 }); chart.bg = chart.svg.append('rect').attrs({ diff --git a/src/scss/core/_base.scss b/src/scss/core/_base.scss index f1400233..16f3d339 100644 --- a/src/scss/core/_base.scss +++ b/src/scss/core/_base.scss @@ -5,6 +5,7 @@ // Dependencies @import 'colors.vars'; @import 'grid.vars'; +@import 'clearfix'; // Declarations body { @@ -13,26 +14,14 @@ body { } a { - text-decoration: none + text-decoration: none; } path { fill: none } -pre { +header, main, footer, fieldset, section { display: block; - padding: ($grid-base * 2) ($grid-base * 2); + @include clearfix; } - -code { - display: inline-block; - white-space: nowrap; - padding: ($grid-base * .5) $grid-base; -} - -pre, code { - color: map-get($colors, 'base-white'); - background-color: map-get($colors, 'base-black'); - border-radius: 3px; -} \ No newline at end of file diff --git a/src/scss/core/_clearfix.scss b/src/scss/core/_clearfix.scss new file mode 100644 index 00000000..a842c7c5 --- /dev/null +++ b/src/scss/core/_clearfix.scss @@ -0,0 +1,7 @@ +@mixin clearfix() { + &:after, &:before { + content: ''; + display: table; + clear: both; + } +} \ No newline at end of file diff --git a/src/scss/core/_code.scss b/src/scss/core/_code.scss new file mode 100644 index 00000000..55deef9b --- /dev/null +++ b/src/scss/core/_code.scss @@ -0,0 +1,25 @@ +/** + * Code + */ + +// Dependencies +@import 'colors.vars'; +@import 'grid.vars'; + +// Declarations +pre { + display: block; + padding: ($grid-base * 2) ($grid-base * 2); +} + +code { + display: inline-block; + white-space: nowrap; + padding: ($grid-base * .5) $grid-base; +} + +pre, code { + color: map-get($colors, 'base-white'); + background-color: map-get($colors, 'base-black'); + border-radius: 3px; +} \ No newline at end of file diff --git a/src/scss/core/_fonts.mixins.scss b/src/scss/core/_fonts.mixins.scss index b9c44b5b..612c81d6 100644 --- a/src/scss/core/_fonts.mixins.scss +++ b/src/scss/core/_fonts.mixins.scss @@ -27,6 +27,10 @@ -moz-osx-font-smoothing: auto } +@mixin font-system() { + font-family: $font-system; +} + @function em($pixels, $context: $font-base) { @if (unitless($pixels)) { $pixels: $pixels * 1px; diff --git a/src/scss/core/_fonts.vars.scss b/src/scss/core/_fonts.vars.scss index 8c52772a..7ce42447 100644 --- a/src/scss/core/_fonts.vars.scss +++ b/src/scss/core/_fonts.vars.scss @@ -8,4 +8,6 @@ $vars: map-get($vars, 'fonts'); $font-base: map-get($vars, font-size); -$line-height-base: map-get($vars, line-height); \ No newline at end of file +$line-height-base: map-get($vars, line-height); + +$font-system: map-get($vars, font-system); \ No newline at end of file diff --git a/src/scss/core/_vars.scss b/src/scss/core/_vars.scss index 2e269b4b..c405b11c 100644 --- a/src/scss/core/_vars.scss +++ b/src/scss/core/_vars.scss @@ -1,6 +1,7 @@ $vars:( fonts: ( font-family: ('Helvetica Neue', Helvetica, Arial, sans-serif), + font-system: (-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif), font-size: 16px, line-height: 20px ), @@ -94,5 +95,11 @@ $vars:( ), ( name: secondary-pink-30t, hex: #FDEBF3 - )) + )), + media: ( + screen-desktop: 960, + screen-tablet: 768, + screen-mobile: 480, + screen-sm-mobile: 400 + ) ); \ No newline at end of file diff --git a/src/scss/site.scss b/src/scss/site.scss index 90b02fa3..41d20cf8 100644 --- a/src/scss/site.scss +++ b/src/scss/site.scss @@ -3,6 +3,7 @@ // if @font-face is used it needs to be first imported first. @import 'core/fonts'; @import 'core/base'; +@import 'core/code'; @import 'core/transitions'; /************************* diff --git a/src/scss/utilities/_dimensions.scss b/src/scss/utilities/_dimensions.scss index 92ec7b0c..5fb57eea 100644 --- a/src/scss/utilities/_dimensions.scss +++ b/src/scss/utilities/_dimensions.scss @@ -8,4 +8,28 @@ // Declarations .w-100p { width: 100%; -} \ No newline at end of file +} + +.mh-25vh { + min-height: 25vh +} + +.mh-33vh { + min-height: 33.33vh +} + +.mh-50vh { + min-height: 50vh +} + +.mh-66vh { + min-height: 66.66vh +} + +.mh-75vh { + min-height: 75vh +} + +.mh-100vh { + min-height: 100vh +} diff --git a/src/scss/utilities/_fonts.scss b/src/scss/utilities/_fonts.scss index 3d557096..5c07fe03 100644 --- a/src/scss/utilities/_fonts.scss +++ b/src/scss/utilities/_fonts.scss @@ -13,3 +13,19 @@ .f-aliased { @include font-aliased } + +.ff-system { + @include font-system +} + +.fw-normal { + font-weight: normal +} + +.fw-bold { + font-weight: bold +} + +.fs-italic { + font-style: italic +} diff --git a/src/scss/utilities/_grid.scss b/src/scss/utilities/_grid.scss index 77e8945a..8860a345 100644 --- a/src/scss/utilities/_grid.scss +++ b/src/scss/utilities/_grid.scss @@ -26,4 +26,8 @@ padding-right: $padding; margin-left: auto; margin-right: auto; +} + +.wrap--full { + max-width: 100% } \ No newline at end of file diff --git a/src/data/vars.json b/src/vars.json similarity index 88% rename from src/data/vars.json rename to src/vars.json index 7d3ed536..4debf01d 100644 --- a/src/data/vars.json +++ b/src/vars.json @@ -1,6 +1,7 @@ { "fonts": { "font-family": ["'Helvetica Neue'", "Helvetica", "Arial", "sans-serif"], + "font-system": ["-apple-system", "BlinkMacSystemFont", "'Segoe UI'", "Roboto", "Oxygen-Sans", "Ubuntu", "Cantarell", "'Helvetica Neue'", "sans-serif"], "font-size": "16px", "line-height": "20px" }, @@ -125,5 +126,11 @@ "name": "secondary-pink-30t", "hex": "#FDEBF3" } - ] + ], + "media" : { + "screen-desktop": 960, + "screen-tablet": 768, + "screen-mobile": 480, + "screen-sm-mobile": 400 + } } diff --git a/src/views/charts.slm b/src/views/charts.slm index f807091a..f1cfc01a 100644 --- a/src/views/charts.slm +++ b/src/views/charts.slm @@ -1,38 +1,38 @@ -= partial('partials/head.mixin.slm') -= partial('partials/nav.mixin.slm') -= partial('partials/o-header.mixin.slm') +/ Layout += extend('layouts/default') - h1 = 'b-bottom p-bottom b-secondary-grey' - h2 = 'c-primary-blue-70t' -- sections = 'wrap m-bottom-3 p-bottom-3' +- sections = 'm-bottom-3 p-bottom-3' - subsections = 'm-bottom-3' - examples = 'c-example b-secondary-grey' -doctype html -html lang='en' +/ Partials += partial('partials/head.mixin.slm') += partial('partials/header.mixin.slm') += partial('partials/nav.mixin.slm') +/ Content blocks += content('head') = mixin('head', 'Chart Object | NYC Opportunity Patterns') -body style='visibility: hidden;' onload='load()' - - = mixin('o-header', 'Chart Object') - - main class='jc-end ai-stretch' += content('title') + = mixin('header', 'Chart Object') - div class='wrap' - = mixin('nav'); += content('body') + = mixin('nav') - section class='wrap' + section class='${sections}' - div class='${subsections}' - div class='${examples}' - h2 U.S. Official and NYCgov Poverty Rates 2005–2015 - div id='chartPovertyRates' + div class='${subsections}' + div class='${examples} p-relative' + h2 U.S. Official and NYCgov Poverty Rates 2005–2015 + div#chartPovertyRates - div class='${subsections}' - div class='${examples}' - h2 Employment/Population Ratios 2008, 2010–2015 - div id='chartEmploymentPopulationRatios' + div class='${subsections}' + div class='${examples} p-relative' + h2 Employment/Population Ratios 2008, 2010–2015 + div#chartEmploymentPopulationRatios script src='scripts/nyco.dist.js' diff --git a/src/views/colors.slm b/src/views/colors.slm index ca9f6f01..a4f54706 100644 --- a/src/views/colors.slm +++ b/src/views/colors.slm @@ -1,49 +1,49 @@ -= partial('partials/head.mixin.slm') -= partial('partials/nav.mixin.slm') -= partial('partials/o-header.mixin.slm') +/ Layout += extend('layouts/default') - h1 = 'b-bottom p-bottom b-secondary-grey' - h2 = 'c-primary-blue-70t' -- sections = 'wrap m-bottom-3 p-bottom-3' +- sections = 'm-bottom-3 p-bottom-3' - subsections = 'm-bottom-3' - examples = 'c-example b-secondary-grey' -doctype html -html lang='en' +/ Partials += partial('partials/head.mixin.slm') += partial('partials/header.mixin.slm') += partial('partials/nav.mixin.slm') +/ Content blocks += content('head') = mixin('head', 'Colors | NYC Opportunity Patterns') -body style='visibility: hidden;' onload='load()' - - = mixin('o-header', 'Colors') - - main class='jc-end ai-stretch' - - div class='wrap' - = mixin('nav'); - - section class='${sections}' - h2 class="${h2}" Utility Usage - p - | Backrounds  - code .bg-primary-blue - p - | Color  - code .c-primary-blue - p - | Borders  - code .b-primary-blue - - section class='${sections}' - h2 class="${h2}" Swatches - div class='f-smooth' - - for i in this.vars.colors - - name = this.vars.colors[i].name - - hex = this.vars.colors[i].hex - div class='m-bottom-3 d-inline-block' style='width: 33.33%' - div class='p' - div class='b b-${name}' - div class='bg-${name} p-3' - div class='p-3' - code class='m-bottom' ${name} - div = hex \ No newline at end of file += content('title') + = mixin('header', 'Colors') + += content('body') + = mixin('nav') + + section class='${sections}' + h2 class="${h2}" Utility Usage + p + | Backrounds  + code .bg-primary-blue + p + | Color  + code .c-primary-blue + p + | Borders  + code .b-primary-blue + + section class='${sections}' + h2 class="${h2}" Swatches + div class='f-smooth' + - for i in this.vars.colors + - name = this.vars.colors[i].name + - hex = this.vars.colors[i].hex + div class='m-bottom-3 d-inline-block' style='width: 33.33%' + div class='p' + div class='b b-${name}' + div class='bg-${name} p-3' + div class='p-3' + code class='m-bottom' ${name} + div = hex \ No newline at end of file diff --git a/src/views/components.slm b/src/views/components.slm index 52c5b88b..43b89f73 100644 --- a/src/views/components.slm +++ b/src/views/components.slm @@ -1,66 +1,65 @@ -= partial('partials/head.mixin.slm') -= partial('partials/nav.mixin.slm') -= partial('partials/o-header.mixin.slm') +/ Layout += extend('layouts/default') - h1 = 'b-bottom p-bottom b-secondary-grey' - h2 = 'c-primary-blue-70t' -- sections = 'wrap m-bottom-3 p-bottom-3' +- sections = 'm-bottom-3 p-bottom-3' - subsections = 'm-bottom-3' - examples = 'c-example b-secondary-grey' -doctype html -html lang='en' +/ Partials += partial('partials/head.mixin.slm') += partial('partials/header.mixin.slm') += partial('partials/nav.mixin.slm') +/ Content blocks += content('head') = mixin('head', 'CSS Components | NYC Opportunity Patterns') -body style='visibility: hidden;' onload='load()' - - = mixin('o-header', 'Components') - - main class='jc-end ai-stretch' += content('title') + = mixin('header', 'Components') - div class='wrap' - = mixin('nav'); += content('body') + = mixin('nav'); - section class='wrap' - header class='${subsections}' - h2 Tables + header class='${subsections}' + h2 Tables - div class='${subsections}' - p - code src/scss/_c-tables.scss + div class='${subsections}' + p + code src/scss/_c-tables.scss - div class='${examples}' - table class='c-table c-table-td-right b-primary-blue' - = partial('partials/table-content') + div class='${examples}' + table class='c-table c-table-td-right b-primary-blue' + = partial('partials/table-content') - div class='${subsections}' - h3 Small Table - div class='${examples}' - table class='c-table c-table-small c-table-td-right b-primary-blue' - = partial('partials/table-content') + div class='${subsections}' + h3 Small Table + div class='${examples}' + table class='c-table c-table-small c-table-td-right b-primary-blue' + = partial('partials/table-content') - div class='${subsections}' - h3 Asides - p - code src/scss/_c-asides.scss + div class='${subsections}' + h3 Asides + p + code src/scss/_c-asides.scss - div class='${examples}' - aside class='c-aside' - header class='c-aside_header bg-primary-blue f-smooth' - h1 Poverty Thresholds - div class='c-aside_body bg-secondary-white' - p - b U.S. Official: - | The U.S. official threshold was developed in the early - | 1960s and was based on the cost of a minimum diet at that time. It is - | updated each year by the change in consumer prices. It is uniform - | across the United States. - p - b NYCgov: - | The NYCgov poverty threshold is a New York City-specific - | threshold derived from the U.S.-wide threshold developed for the Federal - | Supplemental Poverty Measure. The NYCgov threshold is based on - | what families spend on basic necessities: food, clothing, shelter, and - | utilities. It is adjusted to reflect the variation in housing costs across the - | United States. + div class='${examples}' + aside class='c-aside' + header class='c-aside_header bg-primary-blue f-smooth' + h1 Poverty Thresholds + div class='c-aside_body bg-secondary-white' + p + b U.S. Official: + | The U.S. official threshold was developed in the early + | 1960s and was based on the cost of a minimum diet at that time. It is + | updated each year by the change in consumer prices. It is uniform + | across the United States. + p + b NYCgov: + | The NYCgov poverty threshold is a New York City-specific + | threshold derived from the U.S.-wide threshold developed for the Federal + | Supplemental Poverty Measure. The NYCgov threshold is based on + | what families spend on basic necessities: food, clothing, shelter, and + | utilities. It is adjusted to reflect the variation in housing costs across the + | United States. diff --git a/src/views/index.slm b/src/views/index.slm index fff5ccee..74cf3242 100644 --- a/src/views/index.slm +++ b/src/views/index.slm @@ -1,23 +1,17 @@ +/ Layout += extend('layouts/default') + +/ Partials = partial('partials/head.mixin.slm') += partial('partials/header.mixin.slm') = partial('partials/nav.mixin.slm') -= partial('partials/o-header.mixin.slm') - -- h1 = 'b-bottom p-bottom b-secondary-grey' -- h2 = 'c-primary-blue-70t' -- sections = 'wrap m-bottom-3 p-bottom-3' -- subsections = 'm-bottom-3' -- examples = 'c-example b-secondary-grey' - -doctype html -html lang='en' +/ Content blocks += content('head') = mixin('head', 'NYC Opportunity Patterns') -body style='visibility: hidden;' onload='load()' - - = mixin('o-header', 'Agency patterns for the Mayor\'s Office for Economic Opportunity') - - main class='jc-end ai-stretch' += content('title') + = mixin('header', 'Agency patterns for the Mayor\'s Office for Economic Opportunity') - div class='wrap' - = mixin('nav'); \ No newline at end of file += content('body') + = mixin('nav') \ No newline at end of file diff --git a/src/views/layouts/default.slm b/src/views/layouts/default.slm new file mode 100644 index 00000000..a8e45e55 --- /dev/null +++ b/src/views/layouts/default.slm @@ -0,0 +1,21 @@ += partial('../partials/footer.mixin.slm') + +doctype html +html lang='en' + + = content('head') + +body style='visibility: hidden;' onload='load()' class='bg-secondary-white' + + = content('title') + + main class='d-flex jc-end ai-stretch bg-base-white' + + div class='f-12 p-relative' + div class='wrap wrap--full p-relative' + = content('body') + + div class='f-1 o--1' + div class='f-1' + + = mixin('footer') \ No newline at end of file diff --git a/src/views/partials/footer.mixin.slm b/src/views/partials/footer.mixin.slm new file mode 100644 index 00000000..513abe2a --- /dev/null +++ b/src/views/partials/footer.mixin.slm @@ -0,0 +1,16 @@ += partial('navsub.mixin.slm') + += mixin('footer') + footer class='d-flex jc-end ai-stretch bg-secondary-white f-smooth' + + div class='f-12' + div class='wrap wrap--full' + div class='d-flex mh-33vh ai-center' + div + p + | Maintained by  + a href='https://github.com/orgs/CityOfNewYork/teams/nyc-opportunity' NYC Opportunity + = mixin('navsub') + + div class='f-1 o--1' + div class='f-1' diff --git a/src/views/partials/head.mixin.slm b/src/views/partials/head.mixin.slm index 2c060f55..a2f413d4 100644 --- a/src/views/partials/head.mixin.slm +++ b/src/views/partials/head.mixin.slm @@ -9,9 +9,8 @@ title= this.title noscript - - style - = 'body { visibility: visible !important; }' + style + = 'body { visibility: visible !important; }' javascript: function load() { document.body.style.visibility = 'visible' }; \ No newline at end of file diff --git a/src/views/partials/header.mixin.slm b/src/views/partials/header.mixin.slm new file mode 100644 index 00000000..5343013b --- /dev/null +++ b/src/views/partials/header.mixin.slm @@ -0,0 +1,12 @@ += mixin('header', 'title = Section Title') + header class='d-flex jc-end ai-stretch bg-primary-blue f-smooth' + + div class='f-12' + div class='wrap wrap--full' + div class='d-flex mh-33vh ai-center' + div + h1 class='ff-system' NYCO Patterns + h2 class='ff-system fw-normal' == this.title + + div class='f-1 o--1' + div class='f-1' \ No newline at end of file diff --git a/src/views/partials/navsub.mixin.slm b/src/views/partials/navsub.mixin.slm new file mode 100644 index 00000000..1929d3c4 --- /dev/null +++ b/src/views/partials/navsub.mixin.slm @@ -0,0 +1,7 @@ += mixin('navsub') + nav class='c-nav-inline-block va-middle' + a class='c-primary-blue' href='https://github.com/CityOfNewYork/nyco-patterns' + // == 'GitHub icon' + | Github + a class='c-primary-blue' href='https://www1.nyc.gov/site/opportunity/index.page' NYC.gov + a class='c-primary-blue' href='https://www1.nyc.gov/assets/servicedesign/index.html' Service Design Toolkit \ No newline at end of file diff --git a/src/views/partials/o-header.mixin.slm b/src/views/partials/o-header.mixin.slm deleted file mode 100644 index 05cb60c7..00000000 --- a/src/views/partials/o-header.mixin.slm +++ /dev/null @@ -1,10 +0,0 @@ -= mixin('o-header', 'title = Section Title') - header class='d-flex jc-end ai-stretch bg-primary-blue f-smooth' - - div class='f-10' - div class='wrap' - div class='m-vertical-3 p-vertical-3' - h1= this.title - - div class='f-2 o--1' - div class='f-2' \ No newline at end of file diff --git a/src/views/team-site.slm b/src/views/team-site.slm index c30a3894..2d683eed 100644 --- a/src/views/team-site.slm +++ b/src/views/team-site.slm @@ -1,178 +1,177 @@ -= partial('partials/head.mixin.slm') -= partial('partials/nav.mixin.slm') -= partial('partials/o-header.mixin.slm') +/ Layout += extend('layouts/default') - h1 = 'b-bottom p-bottom b-secondary-grey' - h2 = 'c-primary-blue-70t' -- sections = 'wrap m-bottom-3 p-bottom-3' +- sections = 'm-bottom-3 p-bottom-3' - subsections = 'm-bottom-3' - examples = 'c-example b-secondary-grey' -doctype html -html lang='en' +/ Partials += partial('partials/head.mixin.slm') += partial('partials/header.mixin.slm') += partial('partials/nav.mixin.slm') +/ Content blocks += content('head') = mixin('head', 'Team Site | NYC Opportunity Patterns') - link href='styles/team-site.min.css' rel='stylesheet' -body style='visibility: hidden;' onload='load()' += content('title') + = mixin('header', 'Team Site') - = mixin('o-header', 'Team Site') += content('body') + = mixin('nav'); - main class='jc-end ai-stretch' + section class='${sections}' + p + | This page imports the global team site stylesheet found on the nyc.gov. The stylesheet uses a partial import of  + a href='http://getbootstrap.com/2.3.2' Bootstrap 2.3. Below are some of the styles used in that library. - div class='wrap' - = mixin('nav'); + section class='${sections}' + header class='${subsections}' + h1 class='${h1}' Typography - section class='${sections}' - p - | This page imports the global team site stylesheet found on the nyc.gov. The stylesheet uses a partial import of  - a href='http://getbootstrap.com/2.3.2' Bootstrap 2.3. - - section class='${sections}' - header class='${subsections}' - h1 class='${h1}' Typography - - div class='${subsections}' - h2 class="${h2}" Base Font Styles - pre - - fonts = this.vars.fonts - = fonts.fontSize - div font-family: ${this.vars.fonts['font-family']}; - div font-size: ${this.vars.fonts['font-size']}; - div line-height: ${this.vars.fonts['line-height']}; - - div class='${subsections}' - h2 class="${h2}" Headings - div class='${examples}' - h1 Heading 1 - h2 Heading 2 - h3 Heading 3 - h4 Heading 4 - h5 Heading 5 - h6 Heading 6 - - div class='${subsections}' - h2 class="${h2}" Paragraphs - div class='${examples}' - p Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula. - p Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla. - p Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. - - div class='${subsections}' - h2 class="${h2}" Lead - div class='${examples}' - p class='lead' Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. - - section class='${sections}' - header class='m-bottom-3' - h1 class='${h1}' Buttons - h2 class="${h2}" Default Button - div class='${examples}' - a class='btn' Button + div class='${subsections}' + h2 class="${h2}" Base Font Styles + pre + - fonts = this.vars.fonts + = fonts.fontSize + div font-family: ${this.vars.fonts['font-family']}; + div font-size: ${this.vars.fonts['font-size']}; + div line-height: ${this.vars.fonts['line-height']}; - section class='${sections}' - header class='${subsections}' - h1 class='${h1}' Forms - h2 class="${h2}" Default Styles + div class='${subsections}' + h2 class="${h2}" Headings div class='${examples}' - h2 Contact Us - p - span class='required' - | * - b - | Indicates required fields - - form id='opportunitycontactform' class='control-form' - div class='row' - div class='container' - div class='span12 control-group' - label class='control-label' - | Name: - span class='required' - | * - div class='validationMessage' aria-live='polite' style='display: none' aria-hidden='true' - input type='text' name='Name' value='' - div class='row' - div class='container' - div class='span12 control-group' - label class='control-label' - | Organization: - input type='text' name='Organization' value='' - div class='row' - div class='container' - div class='span12 control-group' - label class='control-label' - | Email Address (e.g., test@example.com): - span class='required' * - input type='text' name='Email' value='' - div class='row' - div class='container' - div class='span12 control-group' - label class='control-label' - | Message: - span class='required' - | * - textarea name='Message' - div class='row' - div class='container' - div class='form-actions' - button type='button' class='btn btn-form-submit' - | Submit - - section class='${sections}' - header class='${subsections}' - h1 class='${h1}' Grid - - h2 class="${h2}" Live Grid Example - - - row = 'p-bottom-3' - - col = 'p-horizontal-2 p-vertical t-center bg-secondary-grey-30t' - + h1 Heading 1 + h2 Heading 2 + h3 Heading 3 + h4 Heading 4 + h5 Heading 5 + h6 Heading 6 + + div class='${subsections}' + h2 class="${h2}" Paragraphs div class='${examples}' + p Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula. + p Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper nulla non metus auctor fringilla. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec ullamcorper nulla non metus auctor fringilla. + p Maecenas sed diam eget risus varius blandit sit amet non magna. Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. - div class='row ${row}' - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - div class='span1' - div class='${col}' 1 - - div class='row ${row}' - div class='span2' - div class='${col}' 2 - div class='span3' - div class='${col}' 3 - div class='span3' - div class='${col}' 3 - div class='span4' - div class='${col}' 4 - - div class='row ${row}' - div class='span6' - div class='${col}' 6 - div class='span6' - div class='${col}' 6 + div class='${subsections}' + h2 class="${h2}" Lead + div class='${examples}' + p class='lead' Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus. + + section class='${sections}' + header class='m-bottom-3' + h1 class='${h1}' Buttons + h2 class="${h2}" Default Button + div class='${examples}' + a class='btn' Button + + section class='${sections}' + header class='${subsections}' + h1 class='${h1}' Forms + h2 class="${h2}" Default Styles + div class='${examples}' + h2 Contact Us + p + span class='required' + | * + b + | Indicates required fields + form id='opportunitycontactform' class='control-form' + div class='row' + div class='container' + div class='span12 control-group' + label class='control-label' + | Name: + span class='required' + | * + div class='validationMessage' aria-live='polite' style='display: none' aria-hidden='true' + input type='text' name='Name' value='' + div class='row' + div class='container' + div class='span12 control-group' + label class='control-label' + | Organization: + input type='text' name='Organization' value='' + div class='row' + div class='container' + div class='span12 control-group' + label class='control-label' + | Email Address (e.g., test@example.com): + span class='required' * + input type='text' name='Email' value='' + div class='row' + div class='container' + div class='span12 control-group' + label class='control-label' + | Message: + span class='required' + | * + textarea name='Message' div class='row' - div class='span12' - div class='${col}' 12 + div class='container' + div class='form-actions' + button type='button' class='btn btn-form-submit' + | Submit + + section class='${sections}' + header class='${subsections}' + h1 class='${h1}' Grid + + h2 class="${h2}" Live Grid Example + + - row = 'p-bottom-3' + - col = 'p-horizontal-2 p-vertical t-center bg-secondary-grey-30t' + + div class='${examples}' + + div class='row ${row}' + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + div class='span1' + div class='${col}' 1 + + div class='row ${row}' + div class='span2' + div class='${col}' 2 + div class='span3' + div class='${col}' 3 + div class='span3' + div class='${col}' 3 + div class='span4' + div class='${col}' 4 + + div class='row ${row}' + div class='span6' + div class='${col}' 6 + div class='span6' + div class='${col}' 6 + + div class='row' + div class='span12' + div class='${col}' 12